2006-12-09

MATLABのビジネスから見る知的生産性とは

MATLAB というツールをご存じだろうか? MATLAB とは MATrix LABoratory の略で MathWork 社が市販している計算技術用ソフトウェアのひとつである。日本ではサイバネットシステム株式会社が販売代理店となっている。

12月7日に 毎年恒例の MATLAB EXPO 2006 が東京プリンスホテルパークタワーで開催された。

MATLAB EXPO に行くといつも不思議に思うのはどうして一つの製品とそれにまつわるサードパーティだけの資金でこんなに派手な展示会ができるのだろうという疑問だ。

MATLAB EXPO 2006では、ランチボックスの券が配られていたし、講演を聴いたり、サードパーティのブースに立ち寄ってポイントを集めると帰りに抽選ができ、マウンテンバイクやニンテンドウDS Lite などが当たる。はずれても500円のクオカードがもれなくもらえる。他の展示会と比べてもかなりリッチな感じがする。

MATLAB のビジネスがなぜリッチなのかは後で触れるとして、MATLAB EXPO 2006 で MATLAB と Simulink をそれぞれ1時間ずつさわる機会があった。

簡単な例題をMATLAB と Simulink を使い、インストラクターの指示に従いながらノートパソコンで実際にやってみるというトラックだ。

MATLABの演習トラックの例題は、excelシートに格納されたいろいろな周波数が混在した信号のデータ列を読み込んで FFTをかけて、パワースペクトルを表示させて信号の周波数特性を眺めてみるというものだった。

この例題を通して 分かったMATLAB の特徴とは次のようなものだ。
  1. データは何も指定しなければ double 型で読み込まれる。(インストラクターはMATLABは通常のプログラミング言語のようにデータ型を指定する必要がないと言っていたが、正確にはデフォルトで double型になるということ)
  2. MATLABはBASICのようなインタプリタ型であり、コマンドラインから入力した命令を1行ごとに解釈し実行する。
  3. いろいろ試行錯誤してうまくいったら、プログラムファイルに実行したコマンドをコピーして整形し保存するような使い方が一般的。
  4. プログラムファイルにはスクリプトのファイルと関数のファイルの2種類があり、用途によって使い分けることができる。
  5. スクリプトファイルと関数ファイルはテキストなのでライブラリとして公開することが簡単にできる。(利益を考えなくて良い研究者達には便利)
  6. GUIのインターフェースはあらかじめいろいろなものが用意されている。

さて、用意された信号データの周波数成分を調べる演習で感じたのは「これって、自分が excel でやってた手順と同じだなあ」という感覚だ。

信号処理の仕事を生業としていた技術者としては、A/D変換したデータの周波数特性を調べるという作業はなじみが深い。

今回 MATLAB で実施したようなことは、ちょっと面倒だが excelのシート上で計算を行い、最終的に出た結果をグラフ表示させることで同じことができる。じゃあ、なんで MATLAB EXPO がこんなにリッチなのか。それは、MATLAB のパッケージ力と simulink のコンビネーションが強力なのだ。

MATLAB と Simulinkのコンビネーションが利益を生み出すしくみについては後で触れるとして、次に、Simulink の例題を行った。Simulink では MATLABで作成したコンポーネントをワークスペースに配置し、コンポーネント同士を結線して必要なシステムを構成していく。コンポーネントは分野ごとにライブラリが用意されており、自分でコンポーネントをわざわざ作らなくても大抵のことができてしまう。ただ、特定の分野によって必要なライブラリをパッケージにした商品が別売りされておりこれらのパッケージを売るサードパーティの会社がたくさんある。(ここに MATLAB EXPO がリッチである秘密がある)

演習では、SIN波を発生させて、スコープで眺めたり、ノイズを混入させた音声信号にフィルタをかけ、FFTを行ってパワースペクトルを取り、生波形を表示させながらフィルタの効きを見たりした。

MATLAB を使うとローパスフィルタの設計も簡単にできる。たとえば、カットオフ周波数0.4Hz、次数7、通過帯域リップル1dB、遮断周波数30dBの仕様を満たす楕円フィルタを設計したいとしたら、

>> [b,a] = ellip(7, 1, 30, 0.4)

と打ち込めば、b=分子係数と a=分母係数が求まる。このフィルタの周波数特性をグラフに表示させるとあら不思議、狙った通りの特性がでている。

さて、ここからが本論だ。

信号処理系の組込みソフトエンジニアは、MATLAB と Simulink がいとも簡単にやってのけるこのようなフィルタ設計をどうやってやって設計してきたか。

まず、前提条件として8ビット、16ビットの汎用的なCPUで、double の演算をバシバシ使うフィルタを設計したらまず先輩から「バカ」と言われる。C言語で書いた浮動小数点の演算をアセンブラのコードに落とすとどうなるのか見たことがあるエンジニアなら分かると思うが、整数演算なら3インストラクションで終わるようなたった一行の処理が、浮動小数点演算では100インストラクション以上かかったりする。

(unsigned short)x = (unsigned short)x /2



(double)x = (double)x /2.0

は両方ともたった一行で表される式だけれども、アセンブラにすれば上は汎用レジスタに格納して右に一回シフトして終わり。ところが下は延々と処理をこなさないと答えがでない。

要するに浮動小数点の演算は CPUに負荷をかけるし、組込みシステムのCPUはフィルタ以外にもやらなければいけない処理がたくさんあるので、組込みソフトエンジニアはできるだけ整数演算で目的の周波数特性に近い特性が得られるようなフィルタを設計する。

このようなフィルタは基本的な設計の指針はあるものの、最後は組込みソフトエンジニアが試行錯誤で作り上げることになる。組込みソフトエンジニアが要求と制約条件をすり合わせて最適解を求めるのだ。

MATLAB と Simulink がいとも簡単に目的の周波数特性のフィルタを作り上げることができるのは、PCの能力が格段に上がっているからだ。昔なら大学の計算機センターくらいでしかできなかった計算を今ならパソコン上で待ち時間なしで実行できる。

MATLAB と Simulink には上記のような試行錯誤で作り上げる職人芸のような要素はない。MATLAB と Simulink で作るモデルは MDD(Model Driven Design)で言うところの PIM(Platform Independent Model)になるのだろう。ただ、負け惜しみ的な気持ちも含めて言うと、プラットフォームに依存していないといっているのは、非常に高性能なプラットフォームを想定していて、かつ、データ型はデフォルトで double 型にしているからPIM(Platform Independent Model)だと言えるのであって、MATLAB と Simulink で作ったモデルは(コストアップをともなわずに)必ずしも組込みシステムに実装できるとは限らない。

コストアップをともなわずにと注釈を入れたのは、DSP(Digital Signal Processor)を使ったり、FPGAのIP(Intellectual Property:知的財産)に落とし込んでしまえば実装が可能なところまで実装技術が進んでおり、コストを気にしなければPIMはPSM(Platform Specification Model)に変換できる世の中になっているからだ。しかし、多くの場合このようなアプローチはコストアップがともなう。でも、MATLAB と Simulink を使って作ったモデルが商品の価値となり、コストアップとその価値のトレードオフの結果がユーザーに受け入れられるのであれば問題ないし、職人芸で作り上げるコンポーネントよりも早く開発でき品質が高いのであれば、ツールやライブラリが高かったとしても最終的にはペイできるかもしれない。

ところで、Simulink と非常に似ているツールでナショナルインスツルメンツ社の LabVIEW というものがある。LabVIEW も Simulink と同じで、豊富に用意されたコンポーネントをつなぎ合わせて、あっという間にカスタマイズしたオシロスコープなどができてしまう。

MATLAB , Simulink にあって、LabVIEW にないもの、それは研究者に対する配慮ではないだろうか。MATLAB , Simulink は自然科学の研究者にとってとても有効なツールだと思う。過去の研究者が発表した理論式を組み合わせたり修正したりして、まだ未着手の分野の対象から取り出したデータに適用して、グラフィカルに表示させれば論文用の図があっという間にできてしまう。

コンポーネント化された知見を組み合わせるか、モディファイするか、パラメータを変えるかして、未開拓の分野の問題を解決する実験をパソコン上でシミュレーションをし、よさげな結果がでたらグラフィカルに表示して論文にする。うーん、こんなおいしい話はない。(いずれにせよ、科学技術の研究とはそういうものかもしれないが・・・)

そして、新しくできた知見はパッケージにして売り出すこともできる。ただ、ひとつ問題なのは、MATLAB , Simulink で作ったモデルは、強力な性能のCPUと浮動小数点演算によって裏打ちされたPIMであり、ひ弱なCPUと整数演算と限られたメモリいう制約条件を持つシステムに実装するには、また別の組込み技術が必要になるということだ。(どんな技術が必要かは『組込みソフトエンジニアを極め』を参照されたし)

しかし、そうはいうものの、CPUの性能は常に向上し続けており、メモリの価格も安くなっている。分野や用途によっては、研究者が考えた新しいコンポーネントを人の手を介すことなく製品に組み込むことも可能になってきた。

このことは MATLAB , Simulink が、研究者と開発現場のエンジニア、科学技術を必要としている企業の橋渡ししているとも言える。個人的な偏見かもしれないが、研究者と現場のソフトウェアエンジニアは仲が悪い。なぜなら、浮動小数点演算に象徴されるように、研究者は組込みソフトの開発現場の制約条件を考えてくれていないという思いが技術者サイドにあるからである。

しかし、『組込みソフトエンジニアを極める』第2章 機能分割のハードルを越える p147 図2.23 制約条件をクリアしながら最適化を図る に描いたように、規模が拡大したソフトウェアシステムではもうすり合わせ的な作り方では開発が間に合わないし、品質を確保することもできない。

科学技術をコンポーネント化し組み合わせの部品として使うことができればアドバンテージになりやすい。しかも科学技術の部分は利益を欲しないアカデミアンの研究成果やサードパーティのライブラリを使うこともできる。

でも、コンポーネントの組み合わせだけでは十分に要求を満たせないのが組込みソフトの難しいところだ。グニャグニャしたすり合わせ的な要素は必ずある。そして、そのすり合わせ的な要素が商品の快適性や低消費電力を可能にしていたりする。

MATLAB , Simulink を触ってみて分かったのは、MATLAB , Simulink は知的生産性を高めるための道具として優れているいうことだ。科学技術をパッケージ化し、必要な分野の企業に売る。パッケージ化したコンポーネントはオブジェクト指向設計と同じで、高凝集・疎結合なモジュールとなっているためつなぎ合わせて使いやすい。

このコンポーネントの需要が高めれば、黙っていてもどんどん売れる。科学技術をコンポーネントに隠蔽して商品として売るビジネスモデルは当たれば利益率が良いだろう。

組込みソフトウェア、組込み機器自体は、実は知的生産性の高めることに成功した顕著な例と言える。組込み機器のソフトウェアに知見を隠蔽することができ価値が認められば、製品は黙っていても工場がどんどん作ってくれ、知見は製品に乗ってどんどん売れる。

問題は組込みソフトウェアの規模が大きくなってきたので、組込み機器の内部で組み合わせ用のコンポーネントを使わないと開発効率が上がらなくなってきたということだ。

ところが、組込みシステムに使うミドルウェアは必ずといっていいほどチューニングが必要であり、ポーティングを行うことが多い。これは黙っていてもどんどん売れるという流れではない。知的生産性が悪い。

コンサルティングなども同じだ。人がコンサルテーションによって知見を伝えることができる効率には限界がある。著名なコンサルタントの単価を上げても普通のコンサルタント100人分にすることはできないだろう。

一方、書籍は知見を広めるには非常にいい媒体で知的生産性が高いが、単価が安いので利益率が低い。

でも、MATLAB , Simulink はツールを媒介して、比較的単価の高いパッケージを流通させることができる。だから、MATLAB EXPO はリッチなのだ。

今後、MATLAB , Simulink で作ったコンポーネントが組込みシステムに実装できるかどうかは、組込みアーキテクトが組込みシステムを科学技術が適用される部分と適用されない部分に切り分けて設計できるかどうかにかかっていると思う。

科学技術を適用する部分をパッケージにし、インターフェースを明確にして、システムの制約条件をクリアすることができれば製品の付加価値を高めることにつながる。

科学技術は先人の科学者が何百年もかけて積み上げた知見のたかまりだ。すり合わせて作るソフトウェアには数人のエンジニアの知見しか作り込めないが、科学技術をコンポーネント化して組込みシステムに実装できれば、のべ何百人分もの知見を製品にインプリメントすることができる。

それが他社に真似できないような知見ならさらに競争力は高まる。

ちなみに、MATLAB , Simulink を使わなくても、科学技術を利用する部分を特定しコンポーネント化することができ、制約条件をクリアして実装する技術があれば、付加価値の高い製品を作り上げることはできるので、慌ててMATLAB , Simulink の購入を検討するのはやめた方がいい。
 

2006-12-02

エンジニアにどうやってインセンティブを与えるか

先週「組込みか組込みでないかの違いはどこにある?」の記事の中で、任天堂の Wii コントローラを題材にして、組込みか組込みでないかの違いは「世界を固定するかしないかの違い」ではないかと書いた。

この記事の中でハードウェアデバイスは日々進化しており、それらのハードウェアデバイスを取り入れることで世界は広がるはずだとも書いた。

でも、その後よく考えてみたら、これは「洗濯機メーカーは新しい洗濯機を開発しようとしてはいけない」の記事で書いた「真のユーザーニーズ」のことを考えていなかったかもしれないと思った。

「洗濯機メーカーは新しい洗濯機を開発しようとしてはいけない」の記事で書いたのは1993年に聞いた当時東京理科大の高橋 武則先生(現 慶應義塾大学大学院教授,工学博士,健康マネジメント研究科 教授)の話で、ユーザーは衣類をきれいにしたいのであって洗濯機は衣類をきれいにする手段のひとつで、ワイシャツ1枚10円でクリーニングしてくれるクリーニング屋が現れたら、必要なくなるかもしれないという話だ。

この話の真意を考えれば、日々進化するハードウェアデバイスを取り入れることが世界を閉ざさないことに通じるという考え方はおかしい、間違っている。

なぜなら、新しいハードウェアデバイスを取り入れることは手段であって、ユーザーニーズを満たすための本質ではない。

インターネットショップで買ったものが思ったようなものではなかったり、サイズが間違っていたとき、無料で引き取ってくれるサービスを始めた店が売り上げを伸ばしているというニュースを見たことがある。インターネットショッピングで「しまった。やめておけばよかった。」ということはよくある。間違った買い物に対して、ショップが無料で引き取ってくれると店との信頼関係が生まれ次の買い物も安心して気軽に選べる。

これは「プロダクトのよさ」を追求したのではない、サービスのよさを追求した結果だ。

日経ビジネス 2006年11月27日号 に-「お母さん」を狙え! 任天堂がWiiに託すお茶の間戦略 -を読んだ。「組込みか組込みでないかの違いはどこにある?」の記事を書いた後だ。

この記事を見た最初に感じたのは Wii がプロダクトとしてワクワクするのは組込みとか非組込みとかいうことではなく、岩田社長を始め任天堂のトップマネージメントたちは家族を巻き込んで使ってもらうプロダクトやサービスは何かを考えていたということだ。

冒頭の写真は、2006年の5月、米ロサンゼルスの展示会「E3」で Wii Sports をプレゼンする岩田聡社長(左)と宮本茂専務だ。

この写真を見て、社長と専務が自分たちのプロダクトをこんなに楽しそうに披露できる会社ってうらやましいなと思った。

任天堂は今でこそ、ニンテンドウDS Lite が大ヒットしているが、ファミリーコンピュータ以降、ゲームキューブのときに売り上げの低迷を経験している。

岩田社長はもともとゲームソフトHAL研究所から2002年に任天堂に移り社長になった。岩田社長とソフト開発部門のトップの宮本専務とハード開発部門トップの竹田専務の3トップでゲーム人口減少への危機感で議論を重ねたそうだ。

岩田社長がすごいと思うのは、自分が若くゲームソフト会社から来た外様であり、前任社長の山内氏は鋭い直感を武器にカリスマを崇められてきたオーナーであるということをふまえて、自分が何を言ったとしても生え抜き社員が素直に言うことに従うとは限らないと考え、「徹底して丁寧し説明し、同意を得る」ことにしようと決めたことだ。

経営陣とまず議論を重ね、出た結論を自分の言葉で繰り返し社内に説明し続けた。

「高機能・高画質ではない手段で、たくさんのユーザーが楽しめる据え置き型ゲーム機を目指す」という3トップの意見は一致したが、社内からは疑念の声が多く上がったそうだ。これに対して岩田社長は時間をかけて丁寧に説明し、目標を具体的に示した。

この「高機能・高画質ではない手段で、たくさんのユーザーが楽しめる据え置き型ゲーム機を目指す」という目標に、即座に「その通り」と反応する社員が数多くいた一方で、方針転換になかなか踏ん切りにつかない社員もいたそうだ。しかし、ニンテンドウDSが市場に受け入れらたことを目の当たりにして、躊躇していた社員も態度を変えるようになった。

岩田社長が考えるニンテンドウのゲーム機のコンセプトは「ゲームに関心のなかった人にも邪魔に思われないような、特に家庭のお母さんに嫌われないようなゲーム機」とのこと。

これには我が家も見事にはまっている。ニンテンドウDS Lite を手に入れた子供はまず、「どうぶつの森」を買った。どうぶつの森はドラゴンクエストのようなゲームとは違い、特に達成すべき目標のようなものがない。四季が移り変わるどうぶつの森で、虫取りや魚釣りなどをしながら、どうぶつの森の住人達と関わってただ時間を過ごすだけなのだ。

「家庭のお母さんに嫌われない」秘訣がここにある。子供はゲームをしていると季節によってなる果物や釣れる魚の違いがわかったり、お金を貯めて家のローン返すといったことを学ぶことができ、発見したことを母親や父親にうれしそうに話す。そうすると親は「DSは勉強にもなるのか」と思う。

実際、自分は「英語漬け」というソフトを買って、ディクテーション(発音された単語や文章を書き取ること)を続けている。

結局、どうぶつの森は家族全員がやることになり、母親は「ゲームに関心のなかった人にも邪魔に思われないような、特に家庭のお母さんに嫌われないようなゲーム機」に見事にはまっている。

ちょっと話はそれるが、このバーチャルな世界で現実の世界を学習したかのように感じることには問題点もある。どうぶつの森の魚釣りはそれなりに難しいがコツをつかめば釣れる確率は非常に高い。でも実際の釣りはそんなに簡単なものではないだろう。いろいろな経験を疑似体験できるのは良い面もあるが、現実の厳しさや厳しさを乗り切るための我慢強さの重要性を学ぶことができないのはよくない。

現実の世界で、自分の思った通りにならないとキレやすい子供を作っているのはちょっと苦労すれば欲しいものが手に入るバーチャルな世界に慣れてしまっているからではないだろうか。ゲームの存在する世界をいまさら否定することはできないが、ゲームによる弊害についても考えておく必要があると思う。

さて、任天堂の会社の話に戻そう。

Wii の企画で、ハードウェア技術者はロードマップから外れたものを作るという決断に対して不安に思っていたという。そもそも任天堂では (おそらく技術)ロードマップ があったというところがすごい。他社の様子を見ながらの行き当たりばったりの開発ではなく、数年もしくは10年後に開発が進むであろう新しい技術やデバイスの取り込みの準備をしていたに違いない。

そんなロードマップから外れても岩田社長は「ゲームに関心のなかった人にも邪魔に思われないような、特に家庭のお母さんに嫌われないようなゲーム機」を作りたい、作らなければならないというコンセプトを伝え、方針の転換に理解を求めた。

そして、浮かんでは消えた試作品の数々を経て、Wiiリモコンができた。

Wii はハードウェアもすごい、Tech-on の記事によると、「Wii を分解して驚くのは,低コストを狙い,徹底的に練られた設計である」とのこと。

一目見てシンプルと分かるメイン・ボードに載る部品点数はおそらく1000を大幅に切る少なさ。いくつかのカスタムLSIとゲームキューブとの互換性を保つためのコネクタ類を除くと,大半の部品に汎用品を採用している。

数百万台作っても同じ品質を保つのは本当に難しい。ハードもソフトも同じで生産時の検査で乗り切ろうとしても限界がある。設計時に品質を作り込まなければ絶対ムリだ。

だから、Wiiの設計方針は決して低コスト一辺倒ではない。ここぞという部分には思い切ってコストを掛けるメリハリがあり、その象徴が金メッキ部品の多用とのこと。

すぐれたプロダクトには見えないところにさまざまな工夫が施されている。ゲームの遊ぶ側だけした体験していない子供達が、多くの人々に受け入れられるようなプロダクトを作れる技術者になれるのだろうか? ちょっと不安が残る。

Wii の開発秘話で分かったのは、よいプロダクトを生み出すのに必要なのは組織上層部やプロジェクトリーダーの熱意だったりするということだ。

なぜ「だったりする」のかというと、これはあまり科学的でもエンジニアリングでもない話であり、「熱意がなけりゃ良いもの作れないのかよ」という不満も含まれているからだ。

一つ言えるのは組込みはプロジェクトに「熱意」を伝えやすいということだ。プロダクトが形に見えるものであり、最終的に自分たちが思った通りに動くようになるとうれしいし、そのプロダクトが多くの人に受け入れられることを想像すると力がわく。

でも当たり前だが「熱意」だけではものづくりは成就できない。ベースに技術がなければムリだ。また、品質を高く保つには技術だけでなく、組織内でのルールや規範も必要になってくる。

エンジニアにインセンティブを与えるには、市場やユーザーが求めている 顕在的価値(Real Value)と潜在的価値(Potential Value) が何であるかを分析し、根気よく伝え、それらの価値を創造するための製品やサービスを実現するために技術を身につけなければならないと考えてもらうことだろう。(ものづくり戦略とソフトウェア品質 を参照されたし)

市場やユーザーが求めている価値が何であるかがエンジニアに伝われば、必要な技術が何かを理解できるようになり、ツールや規範もなぜ守らなければいけないのかが分かるようになる。

市場やユーザーが求める価値を実感するには、自分以外の人間に心の底から「ありがとう」と感謝される経験を重ねることが大事だ。自分のくふうで感謝される経験が積み重なれば、どんなくふうをすればプロダクトの価値を高めることができるのか分かるようなる。

このことはカルロス・ゴーン氏が語った「働くことの本質は貢献である」につながる。

2006-11-26

組込みか組込みでないかの違いはどこにある?

組込みソフトって何だろうと考えていた。組込みシステム(組込みソフト)を定義する試みはたくさんある。

具体的には、携帯電話、自動車、カーナビゲーションシステム、炊飯器、信号機、エレベーター、自動販売機、デジタルカメラ、テレビなどなど、生活の周りにある電気製品のほとんどが組込みシステムだ。

フリー百科事典『ウィキペディア(Wikipedia)によると、組込みシステムの特徴について以下のように書かれている。

【汎用システムに対する組み込みシステムの特徴】
  • ソフトウェアだけでなくハードウェアも専用のものを開発することが多い。
  • 機械の制御を行う場合にはリアルタイム制御が重要になる。
  • 大量生産される製品の場合にはコストが非常に重要となるので、少ない容量のメモリと、安価なCPUで動作する必要がある。
  • ほとんどの組み込みシステムでは、ユーザがプログラムを入れ替えたり更新したりすることは想定されない。そのため汎用コンピュータよりも自由にオペレーティングシステムやシステム構成を選択できる。
  • 多くの場合、ソフトウェアはROMに書き込まれた状態で出荷されるため、出荷後にバグが発見されると、製品回収・ROM交換作業などが必要になり、多大な費用がかかる。近年、ソフトウェアはROMではなくフラッシュメモリに格納され書き換え可能になったが、出荷後の改修が困難なことは変わっていない。
  • ソフトウェアはC言語で記述されることが多い。32ビットマイコンなどの比較的ハードウェア資源が豊富な環境ではC++やJavaが使用されることもある一方で、ハードウェアを直接操作する場面や、4ビットマイコンなどの資源が貧弱な環境では、現代でもアセンブリ言語の使用が必須である。
  • デバッグは、ICEと呼ばれる機器を用いてパソコンをCPUに接続してリモートで行う。近年では、ICEを使わずJTAGエミュレータやROMエミュレータなどのエミュレータや、パソコン上でCPUの機能をシミュレートするシミュレータも使用される。
  • 近年ではPCベースのハードウェアの低価格化に伴い、PCベースのハードウェアを使用し、OSも組み込み向けにカスタマイズしたWindowsやLinuxを採用することも多い。
  • 携帯電話やデジタル家電、自動車など、必要とする機能が多岐にわたるシステムは、複数のマイコン・複数のOSを組み合わせたものとなり、数百人単位の開発人数・数年規模の開発期間を必要とする。このため、大規模組み込みシステムと呼ばれることがある。

逆に組込みシステムではないもの(Wikipediaでは汎用システム)って具体的にはなんだろうか? 一番分かりやすいのはパーソナルコンピュータやワークステーションだろう。

PCの特徴は IBM と Microsoft のおかげで、アプリケーションソフトから見たハードウェアのインターフェースが共通になっているため、アプリケーションソフトの制作者はPCのハードウェアの違いをあまり意識しないでよいという点だと思う。(Mac もMacの中だけで考えれば同じ)

共通のハードウェアプラットフォームがあり、そこへいろいろなソフトウェアをインストールして使える、もしくは、その都度その都度ソフトウェアをダウンロードして使えるようなシステムは汎用システムとなるように思える。

そうすると、現在の携帯電話は電話としての機能は特定の用途を実現するための組込みシステムだが、電話をかけていないときは、インターネットに接続しWEBブラウジングや Java アプリを実行したりできるので、汎用システムであるとも言える。

ゲーム機も同じだ。CDやカセットを入れ替えて共通のコントローラを使って、いろいろなアプリケーションソフトを使うことができる。

そう思っていたら、任天堂の Wii のコマーシャルが流れてきて「ああ、これが組込みの特徴かも知れない」とピンときた。

Wii は何と言ってもWiiリモコンがこれまでのゲーム機にはないデバイスだ。具体的にはモーションセンサと呼ばれる三次元の加速度センサが新しい。この三次元の加速度センタを使うことで、リモコンを上下、左右に振ったり、突き出したりする動きをセンシングしてゲームに取り入れることができる。

これまでのゲーム機は基本的に左手の親指で十字のコントローラを動かし、右手の親指でボタンを押すというインターフェースしか持っていなかったが、三次元の加速度センタを使うことでまったく新しいゲームの遊び方を提案することが可能になった。

ニンテンドウDS のタッチスクリーンとタッチペンも同じようにそれまでのゲーム機にはなかった新しいインターフェースデバイスだった。リモコンに仕込まれた振動装置も新しいデバイスだったがこれはこれまでの環境を劇的に変化させるようなものではなかった。

Wii リモコンを見たときに「これが組込みの特徴かもしれない」と思った。新しいハードウェアデバイスをシステムに取り込むことで顧客満足度を高めることができるのが組込みシステムではないかという考え方だ。

でも、一般的にはパソコンの方がアプリケーションソフトの入れ替えによって用途が無限に広がり、顧客満足を高めるくふうがしやすいように見える。でも、よく考えるとパソコンのインプットデバイスはキーボード、マウス、マイクであり、アウトプットデバイスはディスプレイとスピーカと意外に限定されている。

だからできることのバリエーションの大部分はディスプレイの中だけに閉じている。人間の入力情報の多くは視覚からきているので、パソコンのディスプレイからいろいろな情報を流すことが可能なのだが、人間の生活はディスプレイの中だけに閉じているわけではない。現実の世界はディスプレイの中の世界よりももっともっと広い。

プラットフォームを共通にするということはアプリケーションソフトの入れ替えが容易になるというメリットはあるものの、見方を変えれば「世界を固定する」ことのようにも考えられる。

世界を固定すると言っても、狭く囲う場合と広く囲う場合がある。固定した世界の範囲が広いと、一見そのプラットフォームで提供できる世界が無限に広がっているように見えるが、システムを作る側も利用する側もそう思い込んでしまうと、実際の世界はどんどん広がっているのに、固定された世界の中しか商品や市場を見ていないということになりかねない。

今回の任天堂のWii を見てそう思った。Wii の登場で、PS3やX-BOXは一見無限に広がっていそうな固定された世界で勝負しようとしていて、現実世界の広さを見失っているように思えてきた。

この話は「洗濯機メーカーは新しい洗濯機を開発しようとしてはいけない」の記事で書いたことに共通する。現行機種と現行機種の使われ方だけを見ていると、真のユーザーニーズや、デバイスの制限でできていなかったことをすっかり忘れてしまう。

ハードウェアデバイスは常に進化している。自分たちの市場とはまったく関係ないところで開発されたデバイスが、思いもよらないところで役に立ったりする。Wii のモーションセンサもITmediaの記事によると、もともとは自動車のエアバッグを作動させるときのために開発されたセンサらしい。

そう考えると、組込みシステムが相手にする世界は非常に広く、現行製品にありとあらゆるデバイスを取り入れることで、その市場における顧客満足をより高める製品に進化させる可能性があるように思う。

そうなると、組込みソフトウェアエンジニア側も、どのようなキーデバイスが取り込まれて、開発環境もどう変化するのか分からないので常に柔軟な対応が迫られる。

逆に言えば、あらゆる未知のデバイスを使いこなせるスキルの下地があればその市場において非常に競争力の高い商品をアウトプットできるようになる。

組込みか組込みでないかの違いは「世界を固定するかしないかの違い」であり、組込みは世界を固定しないだけに技術者に求められるスキルも多様であり、挑戦者にとってのやりがいが大きいと考えるのはどうだろう。