組み込みソフトウェアの開発の現状 - 進む大規模化
まず、本題に入る前に、現在の組み込みソフトウェアの現状を見てみましょう。情報処理推進機構(IPA)が2006年6月に公開した組み込みソフトウェアに関する調査結果である「経済産業省2006年版組込みソフトウエア産業実態調査報告書」によると、組み込みソフトウェアの規模は次のようになっています。
- 組み込みソフトウェアでも、プログラムのコードが1,000万行を超えるものが存在する
- 組み込みソフトウェアのコードの平均行数は、100万行近くになっている
- コードの行数が10万行以上のプロジェクトでは、開発者が600人/週を越えている
- 組み込みソフトウェアの開発にかかる総コストが1億円を超えるプロジェクトが相当数存在する
次に、ソフトウェア開発に使用する言語について見てみると、エンタープライズ分野ではJavaやLightWeight言語が多数を占めていますが、組み込みの分野ではC言語が60%以上、C++が約35%程度となっており、ネイティブ言語による開発が一般的となっています。
また、利用しているOSとしては、約30%がITRON準拠のOS、約20%がWindows CE以外のWindows OS、12%がLinuxとなっています(図1)。エンタープライズ分野のエンジニアの多くは、組み込み開発というと、専用OSを使用するというイメージがあるかもしれません。しかし、組み込みの分野においても、すでに1/4以上はWindowsやLinuxのような汎用OSを利用しています。
【図1】利用している組み込みOS( 利用比率[%] ) - 「経済産業省2006年版組込みソフトウエア産業実態調査報告書」より |
ここで、ちょっと余談になりますが、最近よく見るようになったセルフのガソリンスタンドで使われている清算機や、銀行やコンビニのATMなどの多くは、Windows XPを組み込み機器向けに特化させた「Windows XP Embedded」というOSが利用されています。Windows XP EmbeddedはWindows XPベースのため、開発もVisual StudioやEclipseのようなエンタープライズ分野でも利用されている開発環境が利用できます。もちろん、組み込み機器特有のソフトウェア開発のテクニックや制約はそれなりにあります。しかし、汎用OSが使われた組み込み機器は私たちの身近にすでに数多く存在しており、エンタープライズ向けと組み込み向けのソフトウェア開発の垣根は徐々に低くなっていると言えます。
ソフトウェア開発という切り口で見れば、エンタープライズ分野と組み込み分野の垣根は低くなっています。しかし、エンタープライズ向けと組み込み向けのソフトウェアでは、動作環境が次のように大きく異なります。
- CPU(またはマイコン)が非力である(一般に、エンタープライズ分野のように数GHzのCPUが使われることはない。動作周波数が数十MHzというものも多い)
- 搭載されるメモリの容量が数十KBから数MB程度である(エンタープライズ分野のように容量が数GBを超えることは、ほとんど無い)
- HDDが搭載されないものが多い(ストレージとしては、コンパクトフラッシュといったメモリカードやフラッシュメモリなどがよく使われる)
- グラフィック処理用のチップが搭載されない、または非力であることが多い
- バッテリ駆動や、低消費電力化が求められる(瞬電の対策が必要になることも多い)
- 画面が小さい、または画面が搭載されないことが多い(一般に最大がVGA程度)
- 一般に、高い品質と信頼性が求められる
つまり、最低限の性能のCPU、より小さいメモリやストレージで、できるだけ電力を消費しないように注意を払いながら、システムを効率よく動作さねばならない上に、高い品質が求められるということです。
最後に、利用されるミドルウェアについて見てみます(図2)。組み込みの分野でのミドルウェアというと、エンタープライズ分野のように開発支援のためのものではなく、どちらかというとデバイスドライバのようなOSの機能を追加するものを指すことが一般的です。また、組み込み分野においては、エンタープライズ分野ではもはや当たり前となったデータベースは、ミドルウェアとしてはほとんど認識されていません。このあたりも動作環境と同様に、エンタープライズ分野と組み込み分野のソフトウェア開発環境の違いといってもよいでしょう。
【図2】購入または使用したミドルウェア、もしくはアプリケーションモジュール - 「経済産業省2006年版組込みソフトウエア産業実態調査報告書」より |
なお、より詳しく組み込みソフトウェアの現状について知りたい方は、IPAの「経済産業省2006年版組込みソフトウエア産業実態調査報告書」を参照してみるとよいでしょう。