自分戦略研究所 | 自分戦略研究室 | キャリア実現研究室 | スキル創造研究室 | コミュニティ活動支援室 | エンジニアライフ | ITトレメ | 転職サーチ | 派遣Plus |

目指せ! 組み込みエンジニア

第3回 それでも組み込み開発は甘くない

柴原健次(イーソル
2008/3/12

さまざまな分野で活躍する組み込みエンジニア。一般的なシステム開発の分野から、組み込みエンジニアへの転身を図りたい、というエンジニアも多いでしょう。そこで本連載では、組み込みエンジニアの魅力、仕事、スキルなどを伝えていきます。もちろん、組み込み機器は広範にわたり、各分野で求められるスキルやキャリアは異なります。よって、本連載で紹介できるのもその一部にすぎません。とはいえ、組み込み分野に転身を図りたいエンジニアの参考になればと考えています。

 本連載の第1回の「組み込み技術を身に付けよう」と第2回の「組み込みエンジニアに求められる知識と資質」で、組み込みエンジニアになるために求められる知識やスキルなどが見えてきたのではないでしょうか。

 今回は、実際に組み込み開発を行うに当たり、システム開発で培った経験だけでは不足しがちな、組み込みならではの考え方やマインドについてお話ししたいと思います。

■考慮すべき品質

 まず心得ておいてほしいことは品質です。組み込みソフトウェアにおいては、メモリの使い方や応答スピード、リアルタイム性なども品質を構成する重要なものとして考慮されます。

情報処理技術者試験まであと約1カ月。受験される皆さん、準備は万端ですか? ITトレメでは、ただいま総合実力テストを実施中です。試験直前の最終チェック にご利用ください。
情報処理技術者試験以外にも、CCNA、SJC-P、LPIC、Oracle などのテーマもご用意しています。今年度の力試しにぜひご利用ください。

 組み込み開発の最終成果物の多くは、「製品」と呼ばれるものになりますが、その中でも大量生産される製品が多いというのが特徴です。

 エンタープライズ系のシステム開発の場合、成果物に問題(バグなど)があった場合、システムを停止したり一部の稼働を制限しつつ、原因を究明して対応することが多いと思います。

 ところが組み込み製品のうち大量に販売されるような製品の場合、これをすべて回収して修正することになり、それには大変な時間とコストがかかります。確かに最近の携帯電話などは、回収せずにソフトウェア更新で修正できる場合も多くなってきていますが、致命的なもの、ハードウェアが絡んでいたりして、回収するしか方法がないことも多いのです。

 エンタープライズシステムでも人命にかかわるものがあるかもしれませんが、組み込み製品にはそうした人命にかかわるようなシステムが少なくありません。例えば自動車や電車、飛行機などの乗り物は、巨大な組み込みシステムといえますし、エレベータ制御などもそうです。

 組み込みソフトウェア開発における広義の「品質」を構成する要素として、プログラムの応答性やスピード、それを実現するためのメモリの使い方、そしてそれら全体にかかわるコストの観点から考えてみましょう。

 これらのすべてが整っていて、はじめて品質がよいソフトウェア、品質のよい製品であるといえます。

■リアルタイム性も品質の重要な構成要素

 例えばプログラムのスピードは、早ければ早いほどいいというわけではありません。何らかの入力に対して、応答自体は早ければ早いほどよいのですが、最低限この時間以内で応答しないといけないという保証をしなければならない場合があります。いわゆるリアルタイム性です。通常は、ある一定時間以内に応答することが保証されていれば、それ以上は早く応答する必要はないとされます。

 これは、プログラムが複数のスレッドで構成されており、さまざまなイベントが並行して起き、それらが割り込みによって実行順が決められることに起因しています。割り込みには優先順位が決められており、より高い優先順位の割り込みが入ってくれば、先に実行中のスレッドも待たされることになり、その構成の方法によっては、一定時間内に応答することができなくなってしまいます。

 つまり、組み込み製品のプログラム開発においては、きちんと処理が実行されるように作られていても、その応答速度が規定時間以内に収まっていない場合は、それはある種のバグとして扱われることになります。

■適切なCPUに性能を出し切るソフトウェアの組み合わせ

 高速に応答させるには、性能の高いCPUを利用すれば簡単に解決できる場合が多いのですが、組み込み開発では、安易にそのような選択はできません。

 その第1の理由はコストです。大量生産される製品の場合、少しでも安いCPUを選択することが求められます。実際、パソコンやエンタープライズ系システムではもう大昔の話のように思える8ビットCPUが、組み込み製品ではまだまだバリバリの現役で使われる存在でもあります。

 第2の理由は、発熱と消費電力の問題です。CPUが高性能になってクロック周波数が高くなれば高くなるほど、発熱量も上がり消費電力も高くなります。多くの組み込み製品は小さくすることが1つの目標になっているため、原則としてヒートシンクなどの部材を利用することは避けたいところですし、手に持つ製品では高い発熱は許されないことが多いものです。

 また、一般的には電池駆動の製品も多く、消費電力も極力抑えなければなりません。電池分の重量を削減するため、消費電力はさらにわずかでも抑えたいという製品企画の要望から、CPUスペックを落とすということもあり得るのです。

 要求される性能から適切なCPUが選ばれ、ソフトウェアがその性能を最大限引き出せているかどうかということが、品質を決める重要な要素になるわけです。

■小・短が歓迎される世界

 応答速度でいうと、メモリ空間を潤沢に使うと高速化が図りやすいのですが、組み込み製品の場合、メモリもやはりできるだけ小容量である方が歓迎されることが多いものです。

 これは応答速度に限りません。プログラムのコードサイズやデータ領域のサイズも、極力小さくする、いわゆる省メモリの工夫が必要になってきます。必要以上にプログラムサイズを大きくしないだけでなく、できるだけ小さく作られていることがよいソフトウェアであり、高い品質のソフトウェアと呼べるのです。

 このように組み込みソフトウェア開発においては、まずは確実に動作するというバグをゼロにするという点は当然として、動作すればよいというのではなく、応答速度を保証できるプログラムアーキテクチャであり、かつ高速に動作する工夫がなされ、メモリ領域もできるだけ少なく動作するというものが品質のよいソフトウェアだといわれるのです。

 組み込みソフトウェアにおいても、プログラムのメインテナンス性は重要です。製品化されるとそれで開発が完了するということもありますが、製品をベースに機能追加や機能改善などのバージョンアップを行うことも多く、さらにプログラムの再利用も進んでいるためです。

■自分で戦い、自分で解決する人が望まれる

 これらを考えると、組み込みソフトウェア開発は大変なことばかりのように思えますが、逆に、それらの工夫ができるという点で、エンジニアスピリットがくすぐられるという人も多いのではないかと思います。

 そういう意味では、組み込みソフトウェア開発は、きちっと出来上がった仕様書どおりにプログラムを作っていくことを好む人には向いていないかもしれません。自分で考え、自分で戦い、自分で解決できる人が望まれているのです。


組み込みに関連する@IT自分戦略研究所の記事
若手エンジニアを育成せよ。ロボット工学分野の新資格認定・検定試験
学生が知らない組み込み開発の現場
組み込みエンジニア、転職先選びのポイントは?
組み込みエンジニアは何を見るか

自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。