行動記録

自身の行動記録を取るという計画は何度か考えて適当に挫折とか色々してるわけですが、どう使うかとか、どういう情報が残ると嬉しいか、などは特に考えず、とりあえずなんでもかんでもログを残してみて、それから何ができるかを考えるのが大事なんじゃないかなぁと思ってそういうシステムを自分用に作ることにしました。

  def self.report(type, cont, from)
    # ...
  end

Ruby で上記みたいに、ログの種類(type)、内容(cont)、どのマシンか(from)という3つの情報を渡す関数を作って、それの CUI コマンド版とかサーバクライアントだとかを作りました。

例えば self.report('test', 'hoge', 'machine') とかだと、 db/test/2008/0102 というファイルに、 17:49:32 machine hoge とかいう記録が残ります。要はどうでもいいこでもとにかく残しまくる、 user space の syslog というかまぁそんなイメージで作りました。

で、後は自分の行動ごとにこのコマンドを叩くようにしていきました。対象は社内のマシン以外。

  • ファイルの保存: Emacs の after-save-hook 。 VIM は BufReadPost/BufWritePost 。
  • zsh のコマンド: zsh の preexec 。
  • 見たサイト: proxy の mod_filter 。
  • IRC の全ログ: rail の plugin 。
  • SVN リポジトリの全 diff: SVN の post-commit 。

とりあえずこのくらいはやりました。後は wget/curl/apt-get あたりにもフックかけて proxy を通った byte 数を記録したら1年間の全ダウンロード byte 数がわかるなぁとか、ゴルフへの投稿の記録、 ./configure や make の結果やかかった時間、なんかも保存だけしてみるととりあえず面白いかなぁとか思っています。

まぁ保存さえ始まってしまえば、グラフ出してみるとか、定期的に移動に使うマシンの記録をマージするとか、まぁそういう機能は後からつけられるかなぁと。

来年になれば1年で、何回コマンドを実行したか、何行submitしたか、ぐぐった回数、などなど、どうでもいい情報が色々わかるんじゃないかなぁと楽しみです。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h