タイトル通り、私の体験をもとに ChangeLog メモの活用法を紹介します。 特に画期的なものはありませんが、 みなさんの ChangeLog メモ活用のヒントになれば幸いです。
ChangeLog とは、 ソフトウェア開発の際にソースコードの変更履歴を記録するための テキストファイルです。 この ChangeLog を利用して日々のメモを取ろう、 というのが「ChagenLog メモ」です。 詳しくは、「Unix のメモ技術」を参照。
chalow は ChangeLog ファイルを HTML ファイルに変換するツールです。 私はこのツールを使って、2000 年 5 月ごろから ChangeLog メモによる Web 日記 (たつをの ChangeLog) を 公開しています。
ChangeLog のフォーマットの各部の名称は、 chalow ホームページに ある 図 に従っています。
chalow の「秘密の記述」機能を使うと、 プライベートなメモと公開したいメモを混在させることができます。 意外と知られていないようなので、ここで解説。
アイテムヘッダーは、普段は「*」で始まりますが、 これを「* p:」で始めると、 chalow で HTML に変換するときにアイテムごと無視されます。 例えば、以下のようなエントリを HTML で変換すると、
2003-07-17 YAMASHITA Tatsuo* できごと: やっほー! 今日も良い一日でした。 * p:秘密メモ: 本当は、超うんざりで最悪の一日。そもそもやつが... * p:password: アレのパスワードは hogege * 食事: 夕食は牛丼。最近多いなあ。
以下のように秘密部分が削られます。
しかし、「p:」の「p」か「:」が全角だったりすると、 item として認識されなくなり、秘密が世界中に公開されてしまう危険があります。 十分注意が必要です。 公開前に必ず自分の目で確認することをおすすめします。
ちなみに chalow は無保証なので、秘密がもれても自己責任でよろしく。
現在私は、 会社のマシンで仕事用、家のマシンでプライベート用、 と 2 つの ChangeLog メモを使っています。 本来は一つにまとめるのが良いのでしょうが、 以下のような事情があるのでやむをえないのです。
会社のは純粋に仕事がらみの日誌、 家のは Web 日記や非公開のプライベートなメモ、という具合に使い分けています。 3 年ほどこのやり方でやっているが特に不便はないです。 まあ、人それぞれですけどね。
朝、仕事を始める前に、その日の TODO を ChangeLog の 今日のエントリに簡単に書きます。 そして TODO 項目をこなしたら、新規アイテムとして追加して行きます。
例えば、朝の状態が以下だとします。
2003-07-17 (Thu) YAMASHITA Tatsuo* 今日の todo: - bar 機能の実装 - foo の書類を作成 - ...
帰りの状態はこんな感じになります。
2003-07-17 (Thu) YAMASHITA Tatsuo* uhyo-system: bar 機能を実装。ad hoc なので注意。アレなときは 動作しない可能性があるので要テスト。 uhyo-system の ChangeLog を参照。 * memo: http://example.com/~tech/ に bar についての解説あり。 * idea: ホゲをウゲしたらどうだろうか * foo: 解説資料を作成した。システムが不安定で時間をとられた。 かなり疲れた。 ~/doc/foo-doc.ppt * 今日の todo: (← 空になったので、翌日に移動)
また、中長期の TODO を「浮きアイテム」として書いておいたりもしています。 以下は実例ではないけど、こんな感じ、ということで。
* p:task: 長期的 TODO - 奨学金一括返済 - 1000 万円貯める - ...
特定の日付 (エントリ) のところに固定されていない item を 「浮きアイテム」と呼ぶことにします。 この浮きアイテムは、内容を変更したら、最新のエントリへ移動。 もちろん、簡単に検索できるので、いちいち移動しなくても良いのですが、 移動しておくと前回の変更日付が分かるのでちょっとだけ便利かも。
この「浮きアイテム」はテーマ毎のメモの管理に使っています。 テーマごとのメモの例として、「有給休暇の計画」と 「管理している PC のスペック」。
* p:task: 2003 休暇の計画と実績 12/1 (月) - 年次休暇 11/14 (金) - 年次休暇 10/1 (水) - 午後半休 9/22 (月) - 年次休暇 9/1 (月) - 年次休暇 8/1 (金) - 選択休暇 (4) 7/18 (金) - 選択休暇 (3) 【済】6/30 (月) - 選択休暇 (2) 【済】5/1-2 (木金) - 年次休暇 【済】4/30 (水) - 選択休暇 (1) 【済】4/28 (月) - 年次休暇 * p:task: PC spec: - obaq: Celeron 450, Mem 256, HDD 10, OS W2K - doronpa: Athlon 700, Mem 512, HDD 72x2, OS Vine2.1 - bakeratta: TM5600 600MHz, Mem 128, HDD 15, OS Me, SVGA ...
また、仕事を連続した細かい TODO に分解し、 それらを管理するときにもこの「浮きアイテム」は便利。 つまり、簡易版プロジェクト管理です。 手帳や管理ツールだと、 プロジェクトごとにリフィル 1 枚、1 ファイルだったりするものを、 1 アイテムとして管理するだけです。
実例を探したんですが、仕事がらみでかつ分量の多いものしかなかったので、 いいかげんな例で失礼。 ●が完了、◎が作業中、○が未着手です。
* p:task: ほげほげを実行する ●ほげの素を購入 (7/13) ◎練習・手順確認 ○参加者の前で最終点検 ○8/31 実行
ChangeLog の「秘密の記述」で 毎日の「買物ログ」をつけています。 つまり、家計簿みたいなものです。 こんな感じです。
* p:買物ログ: 外 マクド 315 食 西友で野菜や酒など 2045 本 「ChangeLog の秘密」 1800
買物ログのフォーマットは、
アイテムヘッダが「* .+?買物ログ:」、
各購入品が「^\t[費目][スペース][コメント][金額]$」
(スペースは半角でも全角でも良い。金額は半角数字)
です。
費目は人それぞれでしょうが、私は結構おおざっぱにやっています
(こだわりとして、食費を外食費と食材費にわけています)。
これを簡単な Perl スクリプトで CSV として取り出します。
(追記:chalow のパッケージに cl2moneycsv.pl として含まれています)
$ cl2moneycsv.pl ChangeLog | nkf -s , 外, 食, 交, 遊, 本, 音, 雑, 衣, 他 2003.01.01, 820, 601, 0, 0,4670, 0, 0, 0, 0 2003.01.02, 777,2163, 0, 0, 0, 0,1029, 0, 0 2003.01.03, 574, 0, 0, 0, 0, 0, 0, 0, 0 2003.01.04,1640, 0, 0, 0, 0,4620, 189, 0, 0 ...
そしてエクセルでグラフにしたりして、「ふむふむ」と分析したり、 反省したりします。 ともかく、CSV にさえすれば、あとはどうにでもできます。 例として、私のここ数ヶ月の買物状況グラフをあげておきます。 金額 (Y 軸) は秘密。
「だったら最初からエクセルで家計簿つけたらいいじゃん」 という意見もあるもしれません。 ごもっともですが、私には向かないようです。 やはり日々の記録 (日記) とともに記述することで長続きするものかと。 それにテキストだとなにかと扱いやすいですし。検索とか。
前ばかり見て、過去から学ばない「未来だけ指向」な人間は痛々しいものです。 自分の過去をしっかりフォローしながら前進することが大切。
ということで、日付リンクのご紹介です。 過去の記述 (エントリ or アイテム) への参照を [YYYY-MM-YY] or [YYYY-MM-YY-I] というフォーマットで記述します。 これを日付リンクと呼ぶことにします。 例をあげておきます。
* ほげうげ: 先日[2000-01-01]、検討していた「ほげうげ」をついに導入。 いまいちだった。Web 上の評判を鵜呑みにしてはいけないな... ... 2000-01-01 YAMASHITA Tatsuo* ほげうげ: 「ほげうげ」というアレがよいらしい。google で調査。 ユーザの評判も良い。入れてみるか?
ChangeLog を chalow で HTML 化すると、 この日付リンクをハイパーリンクにしてくれるので、 簡単に過去のエントリ、アイテムにジャンプできます。 手軽に過去を振り返れるということは重要かもしれませんよ。