製品ライフが短期化し、開発期間の短縮が強く望まれる中で、組み込み機器のソフトウエア開発の負担は年を追って重く なっている。組み込み機器では多種多様なマイコンやOSを対象にすることから開発環境への依存度が高く、その良し悪しと選択は開発のスピードを左右する。


数も時間も足りない組み込みソフトウエア技術者の実態

経済産業省が行った「組込みソフトウェア産業実態調査」の2006年版報告書によれば、組み込みソフトウエアに関連する事業所は国内に約10万9,000あり、全製造業の従業員数に対する組み込みソフトウエア技術者の比率は4.1%で合計19万3,000人と推定される。同省が前年に行った同じ調査と比べ、人数は1万8,000人およそ11%増加した。
いっぽう、同調査で企業の経営者・事業責任者が「不足する」と回答したソフトウエア技術者の数は、前回調査の7万1,000人から9万4,000人となり、わずか1年の間に32%も増加している。製品ライフが短期化し開発期間の短縮が強く望まれる中で、組み込みソフトウエア技術者の数は増えてはいるものの、需要には追いついておらず、そのしわ寄せが技術者自身に及んでいる姿がうかがえる。
次に、実際の組み込み商品開発におけるソフトウエアの比重はどうか、それが<図1>のグラフである。人件費を含む金額ベースで見た場合、開発のプロジェクトの総費用に対して約60%がソフトウエア開発につぎ込まれている。形として目に見えるハードウエアの比率が全体の27.5%まで減少しているのに対して、ソフトウエアはその2倍以上のウェイトを占め、組み込み機器の成否を握るコア技術となっていることが裏付けられる。

ところで、一口に組み込みと言うが、その範囲は極めて広くアプリケーションも様々だ。<図2>はソフトウエア開発規模の分布をグラフにしたものだ。見て分かるとおり、千ライン未満のものから5百万ライン超まで実に1万倍近い開きがある。ITの基幹系やPCアプリケーションソフトウエア開発などは大規模かつ組織的で、その形態にはある程度の一様さが見られる。これに対して組み込みは、形態・規模共に多様であり、それぞれの現場それぞれの案件毎に開発のスタイルが異なる。各人が特殊性を背負いながら孤独の中で技術開発を進めなければならない難しさが見て取れる。
開発環境の統合化でソフト開発の負担増を補う
組み込み機器のソフトウエア開発は、機器の要件定義を受けて、システムとソフトウエアのアーキテクチャを定め、詳細設計に入る。同時期にハードウエアも設計に入るが、現在ではハードとソフトの設計が同時進行し、ハード試作ができ上がる以前にソフト開発を進めなければならないことからハードを待たないソフト設計が求められている。このため、最近では半導体メーカやツールベンダが供給する開発プラットフォームなど最終的なハードを模擬代替えできるハードを使って評価・開発を進める例が増えている。同じ理由でT-Engineが使われることも多い。
ちなみに、ソフト開発の核心は、コーディング、ビルド、デバックの繰り返し作業である。エディタ、コンパイラ、デバッカなど複数のツールソフトやエミュレータなどを駆使しての繁雑な作業をこなすスキルが要求される。先に述べた技術者不足の一因はここにもあるわけだ。

この問題を解決するひとつの手段として開発環境(ツール)の統合化が進展している。具体的には統合開発環境と呼ばれるフレームワークだ。統合開発環境は<図3>に示すようにソフトウエア開発の一連の機能、複数のツール、ハード/ソフトを共通のフロントエンド上から操作できる。プロジェクトマネージャなども組み込まれているほかエミュレータや外部ツールなどとも連携する。ハードウエアシミュレータなどは使用するマイコンの機種毎に入れ替えることになるが、使い勝手を一度マスタすれば使用するマイコンの機種などに係わらず同じだからスムースに開発を進めることができる。外部連携という面でも、例えば数値解析ソフトで作った制御アルゴリズムを持ち込んでシミュレーションしたり、GUI開発ツールの出力とハード制御のソフト制御の整合性をリアルタイムで検証するといったこともできる。
統合開発環境は複数の製品が供されているが、例えばルネサステクノロジ社製「HEW」の最新バージョンでは、マウスなどによる一連のGUI操作をマクロとして記録し、再現できる<マクロ機能>が搭載されデバックなどで頻発する同一操作の繰り返しを効率化できる。テスト結果を自動保存・比較できる<テスト支援機能>も備えた。Cソースコード記述を自動チェックするMISRA Cルールチェッカやマイコン内蔵の各種周辺I/Oドライバとその設定を自動生成するユーティリティなど様々な周辺機能も取り込み可能だ。
フラッシュマイコンの普及とエミュレータ製品動向
ソフト開発にもう一つの変化をもたらしているのがフラッシュ搭載マイコンの一般化である。産業向けの組み込み機器などは多種少量であるほか商品ライフも長く、その間のバージョンアップなども多い。したがって、容易にプログラムの書き込み/書き換えができるフラッシュマイコンが元々適した分野だ。フラッシュマイコンであれば実機でのテストができるわけだからROM書き込み後の動作検証も要らない。もちろんマスク費用も要らないし書き込み品の在庫という問題も無い。さらに、フラッシュ化することでプログラムの書き込みを商品出荷の直前まで引き延ばせるようになった。このことはハードの完成待ちという無駄時間を無くした点で開発工程の短縮に貢献したが、ソフト開発側から見れば開発最終段階での作業集中というクリティカルな面をもたらしたことも確かだ。

また、フラッシュマイコンが常態化したことによってソフト開発時点でマイコンへ書き込む機会が多くなった。最近ではパソコンとターゲットをUSBケーブルで結んで直接書き込みできるマイコンもあるが、開発時点でのフラッシュ書き込みや書き換えは、ROMライタなどを使うよりもエミュレータを通じてのことが多い。これに対応して最近では多数のマイコンへの書き込みに対応した低価格なオンチップデバッギングエミュレータも発表されている<図4>。
エミュレータは従来、比較的高価なフルスペックタイプのものが主だったが、最近では個人のホビーユースでも十分に手が届く低価格でコンパクトなエミュレータが普及し、これとターゲットマイコンが載った評価ボードそれに統合開発環境などをセットにした「開発キット」も提供されている。エミュレータを含む安価なキットが簡単に手に入るようになったことで、新規のマイコンの採否を検討する際などに、それまで仕様書などで行われてきた評価の確実性が増した意義は大きい。
いっぽう、組み込みではモータ制御などのようにプログラムを途中でブレークできないといったアプリケーションが多数ある。そうしたアプリケーションのデバックではフルスペックのインサーキットエミュレータが必要になる。速度という面ではマイコン自体の高速化が進んでいることからそれに合わせたエミュレータの高速化も進んでいる。<図5>に600MHzのリアルタイムトレースが可能なエミュレータの例を示す。