なぜ「高級フレームワーク」で開発効率が上がらないのか
コンピュータシステムについてわかってるのかわかってないのか微妙な上司が、営業の口車に乗せあられたのか、はたまた雑誌の記事に踊らされたのか、それとも展示会のデモを見て感銘を受けたのか。いやいや、元受の独りよがりに付き合っただろう……。理由はいろいろあるでしょうが、たまに、高級フレームワークで開発する羽目になることがあります。
ここでいう高級フレームワークというのは、Excelの仕様書からソースが自動生成されます!みたいなやつです。内作だったりする場合も少なくないでしょう。
こういうので、劇的に工数が削減できた経験がある方ってどれぐらいいるでしょうか? 特に50人月を超えるような規模の開発で。
私は悪い思い出しかないですね。私のまわりの人に聞いても同様です。
なぜこれで開発効率が上がらないのでしょうか?
私はこう考えます。
それは、どちらも「普通」に歩み寄らないせいです。どちらも、というのは、まずフレームワーク側。これらの高級フレームワークは、「普通」の Java だったら Java の慣習に従おうとしません。Javadoc の書き方ひとつとっても独自のルールで書いていたりします。それまでログインという言葉が普通だったのにかたくなにログオンという言葉を使う Microsoft よろしく、自分らで決めないと気がすまないのでしょうか。これによる開発者のストレスは意外とバカになりません。
次に仕様側です。仕様側がフレームワークが考える「普通」に歩み寄ろうとしません。フレームワークにとってもっとも開発効率が上がる仕様(画面の姿、通信方式等)に顧客側が合わせてくれないのです。フレームワークが顧客ニーズに合っていないということもあるでしょうが、顧客側がどうでもいいことにかたくなになっているということもあります(単なるロゴの表示位置にすらうるさいなど)。
聞いた話ですが、アメリカなんかでは既存製品を上手く組み合わせてシステムを作り上げるパターンが多いらしいですね。なので日本の SIer みたいな会社はないとか?
ところが日本は、何でもかんでも自分スタイルに合わせないと気がすまないというのがほとんどのようです。
ということで、私が行き着いた結論は、高級フレームワークは使うだけ無駄です。Excel で管理していたものをちょっと成長させたいというレベルならまだしも、ある程度以上の規模になったら逆に効率を下げるだけです。
コンポーネント型のフレームワーク(JavaでいうならClickとか)ですら、効率を上げるために仕様をフィットさせるのに注意が必要なのに、Excelの仕様書からソース生成などというそんな型にはまりきったものが効率よく作用するケースなんていったいどれほどあるというのでしょうか?