Emacs の howm 上で書いたノートなどをさくっと共有したい時に、わざわざ Wiki 上や IRC 上や Google ドライブ上に転記したり更新したりするのが面倒なので、そのまま見られるようにしたいなと。
この間 howm で書く時のフォーマットを Markdown にしたので、howm-directory をそのまま Plack::App::Directory::Markdown で見られるように設定してみた。
完全じゃないけれど今のところこんな感じ。
(setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.md") (setq howm-view-title-header "#") (setq howm-view-title-regexp (format "^\\(%s|=\\)\\( +\\(.*\\)\\|\\)$" (regexp-quote howm-view-title-header))) (setq howm-view-title-regexp-pos 3) (setq howm-view-title-regexp-grep (format "^(%s|=) +" (regexp-quote howm-view-title-header)))
非公開用 howm-directory と公開用 howm-directory は
の通り下記のように設定。
(defun my-howm-set-directory (dir &optional keyfile) `(lambda () (interactive) ;; kill current keyword buffer first to avoid the error ;; "howm-get-buffer-for-file: Buffer name ` *howm-keys:*' is in use" (kill-buffer (howm-keyword-buffer)) (setq howm-directory ,dir) (when ,keyfile (setq howm-keyword-file ,keyfile)) (setq howm-menu-next-expiry-time (current-time)) (message "%s" ,dir))) (defun my-howm-switch-directory (dir &optional keyfile) (funcall (my-howm-set-directory dir keyfile)) (howm-menu)) (global-set-key "\C-c,1" (my-howm-set-directory "~/var/howm/" "~/.howm1-keys")) (global-set-key "\C-c,2" (my-howm-set-directory "~/srv/howm/" "~/.howm2-keys"))
cpanm でインストール。簡単に起動するなら付属の pad-markdown.pl で。
#!/bin/sh PAD_MARKDOWN=$HOME/local/perl5/perlbrew/perls/perl-5.18.2/bin/pad-markdown.pl ROOT=$HOME/srv/howm PORT=9119 $PAD_MARKDOWN --root=$ROOT --encoding=utf8 --title='howm' --port=$PORT &
これで後は C-c,2 C-c,c で howm ノートを作って保存すれば http://HOST_NAME:9119/2014/03/2014-03-17-231015.md ですぐ見られるようになる。あるいは ~/srv/howm/ 以下に適当に .md ファイルを作ってもよい。適当に楽ちん。
欲を言うと検索できるようにしたりページ間リンクを簡単に張れるようにしたりとかしたいなあと思うのだけれど、そのまま進むと(フォーマットこそ違えど)この nDiki の DiKicker と同じ機能になってくるので、今はそこまでしなくてもいいかな。その時に他人にシェアしたいのはピンポイントで1ページだけがほとんどだし、自分自身は howm 上で検索できるし。
こう考えてみると「Emacs でプレーンテキスト」で「書いて保存すれば(あるいはそしてリモートに同期すれば) 明示的な変換作業しないで勝手に公開」されて、書く場所は「年月別ディレクトリ」とか「デイリーなノートとは別のページが作れる」とか「検索も grep レベルできる」とか、まあ結局自分が欲しいものは昔から変わらないなあ。
ここ最近プライベート日記はスマートフォンアプリを使っていて、今は Day One を使っている。一方公開日記は Web 日記としてこの nDiki をつけている。前者は完全非公開、後者は全体公開。
たまに特定グループ向けに公開したいなと思ったりするのだけれど、身近に使えるのはやはり自分の場合mixi日記かな。ただ日記メディアとして便利なんだけれど、自分はローカルホスト上で grep できるように手元にも記事ファイルを置いておきたい(Emacs + howm で検索したい)。
ということでグループ公開したい日記は Day One で書いて、mixi日記に上げるようにしてみようかなと。これならスマートフォンでも草稿かけるしアプリ上でプライベート日記と同じタイムラインに並べて見られるし、 Dropbox に XML エントリファイルが作られるので Linux 上で grep がかけられるし。
で一度手順を流してみた。iOS デバイス上で完結させるとどれぐらいの手順になるかどうか、 Publish 公開も含めてやったのが以下。
日時を統一したり permalink を取得して書き込み直したりしているので手順がちょっと多いけれど、実際にはグループ公開の場合は Publish しないのでもっと少ない手順になる(写真を載せると逆にもうちょっと手間がかかる)。あと PC 使っている普段の状況なら Emacs + Google Chrome でさっとやってしまうのでもっと楽。やれば自動化もできるとは思うけれどもそこまではいっかな。
あとで整理してまとめたりできるように、ふと思ったことを非公開で1人 Twitter タイムライン的にログっておくのに PC 上でなかなかいいのないんだよねとずっと思っていたんだけれど Emacs の Org mode にある Org Capture 試してみたらいい感じだった。
普段 Org mode 使っていないので Org Capture で必要なところだけ設定してみた。
(require 'org) (setq org-capture-templates '( ("t" "Timeline (local)" plain (file (concat "~/var/timeline/timeline-" (format-time-string "%Y-%m-%d") ".md")) "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n") ("n" "Note (local)" plain (file (concat "~/var/note/" (format-time-string "%Y-%m-%d-%H%M%S") ".md")) "# %?\n[%(format-time-string \"%Y-%m-%d %H:%M:%S\")]\n") ("T" "Timeline" plain (file (concat "/naney@example.com:/home/naney/var/timeline/timeline-" (format-time-string "%Y-%m-%d") ".md")) "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n") ("N" "Note" plain (file (concat "/naney@example.com:/home/naney/var/note/" (format-time-string "%Y-%m-%d-%H%M%S") ".md")) "# %?\n[%(format-time-string \"%Y-%m-%d %H:%M:%S\")]\n"))) (global-set-key (kbd "\C-cc") 'org-capture)
'C-c c t' すると
- [2014-03-25 23:24:25]
が書かれたバッファが開くので適当に何か書いて C-c C-c する。と、~/var/timeline-2014-03-25.md にその内容が追記される。
TRAMP でリモートホスト上のファイルを開く時のファイル名を指定してみたらうまくいったので、さくっとリモートファイルにも追記できてすごく嬉しい。ので 'C-c c T' で書き込めるように設定してみた。これで Dropbox や rsync / Unison などで同期する必要がなくていろいろ良い。
あとは追記型ではなくて都度新しくノートファイルを起こすタイプの設定も追加しておいた('C-c c n' と 'C-c c N' で呼び出し)。howm で 'C-c , c' するのと同じ感覚で作れる。こちらもリモートホスト上にファイル名で悩む必要なくさくっとノートを書いておくことができて良い(そのかわり howm みたいに grep できないけれど)。
リモートホスト上のファイルへの保存の方を良く使うので、'C-c c' の後のキーは小文字の方をリモートに、大文字の方をローカルに変更。
2007年4月6日に Twitter のアカウントを作ったので今日で丸7年。ちなみに mixi は2004年11月19日に登録したので、9年5カ月弱ぐらい。Facebook は 2008年5月24日の登録なので、5年11カ月弱ぐらい。
なんだかんだいってもライフログ的に書き込んでおくには Twitter が一番便利。アーカイブしやすいし。フィードバックをもらえるという点では mixi・Facebook の方が自分の場合上。
現時点では Twitter クライアントは
を使っている。去年言っていたプライベート的なログは今は Day One。結構気に入っているのでこれのために Linux から OS X に変えたいなあと思うぐらい。
ぼっちつぶやきとしては Emacs + Org Capture (記事) はまだ howm の C-c , c ほど手に馴染んでいないのでなんともいえないけれども慣れたら結構いけるんじゃないかな。ただこちらは永続的に残しておくというよりは後で記事にまとめるためのキャプチャ用という感じ。
Emacs 上の howm で複数の howm-directory を切り替えて使っていて、ディレクトリ間の移動が面倒くさいなと思って調べたら
(setq dired-dwim-target t)
するといいらしいので設定した。最初 dwim を dwin と typo してて動かなくてプチはまりした。
2つ Dired を開いている状態で、一方の Dired でコピー/移動をすると、他方の Dired で開いているディレクトリがデフォルトで提示されるようになるという設定。
ちょっと便利になった。
ぼっちつぶやき用に Org Capture を3月に設定したのだけれど、2カ月使ってみて howm からもアクセスできた方が便利だなと感じたので設定を変更した。
(require 'org) (setq org-capture-templates '( ("h" "howm" plain (file (concat "~/var/howm/notebook/" (format-time-string "%Y/%m/%Y-%m-%d-000000") ".md")) "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n" :unnarrowed t))) (global-set-key (kbd "\C-cc") 'org-capture)
書き込み先を howm と同じディレクトリ・ファイル名に。あとデフォルトで、書き込み時に追加部分だけのバッファが開くようになっていたのだけれど :unnarrowed を t にして、その日の前の書き込みを見ながら(あるいはあわせて編集して)書けるようにした。
「PC を使っている時に思い浮かんだこと」の capture には Emacs の Org Capture を使っている。これで随時追記して howm を使って閲覧・整理するようにしている(記事)。PC 上では Emacs からテキストファイルに書き込むのがなんだかんだいって一番ストレスが無い。 ただこれだと Android デバイスや iOS デバイスから気軽に追記できないのが不便だった。
もともとそのテキストファイル自体は Dropbox 上に置いてあるので、モバイルデバイスから読み書きするのに以下の条件で各 OS 用のアプリを選んでみた。
で今まで使っているアプリの中から以下をチョイス。 この組み合わせで思い浮かんだネタなんかをどこでも1箇所にまとめて書き込んでおけるようになったので便利。
高機能エディタ。 Android デバイスでプログラムを書いたり長文編集したりしないのでそれほど活用できていなかった。なので capture 専用にしようかなと。設定で
にしておく。朝に一度今日のファイルを開いておけば、その後はアプリを開いてすぐ今日のファイルに書き込めるようになる。定形文機能で Org Capture の設定と同じように日時も挿入できる。
日時のテンプレート挿入はできない以外は条件を満たしている。iOS デバイス (iPod touch 5th) はサブ機なので許容。
シンプルなので、ちょっとしたノートとしてはストレス無く読み書きできる。
[ Android アプリレビュー ]
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。
※内容は個人的見解であり所属組織とは関係ありません。