ソフトウェアは生モノです―そのココロは?
実はこのセリフ、自分がボーランドに入社したときの社長、大木さんの言葉です。大木さんは、「紀元3000年に向けたソフトウェア開発」とか、記者会見や取材なんかで、椅子から落っこちそうになるような、俗世を超越した名言を連発していました。
「紀元3000年」の件は、ずいぶん後で、「ちょうど2000年頃で、みんなが21世紀とかいって騒いでいるときに、もっとでかいことをいわないと面白くないから」と、その不純な(?)動機を教えてもらいましたが、「ソフトウェアは生モノ」については、ホントに名言だと思ってます。今でもそれは、折りあるごとに実感しています。
先日、ベンダーの都合でゆらぐメンテナンス性という記事を書きました。ユーザーがベンダーの「最新」を追いかけなければならない宿命に振り回される現状に触れたわけですが、これが解決策だ、というものは未だ示せていません。開発する側にとっての予防策はいくつも語られていますが、もうひとつ欠けている議論はベンダー側の仕掛けだと思います。こういうところにテクノロジーを使えないものか?といつも考えてしまいます。
さて、両者にとって前提として理解しておかなければならないことは、ソフトウェアは生モノだということです。よくソフトウェア開発をビル建築なんかにたとえますが、ソフトウェアはもっと足が早いものだと思います。むしろ、料理に近いかな。素材や水、気候、飲み物、お客様の嗜好などによって、同じものでも決して通り一遍の作り方ではうまくいきませんし、そして何より、食べごろ、旬があります。
何かにたとえると本質が見失われてしまいそうですが、ソフトウェアが生モノということの裏には、ソフトウェアが非常に流動的な前提、環境の上に立っているもの、つまり、できたときが食べごろ、鮮度はどんどん失われていきます、ということです。
やっかいなのは、これはアプリケーションレイヤーだけの話しではなく、下位のフレームワークなんかも同じなわけです。日持ちするフレームワークは設計やアーキテクチャがいいのだろうけど、それでも限界があります。
ソフトウェアの鮮度を長持ちさせる方法として、例えば、夏場のおにぎりは鮭はやめて梅干にしようとかいうように、影響を与える外部環境の耐用年数を加味した設計技法が語られてもいいように思います。この視点から行っても、最終的には依存性をどれだけシンプルにできるかという普通の設計のイロハの話しに帰結しますしね。