2007-08-23

ソフトウェアの価値と自動化

最近ご無沙汰のさかいさんからコメントを頂いたので、昨日のエントリの続き。

大森記者の最後の段落での主張は、きっと、ソフトウェアの自動生成により低コストでユーザに価値を提供できるようになる、だと思う。違うかしら。違ったらごめんなさい。

この主張が僕にとって気持ち悪いのは、きっとこんな理由だ。もちろん昨日のエントリにも書いたが、ドメインがあまり変化しなければ、自動生成は可能である。でもこのドメインが変化しないというところが気持ち悪い。

ソフトウェアは、我々の生活を豊かにしてくれる存在だ。その豊かさは、我々が既に営んでいることをスピードアップしたり、コストダウンしてくれたり、スケールアップしてくれるものかもしれない。しかしむしろ、我々が暮らしている世界を広げてくれる存在であって欲しいと心から思う。

例えばカメラ付き携帯電話を考えてみよう。携帯電話にカメラが付いて、我々の生活に何が変わったか。合わせればカメラ付き携帯電話の大きさになる程度の小さな携帯電話と小さなデジカメを別々に持つこととは、訳が違う。携帯電話を使ってカメラで撮った画像を友達に送ることで、きっとコミュニケーションの幅が広がったのだ。カメラ付き携帯電話が出現する以前に、もし携帯電話用のソフトウェア自動生成ツールがあったら、カメラモジュールを付加できるような設計になっているだろうか。きっと、ツールの開発者はそんなこと思いもしないだろう。

もちろん、スピードアップやコストダウン、スケールアップで質が変わることもある。量の変化は質の変化を生むからね。でももしソフトウェアが自動生成ツールで全て作られるようになったら、我々の生活の幅の広がりが、とても小さく制限されてしまうような気がしてならない。ツールの開発者が考えつく程度の世界の中でしか、我々は生きられなくなってしまうのだ。

だから僕は、汎用的なソフトウェアを手動で開発できる手段を確保しておきたい、と思うのだろう。もちろん部分的に自動化するのは大歓迎だし、実際にたくさん成功している。一部のドメインでは、全体的な自動化にも成功しているだろう。しかし多くのソフトウェア開発が自動化されたら、何だか夢の無い世の中になるような気がする。ソフトウェアが「柔らかい」から、思いもしなかった世界が出現するのだ。

自信を持って主張するけど、多くのソフトウェアが自動生成されているような世の中は来ないと思う。自動車だって家電だって、自動開発はされていない。もしそういう世の中が来るとするならば、ソフトウェアがコモディティ化して、手動で開発する価値を持たなくなった時だ。"IT doesn't matter"ということか。でもきっとその時には、手動で開発するだけの価値のあるソフトウェアを、人間は誇りを持って開発していると思う。そう信じたい。

1 件のコメント:

自動車エンジニア さんのコメント...

自動車メーカーでシステム開発に携わっている者です。
少しコメントさせて頂きます。

>自動車だって家電だって、自動開発はされていない。

上の事は、少し認識が間違っているかと思います。
現在の自動車業界のソフト(システム)開発では実際に自動コード生成が商品開発に使用されています。
2000年くらいから、先行するメーカ(日産)がやり始め、それに続けと、日本国内、及び欧州・アメリカの主要自動車メーカも自動コード生成の量産展開の実績をあげています。
すでに世の中を走っている一部の車のECU(電子制御ユニット)には、自動生成されたコードが実装されていて、実際に車を制御しています。

自動車業界ではモデル駆動開発という言葉ではなく【モデルベース開発=MBD】という言葉で呼ばれています。
日本でも、【J-MAAB】という団体を、国内の自動車メーカー及び部品メーカー各社で集まってつくり、業界内でのモデルベース開発推進のための活動が行われております。
自動コード生成にまつわる標準化活動もその中の活動の1つとして行われています。

自動車業界のMBDでコアツールとして使われているのが【MATLAB/Simulink/Stateflow】というソフトです。開発元はMathWorksというアメリカの会社です。

【Simulink/Stateflow】でモデルを作ります。これが制御(システム)仕様書そのものになります。
このソフトの便利なところは、CADとしてだけでなくCAEとしても使用できるとこで、モデルを書いた段階で、机上でシステムの動作確認をシミュレーションで検証できます。
車のモデルと制御モデルとをつなげると、実車でなくても、そのシステムの動作挙動を机上で検証できます。
検証が終わった段階で、自動コード生成機能によってコードを自動で生成させて、それをECUに実装します。
当然、実装コードがモデルと完全に同等の動作をするか等の検証も行います。

自動車メーカーは付加価値を生み出す制御アルゴリズム(アプリケーション部分)のモデル作成に注力し、後は自動でコードを生成して実装しようというのが現在の流れです。

おそらく、組み込みエンジニアから見ると、いろんなとこで問題があるよう思われるかもしれませんが、私はこの流れはとまらないと思います。
文字(高級言語)を書くソフト開発は、図(モデル)を描くソフト開発へと移行していかなければなりません。
なぜならば、人と人との情報伝達を考えた場合、文字情報よりもビジュアルな図・画像の方が、情報伝達がスムーズで、情報量を過不足なく的確に伝達できるように感じます。
パソコンの世界が文字ベースのDOSからビジュアルな図ベースのWindowsに変わったことで、より多くの人に普及したのも、使い易さやビルゲイツの商売のうまさもあるかもしれませんが、やはり上のような図ベースによる情報伝達の利便性もあると思います。
おそらく将来のインターネットも文字情報よりも図・画像・動画情報の方がはるかに主流になるかと思います。

ソフト開発も人がやる営みである以上、うえのような流れにいくのは自然なのかなと個人的には思います。

以上、あくまで私の思い込み等含んだ主観的に意見です。