無限ループから脱出する方法

http://itpro.nikkeibp.co.jp/article/OPINION/20060105/226887/
なんで「堂々巡り」と言わずに「無限ループ」と言うのだろう.

ソフトウエアの部品化・再利用が実現すると,月額料金に基づいて技術者を提供するビジネスが減ると予想されるからだ。

これは逆だろうね.

月額料金に基づいて技術者を提供するビジネスに頼る限り,ソフトウエアの部品化・再利用は実現できない.

というべきだ.*1
しかしおそらく近い将来においては人月商売はなくならないし,よって部品化も再利用も高い確率で失敗する.残念ながらこれは非常に確実な予測だ.*2

ソフトウエアの部品化はもう何年も前からITの世界で取りざたされている夢の一つだが,ごく一部の領域を除けば実現していない。それでも「非IT記者」から見ると,部品化あるいはモジュール化は世の中の流れであり,ITの世界も現状はともかくとして,先々こうした方向に行くと思うのである。

たしかにその方向にいくのは否定しない.既に何十年もかけてその方向に進んできたし,再利用を実現する技術も出てきている.
しかしながらソフトウエアの再利用は,ミクロなレベル(アルゴリズムやライブラリレベル)での再利用は比較的容易で広く利用されているが,それ以上のレベル(コンポーネントやビジネスオブジェクトなど)の再利用となると極めて難しい.この難しさは,ソフトウエアの本質的な性質によるものだと言って良い.*3


これはステンドグラスとレンガ積みの喩えでも分かるだろう.
http://d.hatena.ne.jp/JavaBlack/20050605#p2
複雑な構造を持つステンドグラスには無数のガラス片が使われるわけだが,そのどれもが一見類似していながら同じものは二つとない.ある程度までは部品の共通化も可能かもしれないが,芸術性や複雑さを犠牲にせずに標準部品を作るのは簡単ではない.一度汲み上げた後ならなおさらだ.


再利用は極めて高い技術を要する,極めて困難な作業である.再利用を考慮して設計/実装されていないコードだと特にそうだ.*4

ところが多くの管理職や経営者には,この事実が理解できない.まるで再利用が誰にでも簡単に実現できるものだと思ってしまう.多くの人員を投じても,プロジェクト管理とやらにも金をかけていても,それでも一向に再利用は進まない時に,はたして管理職はどう判断するだろう.「これだけの人月単価をかけたにも関わらず,なぜ再利用が実現できないのか.既に動いているコードを部品にするだけじゃないか.それができないのは.現場技術者の怠慢だ.」となるのではないか.

実際には,その「部品にするだけ」の作業が,時として基本設計から実装までやり直す必要が出ることも,再利用を必要としない設計と再利用のための設計とが根本的に異なることも理解しない.再利用のための設計/実装の方がそうでない設計/実装よりも遙かに高度な技術力が要求されることも,再利用するコードが再利用を必要としないコードの優に3倍以上のコストがかかることも理解しない*5.さらに低レベルの人員が足手まといにしかならないことも,プロジェクト管理に至っては気休めにもならないことも理解しない.

そして,万が一,高い技術力と献身的な努力をもって奇跡的に再利用を成功させたとしても,それが奇跡であることが理解できない.そのために次もまたきっと簡単に実現できると誤解するが,実際にはそんな幸運が二度も三度も続くわけがない.


これで成功すると思う方がどうかしている.

*1:つまり再利用は技術的な問題である以上に,経営的な問題である.経営戦略から変更しない限り,再利用の成功はおぼつかない.

*2:正確にいうならば,今まで失敗が続いてきた原因の一端がここにある.日本におけるソフトウエア再利用の失敗の歴史は,経営の失敗の歴史でもあるのだ.

*3:実際には「顧客要求の標準化」に失敗しているために再利用に失敗している例も多いだろう.むやみやたらと顧客ごとに異なる独自仕様を全て受け入れていくと,特注部品を提供するコストは際限なく跳ね上がる.その独自仕様がどうしても必要というのなら構わないが,そうでない部分は標準的な仕様に合わせる妥協というのも必要だ.
日系ビジネス人文庫,「カルロス・ゴーン経営を語る (日経ビジネス人文庫)」P267より,「発注が細かいというのは私たちの提案を聞いてくれないせいです.というのも納入部品のスペック(仕様)は,業界の標準でなく,日産の決めたものでやって欲しいというのですから...ええ,品質の問題から,どうしてもそうでなければならない時以外でもそうなのです.(中略)つまり,日産のシステムは非効率的なのです.こんなやり方をしていたら,それに見合ったレベルのサプライヤーしか持てなくなるでしょう.
「こんなやり方」を続けてきた結果,最後には誰もいなくなったのがIT業界.

*4:モデリング」された場合などは最悪だ.

*5:言いかえれば,この部分で3倍以上の見積もりミスが生じている.この「見積もりミス」を修正せずに,そのまま進めばデスマーチに突入間違いなし.