******CODESMITH YUTAKANO

"掌字典"開発メモ

最初に作ったPalmOS用のアプリケーション。
とりあえずメモしておく。
パソコンのアプリケーションの開発に興味のないかたには面白くない話題です。たぶん。

作った動機

1999年11月17日
最近、Mac用のアプリを作っている。(Listdb for MacOS)
とある雑誌の方から次の号のCD-Romに収録したいとメールがあった。雑誌がもらえるならOKである(笑)。
まぁ、ちゃんと紹介されるならと、Appleにアプリケーションのクリエータの登録をすることにした。
Mac用のアプリケーションはアプリケーションごとにAppleにクリエータIDを登録しなければいけないことになっているのだ。(ちなみにPalmも同じように登録制である。)
Appleの場合は4バイトなので「ゆld」と登録することにした。(Palmはアスキー文字で4バイトなのでこういうことはできない)
15年も開発されてりゃクリエータIDの空きなんて無いような気がするが、日本語を入れたやつはたいてい空いてる(笑)。テストのときからこのIDにしていたしね。
アップルコンピュータの開発者関係(http://developer.apple.com/ja/technical/index.html)のページで、Hexで登録しなければならないのだけど「ゆ」のシフトJISコードがわからなかった。
家だと、Macにそういうの調べるユーティリティがあるんだけど会社のWindowsマシンにはそんな気のきいたものは入ってない。
いろいろ探してみたけど見つからない(苦笑)。
結局、チャット中に友人に教わる(笑)。
そんなわけで無事に登録完了。
PalmOSのアプリケーションでなんかこういうの調べるユーティリティは無いか探してみた。
Muchy's Palmware Review!(http://muchy.com)でみると「jis kanji code」というのがあったが、残念ながらJISコードを表示する。必要なのはシフトJISコードなのだ。
漢字をシフトJISコードに変換するのは簡単だ。2バイトの上と下をそれぞれ数値にすればそれでおしまい。
どのくらい簡単かというと、仕事帰りの京王線で新宿から調布に着くまでにcbasPad(http://www.hotpaw.com/rhn/hotpaw/)で検索プログラムが作れるくらい簡単なのだ!
せっかくだからcbasPadのソースも書いておこう(笑)。

input str0$
str1$ = mid$(str0$,1,1)
str2$ = mid$(str0$,2,1)
str3$ = hex$(asc(str1$))
str4$ = hex$(asc(str2$))
str1$ = mid$(str3$,7,2)
str2$ = mid$(str4$,7,2)
str3$ = mid$(str0$,1,2) + " : " + str1$ + str2$
dprint str3$

まとめるとこうなる。たったの2行(笑)。
input str0$
dprint (mid$(str0$,1,2) + " : " + mid$((hex$(asc(mid$(str0$,1,1)))),7,2)str1$ + mid$((hex$(asc(mid$(str0$,2,1)))),7,2) )
……と、思ったけどやってみたらエラーになった(苦笑)。括弧多すぎるのかな?

最初に

実はCに挑戦するのは数度目(笑)。今まで何度もくじけています。
最初は今は無き「Think C」でMacのアプリを作ってみるかと思ったんだけど、結局、ResEditの使い方だけ覚えたのだった。
しばらくしてからC++ならできるかなと思ってCodeWarriorを買ってみたのだけどやっぱ挫折。おまけでもらったTシャツだけまだ着てる(笑)。
Palm/Pilotを買った後にもとりあえずGCCをダウンロードした!!HelloWorldだけはとりあえずやった!K&Rもちゃんと買った(読んでないけど)!!
家にはWindowsマシンが無いので秋葉で中古のFMV-Bibloを買ってくる。2万5千円くらいの安物。もちろんCPUは486だ!!(笑)。これでもまだPalm開発用のCodeWarrior買うより安いのだ〜。
Windowsマシンなんてどうせ使わないから486のノートで十分。コンパイルしかしないだろうし。
……で、それもインストールして半年ほどそのまま(笑)。

やっぱ「必要は発明の母」っていうのか、自分が必要なアプリがあると作る気力が出てくる。なんとなく作ろうと思っててもダメね、やっぱ。
それに最近、List(http://www.magma.ca/~roo/list/list.html)のデバッグのためにソースコードを見ていたので、PalmOSのアプリもなんとなくわかってきた(ような気がした)。
C言語自体もほとんど使ったことが無いので、とりあえず「C言語入門」(http://www.edu.ics.saitama-u.ac/~j542hk/c/)を印刷して置いておく(笑)。こんなんで大丈夫か?実はいまだにポインタとかハンドルとかってのがわかってない(苦笑)。

開発開始

前に書いたように簡単なアプリである。
入力用のフィールドと出力用のフィールドとボタンがあればいい。
ざっと調べて「YOUR SHARE」(Andre.Pruitt@lmco.com氏)というアプリがソースつきでフリーでみつけた。
それを元にすることにした。ゼロから書いたらたぶん挫折するだろうから(笑)。
数字を入れてボタンを押すと別なフィールドに数値を表示するってあたりが似ているから役に立つだろうと。

めちゃくちゃな開発環境で作業を始めた。
コードを書くのはMacでYooEditとTexEdit。
使いなれてるエディタじゃないと。というかWindows用のエディタでフリーでいいものを一つも知らないので。ノートじゃキーボード使いづらいしね。
で、書いたものをフロッピーで(笑)ノートパソコンに移動。スニーカーネットワークとよんでくれ。
「1.bat」と「2.bat」ってのを書いたのでノートパソコンにフロッピーを入れたら「1.bat」で内容をコピー。次に「make」って打って、エラーが無く終了したら「2.bat」でできたアプリをフロッピーへ。 ノートパソコンでは「1」「make」「2」しか使わない(笑)。
POSE(PalmOSエミュレータ)はMac用を使っているのでまたMacに戻すのだ(笑)。
これを繰り返すことになった。

開発グチ

漢字を入れるとシフトJISコードを表示するアプリは予想通り簡単にできた(笑)。
こうなるとさらに手を加えたくなる〜。
いくつか目標を立ててみる。
1) JISコード、区点コード、EUCも表示する。
2) 前回の作業内容を保存して次回起動時にそれをセットする。
3) 漢字の一覧表も表示する。
4) スクロールバーでぐりぐりうごかせるようにする。
5) ハードウエアの上下キーでぐりぐり動かせるようにする。
6) カット、コピー、ペーストを使えるようにする。
7) 画面の漢字一覧をタップしたらその漢字を表示する。


デバッグの仕方がよくわからないので、あちこちにダイアログを仕掛けて変数の内容を追ったりする。
途中でなぜか文字列の内容が変わってしまう問題があったのだけど、かっこ悪い方法で解決させる。うーん。なんで使っていない文字列の内容が変わってしまうんだろう?。
なんかCって文字列の扱いが難しいですね、REALbasicとHyperCardとperlとの比較なんですが(苦笑)。
とりあえず最初にとる文字列を多めにするとなぜか解消する。うーーーーん。なるべく「\0」を文字の最後にせっせと転送してみたり。
ま、ちゃんと動いてるからいいか。
それと、ハードウエアの上下キーを使えるようにするとなぜかグラフィティの入力ができなくなった。どうやら同じイベントらしいのでなんかうまく書かないといけないようだ。けど、サンプルが見つからないので保留。
カット、コピー、ペーストはListのソースの該当部をそのまま貼り付けたらちゃんと動いた。ラッキー。
結局目標のうちの5つはクリア。ハードキーだけは今後の宿題だね。だれか詳しいかた教えてください〜。
画面を叩いたら編集モードに切り替えればいいのかな?

えー、とりあえずこんな感じ。
あと、時間かけるのはアイコンですね。
画面に表示できるアプリケーション名も短くしないといけないので「掌字典」にした。
これならなんとなく漢字コード表っぽいだろう。
あ、アイコンで思い出したが、なぜかBMPのファイルを作ると白黒逆転したものが出来上がってしまうので、XBMでファイルを保存した。
Palmは画面が狭いので1ドット単位で文字の位置を修正しながら作る。
Mac上のお絵かきツールでエミュレータの画面をキャプチャーしたものをドット単位で修正してリソースファイルに反映させる。
日本語だとセンタリングとかちゃんと働かないのでめんどくさい。
もしかしてJ-OSだからか?
OSといえばエミュレータに使っているのはPalm/Pilot ProのROMである。PalmOS2.0のもの。
今使ってるマシンは2MアップグレードしてさらにFlashも書き換えてPalmOS3.3である。ところがROMの吸い出しがうまくいかないので古いROMイメージで動作確認(笑)。
大丈夫そうだったら実機に入れる〜。開発者用のROMもらってきたほうがいいな。

あと、これからソースの分割の仕方を調べないと〜。なんかよくわかんなかったから全部一ファイルに書いているのだ〜(苦笑)。

その他に役に立ったサイトの数々

ありがとうございました。

Palm OS はじめの一歩
じょーほーげん
Palm Pilot超入門プログラミング講座
GCCで挑戦! Palmプログラミング
ぱ〜む脱力ゲーム協会

もどる
yutakano (yutakano@tim.hi-ho.ne.jp)
Nov 18, 2000