PalmOS 5.x Hack開発講座 第1回

1.まえがき

 PalmOSのバージョンが5.0に移行される際にMPUの変更が行われました このMPUの変更に伴なってPalmOSのコアの部分がm68kコードからARMコードに書き直されると共に、PalmOS関数(API関数)の呼び出し方法も変更されています これらの変更はHackにとっては重大な変更点で、これまで使えていたHackを使うことができなくなりました

 移行に関する概要については、山田さんの書かれている[Palm OS 5 講座]を参照いただくとして、この講座では、変更されたPalmOSに対応したHackの書き方についてお話してゆきます 簡単に言うと、[ARMコードで書くHack]ということですね

※以下、PalmOS5.xを対象にしたHackを[ARMHack]、PalmOS4.x以前を対象にしたHackを[m68kHack]とします
 単に[Hack]と書いている所は文脈からどちらをさしているのかを判断してください

 なお、このお話の中では、いろいろな解釈をされているHackの定義を、

PalmOS関数(API関数)の動きを変えることでPalmOS全体の機能を拡張し、
その管理をHackマネージャに委ねるソフトウエア

に限定して進めてゆきます

 Hackと聞いて、なんだか難しそうだなとは思わないでください 一般的なアプリケーションを書きあげることに比べたら何十倍も簡単です (と思っているのは僕だけかもしれませんが) 特に、管理をHackマネージャに委ねる場合は、基本的にm68kHackの書き方と同じですから、本当にらくちん しかも、見よう見まねでなんとかなってしまいます

 唯一、ARMHackを組む上で面倒になるのは、シミュレータを用いたデバッグができないことくらいだと思います

※「その管理」を自分自身で行うことももちろん可能ですが、この場合、「その管理」を行う部分もARMコードで記述する必要があります また、そのARMコードで記述する管理部門を呼び出す部分はm68Kコードで記述、と合わせ技が必要になります また、アセンブリコードレベルでのARMアーキテクチャおよびAPI関数の呼び出し方法に関する理解などが必要になるので、とてもまとめてお話できる量ではありません これは別の機会に譲りましょう

2.Hackの現状

 PalmOS5.xを搭載した機種が登場してからしばらくの間、Hackを使用できない、開発できない状況が続いていましたが、2003年の10月に[Igor Nesterov]さんがOS5.x対応のHackマネージャ[YAHM]と、その管理する対象である[PalmOS5.x対応のHack]を開発するために必要な情報[YAHM - Yet Another Hack Manager for PalmOS5. Developers info.]を公開され(以下[YAHM Dev Info.])、この公開をきっかけにして、一気にOS5.x機に向けたHack開発の道が開けました

 とはいえ、YAHMの公開からもうすぐ一年になろうとしていますが、まだまだYAHMの存在を知らないPalmユーザが多く、またOS5機に対応するHackも数少ないのが現状です 僕たちの活動拠点である日本では、公の場で配布されているHackはまだ一つだけでしょうか (しかも、とあるDAのおまけとして...) これまでにHack開発を経験されている方はぜひOS5用に書き直すことを考えてみてください

3.Hackの存在意義

 「面白いでしょう」 この一言につきると思っています だって、たった数十バイトのコードでシステム全体に影響を与えられるんですよ というのは完全にシーズ思考ですね

 ユーザの立場でしばし考えて見ます...

 んー、やっぱり「面白いから」でしょうか いつも使っているアプリケーションはそのままなのに、Hackを入れることによって「見やすく」なったり、「使いやすく」なったり、「細かな設定ができる」ようになったり...

 はて、他人をなるほどと納得させられるまっとうな理由が思いつきません ほうっておいて次へすすみましょう

4.開発環境を整える

 PRC-ToolsでもCodeWarriorでも、どちらでも良いのですが、[YAHM Dev Info.]に同梱されているサンプルに合わせてPRC-Toolsでお話を進めてゆきましょう 投資が必要ありませんしね

 次回までに、PRC-Toolsの開発環境を整えておいてください 整え方はいろいろあるようですが、このお話の中では、[PRC-Tools 2.3]、[Palm OS Garnet SDK (68K) R3 for PRC-Tools]および[Cygwin 1.5.10-3]を使うことにします そうそう、Windows2000環境です

 PRC-Toolsのインストールについてはこちら

※[Palm OS SDK]の入手には[Palm OS Developer Program]への登録が必要です 登録後、Palm殿での処理に数日かかること、お知らせしておきます

 もし、CodeWarriorを使いたいという要望があれば、どこかで紹介することは可能です というよりも、普段はCodeWarriorを使っていますので、本当はCodeWarriorをベースにしてお話したいところなのですが、今回はあえて投資の必要が無いPRC-Toolsで (僕自身はGUI世代なのでPRC-Toolsには馴染めないのですが...)

 そうそう、YAHMとその開発情報、サンプルコードなどには目を通しておいてくださいね

5.題材

 なにも題材がないと進めようがないので簡単そうなところから...

 テキスト入力フィールドの下線を点線ではなくて実線にして見ましょうか

 次回までに、どのAPIをトラップすればよいか探しておいてください 二つあります

 「まず、m68kHackを組み立ててからARMHackに書き換える」という手順で進めましょう

 つづきは第2回「m68kHackの組みたて」

質問、感想などはPalmHackersSalonのBBSへ

T-Pilot sekino