Done!

since 1998/10/22
last update 1999/09/30

 Done!の主な役割は時計です。

 作者は腕時計をしない人なので、プログラムが作れる環境では片っ端から時計を作っています。というわけで、PalmPilotでも作ってみました。

 また、仕事の都合上、どの仕事をいつからいつまでやっていたかを記録しておく必要があって、PDAのアポイントメントは行動記録としても使用しているのですが、得てしてこの手のソフトでは開始・終了時刻(特に終了時刻)の修正が面倒です。PalmPilotでもやはりこのあたりは面倒なので、時計機能に加えて、行動記録を「予定表[Datebook]」のデータに直接書き込む機能もつけてしまいました。これがDone!の名前の由来になっています。

 こんな感じのデジタル時計です。

変更履歴

インストール

 配布アーカイブには、4つのprcファイルが同梱されています。 お好みのprcファイルを1つだけインストールして下さい。
ちなみに作者は、オリジナル版を常用しています。

行動記録

 「begin!」ボタンをタップすると、フォームの下方に、
CURR JOB: since 1998/08/19 13:37...
のように、行動を開始した日時が表示され、ボタンのラベルが「Done!」に変化します。

 次に、「Done!」ボタンをタップすると、下方の表示が、
Last job: 1998/08/19 13:37->14:22
の様なものになり、ボタンは「begin!」に戻ります。

 「Done!/begin!」ボタンの左の「Round」を設定すると、「Done!/begin!」ボタンをタップしたときの時刻を、5分、10分、15分、30分、1時間毎に調整することができます。この時、どちらに調整するかは、その下のポップアップリストで、近い方(nearest)、前(before)、後(after)のいずれかに設定します。

「Send to datebook」をタップすると、行動記録を予定表[Datebook]に書き込むためのフォーム(SendTo Datebook)に切り替わります。

 「Send to Datebook」フォームでは、行動記録の日の予定と(new data)というリストがあるので、予定のある行動であった場合は、その予定を選択した後、「OK」をタップします。すると、その予定の開始時刻、終了時刻が行動記録の時刻に修正されます。
 予定のない行動であった場合は、(new data)を選択して、「OK」をタップすると、新規データとして、予定表[Datebook]のデータに追加されます。この時、そのデータの見出しは、リストのしたのDescription欄で指定されたものになります。

 後述する方法で、あらかじめDescriptionのリストを作っておくと、Description欄の右に「B」ボタンが現れ、それをタップすると用意されているリストがポップアップします。このリストから、適当なものを選ぶと、それがDescription欄に書き込まれます。
Descriptionをリストで選べます。

複数の行動記録の保持

 マルチジョブ版(done_m.prc,done_digi_m.prc)では、複数の行動記録を保持できるようにしました。

 「Done!」ボタンで行動記録した後、「begin!」をタップすると、次の行動記録を保持しますが、それをまた、「Done!」して「Send to Datebook」でDatebookに送ると、前の行動記録が表示されます。
 「Done!」「begin!」を繰り返すことにより、複数の行動記録を保持し、最近の行動記録から順に予定表[Datebook]に登録します。

注:もともとが、1件の記録しか保持できない設計だったものを、無理やり複数記録対応にしているので、ユーザ・インターフェース的には練れていない感が否めません。
後述のように、作者的にはめんどくさいからほかっとこうとしているので、困る人は要望を上げてください。

行動記録のロック

 誤操作を防止するため、一時的に「Done!/begin!」ボタンをフォーム上から消してしまうことができます。

 消したい場合は、メニューの「Lock/Unlock button」を実行します。あるいは、Datebookに書き込むフォームで「Lock & Cancel」ボタンをタップした場合も同様にボタンが消えます。

 「Lock/Unlock button」の動作はトグルになっているので、消えている状態で実行すると、「Done!/begin!」ボタンが現れます。

レイアウトの変更

 行動記録の機能を(Palm/Pilotのホールドも含め)片手だけで操作したいという要望にあわせて、ボタンの位置と、「Round」関連のポップアップトリガーの位置を入れ換えることができるようにしました。

 メニューの「Change button layout」を実行すると、「It will not take effect until restart」というアラートが表示されます(次回起動時まで、変更されないと言いたいらしい)。
 この時点では、レイアウトの変更は行われず、次回起動時(実際にはウィンドウを開き直したとき)には、入れ替わっているはずです。

 こんな感じになります。

 なぜ、その場で反映されないかというと、コードでレイアウトをいじるのは、作者の趣味としてあまり、好きじゃない(なんのためのリソース)ということと、後述(既知の問題点)の問題があって将来的には、リソース自体を書き換えるという技に走るかもしれないため、その際にこういう仕様にしておいた方が楽ということもあるためです。

行動が日付をまたいでしまった場合

 予定表[Datebook]では、日付をまたいだ予定を管理することができないようです。そのため、Done!では、日付をまたいで閉まった場合には、終了日時を開始時の日付の23:59に変更してしまいます。

Descriptionのリストをあらかじめ用意しておく方法

 メモ帳[MemoPad]に、1行目が「Done:descriptions」というメモを作ります。そして、そのメモの2行目以降に、リストで選択したい文字列を下記連ねておくと、それらが前述の「B」ボタンで、ポップアップ・リストに表示されます。

こんな感じのメモを作る

 「Prefs」というカテゴリを作成しておくと、「Prefs」カテゴリのメモのみを検索するので、若干、動作がはやくなります。この場合、上記のメモのカテゴリが「Prefs」でないと、無いと判断されますので、注意してください。

 メモ帳[MemoPad]のカテゴリの使用については、pilot-tech-mlで、議論されており(そんなに活発ではないけど)、アンケートにもそれについての質問がありますので、ご意見をお寄せください。
 また、現状では「Prefs」というカテゴリを使用するようにしています(既にそういう実装が公開されたため)が、アンケートの結果や、mlでの議論の行方によっては変更される場合がありますので、あらかじめご了承ください。

 いわゆるヒストリのように、一度入力したものを記憶しておいて、それを選択できるようにするというのが、もともとの寄せられたアイデアなのですが、

などと考えて、今の仕様になっています。

既知の問題点

 もともと英語が苦手なので、メッセージやキャプションがいいかげんです。適正な表現を教えていただければ幸いです。

 ボタンのレイアウトを変更している場合、一瞬もとの位置で表示されてから、入れ替わった位置に表示し直されます。これについては、自分自身のリソースを書き換えて、レイアウトの変更を実現するという方向で対応しようかとも、考えているのですが、まだ、それを実現できるほど修行を積んでいないため、現状のようになっています。
 ただ、これについては、作者自身はあまり気になっていないので、強い要望がなければ、対応しないままかもしれません。

 複数の行動記録を保持しているときに、最後の行動記録の終了時刻が確定していないと前の行動記録についても、予定表[Datebook]に送ることができません(そもそもそのフォーム移るためのボタンが表示されない)。これは、もともと複数の行動記録を保持することを考慮していなかったものに無理やり対応させたことに起因しています。本来は、ユーザ・インターフェースの見直しをするべきなのですが、作者的には、今のままでも十分実用になると感じているので、モチベーションが低くなっているのが、本音です。
 「それは、許せん」という意見とか「こうすれば、いいじゃん」というアイデアがあれば、考え始めると思うので、お便りください。

時計表示が汚いわけ

 Done!では、好みで時計表示をカスタマイズしやすいように、ビットマップで描いた数字を使用しています。で、開発時にそれを用意するにあたって、とりあえず、マウス(厳密にはThinkPadのTrackPoint)で適当に描いた数字を使ってみたら、それはそれで味があるので、そのまま使用しています。

 やはり、オーソドックスなフォントがあった方がいいのでは、という意見もあったので、ちょっと日和って、普通のデジタル時計風のものも用意しました。好みでお選びください。

done_digi.prcはこんな感じ
とても大変だったので、もう、自分では作らないと思う。

 「これを採用せい!」という自信作があれば、作者に送ってくだされば、こちらでコンパイルして公開させていただきます。

Datebk3を使用している場合

 作者がDatebk3の全ての機能を熟知しているわけではないので、Datebk3が拡張している機能で問題が出るかもしれません。

 とりあえず、カテゴリ関連で、ちょっと困ったことが起きうることがわかっています。
 標準の予定表[Datebook]やDone!では、カテゴリを使用していません(特にいじってないので未分類[Unfiled]になるのだと思う)。PalmOSはOSレベルでカテゴリを活用できるようになっている(さすがPDA専用OS)ので、使わないのはもったいないのですが、標準の予定表[Datebook]がそういう仕様です。
 それに対し、Datebk3では、ちゃんと利用できるようになっていて、カテゴリ毎に表示/非表示を設定できるのですが、ここで未分類[Unfiled]を非表示にしていると、Done!で追加した(もしくは定期的な予定[Repeat]を変更した)データは表示されません(前述のように未分類[Unfiled]になるのでしょうがないです)。

 あと、タイムゾーンについてもなにか問題が出そうな気がするのですが、Datebk3でのタイムゾーンの使い方もよく分かってないので、問題があったら具体的な症状とその時のDatebk3の設定などを教えていただけるとありがたいです。

使用条件等について

 Done!はシェアウェアです。
 試用期間や機能制限などは特に設けていませんが、継続的に使用する場合、ライセンスを御購入いただく必要があります。下記の要領で、代金を振り込みの後、メールにて連絡ください(ソース・ライセンスは無料ですが、メールによる連絡は行ってください)。  ライセンスの詳細については、同梱の使用許諾契約書(done_license.txt)を参照してください。

振込先
横浜銀行 保土ヶ谷支店
普通口座 1317207
有限会社エイビープラス
振り込み手数料は、御負担願います。
メールの内容
製品の名称(この場合、「Done!」)
送金時に使用した氏名
送金した金額
送金した日付(以上は、振り込みの確認に必要)
メールアドレス(メールを送ったアカウントと違うもので登録したい場合)
バージョンアップ情報のアナウンスを希望する[Y/N]
新製品情報のアナウンスを希望する[Y/N]
 オンラインでの送金については、こちらを参照してください。

著作権について

 Done!およびそれに添付されているファイルの著作権は、作者(樋田@AB+)が保持します。

 一部、3ComのDevelopmentZoneに公開されているExamplesから流用したソースがあります。

Copyright (C) 1998 ABplus Inc. kazhida.
Portions copyright c 1998 3ComCorporation or its subsidiaries.
All rights reserved.

再配布について

 個人的な再配布については、オリジナルのアーカイブのまま配布するということさえ守っていただければ、特に連絡などは必要ありません。

 公の場(ネットや書籍など)に出す場合は、事前に作者に連絡してください。

ソースの配布について

 Done!のソースは、 という目的に限って、(登録ユーザで有る無しにかかわらず)無償で使用することができます(弊社ライセンス規定でいうところのソース・ライセンスが無料です)。

 そのまま、メイクし直すにはgcc for PalmOSが必要です。

 添付ソースそのもの、およびそれを改造して(または改造せずに)メイクしたものを再配布することは禁止させていただきます。

 Q:ということは、自分でちょっと改造してメイクすればタダで使えるということ?
 A:そうです。でも、それを再配布することはできません。

 添付ソースの一部(dateDB.c)は、3ComのDevelopmentZoneに公開されているExamplesから必要なものを抜粋したものです。

今後のこと

 せっかく、Beginボタンで記録を開始しても、Doneし忘れることがあるんで、なんとかならないか
との要望を受けています。
 実は、作者自身もよくやってしまうので、アラーム機能をつけようかなとか、考えています。


Copyright (C) 1998-1999 ABplus Inc. kazhida.
All rights reserved.