Palm OS はじめの一歩

Last Modified: Friday, 17-Sep-1999 23:34:37 JST
このページでは Palm OS で開発を始めるにあたり、必要な情報を集めてみま した。感想等いただけたら幸いです。

  1. はじめに
  2. このページは Palm OS (pilot, PalmPilot, Palm III, WorkPad に塔載) で動作するプログラムを作ってみたいな、と思っている方のための情報を集め たページす。Palm OS は Palm Computing 社(後、USRoboticsに合併、さらに USR は 3Com に合併。と思ったら今度は独立するらしい)が開発した、 Micro Kernel を採用し Multi-Thread 機能 を持つ(らしい) Pen Computing 用 OS です。 開発者が Mac 関連の仕事をしていたらしく、Mac OS との類似性を指摘する人 もいます。(この辺りは多少 BeOS に通じるものもあるのかもしれません。OS としては BeOS は Mac OS を 引きずっていない、まったく新しく設計思想も異なる OS ですが。) ともあれ、今一番ホットな商用 OS の一つに間違いないでしょう。それだけに Palm OS プログラミングはエキサイティングです:-)。

    さて、普通、あるプラットホームで動作するプログラムを作成する場合、 OS やハードウェアの構造、モデル、提供する API といった、 OS やハードウェ アそのものに関する知識と、開発環境に関する知識の両面の知識が必要になり ますが、ここでは、主に開発環境に関する知識をまとめてみました。 OS に関する情報は、Palm OS バイブル(日経 BP 社刊)や漆畑さんの プログラミング本、 3Com 社が配布しているドキュメントに詳しく解説してありますので (ただし英語ですが)、ここでは深くは立ち入りません。 (Palm OS はじめの一歩と言うわりには ^^;)

  3. 開発に関する情報の入手方法
    1. Web
    2. 開発をやってみようかな?と考えてりる人も、既に開発を始めてる人も、 知りたいことがあったら、まずは Web で調べてみましょう。 ついでにいろいろ有用な情報が得られるかもしれません。

      1. 3Com Developer Zone
      2. SDK や FAQ を始めとした、公式な開発情報が多数あります。 3Com 外部の関連ページへのリンクも多数あるので非常に有用です。 まずはここから覗いてみるのが良いと思います。 なにしろ公式ページですから、ときどき見に行くと良いでしょう。

      3. Pilot Software Development
      4. 初期 Pilot 界で有名なプログラマである Darrin Massena 氏のページ。 氏自身は既に Palm OS プログラミングより離れているようですが、 news group, ASDK などの開発に有用な情報があります。

      5. Palm Central
      6. 開発ツールや関連情報がまとめられています。

      7. Developer.com Palm OS Directory (旧 RoadCoders)
      8. ツール、ソースコード、その他の開発のための情報があります。 palmcentral と異なり、開発系の情報に特化しています。

      9. Wade's Pilot Programming FAQ
      10. 内容はちょっと古いかもしれません。

      11. Palm OS プログラミングに関するじょーほーげんのページ
      12. (Palm に限らず)高名な programmer であるほしさんのページです。 リンク集としては、今あなたが見ているこのページより、よっぽど充実しています。:-)

      13. PalmGear H.Q.
      14. 言わずと知れた News, Software Archive サイト。開発ツールは殆どが ここに登録されているので、ここでサーチしてみるのも良いでしょう。

      15. North America Media Engines / USRobotics pilot Developer Resources
      16. ちょっと古いですが、コメント付でよくまとまっています。 ...と思ったら今はなくなっているみたいです...

    3. ML と News 等
    4. 自力で調べても判らない時は、質問してみるのもいいでしょう。 (ML 等の参加方法はそれぞれの Web Site で確認して下さい。)

      1. pilot-tech ml
      2. 日本語の Palm OS 機技術情報 ML 。開発初心者向けの話題から、 かなりディープな話題まで交わされています。基本的に流量は少ないですが、 ときどき盛り上がります。

      3. Nifty Serve FPILOT 14, 15 番会議室
      4. 流量は少ないですが、わりと色々な方が読んでいます。 Nifty に慣れている方は、こちらへどうぞ。

      5. Palm Developers Forum List
      6. 英語の開発系メイリングリスト。流量は多い(20通以上/日?)ようです。 Palm Comuting のサポートの方も参加されていて、かなり正確な情報が得られます。 こちらも、初心者からエキスパートまで、幅広く議論されています。 アーカイブもあり誰でも参照できます。 他に Palm Macintosh Users Forum List, Conduit Developer Forum List, Emulator Forum List などの ML も有ります。

      7. Pilot-UNIX Mailing List
      8. 主に UNIX 系(なぜか、OS/2 も含むらしい)の Palm OS 機と通信するプログラ ムの開発のための ML のようです。筆者は参加していないので、よく判りませんが。

      9. Pilot Software Development
      10. 開発関係の news group があります。

  4. 開発環境
  5. 主要な開発環境は以下の通りです。基本的に C 言語系のものが多いので、 それほど敷居は高くないと思います。

    1. C (C++)
      1. CodeWarrior for PalmOS
      2. 動作環境: Mac, Windows
        カナダ MetroWorks 社製の定番ツール。もともと Mac 用の開発環境ですが、 Windows にも移植されている IDE 開発環境です。 デバッグまで含めて開発に関わる一通りのことができます。 また、ドキュメント、サンプルソースが付いてきます。 秋葉原などでは、店頭でも置いている店があります。値段は...最近安売りし ているお店もあるようで一概には言えません:-)。 なんといっても公式開発ツールですし、IDE が使いたい方にはおすすめです。

      3. GCC(Pilot Tools ver. 0.50)
      4. 動作環境: UNIX, Windows(, Mac)
        UNIX 系でおなじみの GPL に基づき配布されている Free Software。 UNIX 系で開発される方は、ほとんどの方がこれを利用しています。 筆者も最近はもっぱら、Windows 版の GCC を利用してます。

        一般に GCC と呼ばれていますが、正式名称の Pilot Tools という 名前が示すように gcc を核として、gdb などのツール一式が パッケージになっています。 特に Windows 版は bash や emacs まで付いてきます (emacs はバージョンが古いし、Mule(Meadow) じゃないんで、 かなりおせっかいなんですが。あ、copilot もバージョンが古いです。)

        Palm OS 3.0 SDK が Web 上でだれでもダウンロードできるようになったので、 Document の問題等の CodeWarrior に対するデメリットはほとんどなくなりました。 Windows 版はインストーラが付属するため、インストールも通常の Windows アプリと代らず、簡単です。 FreeBSD にも ports もあります。 Emacs や Command Line (標準は bash) 環境に慣れた方でしたら、Windwos ユーザの方にもおすすめです(一応 IDE 環境もあるようですが、筆者は使用し たことがないのでよく解りません)。

        最近(1999/09)、 Handspring 社のサイトにも Visor 開発用の gcc を核とした開発環境がリリースされました。

        前述のほしさんのページにある、 MacMiNTを使うと MacOS 上でも GCC で開発できるらしいです。 (筆者は Mac も使ってるのですが、まだ試してません。) さらに BeOS 用もあるらしいですが、これも筆者は未確認です (筆者は Intel, PowerPC(Mac) 版共に BeOS を使用しては いるのですが...^^;)。

    2. Assembler
      1. ASDK(Pila)
      2. 動作環境: UNIX, Windows
        筆者は使ったことがないのでよく解りませんが、 C Compiler でも Inline Assembler があるので、どうしても Assembler で組みたいという方でなければ、現在では特に使用する必要はないと思います。 ただし、ASDK には disassembler (PilDis) などの便利なツールも幾つか含まれていま すので、とりあえずダウンロードしてみるのも良いでしょう。Free です。

    3. Java
      1. KVM(K Virtual Machine)
      2. 実は今最も熱い開発環境かもしれない、 Palm 上で Java の Virtual Machine を動かしてしまうという 実に野心的なプロダクツです。 Java on the Palm なんていう日本語の ML まであります。 Java が書ける人はぜひチェック!

      3. Jump
      4. 動作環境: Java がサポートされている環境
        Java ベースの開発環境です。 残念ながら、筆者は使ったことがないのでよく解りません。 ただ、あまり使用されてはいないようです。Free (のよう)です。 ちなみに、作者はオリジナル Copilot の作者でもある Greg Hewgill 氏です。

    4. その他
    5. この他にも Palm OS 上で動作する C, Forth, Lisp などのインタプリタ があるようです。(筆者は使ったことがありませんので)詳しくは Palm Central でどうぞ。

  6. CodeWarrior のインストール
  7. なにも考えるとはありません:-)。 普通のアプリと一緒のやりかたでインストールします。 普通にインストールするとドキュメントやサンプルも一緒に インストールされます。 *.mcp というファイルがプロジェクトファイルなので、 これをダブルクリックすれば CW IDE が立ちあがります。 Example フォルダから探してやってみると良いでしょう。 あとは、メニューから Make して、Palm OS Emulator などで 動作を確認すると良いでしょう。 また、リソースの編集は Constructor for Palm OS という別アプリ で行います。Mac の場合は ResEdit も使えます。 詳しくは Manual を参照して下さい。

  8. GCC のインストール
  9. Windows 版でもインストールそのものは簡単です。 これも、普通のアプリと一緒のやりかたでインストールします。 Free BSD は ports があるので、普通に make 一発のはずです。 Linux は...知りません(^^;)

    ま、UNIX 系の OS 使いの人には今さら説明の必要もないでしょうから、 以下 Windwos 版についてのみ若干の説明をしておきます。

    1. bash を立ち上げてみよう
    2. インストールすると、 GNU PalmPilot Developer Tools というフォルダが出来ているはずです。 また、メニューに PalmPilot-GNU というフォルダが見えると思います。 ここに bash というソフトがあると思うので立ち上げてみて下さい。

    3. make してプログラムを作成してみよう
    4. コマンドプロンプトのような画面が立ち上がったら

      cd ../example
      make
      

      と打ち込んでみて下さい。(example ディレクトリに移動して、make する。)

      ls
      

      と打ち込んで pilrctst.prc なる prc ファイルが出来ていたら インストールは一応成功です。Palm OS Emulator にインストール又は実機に HotSync して実行してみて下さい。

    コマンドラインに慣れていない方はちょっと戸惑うかもしれませんが、 bash に関しては多数書籍が出版されているので、ちょっと見てみると 良いでしょう。 また、GNU のテキストエディタ Emacs (又は Mule) があると、一種の統合環境として make, debug が出来ます。 Meadow という Windows 版 Mule がありますので、 興味のある方はチャレンジして下さい。 ベクターのサイトに アーカイブがあったと思います。 (ま、Meadow は Meadow でインストールや使い方がちと面倒だったりもしますが :-)

  10. Palm OS Emulator と SDK
  11. 開発、特にデバッグ時に便利なのがエミュレータです (実機へ HotSync してリモートデバッギングするのは大変ですからね)。 この Palm OS Emulator (以下 POSE と略)は実機との差異が少なく、 Code Warrior や gdb と連携してデバッグできるというスグレものです。 そしてなにより Palm Computing がフリー提供している純正エミュレータです。 (以前は copilot という名前のフリーウェアでしたが、現在は Palm Computing 自身が開発を行っています。) 安心してガンガン使えます(ま、バージョンによっては、 ちょっとバグってることもありますが:-)。

    Windows, Mac, Unix...と、実に多くの環境で動作します。 開発者必需品であるのみならず、一般ユーザにとっても ソフトの評価に有用な一品です。

    GCC, Code Warrior 共にパッケージに付属していますが、 わりと開発のペースが早いソフトなので、ついでに最新版を入手すると良いでしょう。

    また、Palm OS の Update と伴に Software Development Kit(SDK) も新しいものがリリースされます。 Code Warrior 用の最新の SDK も Palm Computing のページから無料で入手できます。 GCC ユーザの方も、この SDK に開発に必要なドキュメントや サンプルソースコードが多数含まれているので、 必ず入手して下さい。

    1. ROM Imageの入手

      Palm OS Emulator そのものは ROM Image を持たず、実機の ROM を PC へ吸い出して、それを利用するという形になります。 やり方はマニュアルを参照して下さい。 なお、シリアルポート経由で転送することになるので、HotSync Manager を 終了させることをお忘れなく。
    2. Debug ROM の入手

      Palm Computing 純正の Debug ROM (デバッグ用に機能が拡張された ROM) というものもあります。 入手にはライセンス契約が必要です。規定の用紙(PDF ファイル) をプリントアウトし郵送する必要があります。

  12. PalmOS Emulator を用いた Debug 環境の構築
  13. Windows 版の CodeWarrior, gdb を使用する場合の環境の 構築方法を簡単に示します。他のプラットホームでも 大体似たような作業になると思います。

    1. CodeWarrior (R4 for Windows)
    2. まず PilotPlugin を Get。 解凍した pilotPlug.dll を (CodeWarrior)\Bin\Plugins\Debugger\pilotPlugin.dll と置き換える。

    3. GCC (gdb ver. 0.50)
      1. gdbplug を Get
      2. 解凍し適当な(Path が張ってある)場所にインストールする。
      3. PalmOS Emulator を実行する
      4. Emacs などから gdb を起動する。この時、例えば pilrctst.prc を debug する場合は "gdb pilrctst" と bash 等のコマンドラインから打ち込む。
      5. Shell または Dos 窓から gbdplug を起動する "gdbplug -port 2000" 2000 は使用したいローカルの tcp/ip ポート番号
      6. gdb にポート番号を知らせる "target pilot localhost:2000"
      7. Emulator 上で gdbpanel を起動し、"Enable stub"をチェックする。
      8. Emulator 上でアプリケーションを起動する。

  14. プログラミング に必要な前提知識
  15. ここでは C で開発することを前提にします。 以下の事項に関する知識があれば、 SDK に付属の Ref*.pdf (古い SDK の場合 Guide*.pdf) や標準アプリケーションのソースを読むだけで、すぐにでもプログラミングを 始めることができると思います。

    1. OS と C 言語に関する一般的知識
    2. K & R が理解できていれば十分だと思います。 標準ライブラリの知識はなくても問題ないかもしれません。 逆に Palm OS の API に fopen() や printf() や malloc() がないことに、 ショックを受けるかもしれません(類似のものはあるのですが :-)

      なお、筆者は良く知らないのですが、 Palm OS は Mac OS の影響を受けており、 Mac OS 上で開発経験のある方は、 Palm OS プログラミングもすぐ出来るそうです。

    3. イベントドリブンスタイルのプログラミングの知識
    4. X-Window, Windows, Mac などでプログラミングの経験のある方は 既にお馴染みの概念だと思います。 Visual Basic や、UNIX の C のコマンドラインでしかプログラミングされた ことのない方は、X-Window や Windows などのプログラミング本の該当部分 (おそらく最初のほうにあると思います)を読むとよいでしょう。 ただし、Palm OS では Event Loop をプログラマが明示的に記述する必要があ るので、他の OS に比べちょっと面倒に思うかもしれません。(他の OS でも 大抵は Class Library などで隠蔽しているだけなのですが。)

    5. 多少の英文読解力:-)
    6. 1999年3月に Palm OS バイブルという SDK のドキュメントの翻訳本が 出たので、まぁ、最近はあまり英文読解力がなくても プログラムが組めるようになりました。 とはいえ、この本は 7800 円とお高いですし、 実際にプログラミングする時に便利なオンラインマニュアル (Ref*.pdf) は、 まだ英文しかないですし、Web 上の情報は英文が多い、 と英語が読めたほうがいろいろ便利なのが現状です。

      てなことを言うと多くの人が引いてしまいそうですが(^^;)、 ま、高校程度の英語力とコンピュータ関係の専門用語の知識があれば十 分です。それほど構えるほどのものではないと思います。

    7. マニュアルとソースを読む根気強さ:-)
    8. Palm OS バイブルを店頭で見るとわかりますが、ぶ厚いです。 全部読む必要はないのですが、それでも 1/3 ぐらいのページには 目を通しておく必要があるでしょう(各章に、その章で扱う内容の概要が 記載されているので、その部分など)。

      また、実際にプログラミングを始めるには、SDK 付属の ソースコードを読むのが一番です。 これらを読み自分のモノにする根気が、まぁ、ちょっとだけですが、 必要になります。ま、でも、やってみるとたいしたことないですよ(本当?)

  16. 最後に
  17. ここに記載した情報を基に、とりあえず、開発環境の整備と必要な情報に アクセスできるようになると思います。 え、「結局どうしたらプログラムが書けるようになるんだ?」ですか? 先に述べたように、現状では、やはり SDK 付属のソースを Ref*.pdf (Guide*.pdf) を参照しながら読むのが一番ではないでしょうか。 とりあえず、Memo Pad のソースから(ゲームが作りたい方は、 HardBall のソースを)読むのが良いでしょう。 (Tutorial はやらなくても良いと思います。) また、最近は、プログラミング本や雑誌の連載もありますので、 そちらを読むのも良いでしょう。

    1. 漆畑さんの「ここまでできる!Palm/WorkPadプログラミング」(オーム社)
    2. DOS/V Power Report の山田さんの連載
    3. UNIX Magazine の増井さんの連載
    4. Mobile Press の赤松さんの連載

    などがあります。 漆畑さんの本は Windows ユーザ向けの内容ですが、日本語で読 めるまとまったものは、今のところこれだけのようですし、 Windows ユーザに限らずおすすめします。 雑誌についてはバックナンバーを探せる方は探してみるといいでしょう。 東京だと、秋葉原の Laox The Computer 館等にあるのではないでしょうか? (未確認です。) UNIX Magazine の増井さんの連載は、Hack の書き方まで載っていて、 なかなか実用的です。私はこれを見て、Hack を作り始めました(^^;)。

    プログラミングの具体的解説は 真面目にやると本が一冊書けてしまいそうなので、 ここではこれ以上は触れません。 躓き易いのは Chunk, Handle といった用語が飛び交うメモリ関係、 Palm OS の特徴の一つである Database 関係、 イベント処理(特にスタートアップ時) ぐらいのものでしょうか?その点は注意して Ref*.pdf (Guide*.pdf) を眺めれば Palm OS (の API) の概要は簡単に(?)理解できるでしょう。 皆さんのジジョドリョクに期待します :-)。 判らないことがあったら、お気軽に pilot-tech ml で聞いて下さい。 結構親切に教えてもらえると思いますよ。

    さて、最後までおつきあい、ありがとうございました。 この雑文を読んで Palm OS プログラミングを初める方がいらっしゃったら 非常に嬉しいです。 皆さんの Cool な PalmWare を楽しみに待っています。

  18. 謝辞
  19. このドキュメントを書くにあたり、pilot-tech ml のメンバの方々には大変お世話になりました。 改めて感謝いたします。

  20. 更新履歴
  21. 1999/09/17
    1998/07/25
    1998/07/24
    

IWAMA Naozumi naoz-i@tt.rim.or.jp