アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 @IT > Master of IP Network > Mobile Connection > Palm OS 4.0で実現される新機能
 



Palm OS 4.0で実現される新機能

Orchard Consulting
福井裕之
2001/6/15

おもな内容
Palm OS 4.0とは
Palm OS 4.0の新機能
ダイレクトカラーAPI
セカンダリ・ストレージ
Attention Manager
互換性の確保
互換性確保のための一般的な手法
注意を要する新機能
終わりに

 4月23日に発表されたPalm m505およびm500には、Palm OSの最新版であるPalm OS 4.0が搭載されている。昨年(2000年)春にPalm IIIcとともにPalm OS 3.5がデビューしたが約1年で、さらなるメジャーバージョンアップが行われたことになる。本稿は、Palm OS 4.0に搭載された新機能のうち興味深いものをいくつか紹介するものである。また、さまざまなバージョンのPalm OSでアプリケーションを確実に動作させるための基本的な考え方についても述べていく。

   Palm OS 4.0とは
Palm OS 4.0を搭載したPalm m505

 Palm社は、Palm OS 4.0を従来よりも『モバイルな』OSと位置付けており、PDAのモバイル性を高めるためのさまざまな技術が盛り込まれている。

 PDAに要求される「モバイル性」とは、例えばどのようなことだろうか。

情報の可搬性

 PDAの最大の利点は、いつでもどこへでも持ち歩けて情報に迅速にアクセスできるということである。ユーザーがPDAとともに持ち歩きたい情報の量は、そのPDAデバイスが便利であればあるほど増える。「Palm Poweredハンドヘルド」(Palm OS搭載機)のように使い勝手の良いデバイスであればなおさらだ。

 現在の代表的なPalm Poweredハンドヘルドは、8MbytesのRAMを内蔵しており、筆者はそのメモリ空間を必要にして十分な大きさだと考えている。しかし、さらに多くのメモリを内蔵し、日常的に必要な、あるいは生産性を高めるために必要なアプリケーションやデータを常に携帯したいという要求は、それはそれで十分に納得できるものである。

 Palm OS 4.0にはその解決策として、拡張メモリカードスロットを統一的に扱うAPIが組み込まれている。その結果、ユーザーは内部メモリのサイズを気にせずに好きなだけ情報を携帯することが可能になり、それらの情報を容易にほかのデバイスでも利用することが可能になったのである。また、拡張カードをハンドヘルドから抜き取ることにより、機密性の高い情報が不用意に参照されることを防ぐことも可能になるなど、ちょっとした運用によりセキュリティ性を高めることができる。

ワイヤレス通信機器とのシームレスな統合を指向

 PDAを使ううえで重要なことの1つは、必要な情報をリアルタイムで取得するということだ。どんなに使い勝手の良いPDAといえども、外部の情報にアクセスできなければ、「情報の離れ小島」になってしまう。そうならないためには、外部とコミュニケートする手段を強化せねばならない。

 Palm OS 4.0ではワイヤレス通信機器との親和性も高められている。新しく導入されたTelephony Managerは、さまざまな携帯電話のATコマンドの多様性を吸収し、それらへのアクセスの抽象性を高めるよう設計されている。しかし、日本のユーザーにとっては残念なことだが、Palm OS 4.0にはGSM方式向けのPhone Driverしか含まれていない。そのため、日本で主流のPDCやCDMA方式の携帯電話に対して使用することができないのである。このあたりは、早急に改善してほしいところだ。

 携帯電話だけでなく、Bluetoothや赤外線通信など、外部との通信手段が充実してくると、Palm OSにはそれらの情報や状態を適切に取得して、分かりやすい形でユーザーに中継するという機能が必要になる。Palm OS 4.0では、それらの基盤整備にも力が入れられている。Exchange Managerは、IrDAだけでなくBluetoothなどのサポートも念頭に置いて書き換えられているし、データの受信を通知するための仕組みとしてAttention Managerも導入されている。

   Palm OS 4.0の新機能

 それでは、Palm OS 4.0に搭載された新機能のうち、いくつかについて解説しよう。

 ダイレクトカラーAPI

Palm OS 3.5を初めて搭載したPalm IIIc
Visor PrismはPalm OS 3.5搭載ながら、OS 4.0と互換性のあるダイレクトカラーAPIを有する

 Palm OSにカラー描画環境が初めて導入されたのは、Palm OS 3.5リリース時(2000年2月)である。それまでは単純白黒描画、あるいはグレースケール描画しかサポートされていなかったので、カラーの導入により表現力は飛躍的に増大した。しかし、Palm OS 3.5のカラー環境は8bit環境、つまり256色同時発色に限られていた。

 Palm OS 4.0ではダイレクトカラー描画APIが導入され、カラー環境が大幅に強化されている。従来の8bitカラー環境がインデックスカラー環境であるのに対して、ダイレクトカラー環境ではそれぞれのピクセルに対して8bitのRGB値を直接指定することが可能だ。つまり、24bitのカラー描画APIを有しているということである。

 Palm OS 4.0のダイレクトカラーAPIはプログラミング的には24bitをサポートしているが、実際に描画可能なカラー深度はハードウェアの実装に依存する。実際、Palm社の最新機種であるm505は前述のとおりPalm OS 4.0搭載機であるが、そのカラー表示能力は16bit、つまり、65536色同時発色である。しかしながら、ハンドヘルドが16bitカラー環境のハードウェアしか有していないとしても、プログラマーがその事実を意識する必要はなく、RGB値にそれぞれ8bit値を指定して描画することが可能である。その場合、指定された24bitのカラー値を最適な16bit値に変換する作業は、ハンドヘルドが自動的に行ってくれる。

 なお、昨年(2000年)末にリリースされたHandspring社のVisor PrismもダイレクトカラーAPIを有しているが、そのOSのバージョンは 3.5である。つまり、Handspring社はVisor Prism用Palm OS 3.5に独自の拡張を施したのである。しかしながら、Visor PrismのダイレクトカラーAPIは、Palm OS 4.0のそれと完全な互換性がある。

 セカンダリ・ストレージ

 例えばPalm Vxであれば8MbytesのRAMを内蔵しており、通常の使用では問題ないメモリ容量であろう。しかし、MGI Photo SuiteやGeneric Media gMovieのようなPalm OS用マルチメディア環境が一般的になってくると、そうもいっていられない。それらマルチメディアデータの大きさは、従来主流であったテキストベースのデータとは比べものにならないくらい大きいからだ。

 リムーバブルなセカンダリ・ストレージが利用可能なPalm Poweredハンドヘルドは、VisorやTRG Proなど、1999年の後半から登場していた。しかし、拡張方式はそれぞれ異なっており、ソフトウェア開発者は別々のAPIを使用してセカンダリ・ストレージを利用する必要があった。その後ソニーがメモリースティックを、また、PalmがSD/MMCを拡張スロットの規格として採用するという発表が行われ、混乱は増大するかに思われた。Virtual File System(VFS) Managerは、それらのさまざまなセカンダリ・ストレージにアクセスするための統一APIとして設計されたのである。VFS Manager APIを利用することにより、ソフトウェア開発者はセカンダリ・ストレージが実際にどのメディアを使用しているかを意識せずとも、データの入出力を行うことが可能である。VFS Managerは、まずソニーのクリエPEG-S500CおよびS300(ともにPalm OS 3.5搭載機)に搭載され、その後、Palm OS 4.0に標準的なコンポーネントとして組み込まれた。

 VFS Managerによりアクセスするセカンダリ・ストレージは、ストレージ・ヒープとはまったく異なる存在である。従来の内部メモリやSpringboardメモリモジュール中のストレージ・ヒープは、memory mappedな空間であり、そのデータに対するアクセスはメモリに対するそれであり、主にData Managerを介して行う。一方、セカンダリ・ストレージの概念は、メモリというよりディスクおよびファイルシステムそのものだ。実際、VFSボリューム中のデータに対しては、VFSFileCreate()VFSFileOpen()VFSFileRead()VFSFileWrite()といった関数を使用してアクセスする。

 Palm OSにおけるセカンダリ・ストレージのサポートの概念図を、図1に示す。その図にも示されているとおり、VFS Managerはシステム全般にわたる統一的なファイルアクセス用APIを提供しているが、実際のファイルシステムに対するアクセスは、その下位に位置するファイルシステム・ライブラリが行う。このファイルシステム・ライブラリは共有ライブラリの形式をとっており、適切に実装されたライブラリをインストールすることでサポート可能なファイルシステムを追加することが可能である。Palm OS 4.0では、FATおよびVFATがサポートされている。

図1 セカンダリ・ストレージのサポートの概念

Palm OSの標準ディレクトリ構造

 Palm OSのユーザーインターフェイスは、デスクトップシステムなどに比べ非常にシンプルかつ直感的である。セカンダリ・ストレージを利用する場合でも、このシンプルさが一貫性を保った形で維持されなければならない。Palm OSにはもともとディレクトリ階層という概念がなく、アプリケーションを起動するLauncherもディレクトリ階層を扱う仕様にはなっていない。

 このようなシンプルさを有しているシステムに対して階層ディレクトリをうまくフィットさせるために、Palm OSではディレクトリ階層の標準的な利用規約を定めている(表1)。この中で特に重要なディレクトリは、/PALM/Launcher/である。このディレクトリ中にPalm OSアプリケーションが含まれている場合、カードが拡張スロットに挿入されるとPalm OSはそれを感知し、Launcherは直ちに当該ディレクトリ中のアプリケーションを画面に表示する(図2)。また、/PALM/ディレクトリにstart.prcというアプリケーションが存在する場合、そのアプリケーションはカードが挿入されると自動的に起動される。

ディレクトリ 説明
/PALM/ Palm Poweredハンドヘルドが利用するアプリケーションやデータのほとんどは、このディレクトリ以下の階層に格納される。また、このディレクトリにstart.prcが存在すると、カードが挿入された時点で当該アプリケーションが自動的に起動される
/PALM/Launcher/ Launcherはこのディレクトリ中のアプリケーションを画面に表示する
/PALM/Programs/ そのほかのアプリケーションやデータは、ここかサブディレクトリに置く
/PALM/Backup/ Palm OSがバックアップ用途で使用する予約ディレクトリ
表1 Palm OSのディレクトリ利用規約

図2 セカンダリ・ストレージ中のアプリケーション

セカンダリ・ストレージからのアプリケーションの起動

 以上のようにPalm OS 4.0のLauncherは、セカンダリ・ストレージをサポートするように拡張されているので、そこからアプリケーションを直接起動することが可能である。アプリケーション起動のユーザーインターフェイスは、ストレージ・ヒープ中のアプリケーションの場合と何ら異なるところはない。しかし、Palm OSの内部では、ストレージ・ヒープからの起動とは異なる動作が行われているのである。

 先にも述べたように、セカンダリ・ストレージは概念的にはディスクと同等である。そのようなストレージ領域からアプリケーションを起動する場合には、アプリケーションはいったんメモリにコピーされなければならない。Palm OSの場合も同様であり、セカンダリ・ストレージから直接起動されたアプリケーションはいったんストレージ・ヒープにコピーされ、その後実行される。従って、ストレージ・ヒープにアプリケーションをコピーするのに十分な空き領域がないと、起動することはできない。

 起動されたアプリケーションは、それが実行されている間はストレージ・ヒープに存在するが、実行が終了するとストレージ・ヒープから自動的に削除される。アプリケーションのコピーと削除はPalm OSにより完全に自動的に行われ、ユーザーがそれを意識することはない。

 Attention Manager

 Palm OS 4.0は、システムがユーザーの注意を喚起するためのユーザーインターフェイスに関しても、新しい方法を提供している。同時刻に告知されるアラームが複数設定されている場合を考えてみよう。Palm OS 3.5ではアラームの回数だけアラームのダイアログボックスが繰り返し表示されるが、Palm OS 4.0ではアラームの一覧が表示される(図3)。

図3 Palm OS 4.0のアラーム表示

 このように、Palm OS 4.0では、アラームなどをリスト化して同時に通知することによりユーザーインターフェイスをシンプルにする仕組みが搭載されている。それが、Attention Managerだ。Attention Managerとは、ユーザーに通知すべき事象がシステム上で発生した場合に、それを通知するための統一的なユーザーインターフェイスを提供するAPIなのである。Attention Managerを利用することにより、アプリケーションがユーザーの注意を促す手段・表現力は格段に向上する。

 Attention Managerにはまた、ユーザーの注意を喚起するための新しいユーザーインターフェイスとして「控えめな通知(subtle attention)」という概念が導入されている。この形態で通知が指定されていると、現在表示されているフォームのタイトルに「」のアイコンが点滅表示される(図4)。Palm OS 3.5以前のアラーム通知は、ユーザーがどのようなアプリケーションを実行しているときでも、OSがいきなりダイアログボックスを表示するという方法だった。Attention Managerでは、アプリケーション開発者が従来どおりの「明確な通知(insistent attention)」や「控えめな通知」のどちらをも自由に指定できるようになっている。

図4 「控えめな通知」 図5 Palm m505の「一般」環境設定パネル

 さらには、デバイスに組み込まれたハードウェア的特徴を利用する方法も、Attention Managerには備わっている。図5は、Palm m505の「一般」環境設定である。Palm OS 3.5搭載機とは異なり、「バイブレーション」「LED通知」といった設定項目がある。m500/505にはそれらのハードウェア機能が備わっており、アプリケーション開発者はAttention Managerを介すことによりそれらの機能を簡単かつ効果的に利用することができるのである。

 日本語Webクリッピング

 Palm OS 4.0日本語版には、Webクリッピングのサポートが新機能として付け加えられている。Webクリッピングはモバイルに最適なインターネット環境としてPalm社が提唱している方式であり、米国ではすでに1999年のPalm VII発売とともにサービスが開始されている。Palm VIIのOSバージョンは3.2だったが、Webクリッピングはその後Palm OS 3.5に標準機能として組み込まれた。しかしながら、Palm OS 3.5日本語版には残念ながら実装されておらず、日本向けサービスはおあずけといった形になっていた。Palm OS 4.0日本語版の登場で、ようやく日本でもサービスを開始する基盤が整ったといえよう。まさに、満を持しての登場といったところである。

 Webクリッピングについては、すでにパーム コンピューティングの柳下氏によるPalmの新サービス「Webクリッピング」とは?が詳しいので、参照されたい。

   互換性の確保

 OSがバージョンアップしたときにソフトウェア開発者がまず考えることは、

  1. 従来開発したアプリケーションがそのまま動作するか
  2. 市場に複数のOSバージョンが存在する場合、1つのバイナリでどのように下位互換性を確保するか

という2点であろう。特に、PCに比べてユーザーがOSのアップデートを行うことが少ないPDAデバイスでは、下位互換性の確保は非常に重要である。さまざまなバージョンの、時には非常に古いバージョンのOSを搭載したデバイス上で使用される可能性があるからだ。

 ここでは、さまざまなバージョンのPalm OSで互換性を確保するための一般的な手法と、Palm OS 4.0の新機能を使用するうえで特に注意を要する事柄について述べていく。

 互換性確保のための一般的な手法

最新のPalm OS SDKを使用すること

 ソフトウェアの互換性を確保するうえで最も重要なことは、常に最新のSDKを使用するということである。Palmの場合、SDKのバージョン番号はOSのバージョンと対応しており、最新のSDKは4.0となる。これは、Palm OS 4.0向けのSDKだということを意味している。このバージョン番号が誤解を招くもとだと思っているのだが、SDK 4.0がPalm OS 4.0にしか対応していないということを意味しているわけではない。「SDK 4.0がPalm OS 4.0向けのSDK」というのは、「Palm OS 4.0で導入された新機能がサポートされているSDK」という意味なのである。つまり、それら新機能をアプリケーションで利用するのに必要なライブラリやヘッダファイル(こちらの方が重要)が含まれているかどうかということなのだ。

 Palm OS SDKは下位互換性を考慮して作成されているので、SDK 4.0を用いてPalm OS 3.5や3.1で動作するアプリケーションを開発することはむろん可能だし、その逆も可能だ。SDK 3.1や3.5の環境で開発したアプリケーションであろうとも、注意深くコーディングされていればPalm OS 4.0上で支障なく動作するのである。ただしこの場合、そのアプリケーションはAttention Managerなどの新機能を利用することはできないということに注意されたい。それらの新機能を利用したい場合には、最新版のSDKを使用すべきである。

利用したい機能セットが実装されているか確認すること

 ソフトウェア開発者が次に注意しなければならない事柄は、利用を検討している機能セットがハンドヘルド上に実装されているかどうかということである。いうまでもないことだが、ソフトウェアはさまざまなデバイス上で実行される可能性があるということを常に意識する必要がある。当然、それらの上で動作しているOSのバージョンも環境もまちまちなのだ。

 Palm OSの場合、ある機能セットが実装されているかどうかは、動作しているOSのバージョンを調べれば、ほとんどの場合判断可能である。例えば、Attention ManagerはPalm OS 4.0(およびそれ以降)にしか搭載されていない。従って、アプリケーションが動作しているハンドヘルドのOSが4.0以上であれば、そのほかのチェックはせずにAttention Manager APIを使用することが可能なのだ。

 現在動作しているシステムの環境を調べるには、Feature Manager APIを利用するのが一般的だ。Feature Managerはシステムのハードウェアおよびソフトウェアのさまざまな環境を確認するためのAPIであり、Mac OSのGestalt Managerに非常に近いコンセプトを有している。例えば、OSのバージョンを確認するには、以下のコードを実行すればよい。

err = FtrGet (sysFtrCreator, sysFtrNumROMVersion, &version);

 OSバージョンは第3引数に返されるが、その値が0x04003000であれば、Palm OS 4.0の正式リリース版ということになる。返り値の形式はSystemMgr.hに記述されているので、詳細についてはそちらを参照されたい。

 同一のOSバージョンが動作しているハンドヘルドでも、ハードウェアの構成によってはインストールされていない機能セットもある。例えば、拡張カードスロットを装備していないデバイスにはExpansion ManagerやVFS Managerは不要なので、そういったデバイス用のPalm OS 4.0にはそれらの機能セットは実装されていないのが一般的である。また、ソニーのClieのOSバージョンは3.5であるが、VFS Managerなどが実装されている。そういった機能セットの有無は、OSバージョンを確認するだけでは不十分だ。そういったやや特殊なケースについては、次項で解説する。

 注意を要する新機能

VFS Manager

 先にも述べたように、VFS ManagerはPalm OS 3.5搭載機のクリエで最初に導入された。また、Palm OS 4.0が動作しているデバイスでも拡張カードスロットがない機種(現状では存在しないが)には、VFS Managerは通常インストールされない。つまり、OSのバージョンを確認してもVFS Managerが利用可能かを判定することはできないのである。

 しかし、VFS Managerの機能セットがインストールされているかどうかは、Feature Managerを利用して確認することができる。例えば以下のようにFtrGet()をコールすることにより、当該機能セットの有無が確認できる。

UInt32 vfsMgrVersion;
Err err;
err = FtrGet(sysFileCVFSMgr, vfsFtrIDVersion, &vfsMgrVersion);
if(err){
  // VFS Managerがインストールされていない
} else {
  // 必要とあれば、VFS Managerのバージョンを確認する
  if(vfsMgrVersion == expectedVFSMgrVersionNum)
    // これで、万事OK
}

 また、セカンダリ・ストレージから直接起動されるアプリケーションはその都度内部メモリにコピーされるので、常駐型の動作をするアプリケーションには向かない。たとえば、OSから何らかのnotificationを受信して動作するアプリケーションなどだ。そのようなアプリケーションは、内部メモリにインストールする必要がある。アプリケーションは自分自身がVFSボリュームから起動されたかどうかを知ることができるので、そのような場合にはユーザーに警告するのもよいだろう(図6)。

図6 セカンダリ・ストレージから起動された場合のアラートの例

ダイレクトカラーAPI

 ダイレクトカラーAPIが利用可能かどうかの判定も、OSのバージョンを確認するだけでは不十分である。というのも、当該機能セットはPalm OS 4.0搭載のカラー機のほか、Palm OS 3.5搭載機のVisor Prismにも組み込まれているからだ。

 ダイレクトカラーAPIが利用可能かどうかの判定は、以下の手順で行う。

  1. FtrGet()をコールしてOSのバージョンを確認する
  2. OSが3.5以上であれば、SysGetTrapAddress()をコールして、ダイレクトカラーAPIが実装されているかを調べる

 上記1.は互換性確認の定石だが、2.は何を行っているのだろうか。

 VFS Managerの有無を確認するには、FtrGet()にvfsFtrIDVersionという機能IDを指定するだけで判定することができた。これは、VFS Manager自身がFeature Managerを用いて、OSに対して自分自身の存在を通知しているためである。それに対して、ダイレクトカラーAPIの有無をFeature Managerを使用して確認することはできない。そこで、SysGetTrapAddress()という関数を利用して、ダイレクトカラーAPIの関数が(正確にいえば、そのトラップが)存在するかを確認しなければならない。

 以下のコードを実行することにより、ダイレクトカラーAPIが実装されているかどうか確認することができる。

// カラーがサポートされているOSバージョンかどうか確認
FtrGet (sysFtrCreator, sysFtrNumROMVersion, &version);
if (version >= 0x03500000)
{
  void* procP;
  AppOSSupportsColor = true;
  // ダイレクトカラーAPIが実装されているか確認
  procP = SysGetTrapAddress(sysTrapWinSetForeColorRGB);
  if (procP && procP!= SysGetTrapAddress(sysTrapSysUnimplemented))
      AppOSSupportsDirectColor = true;
  else
      AppOSSupportsDirectColor = false;
}

   終わりに

 Palm OS 4.0にはソリューションをより豊かに、そして魅力的にするためのさまざまな技術が付け加えられている。最初に述べたように、OS 4.0はPalm OSがよりモバイルに適したOSになるための大きな一歩であり、ユーザーの視点からはあまり派手な変更は施されていないように見えるが、内部的には大きく変更されているのである。

 これからPalm OS向けソリューションを検討している開発者の方々は、Palm OS SDK 4.0とそのドキュメントをダウンロードするところから始めるとよいだろう。それらは、http://www.palmos.com/から無償で入手可能である。



 


 
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

   
@ITトップMobile Connectionフォーラム トップ会議室利用規約プライバシーポリシーサイトマップ