いなあものPalmware開発日記 このページをアンテナに追加 RSSフィード

2005-10-03

[]クリエイターIDでくくる必要性 クリエイターIDでくくる必要性 - いなあものPalmware開発日記 を含むブックマーク

以前、この日記でもお話いたしましたPalmBackerというアプリを本日公開いたしました。

このアプリは、指定したアプリと同じクリエイターIDを持つDBをまとめて外部メモリバックアップするというもの。

Palmの世界ではこのクリエイターIDというのが重要で、アプリケーション本体と関連するデータベースは同じIDで管理されています。

例えば何気なくアプリケーションPalmの本体から削除した際、同じクリエイターIDを持つデータベースもまるごと削除されるのですね。

例えば新しいPalmを購入し、メインマシンをそちらに乗り換える際にも、アプリ本体のほかに同じIDを持つデータベースを併せてコピーすれば、新しいマシンで今までの設定を引き継いだままアプリが使える仕組みになっています。

ところが実際にはFilezや3XComなど一般的なメモリ管理アプリは、クリエイターID毎にデータベースグルーピングできません。

昔は、僕の使っていたクリエのPEG-SJ33などにはMS Gateなど、ある程度のグルーピング表示が可能なメモリ管理ツールがあったのですが、OS5クリエには搭載されなくなったようです(Visorフラッシュメモリモジュールにも同様の管理アプリがありました)。

そう考えると、今は何故このテのアプリが無くなってしまったのか疑問が沸いてきますね。

ただ無くなってしまったものを嘆いても仕方ありません。無い物は作るだけです。

NS Basicで作るPalmwareには色々と制限も多く、高機能なことを実現するのは難しいのですが、簡単な機能を組み合わせることでこういったグルーピング可能なデータベースバックアップ専用アプリを作ることは出来そうです。

そんな無い物ねだりの中で試行錯誤をしながら作ったのがPalmBackerです。

階層リスト表示はパフォーマンス的に厳しいので2リスト構成にし、メインのリストにはアプリケーション一覧を、サブリストには関連するDB一覧を表示するようにしました。

サブリストはそのままバックアップ一覧となりますので、不要なDBリストから選択して除外する事も可能にしました。

これだけあれば、機能的には十分です。

実は、とってもメジャーアプリで同じ事をやっている物があります。

神様山田さん作の「PowerRUN」です。

このアプリの目的はバックアップではありませんが、アプリ本体と関連するDBを拡張メモリに退避すると言う基本動作は全く一緒だったりします(私も引越しの際にかなりPowerRUNのお世話になりました)。

強いて言うなら、アプリの退避先がアプリごとにフォルダ訳されているところまで一緒です。

つまり、アプリバックアップを目的とする限り、PowerRUNを使用しても全く同じ効果が得られるのですね。あちらはアプリ名が日本語の場合に日本語表示されるあたり、PalmBackerより出来がいいです。

これではPalmBackerの存在価値がなくなってしまいます。

しかしPalmBackerでは、HackやDAといったPowerRUNで対応していない形式のアプリについても同様の手法でバックアップを行えると言う利点があります。

しかも、共有ライブラリバックアップ機能は大きなプラスポイントとなるでしょう。

僕自身がNS Basicというツールでアプリを作っているからかもしれませんが、共有ライブラリバックアップにはひときわ神経を使っています。

NS Basicランタイムをはじめ、システムライブラリやVFSライブラリは僕の主要なアプリでは必須ですが、これらはアプリではないのでランチャー画面からは認識できません。

機種を乗り換えた際にこれらのインストールを忘れてFatalエラーが発生すると言うのは、結構ある話なのです。

アプリと共有ライブラリバックアップすることで、およそ機種乗り換えに必要なDBの95%はカバーできると考えているので、これだけでもPalmBackerの有効性が分かっていただけると思います。

その他、DOC文書やPIM系のDBがあればほぼ100%でしょう。

これら引越しに必要なDBを、メモリカードに分類しながらバックアップできるPalmBackerは、出番は多くないかもしれませんがきっと貴方のお役に立つアプリだと考えています。

2005-09-28

[]史上最も危険な予定表アプリ 史上最も危険な予定表アプリ - いなあものPalmware開発日記 を含むブックマーク

「つぶやきぱ~む」は、Palmの予定表から無差別に予定を抜き出しては危険な香りのするつぶやきに変えてしまうジョークアプリです。

事の発端は、NS Basicの機能を使って予定表に予定を登録できないかとDBの解析をしたことから始まります。

結果はNS Basic仕様から書き込みは実用的ではないという判断になりました。

でも、読み込むことは出来そうです(年休君はこの機能に対応していますが、CSubLocalSendという外部サブルーチンを使うことで対応しています)。

さて、予定表DBの解析のために僕は検証用のプログラムを作っていましたので、少し改造をして予定をランダムに抽出するプログラムなんぞ作ってみることにしました。

ただつらつらと予定を羅列表示するだけのプログラムなのですが、実行してみると殆どの予定の場合、予定をあらわす文字列が名詞という面白い法則がある事が分かりました。

名詞は加工が簡単なので、このまま前後に適当な文章をくっつければ面白い日本語が完成しそうです。

気が付けば、テストプログラムは「つぶやきぱ~む」という妖しげな言葉をつぶやくプログラムに変身していました。

言葉をランダムにつなげて面白い日本語を表示すると言うプログラムは、過去にも色々なものがありましたが、これに予定表DBという標準PIMDBを使うことで、Palmの所有者ごとに全く異なる辞書を手に入れることに成功し、その結果として個人のプライベートをつぶやくという危険なアプリが誕生してしまったのです。

最初のベータ版が完成したとき、僕は腹を抱えて笑いながらも、このあまりにも危険なアプリの公開には躊躇しました。

でも、ジョークとして割り切ってしまえばこれほど面白いアプリは無いのです。

そして都合のいいことに、その時年に1度のジョークの祭典「エイプリル・フール」があと2ヶ月後に迫っていたのです。

ただ、一般公開のためには他人の予定表データでも「つぶやきぱ~む」のつぶやきが成立するのかを確認しないといけません。

ここでも運のいいことに、PUM2005という大規模オフ会東京で開催されたので、その会場に僕は「つぶやきぱ~む」を持ち込み配り歩きました。

反応は上々。

皆、この危険なアプリを起動しては奇声を発していました。

他人の予定表でも大丈夫なことが分かり、これで「つぶやきぱ~む」を公開する決意は固まりました。

こんな偶然から生まれたアプリですが、反応は上々。

ちょうど同種のアプリである「デス川柳」が残念ながら公開停止になった直後だったので、余計に嬉しかったです。

さて余談ですが、実は「つぶやきぱ~む」のバージョンナンバーにも、ちょっとしたジョーク(?)を仕込んでいて、v.2005.4.1というエイプリルフールの日付がバージョンに刻まれています。来年の4月1日にはv.2006.4.1というバージョンナンバーアプリが作れたらいいですね。

2005-09-26

[]積極的な小遣い管理 積極的な小遣い管理 - いなあものPalmware開発日記 を含むブックマーク

小遣いを貰うと勝手に予算を決められ、月末の残金は強制的に貯金させられてしまう。こんな乱暴な小遣い管理アプリなんて誰が使うんだろう?

実際、このアプリを作ったときはそう感じたものです。

PDAは常時携帯するデバイスですから、これで小遣い管理をしたいと思った人は多いと思います。僕もその一人。

標準の支払いメモから始まって、PEM、EiCashと渡り歩きましたが、どれも僕を満足させてくれるものはありませんでした。

いや、PEMもEiCashも優れたアプリなのは間違いありません。

ただこれらは支払いと残金の管理がベースであり、予算を費目ごとに振り分ける指標は人間が管理しないといけないのです。

例えば

貴方は、1ヶ月のうち食費にいくら費やしていますか?

そしてそれは適当な金額ですか?

そう聞かれて即座に答えられない人は多いと思います。少なくとも僕はそう。

1ヵ月の小遣いのうち、食費やタバコ代など、毎月およそ一定の額の支出があるものは固定費として認識し、それ以外が自由に使える金額だと認識するだけで、小遣いを効率的に使うことが出来るのですが、ナカナカそれを実践するのは難しいのです。

ならばアプリで計算させてしまいましょう。これが、C-MATEの考え方の原点になります。

毎月の小遣いはほぼ一定ですから、固定費が一定なら自由に使える金額も一定になります。

ほら、こうやって見てみるとC-MATEが勝手に予算を確定するのって、そんなに理不尽じゃないでしょう?

そして、費目ごとに使っていい金額が明示されていると、人間はその範囲内で上手にやりくり出来るものなんです。

「ああ、今月財布の中には5千円あるけど、このうち3千円は食費に残さないといけないんだな」

認識できれば、今ここで3千円のCDを購入しちゃいけないんだって言うのは誰でもわかることでしょ?

こうやって運用をすると、たいていの場合次回の入金日に僅かながら残金が残ります。

C-MATEのもうひとつの大きな特徴が、これを翌月に繰り越さずに強制的に貯金することで、貯金が増えると言う寸法。

僅かな残金を翌月に繰り越しても、それで翌月の小遣いが潤うことは殆どありません。

逆に塵も積もれば山となるじゃないですが、残金を貯金することで数ヶ月後には大きな買い物が出来るかもしれません。

頑張って貯金したご褒美だと思えば、それもまた嬉しいでしょう。

お分かりいただけたでしょうか?C-MATEは積極的に小遣いを管理するアプリなのです。

他の小遣い管理アプリでも、同じように毎月入金日に予算を計算しながら割り振れば同様の運用は可能ですが、固定費とは言え傾向は毎月徐々に変化しますし、収入だって増減があります。

ならば、それらの面倒な計算はアプリに任せてしまってもいいのではないでしょうか?

さて、そんな訳でC-MATEは僕の小遣い管理には欠かせないアプリなのですが、実は最近ちょっとした限界を感じています。

仕事での出張旅費、カードの支払いやそれに伴う銀行口座の入出金管理など、個人で扱わなければいけないお金が小遣い以外にもあるのですが、今のC-MATEではそれらを管理するのは大変難しくなっています。

今は、出張旅費を含む銀行への入出金やカードの支払いなどはEiCashを使って管理をしていますが、小遣いから一時的に持ち出しが発生したりするので、C-MATEとの連携をしたいところです。

現在は電卓を片手に手動で連携しているのですが、いい管理方法が無いか色々と探っているところです。

もしかしたら、新作アプリネタなのかもしれませんね。

2005-09-22

[]プログラムガラクタの集合体 プログラムはガラクタの集合体 - いなあものPalmware開発日記 を含むブックマーク

僕は昔から気になる情報を知識として収集する癖がありましたので、ちょっとした雑学オタク的なところはあったのかもしれません。

何の話かというと、この知識パソコンプログラムを書くようになって、それらの知識が知らぬ間にプログラムアイデアとして活躍しているというお話。

プログラムにならなくても面白そうなアイデアというのは結構あって、今でも頭の中にしまってあるんですね。

例えばそれはプログラムとして完成した仕様ではなくても「こうすれば面白いんじゃないか?」とか「これは使えないだろうか?」と言った具合に、まるで電子工作のための部品庫のような感じで、頭の中にプログラムジャンク部品があるんです。

その部品をうまく使い、プログラムとして具現化するのが昔から僕のプログラム作りになっています。

例えばMemoCar Racingのデータ対戦ゲームを作りたいと言う発想には別のゲームが原点にあったわけです(対戦アプリの楽しみ参照)。こういう情報プログラムを作りたいという欲求が絡み合い、それがアイデアとして具現化すると、アプリが1本出来上がるわけです。

もちろん、仕様はできたけど複雑すぎて具現化する時間が無かったりしてお蔵入りになるものもかなりあるのですが…(実はそっちのほうが多い)。

さて、こういうガラクタ部品庫知識データベースは、若い頃から蓄積すればするほど豊富ネタがそろう訳です。

僕は昔から学業そっちのけでパソコンゲームを書いていた所為か、今でもアイデアの元はいっぱいあるのですが、最近は新しい情報を仕入れる機会が少なくなってきたように思います。

歳とともに脳の思考も偏りがあるのかもしれませんし、何より時間的な余裕もなくなってきているのが辛いところです。

別にプログラムに限らず、若い頃に色んなことを経験すると後々役に立つとはよく言われることですね。

これを読まれている方で10代や20代前半の方がどれだけいらっしゃるかは不明ですが、そんな方は今のうちに雑学的知識をいっぱい吸収しておいたほうが、いろんな意味で面白いと思います(あえて役に立つとはいわない^^;)。

さて、不本意ながら説教臭い文章になってしまいましたが、それは本意ではありません。

そこで、僕の頭の中に20年以上寝かせているネタを一発だけ披露しますね。

それは東京地下鉄路線図をパソコンゲームに応用できないかという物です。

迷路状の東京地下鉄マップは、身近でありながらその気になれば色々と応用が出来そうです。

最初は中学生の頃に、当時流行っていたアドベンチャーゲームに使えないかと色々試行錯誤したものです。当時は「丸の内ADVENTURE」というタイトルまで考えましたが、肝心の中身についてはいいシナリオを思い浮かべることが出来ずにお蔵入り。完璧企画倒れでした。

最近は、この地下鉄マップを戦略シミュレーション地図に応用できないかと考えたりしてます。

コンピュータと対戦しながら地下鉄の駅をひとつづつ占領していくというものです。

複雑怪奇な迷路だからこそ、補給路の確保や兵を進めるための駆け引きに面白みが出てくると思っています。

例えば大手町駅は東京地下鉄の巨大ターミナルですが、そのために戦略上の重要拠点となります。四方八方に進軍できる拠点ともなりますが、逆に攻められやすく守りにくい。時には戦略上一旦放棄しなければならないなんて事もあるでしょう。

身近なマップだからこそ思い入れのある駅とかもあるでしょうし、そんな駅ひとつひとつを攻略する方法を考えるのは楽しいのではないかと思っています。

アキバは絶対に死守しろ」とかね(笑)

う~ん、でも作る時間がないなぁ。

誰か作ってみませんか?

テストプレイヤーはいくらでも引き受けますよ。(^^;)

2005-09-15

[]ライブラリを検証する ライブラリを検証する - いなあものPalmware開発日記 を含むブックマーク

NS BasicPalmOSAPIを全く知らなくてもPalmwareを構築できる優れた開発ツールです。

恐らくプログラム開発経験のある人なら、NS Basicインストールしてからものの10分でPalm上にHello Worldメッセージを画面に表示することが出来るでしょう。

本来ならPalmOSAPIについてSDKのドキュメントを読んだりとか色々とAPIの手続きを覚える必要があるのですが、NS Basicはその複雑な手順を全てランタイムライブラリが吸収していますので、プログラマはそれらの面倒な手続きを学習する事無く簡単にプログラムを作成できる訳です。

その代わり、実行するためには必ずランタイムライブラリインストールする必要があります。

PalmデバイスはPalmOS5.0以降、従来のMC68000系DragonBallCPUからARM系のCPUに切り替わっています。

それに伴い、NS Basicバージョン4からARMプロセッサ用のランタイムライブラリが用意されました。

このARMプロセッサ用ランタイムは、ランタイム自身がARMプロセッサのネイティブコードで動作するため、従来のランタイムライブラリよりもアプリを高速に動作させることが出来ます。

元々処理速度に不満のあったNS BasicにこのARMネイティブランタイムの登場で、我々開発者は期待に胸を膨らませました。

ところが、その期待はすぐに裏切られました。

従来のMC68000系ランタイムで動作していたアプリの殆どが、ランタイムを切替えることで動作に不具合が発生することが判明したからです。

表示の乱れやイベント処理など不具合は多岐にわたり、当初は惨憺たる結果となりました。僕も一旦はC-MATEにARMネイティブランタイムを同梱していたのですが、どうしても使用に耐えなかったので、使うのを止めてしまったほどです。

とは言っても時代は確実にARMプロセッサが主流となっています。

NS BasicARMネイティブランタイムも、バージョンがあがるにつれて動作も安定してきましたので、ランタイムの検証を行わないといけません。

しかし、MC68000系ランタイムARM系のランタイムをとっかえひっかえアプリの動作検証をするのは、ランタイムを入れ替えるたびにHotSync経由でインストールするのでとても面倒です。

ChoRunはそんな面倒な作業を解決するために作りました。

外部メモリカードに、予め2つのランタイムコピーしておき、ボタンひとつでランタイムの切替を行います。

一般の人には役に立つものではありませんが、NS Basicdでアプリを開発している人には便利なアプリです。

ちなみに、僕のアプリは殆どがARMネイティブランタイムで動作するのですが、つぶやきぱ~むのようにまだ不具合があるものもあります。

原因が特定できたら、今後のアプリ開発のためにもNS Basic社のサポートに連絡差し上げないといけませんね。

こういうユーザからの情報の積み重ねが、確実に自分に返って来るのですから。