ソフトもハードも分ける時代ではない
機械産業のトップに君臨するトヨタ自動車がソフトウエアエンジニアを強く求めている。一方、インターネットサービスやソフトウエアのGoogleやFacebookがハードウエアエンジニアを求めている。自動車産業は、機械の塊からコンピュータ制御による低燃費化、排ガスを抑えたクルマ作りへと進化し、さらに短期間・低コストでクルマを出荷できるようにするためソフトウエアも導入してきた。インターネットサービス会社は、AIスピーカーやそれを搭載したスマートディスプレイといったハードウエアを設計・販売するようになった。今は、ハードもソフトも一緒にした製品やサービス作りが華やかになってきている。
こうなると、ハードウエアしか知らない、ソフトウエアしか知らない、ではすまなくなってくる。なぜ、ハードもソフトも必要になるか。自動車やAIスピーカー、スマートフォンなどコンピュータを使ったさまざまな製品が出てきたからだ。コンピュータとは単なる計算する機械ではない。ある特定用途の機械を作っても、汎用性はなく、別の機械が欲しくなるとゼロから作り直さなければならない。しかしコンピュータは、一つのハードウエア(機械)の上で、ソフトウエアのプログラムによってその機械を動かすようにしたものである。ソフトウエアを代えれば別の機能の機械になる。いちいち機械を作り直す必要がなくて済む。
この考えは、チューリングマシンで有名なアラン・チューリングが最初に打ち出した。彼は、ナチスドイツの暗号を解読するための機械を作らされたわけだが、アラン・チューリングをモデルにした映画「イミテーション・ゲーム~エニグマと天才数学者の秘密」の中で、彼は本当に自分が作りたかったのは、ソフトウエアを使って他の暗号も解けるようにする万能解読器だ、と述べている。そのために演算器と記憶装置を備え、命令とデータを記録装置から取り出す方式の計算装置、すなわち現在のコンピュータを考え出している。この考え方を突き詰めれば、コンピュータではないマシンでもソフトウエアを変えるだけで別のマシンに変身できるものが作れる、ということになる。これは今、組込みシステムと呼ばれている。
今は半導体技術のおかげで、コンピュータチップが安く手に入るようになった。マイクロコントローラ、いわゆるマイコンを使ってセンサデータを意味のある情報に変えて、インターネットの向こうにあるクラウドコンピュータに送るIoTセンサや、スマートフォン、AIスピーカーなどのハイテク商品だけではない。電気釜や洗濯機、冷蔵庫でさえ、マイコンが入っている。もちろんロボット掃除機も、身の回りの電気製品のほとんどにマイコンが入り、設定やプログラムを変えるだけで自分の仕様に変えることができる。クルマでは、ボタン一つでクルマの窓を開閉できるECU(電子制御ユニット)にもマイコンが入っている。
トヨタがソフトウエアエンジニアを強く求めているのは、1台のクルマにECUが大衆車で20~30個、高級車だと100個近く搭載されており、ソフトウエアのプログラム行数は、高級車だと1億行にも上ると言われているからだ。このため、ソフトを書くエンジニアはいくらいても足りないくらいになる。
これまで、コンピュータの開発にはハードウエアとソフトウエアをそれぞれ別のエンジニアが開発していた。このため、ハードのエンジニアはソフトを知らず、ソフトのエンジニアはハードを知らない、という事態が起きていた。それでもコンピュータそのものを追求していた時代はまだよかった。しかし、電気釜や、エアコン、洗濯機などコンピュータではない製品を開発している人たちは、コンピュータよりは、もっとおいしいご飯の炊ける電気釜をどう設計するか、に集中したい。そのために使える技術の一つがやはりマイコンである。レシピのようなシーケンスはマイコンの得意とするところだ。すると、ハードもソフトも少しかじる程度でもよいから理解しておく必要はある。
マイコンが身近な製品に入ってくるようになった現在、コンピュータを少しでも理解していることが産業界では必要になる。社会インフラやオフィス中心の企業では、デジタルトランスフォーメーションが叫ばれている。デジタルトランスフォーメーションとは、働き方をもっと効率よく変えて、長時間残業を減らし、生産性を上げるための手法である。具体的には、センサを使って働く職場全体を可視化し、効率の悪い部分を見える化することで改善し、生産性を上げようという考え方だ。もっと進めば、センサからのデータを分析し、自律的に生産性を上げる方向へ持っていく手法となる。
20年くらい前なら、デジタル化とかデジタル変革という言葉ではなく、エレクトロニクス化、と呼ばれていた技術そのものだ。e-メールのeはエレクトロニクスの頭文字を表している。エレクトロニクスでは、何かをセンス(検出)し、高くなりすぎれば下げるように制御する、といった作業を電子回路の中で行っていた。この作業をオフィスや社会システムで行おうというのがデジタルトランスフォーメーションである。
どのような作業を行うべきかをフローチャートに書いて、流れに沿って作業を進めていく。分岐点があればもちろん、元に戻したり前に進んだりする。この作業をアナログ回路でも、デジタル回路でも設計することができる。
しかし、さまざまな作業が出てくるようになれば、この作業を最初から設計するのか、途中の一部だけ変えるだけで済むのか、それを電子回路だけで実現するのか、あるいはソフトウエアを使ってハードはほとんど変えないのか、という命題をシステム的な視点で考えなければならなくなる。低コストであり、作業を短期間で終わらせるものであり、かつ次の要求に備えて拡張性を持たせるものであり、いろいろな選択肢が出てくる。
こういったシステム的な考え方は、もはやハードもソフトも分けては考えられなくなっている、ということに他ならない。これはAI(人工知能)やIoTシステムなどこれから成長するであろう分野にも通じる。AIだけ勉強するよりも、コンピュータ科学を勉強する人材の方が今のAI(特にディープラーニング)後の新しいアーキテクチャの開発に向くと言われるゆえんだ。
これからはシステム的な考え方こそ、将来の新しいコンピュータの創造に必要となる。今、日本だけではなく米国、欧州、アジアで、従来のノイマン型コンピュータに代わり、もっと高性能・低消費電力のコンピュータアーキテクチャを、国を挙げて開発に取り組もうとしている。AIはその一つであり、量子コンピュータや量子アニーリングなども候補の一つだ。そして、新しいアーキテクチャを動かすための半導体あるいは、半導体ではない高機能な素子の開発も必要とされる。