最近、携帯電話や情報家電の不具合が世間を賑わすことが多くなった。不具合の理由の多くはソフトウェアのバグによるものだが、その根本原因はこれら組込みソフトの複雑化にある。高性能、高機能を追求するあまり、これまでは考えられないような複雑なソフトウェアが、それらの機器に搭載されている。今回は組込みソフトの将来について考えてみよう。
組込みソフトってなに?
「組込みソフト」と聞いてピンとこない方も多いかもしれない。これは携帯電話、情報家電、自動車などに組み込まれているソフトウェアのことである。パソコンなどで使うソフトウェアと比べて、ハードウェアとの関係が密接であるという特徴をもっている。
昔の組込みソフトは比較的単純であった。たとえば携帯電話にしても、電話帳や簡単なカレンダー機能がついている程度であった。しかし今ではカメラの制御や電子メール、Webコンテンツの閲覧と、高性能化、高機能化が加速的に進んでいる。しかも新製品開発のサイクルはどんどん短くなっているため、ソフトウェアの開発期間は短くなる一方である。また、パソコン用と違ってハードウェアが特殊なため、ハードウェアのクセ(時には不具合も含まれる)をソフトウェアが吸収しなければならなかったり、一度組み込んでしまうと容易に修正ができないという厳しさも併せ持っている。このため、現代の組込みソフトの開発は、大変複雑になってしまった。
組込みソフトにもソフトウェア工学を
複雑という意味では、パソコンで使われているソフトウェアや業務アプリケーションソフトなども複雑である。しかしこれらのソフトウェアを開発する際には、できるだけ不具合が発生しないように、何らかの「ソフトウェア工学」の技法が使われている。ソフトウェア工学では長年の歳月をかけて、要求定義や開発プロセス(どのような手順で開発を進めるか)、プロジェクト管理などのソフトウェア開発全般に関する方法論やツールを開発してきた。これらは特に、ソフトウェアが大規模で複雑になるほど有効となる。
それでは、組込みソフトの開発ではどうかというと、現状ではソフトウェア工学の手法がほとんど使われていない。その理由としては、複雑化が急激に進んでしまったため、開発に追われて手法の適用が追いついていないということが考えられる。また、これまでのソフトウェア工学がパソコンや業務アプリケーション向けのいわゆる「エンタープライズ系」ソフトウェアをターゲットとしてきたため、ハードウェアと密接に関係している組込みソフトに対してそのままでは適用しにくいという側面もある。
上記のような事情を背景として、組込みソフトにもソフトウェア工学の技法を適用しようという動きが最近活発になってきている。 今年の6月中旬には「組込みソフトウェア開発力強化推進フォーラム」が開催され、組込みソフトへのソフトウェア工学の適用計画について発表された。また同時期に経済産業省から「組込みソフトウェアスキル標準策定方針」についてのパブリックコメント募集も行われた。これらの活動を皮切りに、今年の10月にIPA(独立行政法人情報処理振興機構)内に設立予定のSEC(ソフトウェア・エンジニアリング・センター)では、継続的に組込みソフトの開発力強化手法やスキル標準などが開発される予定だ。
日本の組込みソフト競争力は維持できるか?
組込みソフトは、これまでは日本のお家芸のように言われてきた。自動車搭載機器、携帯電話、情報家電などは、各国に先んじて新製品を次々と生み出している。しかし、これまでの強みは諸外国の追撃によって徐々に勢いを失う懸念が大きい。特にこれまでは少人数の職人技によって作られていたものを、大規模化によって大人数のプロジェクトで体系的に作ってゆく必要がある。ソフトウェア工学の技法は確かに便利なツールだが、それ故に他国のキャッチアップも容易になってしまうという諸刃の剣だ。
さらにソフトウェア工学の適用に伴い、開発プロセスや開発管理が標準化されることにより、従来は難しかったソフトウェア開発の切り分けが容易になるだろう。その結果、開発のアウトソーシング化も進むことが予想される。こうなると、エンタープライズ系と同様に、ソフトウェア開発の空洞化が起こり、必然的に開発競争力の低下につながってゆくのではないだろうか。
組込みソフトウェアの大規模化の流れは止めようがない。そこで日本の組込みソフトの競争力を維持するためには、ソフトウェア工学の適用とともに、コア部分のアウトソーシング化を防ぐなどの戦略が必要である。