連載の目次へ

ソフトウエア規模の増大が非常に急激な携帯電話機。いち早くプラットフォームのLinux化に取り組むなど,ソフトウエア開発体制の改革を地道に続けるパナソニック モバイルコミュニケーションズに「現場主導の開発とは何か」を解説してもらった。

 我々は携帯電話機のプラットフォームとしてLinuxを採用し,さまざまな観点から組み込みソフトウエアの品質向上に取り組んでいる。今回は,開発現場の実態や品質向上のための技術的なポイント,そして現場を含めてソフトウエア開発に当たって心掛けるべきポイントなどについて,我々の経験を基に解説する。

この記事は,「日経エレクトロニクス」と「日経バイト」が刊行した別冊『組み込みソフトウエア2006---品質管理と開発技法の実践的改革A to Z』の掲載記事を抜粋したものです。詳細はこちら

 まず携帯電話機が置かれている現状だが,一昔前までは通話機能だけであったものが,今ではデジタル・テレビを載せるという話まで出てきている。世界の携帯電話機メーカーや携帯電話事業者の動向を見ても,さまざまな標準化の競争がある。我々,開発現場の者からすると2010年というのは実はそうしたインフラの標準化だけでなく,技術開発の面でも既にスタートしているような状況であり,全然遠い将来ではないというのが実感である。

 組み込み機器におけるソフトウエアの爆発は,まずテレビのデジタル化で始まった。BSデジタル放送への対応から始まり,今では地上デジタル。当初はパソコンがテレビになるという議論もあったが,実際にはテレビの方がどんどんコンピュータ化していき,ものすごい勢いでソフトウエアの規模が増大していった。そうした波が今まさに携帯電話機に来ている。

 今でこそメガピクセルのカメラが載っているのは当たり前になってしまったが,近いうちに動画も広く使われるようになるだろう。例えていえば,デジタル・テレビや録画/再生可能なビデオ・デッキの機能が,そのまま携帯電話機に入ってしまう時代がすぐそこまで来ている。

 ただし,テレビと携帯電話機との大きな違いは,ハード・ディスク装置(HDD)を積めるかどうかである。テレビは常時,コンセントから100Vの電源を使えるので,比較的,パソコンと同じようなスタイルでソフトウエアを開発できる。しかし,携帯電話機の方では電話がかかってきたときにはそれをユーザーに通知しないといけないし,電池も非常に薄くして消費電力も抑えないといけない。

 最近は価格競争が激しいため,プログラムを格納するROM容量もできるだけ抑える必要がある。例えば今の機種でROM容量が60Mバイトだとして,「次の機種では機能が増えたから128Mバイト,その次は256Mバイトくらい積むか」というわけにはいかないのである(図1)。そういう小さな機器に,家庭内やクルマなどいろいろなものがつながろうとしている。機能を積み増した分だけ高い価格にできるかというと,そうはいかないので非常に大変だ。

携帯電話機のソフトウエア容量の増大
図1 携帯電話機のソフトウエア容量の増大
携帯電話機のソフトウエア容量は,ネットワーク機能など非音声領域に踏み込んだ途端にその規模が爆発的に拡大した。

Linuxの搭載は無理と言われた

 それでは具体的に携帯電話機のソフトウエアの話に移っていこう。携帯電話機のソフトウエア構成は,基本的にはカーネル・レイヤ,ミドルウエア・レイヤ,アプリケーション・レイヤなどから成る。こうした構成はデジタル・テレビやパソコンと実はあまり変わらない(図2)。

 カーネル・レイヤには,我々はOSとしてLinuxを採用している。Linuxで携帯電話機を作るという話を出した当初は,実は社内でものすごい抵抗勢力があった。社内のかなり偉い人間から「お前はバカだ」と言われたこともあるし,有名な大学教授からも「君はこれで人生を棒に振る」などと言われた。

携帯電話機のソフトウエア構成
図2 携帯電話機のソフトウエア構成
携帯電話機はカーネル・レイヤとミドルウエア・レイヤ,アプリケーション・レイヤなどから成る。こうした構成は,実はデジタル・テレビやパソコンと変わらない。カーネル・レイヤには当社ではLinuxを採用している。

 Linuxの採用で一番心配だったのが,マルチメディア系,いわゆる実時間性を確保できるのかどうかだった。テレビ電話機能などが動かないのではないかとドキドキハラハラしながら取り組んでいたが,結果的には開発の比較的初期段階で実用的にマルチメディア・アプリケーションを動かせるという見通しを付けることができた。

 携帯電話機でいやらしいのが,電話の機能である。例えば,メールやゲームをしているときに,電話がかかってくる。このときに書いていたメールやゲームの途中経過が全部どこかに行って消えてしまうというのは許されない。割り込み処理が起こった際に,デバイスの競合をどう解消するか。どちらのプロセスが先に使うか。こういう優先順位付けに非常に手間取るのである。(つづく