本題に入る前に三菱化学鹿島事業所の事故で亡くなった4人の方に哀悼の意を表したい。本コラムでも警笛を鳴らしてきた問題である。外れて欲しい予想の一つであった。

 さて,2008年の皮切りはソフト屋とハード屋の話である。ソフトの肥大化は大きな問題である。「Windows XP」はC言語で4000万行のソフトだそうである。私の計算では,読むだけで1万時間かかる。年に2000時間労働で,5年である。読んでいる内に「Windows Vista」が開発されるので,すべて読んでいる人はいないだろうと以前のコラムに書いた。携帯電話や高級自動車に搭載されているソフトは約1000万行と言われている。これも技術者一人で読める規模ではない。これだけソフト量が増える要因の一つには,過去の資産の流用がある。蓄積されたソフト群の要,不要を整理せずに新たにソフトを積み重ねるやり方である。

 この問題点は昔から指摘されており,解決法の一つがオブジェクト指向開発と言われている。ソフト屋にオブジェクト指向とは何かと聞くと,C++とかJAVA,または階層性とか継承性とか難しいことを答える。これは単なる部品化だ。それなら,ハード屋が得意とする話しである。

 ソフト屋は部品を知らない。部品というよりは実装かもしれない。日経エレクトロニクスの最新号(2007年12月31日号)に最新携帯電話の内部が掲載されている(Tech-On!関連記事)。良いものは美しい。良いものは手直しが少ない。配置は計算され尽くされている。余分なジャンパー線も余分なスペーサーも見当たらない。素晴らしい実装である。

 ソフトも同様である。良いソフトは美しい。良いソフトは手直しが少ない。考え抜かれたクラス構成となっており,余分なポインターや,余分な変換ルーティンがない。

 日本には世界で戦えるソフトが無いそうである。OSもミドルウエアも,応用ソフトも,米国や海外のソフトが幅を利かせている。日本人にはソフトの才能がないそうである。本当だろうか。

 日本にも世界中で使われているソフトがある。ご存知のゲームソフトである。日本発のゲーム機である「プレイステーション」も「Wii」も世界を席巻している。その上で動作するソフトも日本で開発されたものが多い。

 業務用は“3R”といわれる。“Real-Time,Reliable,Robust”である。でも,見方によればゲーム機の方が3Rの要求がきつい。応答が遅ければ嫌われ,すぐにフリーズすれば「くそゲー」と呼ばれる。ロバスト,頑健性もゲーム機が上である。業務用ではリセットボタンとAボタンを同時に押しながら電源を入れることはない。手順に従わなければ怒られる世界が業務である。それに対し,子供は隠れコマンド探しの競争を始める。投げて,踏んで,ひっくり返すかもしれない。いやー,ゲーム機の開発者はすごい。

 ソフトも同じである。ゲームソフトの開発には映画と変わらぬ費用と体制が組まれるそうである。数十億円から数百億円の費用と,監督,シナリオライター,グラフィックデザイナーなどなどが集められる。その中でプログラマーは小道具係のような地位かもしれない。

 組み込みソフトや業務用ソフトも同様の体制を整えれば,世界で通用するものが開発できるだろう。現状は,コードは書けるが仕様書を書くのは苦手な人ばかりで開発されているように思う。

 さて,急に映画規模の人員をそろえることも,数十億円の開発費を用意することも難しい。しかし,ソフトの品質向上は急務である。手軽なのは既に人材がそろっているハード屋を使うことである。部品とは何か,部品をどのように組み合わせるのか,部品の再利用はどのようにするのか,すべてに答えが用意されている。

 それでは,ハード屋にC++やJAVAを読ませるのか。それは駄目だろう。ソフトを携帯電話やゲーム機の実装のように「見える化」することが先決だろう。日経BP社もハードの分解ばかりではなく,ソフトの分解もして欲しい。

 どのように「見える化」するかってご質問ですか? それはUML(Unified Modeling Language)でしょう。コードからモデルを作るツールも揃っている。一度,使ってみてはいかがでしょう。コードを読んで感動する時代ではない。ユースケース図やクラス図を見て,感動する時代である。良いソフトも良いハードも美しさは同じである。ハードにおいては軽薄短小で世界一の日本が,軽薄短小のソフトを出来ないわけがない。出来ないなら,やり方が悪いだけのことである。何? ツールを使っても変換できない? それはプログラムがスパゲティ化しているからでしょう。それは駄目だ。お願いだから,そんなもので商売はしないで下さい。