松岡正人(まつおか まさと)

 マイクロソフト モバイル&エンベデッドデバイス本部エグゼクティブプロダクトマネージャ。

 組み込み開発においても,徐々に,一般的なITシステムの開発と似た部分が増えつつあります。例えば,携帯電話では,JavaやBREW(米QUALCOMMが開発した携帯電話向けソフトウエア実行環境)といった環境で動作する,ゲームやユーティリティなどの様々なアプリケーションが開発され,利用されています。

 これらは特定の実行環境で動作するアプリケーションであり,ハードウエアやOSといった部分を詳しく理解していなくても開発することが可能です。もちろん,実際には最適化(チューニング)しますので,額面どおりではありませんが。

 最近話題になっているデバイスでは,米AppleのiPhoneのように,携帯電話+携帯メディア・プレーヤー+インターネット端末の三つの機能を融合した製品があります。残念ながら日本では販売されていませんが,従来にないユーザー・インタフェースを実装し,組み込み機器におけるソフトウエアの価値を大きく高める効果があるといわれています。このような機器のユーザー・インタフェースの開発では,IT系開発のノウハウを活かせるのではないでしょうか。

 そのほかにも,IT系開発のスキルやノウハウを活かせる部分はいくつかあると思います。列挙してみましょう。

(1)ユーザー・インタフェース(UI)

 UIに似た言葉に,UX(User Experience)という表現もあります。狭義では違いがありますが,システムにおける広義では,いずれもユーザーに対するインタフェースを意味しています。

 現在のようにパーソナル・コンピュータの世界にGUIが登場したのは,AppleがLISAとよばれるシステムを世に問うたころ,つまり30年近く前のことです。そしてこの10年余りの間に,より見栄えのする,かつ直感的なインタフェースが多く開発されてきました。例えば,米Adobe SystemsのFlash*1は,リッチなUIを実装するためのツールとして,現在では組み込み機器にも使われています。

 携帯電話だけでなく,テレビやハードディスク・レコーダーなどのメニュー画面もずいぶん変わってきました。一昔前の単純なものではなく,映画に登場するような3Dグラフィックスやアニメーションを取り入れたものが増えています。

 UIデザインのノウハウは,Webアプリケーションなどで熟成されてきています。携帯電話や情報端末にもどんどん取り入れられていくでしょう。一方で,デザイナによって差別化されることになるでしょう。

(2)ネットワーク

 ネットワークの概念やプロトコルについての知識は,残念ながら一朝一夕に得られるものではありません。例えば,サーバー上で動作するアプリケーションとXMLを使ってデータをやり取りするとします。その際に,SOAP*2を使って組み込み機器と通信するといった場合は,SOAPを含め,ITシステムの中でXMLがどのように扱われ,どのようなネットワーク・プロトコルが使われるのかを知らなければなりません。また,システム・デバッグをする際には,おそらくSNIFER*3の使い方も覚える必要があるでしょう。

 私自身はネットワーク・エンジニアではありませんでした。しかし,今にして思えば,ネットワーク機器の開発に携わる前に,もっとネットワークの知識があれば楽だったなと思ったものです。

(3)Java/.NET

 Javaは,すでに多くの組み込み機器で利用されています。おそらくJavaは,プラットフォーム依存性の低い実行環境の中では最も実績があるでしょう。ITシステムでのJavaの利用は,.NETよりも進んでいる部分があります。それは,組み込み開発でも同じことが言えますが,Webサービスを実装する際に,主要なクライアントOS上で実行可能という点です。

 実は,Windows Embedded CEを使うと,同じことが.NET(この場合,.NET Compact Framework)でできるようになります。

 CE自体が,ARM,SH4,MIPS,x86の四つのCPUアーキテクチャをサポートしており,その上で,アプリケーション実行環境として.NET Compact Frameworkが動作します。つまり,.NET向けに開発されたアプリケーションは,CEを搭載する組み込み機器であれば,CPUやハードウエアが異なっても,多くの場合そのまま動作させることが可能です。

(4)データ処理

 組み込み機器では,大量のデータ処理が行われることはあまりありませんでした。今まで必要とされていなかったからなのですが,ここにきて状況が大きく変わりつつあります。

 例えば,ハードディスク・レコーダは,録画した番組情報を速やかに検索して表示することが求められます。最近の機種では,ワンセグの画質で録画すると,ディスク容量が80Gバイトであれば290時間も録画*4できます。これを効率よく,コンパクトに管理するために,RDB(リレーショナル・データベース管理ソフト)が使われることがあります(図1)。携帯電話の住所録,地デジ・テレビのEPGによる番組表やBMLデータの処理なども同様です。

図1●ハードディスク・レコーダーにはRDBを使って楽曲データを保存/管理する製品もある
図1●ハードディスク・レコーダーにはRDBを使って楽曲データを保存/管理する製品もある

 最近のカーナビでは,iPodのように,あらかじめ楽曲の情報をデータベースに搭載しておき,CDをリッピングした際に,自動的にアルバム・タイトルやアーティスト名などを表示してくれます。データベースがあるからこそできることです。

 また,どんどん肥大化する楽曲データを管理するために,RDBを組み込む場合もあります。いかにデータを効率よく検索するかといった,RDB上での開発の経験が活かせる組み込みシステムはどんどん増えています。実際,IBMやOracle,Microsoft,SyBaseなどが提供する多数のRDBMSが,組み込み用途で使われ始めています。

(5)テスト

 テストというと白紙の答案用紙や,徹夜で勉強したことを思い出す人も多いでしょうが,ここでは「ソフトウエア・テスティング」あるいは「システム・テスティング」という意味でのテストです。

 当然ながら,組み込み開発ならではのテストのツボがあります。これは経験することで徐々に蓄積されていきます。しかし,ITのシステム開発やアプリケーション開発で行ってきたことは,実は組み込み開発にも持ち込めます。例えば,組み込みアプリケーションのシステム・テストや単体テストなどのテスト・ケースは,根本的にはITアプリケーションのそれをベースにして肉付けすることで,場合によってはかなり効果的なテスト・ケースに生まれ変わります。

 品質向上にゴールなどありません。テストのレベルを引き上げることができれば,システムの要件定義や設計フェーズへのフィードバックを効果的に行うことにもなりますし,よい反復が生まれることで品質を徐々に向上させていくこともできます。

 設計手法やコーディング規約など,組み込み開発の職人たちの世界にも工業化による標準化の波が押し寄せています。そして今後さらに大きな力点をおかなければならないのは,このテストによる品質検証ということになります。

 余談ですが,組み込みシステムも分野によっては非常に高い品質基準が設けられているものがあります。例えば航空機や発電所,医療機器など,生活や生命に影響を及ぼす可能性のある組み込み機器には公的機関などによって*5何らかの基準が設けられています。

 このほかに,プロジェクト・マネジメントなどもITエンジニアが(もしPMとしての経歴があれば)誇ってもよい部分だと思います。特に,大人数がかかわる大規模開発プロジェクトの仕切りは,技術的な問題もさることながら,情報の整理や進ちょくの管理が常に大変だからです。

 ただし,マネジメントの価値基準が異なることには十分注意する必要があります。Webアプリケーションと基幹システムのアプリケーションに違いがあるように,組み込み機器にも,個々に異なる価値基準があり,多くの場合企業によっても異なるからです。

 それは,前向きに考えれば,自分の能力の価値を知ることでもあります。そして,新しい冒険を始める前の準備運動といえるかもしれません。

 次回は,組み込み開発の課題と題して,これからの組み込み開発に必要なことについて考察したいと思います。