[[↑1 章トップへ|Palm OS Programmer's Companion Volume I/1]] [[2 節に進む →|Palm OS Programmer's Companion Volume I/1-2]] ---- !!!1-1 Palm OS プログラミングはなぜ「違う」のか   ほとんどのプログラマと同様に、あなたもデスクトップアプリケーション──PCやマッキントッシュで動作するようなアプリケーション──を書いたことがあるでしょう。ハンドヘルド向けの、特に Palm OS 向けのアプリケーション開発は、デスクトップアプリケーションの開発とはちょっと違います。それは、Palm OS ハンドヘルドがデスクトップコンピュータとは異なるデザインにもとづいているからです。それに、ユーザーもまたデスクトップコンピュータとは異なった感覚でハンドヘルドをシンプルに使います。 この節では、これらの違いが Palm OS アプリケーションのデザインにどのように影響するのかを説明します。   !!画面サイズ ほとんどのPalmハンドヘルドの画面は 160 x 160 の解像度しかありませんから、画面に一度に表示できる情報の量は限られています。 この理由により、大きな画面が使える場合とは異なる優先度と目標を持って慎重にユーザーインターフェースをデザインしなければなりません。十分な情報を提供しつつ、画面がごちゃごちゃしないように努力するのです。ユーザーインターフェースデザインのより詳細なガイドラインラインについては、「 [[Palm OS User Interface Guidelines|Palm OS User Interface Guidelines]] 」を参照して下さい。 将来、Palmハンドヘルドのスクリーンサイズは拡張されるかもしれないことに注意して下さい。Sony の Clie は既に他社のハンドヘルドと同じ画面サイズで異なる解像度(320 x 320 ピクセル)を実現しています。HandEra 330 は画面を回転させたり入力エリアを非表示にできるような機能を発表しました。ユーザーは入力エリアを非表示にすることで、より広いスペースをアプリケーションで利用できます。   !!素早い応答の要求 デスクトップコンピュータでは、ユーザーはアプリケーションの起動に数秒待つことを気にしたりはしません。なぜなら、そのアプリケーションを長時間使うことを想定しているからです。 これとは対照的に、一般的なハンドヘルドのユーザーはもっと短時間──普通は数秒程度──の使用を一日に 15 〜 20 回も繰り返します。ですから、スピードはハンドヘルドのデザインにおける重要な指標であり、プログラムの実行速度だけの問題ではないのです。移動し、選択し、コマンドを実行するのに必要な時間が、全体的な効率に大きな影響をおよぼすのです。(Palm OS にはいわゆる「砂時計」カーソルがないこともあわせて考えて下さい。) パフォーマンスを最大化するために、画面間の移動やダイアログボックスの使用などはできる限り減らすべきです。アプリケーションの画面レイアウトは、ユーザーが短時間で効果的に使えるようになるためにシンプルであるべきです。特に、ユーザーがよく知っているパターンの使い方ができるように、他のアプリケーションと共通のインターフェースを備えるようにするのは良いことです。 Palm OS 開発チームは、ハンドヘルドの一般的なアプリケーション(メモ帳やアドレスブックなど)の基準として使えるように、デザインガイドラインをまとめました。これらのガイドラインは 「 [[Palm OS User Interface Guidelines|Palm OS User Interface Guidelines]] 」 にまとめられています。   !!PC との接続 PC との接続は、Palm ハンドヘルドになくてはならないコンポーネントです。ハンドヘルドには、PC と接続するためのクレードルと、ハンドヘルドのデータを「ワンボタンで」バックアップし、同期するための PC 用のソフトウェアが附属しています。 多くの Palm OS アプリケーションには、対応するデスクトップ用ソフトウェアがあります。ハンドヘルドのアプリケーションとデスクトップのアプリケーションでデータを共有するためには、「コンジット」を作成しなければなりません。コンジットは HotSync ボタンを押した時に動作する HotSync(R) 機能のプラグインで、デスクトップのアプリケーションとハンドヘルドのアプリケーション間でデータを同期します。コンジットを作成するためには、Conduit SDK が必要です。Conduit SDK には別のドキュメントがあります。   !!インプットメソッド ほとんどの Palm ハンドヘルドユーザーはキーボードとマウスを持っていません。ユーザーはハンドヘルドへのデータ入力にペンを使用します。文字の入力にはインプットエリアを使用するか、またはハンドヘルドが提供するキーボードダイアログを使用することができます。 Graffiti(R) や Graffiti 2、あるいはキーボードダイアログはデータ入力の便利な方法ではありますが、キーボードやマウスを備えたフルサイズのデスクトップコンピュータを使うことに比べれば便利とは言えません。そのため、ハンドヘルド自体で大量のデータ入力をさせるべきではありません。 多くのPalmハンドヘルドは別売の外付けキーボードをサポートしています。しかし、ユーザーが外付けキーボードを持つことに依存してはなりません。   !!電源 Palm ハンドヘルドはバッテリ駆動です。ですから、デスクトップ PC 並みの処理能力を持っているわけではありません。ハンドヘルドは、デスクトップアプリケーションの可搬ビューワとしての位置付けを意図しています。 もしあなたのアプリケーションが計算量的に強烈なタスクを実行する必要があるのなら、ハンドヘルドアプリケーションのタスクとしてではなく、デスクトップアプリケーションのタスクとして実装すべきです。   !!メモリ Palm ハンドヘルドには、限られた量のヒープとストレージしかありません。バージョンによって異なりますが、利用できるダイナミックメモリとストレージは 512KB 〜 8MB 程度です。ハンドヘルドはディスクドライブや PCMCIA をサポートしません。 限られたスペースと処理能力のため、最適化が非常に重要になります。可能な限りアプリケーションを速く効率的にするために、ヒープの使用量を第一に、次に速度を、最後にコードサイズを最適化します。   !!ファイルシステム ストレージに制限があるためと、デスクトップコンピュータとの同期を効率的にするため、Palm OS は伝統的なファイルシステムを採用していません。データはデータベース毎にレコードと呼ばれるメモリチャンクに格納されます。ここでいうデータベースとはファイルのようなものですが、違うのはデータが連続した領域に格納されるのではなく、複数のレコードに分割されることです。領域を節約するために、RAM 上に作成してからストレージに書き出すのではなく、メモリ上で直接データベースを操作します。   !!下位互換性 異なるバージョンの Palm ハンドヘルドがあり、それぞれが異なるバージョンの Palm OS で動作しています。ユーザーはデスクトップコンピュータの OS でするほどすぐには Palm OS のバージョンを上げようとはしません。OS のアップデートは古いバージョンの OS との下位互換性を簡単に維持できるようにデザインされます。そのため、同じアプリケーションを多くのユーザーが使用できるのです。詳細については、「 [[1-4 アプリケーションを様々なデバイスで動作させるには|Palm OS Programmer's Companion Volume I/1-4]] 」を参照して下さい。   ---- [[↑1 章トップへ|Palm OS Programmer's Companion Volume I/1]] [[2 節に進む →|Palm OS Programmer's Companion Volume I/1-2]]