加藤大受(かとう だいじゅ)

 日立製作所ソフトウェア事業部勤務。データベースの奥深さに興味を持ち,個人活動ではオープンソースのRDBMSのプロジェクトにて日本語化や記事執筆などを行っている。仕事では,組み込みDBである「Entier」のエバンジャリストとして組み込み開発者にDBの重要性を理解してもらうための活動を積極的に推進中。

 組み込みソフトウエアという言葉から何を連想しますか? 人によっては制御系システムだったり,情報家電や携帯電話で動いているプログラムだったり,様々だと思います。

 連想は様々であっても,現在私たちの生活を取り巻く家電や,車/バイクなどの車両はすでに何らかのソフトウエアが搭載されています。銀行のATMも駅の券売機や自動改札も,組み込みソフトウエアが搭載されています。ふと気がつくと組み込みソフトウエアは情報系や基幹系といわれるシステムよりも身近な存在になっています。

 では現在の組み込みソフトウエアはどの程度の大きさなのでしょうか。このあたりの調査をまとめた資料が,情報処理推進機構(IPA)から2006年6月に「経済産業省2006年版組込みソフトウエア産業実態調査報告書」(以下,組込みソフトウエア産業実態調査報告書)として公開されています。この資料をもとにちょっと組み込みソフトウエアの規模などを見てみましょう。

組み込みソフトウエアの規模

 この記事を読まれている読者の方は開発者が多いでしょうから,ソフトウエアの規模と言うと次の3つを思い浮かぶのではないでしょうか。

 (1)プログラムのサイズ,コード量(LOCなど)
 (2)プロジェクトの人数や工数
 (3)プロジェクトの総コスト

 前述の報告書からこの3つについて見てみましょう。まず,(1)のプログラムのサイズ,コード量について,「組み込みソフトウエアの総行数(新規開発と既存の合計)」によると,すでに組み込みソフトウエアでも1000万行以上のものが存在していることを示しています(図1)。このサイズの組み込みシステムでは,トヨタの高級車「レクサス LS460」の例が有名です。

図1●組み込みソフトウエアの総行数(新規開発と既存の合計)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
図1●組み込みソフトウエアの総行数(新規開発と既存の合計)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
[画像のクリックで拡大表示]

 この図によると,組み込みソフトウエアの平均行数がすでに100万行近くになっていることがわかります。規模を実感するという意味では,オープンソースのRDBMS(リレーショナル・データベース管理システム)として有名なPostgreSQLの8.0が72万行なので,組み込みソフトウエアの大部分はPostgrSQLよりも大きいということになります(一概にこういった比較をするのは良くないですが)。

 (2)のプロジェクトの人数や工数はというと,人数は図2のように10~20名規模が多数を占めており,10万行以上のプロジェクトでは600人週を超えているという結果が出ています。15名のプロジェクトで600人週というと,10カ月近いプロジェクトということになります。

図2●プロジェクトの人数(部門内・部門外の合計)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
図2●プロジェクトの人数(部門内・部門外の合計)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
[画像のクリックで拡大表示]

 また,(3)のプロジェクトの総コストでは,図3のように1億円以上のプロジェクトも相当量存在していることがわかります。これら(1)から(3)の内容を見ると,現在の組み込みソフトウエアのプロジェクトは,エンタープライズと呼ばれる情報系や基幹系のシステムのプロジェクトとそれほど規模は変わらないように思います。むしろ短期間での改良が多くなったWebシステムをメインとするエンタープライズ系よりも大きいと言えるのではないでしょうか。

図3●プロジェクト費用の総額──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
図3●プロジェクト費用の総額──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
[画像のクリックで拡大表示]

組み込みシステムの環境

 次に,組み込みシステムの環境について見てみましょう。

 エンタープライズ系のプロジェクトでは,JavaやPHPやRubyなどのLightweight言語と呼ばれるスクリプト言語が一般的になっています。組み込み系ソフトウエアではどんな環境で構築されているのか,これも「組込みソフトウエア産業実態調査報告書」で調べてみましょう。

 まず,プログラミング言語では,C言語が圧倒的に利用されています(図4)。C言語の特徴である移植性の高さ,柔軟な低レベル操作,ライブラリや組み込み開発支援ツールの豊富さなどが評価されているのでしょう。また,「MISRA-C:2004」(組み込みソフトウエア開発でよく利用されるプログラミング・ガイドライン)の存在もこの結果に現れていると思います。

 C言語の次にはC++が多く利用されています。Symbian OSなどの組み込みOSの推奨言語がC++であることなどが影響していると思います。J2ME(Java 2 Platform, Micro Edition)を使ってのJavaによる開発や,Windows Mobileの.NET Compact Frameworkを使えばC#やVisual Basicを利用することができますが,そのような開発はまだまだほんのわずかといったところでしょうか。

図4●プログラミング言語(記述行数比率)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
図4●プログラミング言語(記述行数比率)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から

 続いて,使用しているOSは,図5のようにITRON仕様とWindows CE以外のWindowsがほぼ過半数となっています。言うまでもなく,ITRONは国産の組み込みOSで,携帯電話から情報家電まで幅広く使われています。ITRON仕様と書かれているのは,ITRONというOSが存在しているのではなく,ITRON仕様に準拠したOSという意味です。ただし,ITRON仕様準拠といってもOSによって違いがあります。

図5●ターゲットOS(利用比率)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
図5●ターゲットOS(利用比率)──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
[画像のクリックで拡大表示]

 一方,Windows CE以外のWindowsとは,Windows XP Embeddのように,既存のパソコンで組み込みOSとして利用されるものなどを指しています。Windows XP Embeddは,国内ではPOS端末,ATM,複合機などで利用されており,海外では様々な情報家電でも使われています。

 Windows XP Embeddの開発には,エンタープライズ系でおなじみのVisual Studioを利用できます。そうした開発容易性などもこの結果に表れていると思います。ちなみに,組み込み用のWindows OSはWindows NT 4.0の時代から存在しています。

 図5ではほとんどわかりませんが,“OSなし”というのも組み込みソフトウエアには存在し,アドレス0番地から実行していきます。たいていOSレスなものは小規模なものです。

ミドルウエアの活用

 「組込みソフトウエア産業実態調査報告書」からは,図6のようにミドルウエアの利用状況もわかります。通信プロトコルやファイル・システムは,組み込みOSによっては搭載されていないため,上位にあがっています。また,OSに搭載されている機能やオープンソース製品を利用し,全く購入しないというのも多いです。

図6●購入・使用したミドルウエアあるいはアプリケーション・モジュール──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
図6●購入・使用したミドルウエアあるいはアプリケーション・モジュール──「経済産業省2006年版組込みソフトウエア産業実態調査報告書」から
[画像のクリックで拡大表示]

 ただ,ここでエンタープライズ系システムとの違いに気付く方がいると思います。そうです,データベース管理システムがないということです。組み込みソフトウエアでは,その性質上利用される用途やストレージ要領が限定されるため,プログラムでの処理だけでデータ操作を行うことが可能です。独立したデータベース・システムはあまり使われませんでした。組み込み分野でのデータベース利用では,京セラのPHSや一部の情報家電など,事例としてあげられているのはごくわずかです。

 しかし,スマートメディアやSDカードですでに数Gバイトのメディアが存在したり,HDDを搭載したカーナビゲーションや情報家電が当たり前になってきた現在では,データ量もデータの種類も格段に多くなっています。そのためデータベース利用を検討している開発者が急激に増えていると同時に,組み込みソフトウエアでの利用に適した組み込みデータベース製品も数多く登場しています。それについては,第2回以降で詳しく説明します。

日本と米国では組み込みソフトのイメージが違う?

 最近,海外の方と話をする機会があったときに,組み込みシステムについて語り合いました。その中で“文化の違いだな”と感じたことがあります。

 彼らにとって,Embedded SystemやEmbedded Softwareという言葉のイメージは,制御系システムで,全くUI(ユーザー・インタフェース)を持たないものを思い浮かべるそうです。では,UIを持つものは何かというと,Applianceだそうです。そう言われれば,Internet Applianceという言葉もあったりします。

 米国の方々には,どうやら組み込みソフトウエアはUIが複雑で操作しづらいというイメージがあるようです。米国では,携帯電話の機能が基本的に電話+SMS程度が一般的だったり,DVDプレーヤーなどの家電で人気があるのは低価格で低機能のシンプルなものだったりするのを見ると,本当に小さい画面での複雑な操作は苦手なのかもしれません。

 また,海外でカーナビゲーションを使った経験がある方は,日本の製品との差にがく然としたことがあるかと思います。日本のようなグラフィカルな地図とリアルタイムな経路表示とは大きく異なり,海外のカーナビは,CUIのような地図とルート情報の延長,つまりドライブマップの延長という感じのものが多くあります。

 組み込みソフトウエアのコード量のイメージも,私は1000万行くらいを思い浮かべますが,今回お話した方のイメージでは10万~100万行といった感じでした。日本が組み込み立国と呼ばれるのは,高機能を求める日本人がもたらした結果なのかもしれません。