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

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

前回からの続きです。
日常を記録するためのPerl自作スクリプト:log.pl - draft

#ここ2〜3日、毎日こういうの書いてます。ひとりAdvent Calendr・・みたいになってますが。

前回は、PCからメモした行動記録を、「記録しやすい書式」から「Excelで見やすいコピペ用の書式」に変換するためのスクリプトについて書きました。

で、そのときに残った問題として、「PCで書いたメモの整理法については分かったけど、モバイルからの入力はどうすんの?」というのがあって、以下ではそれについて。

モバイルからの記録の入力については結構コレっていう解決策は見つかりづらくて、いろいろ試したんだけど、経緯は省いて結論だけ言うと「HipChat」っていうチャットサービスを使っています。
https://www.atlassian.com/ja/software/hipchat/overview

これだと無料で、iPhoneアプリもあればMac用のスタンドアロンアプリも使えたりして、かつ自分だけ宛のチャットというのも送れるので、そこにどんどんログを放り込んでいく。

で、ここに記録した内容をそのまま入れっぱなしにしていたらログが2本に分かれてしまうので、HipChatに入れた内容もExcelにコピペして一本化したい、という欲望が当然生じることになります。
と同時に、HipChatに入れたのをそのままコピペするとどうなるかというと、

[12月-1 15:28] ユーザー名: 図書館に5冊返却した
[12月-1 16:55] ユーザー名: Amazonで資料購入した
[12月-1 23:41] ユーザー名: ブログ書いた

[[月曜日 12月 2, 2013]]

[00:16] ユーザー名: 送付先リスト一部作った
[10:11] ユーザー名: 資料到着
[13:00] ユーザー名: Perlの練習問題1問完了
[16:42] ユーザー名: デザイナーからもうデザイン来た
		スタッフとSkype
		たけのこの里の続き食べた
[20:51] ユーザー名: デザイナーに電話した。

これは昨日と一昨日の私の行動記録をもとに作ったサンプルで、公開用に内容をアレンジしてるうちにかなり謎になってしまいましたが、まあ書式自体もけっこう混沌としています。

「12月-1」ってなんだよ! と思うでしょ。ぼくは思います。

しかもその下、[[]]でくくられているところは「12月 2」とかなってて、同じサービス内ですら表記が統一されてない(笑)。

まあ、でもいいんです。スクリプトの中で対応してあげれば・・
ということで、このような感じになりました。

ええ、まあさらなる解説必須&間違いや非効率部分多し、とは思うんですが今日も疲れているので・・内容の解説は一旦スルーしますが、一個だけ言うと、今回の場合は6行目、前回「memo.txt」になっていたところが「buffer.txt」になっています。

これはどういうことかと言うと、ようは上のようにHipChatからコピーした内容を一時的にペーストしておく先が必要で、それがつねにその「buffer.txt」だっていうことです。
んで、これについては前回もリンクを貼ったこの記事ともつながるんですが、
私のメモ術 - 103

その下の方にある「draft.txt」と同じものです。というか、その記事を書いた今年の3月から現在12月に至るまでの間にファイル名が変わったというだけで、ショートカットも同じなんですが。
いずれにしても、一時的に下書き用みたいに使って、用が済んだらその都度白紙にする、という役割をもったテキストファイルです。

んで、ここにHipChatから対象となる部分のテキストをバーっとコピーして、保存したら上記の「log2.pl」を以下のように実行します。

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

まあ、「log.pl」と同じですね。
出力される内容も同じです。(というかそうじゃないと困る)

12/1 15:28 図書館に5冊返却した
12/1 16:55 Amazonで資料購入した
12/1 23:41 ブログ書いた
2013/12/2
today 00:16 送付先リスト一部作った
today 10:11 資料到着
today 13:00 Perlの練習問題1問完了
today 16:42 デザイナーからもうデザイン来た
スタッフとSkype
たけのこの里の続き食べた
today 20:51 デザイナーに電話した。

はい。とはいえ、ちょっと違う部分もあって、「log.pl」の方の出力結果はこんなだったので、

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

そのときに比べると、左に2マス増えてます。
これはまあ、「log.pl」の方はそれが何日のできごとか、毎日Excelに入れているからとくに必要ないんですが、モバイル経由の情報は何日分も溜まることがママあるので、それがいつの出来事か、日にち情報込みでわかりやすいようにそうしており、また日にちの右隣の、いま空白になっているところには曜日を書き込めるようにしており、実際Excelにもそういう列を作ってあります。

んで、日付の最後の方が数字ではなく「today」になっているのは、元のHipChatの方の情報に、当日の内容は日付が入ってないからそれへの対策です。

んで、じつはHipChatにする前にはidobataというチャットサービスを使っていて、そのときにはこういう「log2.pl」でした。

#!/usr/bin/env perl

use strict;
use warnings;

open (FILE, 'buffer.txt');

while (my $line = <FILE>) {
    if ($line =~ /^(..+)\s(..?:..)$/) {
        print "$1\t\t$2";
    } elsif ($line =~ /(..?:..)$/) {
        print "today\t\t$1";
    } elsif ($line =~ /note103/) {
        print "";
    } elsif ($line =~ /^.+$/) {
        print "\t$line";
    } else {
        print "";
    }
}

close (FILE);

#これは今は使ってないのでGistには上げなかった。

もしidobataで同じようなことをする人がいたら(いないと思うけど)ぜひどうぞ。

それはそれとして、結局、idobataにしてもHipChatにしても、ぼくの「こういうツールがあったらいいのになあ」というニーズに合致した機能をもった本当に数少ないサービスで、逆にどうして他はこんなにもぼくの希望を満たしてくれないんだろ・・と結構思いましたね・・
要件としては、モバイルからもPCからも書き込めて、チャットっぽくて、コピペしたときに細かく日付+タイムが記される、っていう、それだけっちゃそれだけのことなんですが。

たとえばLingrとか、すごい好きなんですが、あれとかなんで、「何時何分」とかの時刻表示じゃなくて「何時間前」とかになっちゃうんでしょうね・・ちなみにLingriPhoneアプリだけ時刻表示で、ブラウザで見ると「〜前」っていう謎仕様なんですが・・まあいいんですが・・

いろいろ脱線しましたが、スクリプトの紹介は一旦ここまでで、今度は上記を踏まえて、「私のメモ術2」をまとめたいなーと思っています。
前回書けなかった「モバイル編」と「アーカイブ編」っていうことで、たぶん上記とかぶる部分がけっこうあるとは思いますが。