雑種路線でいこう

ぼちぼち再開しようか

いつかきた道: ソフト部品の共通化はなぜ難しいのか

報告書が公表される前に論評するにはリスクがあるのだが,政府が音頭を取って協議会をつくり,ソフトウェア部品を共通化しようという話があるらしい.これって20年近く前に頓挫したシグマプロジェクトそっくりじゃない?

経済産業省は、携帯電話に組み込んだり、顧客情報の管理などに使ったりする業務用ソフトウエアへの投資効率化に向けて、業界ごとにソフトの基礎部分を共通化するための協議会を年内に設立する方針を明らかにした。
コスト削減と同時に競争力の強化を狙う。

シグマプロジェクトを知らない人も多いだろうし,興味があったら下記あたりを読むといいかも知れない.ここではソフトウェアの部品化に対するツッコミだけ引用しておくけど.(リンクをクリックして文字化けしたら,エンコーディングを手動でShift-JISにしてくれ)

だってだぜ。この計画はおどろくなかれコンピュータはこれ以上進歩しない,という前提に立ってたのだ。とまれ,シグマ計画の眼目は「ソフトウェアの部品化とその集中管理」にあった。全国の「シグマ・ワークステーション」で作られたソフトの部品を通産省内に構築する予定だった巨大なサーバで一元管理,供給する。(略)
ソフトウェアの部品化という考えはまぁいいとする。かつて言われたモジュール化もただ今全盛のオブジェクト指向もその根幹にはこれがあるわけだからな。だけど,マシンは進歩するんである。OSも進化するんである。環境も変われば要求される処理も変わる,当時はまだこの言葉はなかったが,状況はDog Yearで変転するのだ。その中にあってシグマで集めた部品がいつまで役に立つ? (略)
まだある,この計画ではそういう「部品」としてのソフトウェアは通産省のホストに自然に集まるみたいな話だった。どこのバカが自分の作ったソフトウェアを,それを部品として使う将来の商売敵のために無償で提供するのだ?

昔モジュール化,今ならさしずめSOAAOP, DIとかDSLとか諸々あるけど.いや,そんな難しい話じゃない.ソフトの基礎部分が何を指すかよく分からないけど,要は何故いいモジュールが協議会に集まるんですか,それは陳腐化しないんですか,という問題.コンピュータの性能が上がり,ハード・ソフトのオープン化が進み,コンポーネントモデルが技術的に進歩したといっても問題の本質は何も変わっていない.言語だって,コンポーネントモデルだって,プログラミングパラダイムだって,ビジネスモデルだって,まだまだ変化しているし.Linuxとかオープンソースじゃうまくいってるじゃないか?とかいわれそうだけど,ここでいう「業務用ソフトウェア」って,どう考えてもEric S. Raymondいうところのノウアスフィアじゃないよね.
もうちょっと経済的に考えてみると,本当に投資負担が重くソフトの共通化に経済的なメリットのある領域では,とっくの昔に民間主導でソフトの共通化へ向けたプロジェクトが進んでいる.地銀や信金系のパッケージや共同システムなんかがそうだし,今や日本郵政さえSalesforce.comを選ぶご時勢である.裏を返せば共通化が進んでいないシステムというのは,共通化によるコスト削減が喫緊の課題ではないか,触ってはいけないレガシーコードを山ほど抱えていて共通化しようのないシステムである可能性が高い.ここ10年でリビルドできるシステムは,だいぶERPなどパッケージベースに置き換わっているはずだ.
では,いまある均衡と別の均衡を政府がつくれるかという問題を考えてみる.まず協議会に予算をつけて,共通部品を開発するというのはどうだろう.見込み顧客が充分にある共通部品なら,わざわざ政府が音頭を取らなくても民間でそのような共通部品を提供するベンダが現れている公算が高い.ではどこかの会社で動いている既存のコードを買い上げるのはどうか.これがうまくいくかは疑わしい.まず特定の環境で動くコードを,どこでも動くようにクリーンナップするにはコストがかかる.そのコストを誰が負担するのか.誰かしら負担したとして,どうやって元を取れるのだろうか.
仮にこれらの問題をクリアしてコードを公開したところで,処理系やユースケースによってテスティングはやり直す必要があるし,処理系のバージョンアップへの追随やセキュリティ対策,バグ修正など,メンテナンスは継続的に必要となる.競合他社の手にも渡る条件で誰が熱心にメンテナンスするだろうか.百歩譲って基礎部分についてテストケースやバグ修正を共有できたとして,誰か真面目にリファクタリングとか新たなコンポーネントモデル・開発技法へのキャッチアップを行うのだろうか.
つまるところソフトの共通化に明確な経済的メリットがあれば,例えば地銀や自動車のJasperのように役所が動く前からユーザー企業が動いているだろうし,経済的メリットがなければ役所が音頭を取って多少の予算をつけたところで焼け石に水である可能性が高い.そして,業務用ソフトウェアは業務プロセスと密接に関係している以上,机上で共通化にメリットがあるといったところで,実際に共通化できるとは限らないことは,いくつかの地銀のパッケージや共同システムへの移行の難航が示す通りである.民間企業が手前の経営判断でシステム投資をドブに捨てるのは勝手だが,税金が研究開発でもないところに無駄遣いされては困る.
どっちにしても少し考えればシステム屋には分かる話なので,協議会の設立という結論に至る過程で,どういうロジックなり,あっと驚く仕掛けがあるのか,明日発表になるという報告書の内容が楽しみでならない.シグマプロジェクトでの教訓が活かされているといいのだが.

補足: どうも「IT化の進展と我が国産業の競争力強化に関する研究会」というのがあり,こんな議論をしている模様.