レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

生産性を10倍にする方法

池田信夫さんのblogで盛り上がっている「あなたの知的生産性を10倍上げる法」
http://blog.goo.ne.jp/tbinterface/0f17fe588f53c0af2d18ac02bff59cb9/19

だが、ブログの内容とは無関係に、私は生産性を軒並み一定の水準以上に向上する方法について、1つ心当たりがある。

生産性を上げるには、保守性を上げることを突き詰めることだ。

保守性とは

上記は、エンジニアでなくとも当てはまると考えてる。
だが考えやすい例としてソフトウェア開発の、特にプログラミング作業で考えることにする。

プログラムでも「保守性」は容易に得られるものではなく、それなりに考え、それなりに労力をさかなくては得られないものだ。特に初心者にとっては遠回りの作業だと感じられるだろう。

しかも保守性という名前の通りに受け取ると、それだけの労力をかけた見返りがうけられるのは、保守作業のときからだと思うかもしれない。保守作業とは、システム開発でいえば運用が始まってからの仕様変更/機能追加や不具合修正だ。

しかし、保守性の効果が後になってしか得られないという考えかたは、大きな間違いだ。

続きを読む

SQLServer2005 のインデックス付きビューが微妙

SQLServer2005では、ビューのパフォーマンス改善のためにインデックス付きビューが作成できるようになった。
鳴り物入りで導入されたインデックスビューで、Oracleのマテリアライズドビューにも対抗できるかと思いきや、制約が厳しすぎて微妙だ。

たとえば、集計関数の一部(たとえばMax)を使ったクエリが含まれるビューは以下のようなエラーが出る。

ビュー "ZZZ" に インデックス を作成できません。ビューでは集計 "MAX" が使用されています。
集計を削除するか、ビューにインデックスを設定しないか、別の集計を使用することを検討してください。
たとえば、AVG の場合は SUM と COUNT_BIG に置き換え、COUNT の場合は COUNT_BIG に置き換えます。

サブクエリもだめ。

これでは、パフォーマンス上のボトルネックになるクエリの多くは、このインデックス付きビューでは扱えない。

あんまりだなぁ。。