Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/7-2
7-2 アーキテクチャの概要
図 7.1 にPalm OSの拡張アーキテクチャを示します。この拡張アーキテクチャは、アプリケーションや Palm OS の他の部分に一貫した API のセットを提供しつつ複数のファイルシステムと様々な物理的拡張をサポートできるよう、十分に柔軟にデザインされています。以下のセクションでは、Palm OS の拡張アーキテクチャの主要コンポーネントについて下層から順に説明します。すなわち、スロットドライバ、ファイルシステム、VFS マネージャ、そして拡張マネージャです。
図 7.1 Palm OS の拡張アーキテクチャ
スロットドライバ
スロットドライバは Palm OS の標準的なシェアードライブラリで、タイプは sysFileTSlotDriver ('libs') です。これはハードウェアへのダイレクトアクセスをカプセル化し、拡張マネージャと(オプションで)ファイルシステムライブラリの標準的なサービスを提供します。新しいタイプのハードウェア拡張のサポートの追加は、通常そのハードウェアのためのスロットドライバを作成するだけです。図 7.1 に示すとおり、アプリケーションは通常スロットドライバと直接やりとりすることはありません。
それぞれの拡張スロットには、対応するスロットドライバーがあります。スロットは一意なスロット参照番号で識別されます。この番号は拡張マネージャによって付与されます。拡張カード自身は個別に番号付けられません。アプリケーションは通常カードが挿入されたスロットを参照します。ただし、スロットにはカードが入っている場合もあれば入っていない場合もあること、およびアプリケーションの動作中でもカードの抜き挿しが可能であることには注意が必要です。
- NOTE
- “カード番号”は Palm OSのメモリマネージャの用語です。“スロット参照番号”と混同しないようにして下さい。
現在の実装では、スロットあたり1ボリュームのみをサポートしています。
ファイルシステム
Palm OS の拡張アーキテクチャは、Palm OS上の全てのファイルシステムの実装に共通のインターフェースを定めています。このインターフェースはファイルシステムを操作するための API の完全なセットで構成されています。この操作には、名前付きのボリューム上にあるファイルおよびディレクトリのオープン、クローズ、読込み、書込み、削除が含まれます。
ファイルシステムの実装は sysFileTFileSystem ('libf') タイプのシェアードライブラリにパッケージされます。これらのライブラリは VFAT、HFS、あるいは NFS といった特定のファイルシステムをサポートするモジュール型のプラグインです。Palm OS の拡張アーキテクチャはライブラリをインストールすればいつでも複数のファイルシステムをサポートできるようになっています。通常、VFAT ファイルシステムの実装はサポートされています。
VFAT はあらゆるタイプのフラッシュメモリカードの業界標準です。このファイルシステムにより、デスクトップとその他のデバイス間でデータやアプリケーションを簡単に移動させることができます。Palm OS 4.0 に含まれる VFAT ファイルシステムライブラリはセカンダリストレージメディア上の VFAT ファイルシステムをネイティブサポートします。FAT および VFAT ファイルシステムを認識してマウントし、認識できないメディアやファイルシステムの破損したメディアを再フォーマットすることができます。
VFAT ファイルシステムは Unicode/UCS2 フォーマットの格納のために長いファイル名を必要とするため、標準 VFAT ファイルシステムライブラリは UCS2 と Shift-JIS( Palm OS 標準のマルチバイト文字エンコーディング )の間の変換、および Palm/Latin エンコーディングをサポートします。
VFS マネージャ
VFS(Virtual File System)マネージャは、アプリケーションが様々なメディア上の様々なファイルシステムにアクセスするための統一された API を提供します。アプリケーションが実際のファイルシステムを気にしなくてもいいようにファイルシステムを抽象化します。VFS マネージャにはファイル、ディレクトリ、およびボリュームを操作するためのAPIが含まれています。
- NOTE
- VFS マネージャの大半の関数はどのようなアプリケーションからでも使用できますが、一部の関数はスロットドライバとファイルシステムからの使用のみを意図しています。また、主としてシステムによる使用のためにデザインされ、サードパーティ製アプリケーションからの使用を想定していない関数もあります。
VFS マネージャとデータマネージャ、およびファイルストリーミング API
VFS マネージャが Palm OS に追加されたことにより、アプリケーションがユーザーデータを保存・取得するための方法は3つになりました。
- データマネージャはストレージヒープ上のユーザーデータを管理します。多くのハンドヘルドにおいて、ほとんどのダイナミック RAM と不揮発性 RAM をディスクストレージのかわりに使うように特別にデザインされています。必要なデータが全てハンドヘルドのストレージ上にある場合、または効率的なデータアクセスが最重要となる場合には、ユーザーデータの保存と取得にはデータマネージャを使用して下さい。
- ファイルストリーミング API はデータマネージャの最上位レイヤーで、ストレージヒープ内のデータベースに対するデータ入出力機能を提供します。ほとんどのアプリケーションでは、ファイルストリーミング API を使う必要はありません。これらは通常、大きなデータブロックを扱うアプリケーションによって使用されます。
- VFS マネージャと拡張マネージャは、多くの種類の拡張メモリをセカンダリストレージとしてサポートできるよう、特別に設計されています。VFSマネージャAPIは、多くの外部メディア上の異なる種類のファイルシステムに対する一貫したインターフェースを提供します。VFS API を使用するアプリケーションは多岐に渡るファイルシステムをサポートできます。外部メディア上に保存されたデータを読み書きする必要がある場合は、VFS マネージャを使用して下さい。
Palm OS アプリケーションは状況に応じて適切な API を使用するべきです。データマネージャはストレージヒープ用の効率的なストレージマネージャですが、これを使用すべきなのは外部メディアへのアクセスがまったく必要ない場合に限られます。相互運用性とファイルシステムへのアクセスが必要な場合は VFS API を使用して下さい。ただし、VFS マネージャにはデータアクセスにおける全ての読み書きをメモリにバッファリングするというオーバーヘッドがあるため、明確にこの機能を必要とするアプリケーションだけがVFSマネージャを使用するべきです。
データマネージャとリソースマネージャ、およびファイルストリーミングAPIに関する詳細は、「6 ファイルとデータベース」を参照して下さい。VFSマネージャが提供するAPIの詳細については、Palm OS Programmer's API Reference の「58 仮想ファイルシステムマネージャ」を参照して下さい。
拡張マネージャ
拡張マネージャは Palm OSハンドヘルド上のスロットドライバを管理するソフトウェアレイヤーです。サポートされる拡張カードの種類にはメモリースティックとSDカードが含まれていますが、それに制限されるわけではありません。拡張マネージャはこれらの拡張カードを直接サポートするわけではなく、下位レベルのスロットドライバとファイルシステムライブラリの助けにより、これらのメディアタイプをサポートするアーキテクチャと上位のAPIセットが提供されるかたちになります。
拡張マネージャは、
- カードが挿入された時、および抜かれた時にノティフィケーションをブロードキャストします。
- カードの抜き挿しを知らせるためにサウンドを鳴らします。
- カードの入っているボリュームをマウント、あるいはアンマウントします。
- NOTE
- 拡張マネージャが提供するその他の関数には、スロットドライバやファイルシステムから使用され、通常サードパーティ性のアプリケーションからは使用されないものがあります。
拡張マネージャが提供する APIの詳細については、Palm OS Programmer's API Reference の「33 拡張マネージャ」を参照して下さい。