読者です 読者をやめる 読者になる 読者になる

日常を記録するためのPerl自作スクリプト:log.pl

perl

前回のやや続きです。
仕事で使った自作Perlプログラム:count.pl - draft

半年ぐらい前にはてダに書いたこれともつながるんですが、
私のメモ術 - 103

ぼくは毎日、なるべく自分の行動記録をメモに残すようにしていて、といっても何でもかんでも、ということではなく、基本的には仕事に関わることです。
というのは、言い換えると「向上させたい行動」の記録を取るということで、だから仕事と言っても必ずしも現時点でお金が発生していることには限りません。

んで、具体的にはどういうことをしているかと言うと、まずPCで作業しているときには、「memo.txt」というそのまんまの名前のファイルにどんどんメモを入れていきます。
この時には書式が決まっていて、「事項+半角スペース+タイム」という風に上から下へ入れていきます。

例を挙げると、

原稿作成ほぼ完了 19:13:48
Aさんに原稿内容の確認を依頼した 19:39:53
Bさんに、Aさんに依頼したこと共有完了 19:51:28

みたいな感じ。
(*いくら例だっつってもこのケースならAさんに依頼するときBさんにもcc/bcc入れとけよ、という気もしたが、実際には仕事だと諸事情絡んでこうなることもママあるのでやっぱりこの方がリアルかも)

以前はただひたすらこういうメモをず〜っと書いていただけで、それはそれで役立ったんだけど、やっぱり完全に1カラム(列)の情報なので、「日付」と「事項(やったこと)」のような質の違う情報も避けがたく等価に視認されやすく、どうにも検索性とか一覧性に弱かったので、複数列のデータとして整理したくて、その方策としてこれをExcelに入れて整理することにしました。

具体的には、一旦テキストエディタ(もちろんMacVim)に記した上記のようなテキストを、以下のような書式に修正して、Excelにコピペします。

タイム 事項

このときのポイントとしては、「タイム」と「事項」が入れ替わっていること。それから、ペーストしたときにちゃんと列が分かれるように、各項目を半角スペースではなくタブスペースで区切ること。

項目の左右が入れ替わっていることには理由があって、テキストとして記入しやすいのは「半角スペースを使うこと/タイムを後にすること」なんだけど、リストとして見やすいのは「タイムの後に項目が来ること」だから。

例として、上記の情報をExcel版の書式に変換してExcelにペーストすると、

19:13:48 原稿作成ほぼ完了
19:39:53 Aさんに原稿内容の確認を依頼した
19:51:28 Bさんに、Aさんに依頼したこと共有完了

みたいになります。

んで、ようは前者の

原稿作成ほぼ完了 19:13:48

19:13:48 原稿作成ほぼ完了

にするためのスクリプトっていうのが表題の「log.pl」です。

またGistに入れました。

たぶん説明が必要なところもある&その説明をすることで間違いも明らかになる可能性が高いのですが、いろいろ疲れているので内容については元気のあるときにあらためて説明&検証します。

で、この「log.pl」と、件の「memo.txt」が同階層にある状態で、ターミナルにて

$ perl log.pl

と打ち込みますと、「memo.txt」に書き込まれた「事項+半角スペース+タイム」の内容が、全部「タイム+タブスペース+事項」の順番に置き換わって出力されて、それをコピーして当該のExcelにコピペすれば複数カラム形式のロギングが完了、となります。

ちなみに、実行はターミナルでやるんですが、上記の方法だとターミナルからコピーしなくてはならず、マウス/トラックパッド操作が必要になってストレスフルなので、普段は

$ perl log.pl > log.txt
$ open log.txt

という風に、出力用のテキストファイル「log.txt」に書き出して、そこからVim操作で全カットしたりするのでキーボードから手を離さずにサクサク作業できます。

さて、上記の「log.pl」はPCでログ用のテキストファイル「memo.txt」に書き込んだ内容が対象ですが、もちろん毎日毎時間、PCのエディタに記録をできるわけではありません。
むしろ、実際にはモバイル環境しかないようなことの方が多く(移動中とかまさに)、ではそのようなときにはどうするのか? という話があるのですが、もう疲れ果てて眠くなってしまったのでそれはまたあらためて書きます・・

書きました。
モバイルから入力した日常を記録するためのPerl自作スクリプト:log2.pl - draft