- - PR -
今回はユーザーサイドで可変長のオブジェクトを扱うためにSymbian OSで用意されている機構の1つ、文字列(ディスクリプタ)について解説を行います。この部分はそれほど難しい作りはしていないのですが、Symbianが携帯・スマートフォン開発に必要だと考えているもの(あるいは不要だと考えているもの)が明らかになる面白いデザインをしています。これらを通じて携帯・スマートフォン開発の位置付けに関する誤解を解いていければ、というのが今回のもくろみです。
文字列から見えてくる視点の違い
機能の提供主体がデバイス側にあり、ソフトウェアはそれらを制御するだけという本当にピュアな組み込みシステムの場合、文字列処理で悩むことは少ないでしょう。しかし表示装置を介するユーザーインターフェイスを持ち、ちょっと複雑な内容を表示しようとすると文字列をいかに扱うかという悩みは必ず発生します。さらに高度化し、例えばユーザーに文字列を編集させる、メールをやりとりする、HTMLを解析する等々の機能が必要になる環境では、もちろん動的に変わる文字列を適切に扱える枠組みが必要になります。このように文字列に対する態度でグルーピングしていくと、その結果はそのまま組み込みシステムの分類にもなりそうです。図1にまとめてみましょう。
![]() |
| 図1 組み込みシステムのレベリング |
リアルタイム性が必要とされる組み込みシステムですが、その応用の幅は多岐にわたっています。そしてLevel3に属する組み込みシステムは、最近になって現れてきたカテゴリです。そのため携帯・スマートフォンのシステム開発で主要な問題である「システムの複雑度」に対する理解がなおざりにされているきらいがありました。
「ありました」と過去形になっているのは、例えばFOMAのOSがSymbian OS(4ベンダ)とLinux系(2ベンダ)だけになってしまっていることによります。
タスクスイッチを行うリアルタイムスケジューラとC言語があればすべてが記述できる。ほかに必要なのは適切な設計だけだ。さあ周期タスクがきちんと起床されるようにクロック数を計算していこうじゃないか(注1)。 |
このアプローチは図1でいうLeve1からせいぜいLevel2のカテゴリには妥当なのでしょうが、携帯・スマートフォンの複雑度に対してはあまりに粗雑過ぎました。もちろんリアルタイム処理ができることは必須要件なので、それらに関する機構が存在することや、技法を守ることは必要です。しかしそれだけでは十分な条件にはなりません。
多くの組み込みOSは、そのあたりの対象システムの複雑度にかかわる部分を「アプリケーション固有の設計」と切り捨てて回避してしまっています。リアルタイムかつ省電力な環境におけるGUIはどのような構造を持つべきか、その環境でプログラムをコンポーネント化して扱うためには何が必要なのか、そのようなことを真剣に考えるべきだったのでしょうが、残念ながら多くのOSにおいてそれらは達成されなかったようです。その結果が現在FOMAに搭載されているOSの種類に集約されています(注2)。
Level3の要求を満たす組み込みOSでは、リアルタイム性を保証しつつGUIを用意し、かつソフトウェアのコンポーネント化を進めるためにフレームワーク群が導入されています。そして文字列もこのフレームワーク群と整合性を持つように、違った装いを持つのが一般的です。
| 注1:最近このような趣旨に基づく組み込み技術の解説書を読みました。基本的な技術の解説部分については特に異論はないのですが、その本によれば携帯・スマートフォンもその技法で解決できる問題の範疇に入っているのだそうです。誠にナイーブな、もしくは、為にする論だといえるでしょう。 注2:これらのOS群の中でSymbian OSの競争優位性の源泉は何か、とよく質問を受けます。第4回で述べたとおり、フレームワークがそろっているので悩まずに済むというのはもちろんですが、「省電力性」を実現するために徹底的に非同期性を導入したところにあるというのが、最近の筆者の答えです。これを実現している非同期フレームワークについては次回いよいよ解説を行います。 |
関連記事 設計/開発技法
- 特集:Javaは組み込みに“不向き”は本当か?
- 連載:BREWアプリケーション開発入門(全10回)
- 連載:イチから作って丸ごと学ぶ! H8マイコン道(全12回)
- 連載:−ザ・組み込み−ソフトウェアのハードウェア化(連載中)
- 連載:組み込みLinux開発入門(全3回)
- 連載:T-Engineプログラミング入門(全4回)
- 連載:Symbian OS開発の勘所(全10回)
- 連載:Symbian OSアプリ開発の手引き(連載中)
- 連載:解説! ロボット開発環境Robotics Studio(全4回)
- 連載:Robotics Studio活用術 はじめて作るサービス(全5回)
- 連載:生産性向上への道 Eclipseで行うC/C++開発(全4回)
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)















