はじめに

久しぶりに日記を書いてみたいなと思った。
理由は特にないのだけども、 歳のせいか毎日が過ぎていくがとても早く感じるようになって、なんか記録したくなったからかもしれない。

書いてみたい日記というのは、ブログのような公開することが前提のものではなく、個人的な自分だけが読み書きする日記だ。
自分だけ読み書き出来れば良いということであれば、ノートに手書きで書くという選択肢もあると思うし、何人かに聞いたらそちらの方が多数派だったのだけど、今の自分の場合、キーボードで入力するほうが一番敷居が低い気がした。

日記の書き方

キーボードで入力するとして、さて、どんな感じで書いていこうかなと色々考えたんだけど、とりあえずテキストファイルでMarkdown形式で書いとけば、後々ゴニョゴニョしやすいかなということで、そうすることにした。
Dropboxに同期しているディレクトリ配下にDiaryというディレクトリ作成し、そこのテキストファイルを作成していくことにした。
これで最低限のバックアップもされる、見たい時に見ることも出来る。

memoコマンド

試しに2日ほど書いてみたところで、今日の日付が入ったYYYY-MM-DD.mdという名前のファイルを特定の場所に作成するということが、とても面倒に感じるようになった。
cd コマンドを打つのがとにかく面倒。
同じようなことをしたい人はいないのかと思って探したら、mattn/memoというツールの存在を知った。
これはなかなか良くできているのだが、自分が求める日記の用途にはちょっと多機能過ぎるなと思った。
日記にタイトルは要らないし、1日1ファイル固定で良かったりなど。

memoというツールのソースコードを読んでみたら、そんなに長くなかったし、自分がやりたいことはもっとシンプルなので、自作してみようかなという気になった。
テキストファイルを特定のディレクトリに決まったファイル名で作るだけなので、最悪シェルのエイリアスで事足りるとも思ったのだが、のちのち拡張したくなるかなと思って、コマンドを作成することにした。

diaryコマンド

ということで、とてもシンプルなdiaryというコマンドを作った。

とりあえず今やりたいと思ったのは、以下の通り。

  • 今日の日付のファイルを開く、なければ作成
  • 日記ファイルの一覧表示
  • 日記ファイルの検索

そんなに多くない。

それぞれの機能はサブコマンドで実行できるようになっている。
一覧表示や検索については、どんな風に実装したら使いやすいかもよく分かっていないので、任意の外部コマンドを実行できるようにした。
ちなみに一覧表示はrangerを、検索はthe_platinum_searcherfzfvimを組み合わせて表示するようにしている。
結果的にシェルのエイリアスを設定するのと同じような感じになってしまったのだが、普段から使っているツールをそのまま使えるのは個人的にとても気に入っている。

lessコマンドの編集機能

今回のコマンドを作成するにあたって、lessでファイルを開いた状態で、vをコマンドを打つと 環境変数$EDITOR$VISUALで指定されたコマンドで開き直せることを知った。
morelvコマンドでも同じように操作出来るのも良い。
これなら、なんでも一旦lessで開けば良いやと思えるようになった。

おわりに

とりあえず、最初にイメージした「簡単にテキストファイルを作成したり開いたりするツール」は、作成することは出来た。
ついでにlessコマンドの便利な使い方も知ることが出来て、ますます良い。
本来の目的は、日記を出来るだけストレス無く書き続けることなので、気になったところはぼちぼちメンテナンスしていけたらなと思う。

こうやって毎日使いようなコマンドを自分で実装するというのは、個人的に好きな行為だ。
そして、自然とスキルアップに繋がっている気もする。
今後もどんどん増やしていきたい。
このご時世に日記をvimで書くというのも、なかなか趣深いと思うのだけど、それはそれでということで。