【オレオレ晒し】TIL(Today I Learned) 環境を整える

Githubのリポジトリ「TIL」を使って小さなアウトプットを習慣化する - Qiita に触発されたので、オレオレの TIL を晒してみる。

TIL とは

最初に簡単に取り上げておく。

TIL とは Today I Learned の略。

GitHub 文化の一つで、til という三文字名称のリポジトリを作って、日々学んだことを Markdown などで蓄積していくというもの。

メリット

  • 後々読み返せるので個人的に役に立つ
  • アウトプットの習慣や練習に適している
    • 自分のスペースに好き勝手に書きなぐるだけだし
    • Qiita みたいに晒されるものでもないし
  • 書きやすい
    • ローカルの使い慣れたエディタで書いて、最後に push
    • github.com の UI は使いやすいので、ブラウザでそっちで書いても良いが
  • 承認欲求を満たせる
    • GitHub の草が映える
    • 「オレ、こんなこと勉強してんだぜ?」
    • 「こんなに蓄積してるオレ、すごくない?」 etc
  • コミュニティや他ユーザーに貢献できる
  • 自分の興味や志向などを端的に表現できる

オレオレ TIL を晒す

ここからは私の TIL を晒す。コンセプトからしてかなりオレオレ。

コンセプト

  • 1: プライベート …… 自分だけが読めればそれでいい
  • 2: ローカル駆動 …… 編集、閲覧、検索などは全部ローカルでやる
  • 3: 物置 …… GitHub は物置として使うだけ

1 のプライベートは、公開だと 第三者が読んでも問題ないよう表現を考えるコスト が発生して面倒くさいから。

2 のローカル駆動は、 最も効率的に編集や閲覧ができるのは「使い慣れたテキストエディタ」 だから。

そうなると「GitHub に置く必要ある?」となるが、私は Dropbox が嫌い(常時同期が走るのが気持ち悪いうざい、gitignore がないなど)なので、普段使っている GitHub に置くことにした。ただ、そうなると git コマンドの利用が面倒くさいので、スクリで適当に端折る。

全体像

前提:

  • Windows

構造:

  • knowledge リポジトリ
    • プライベートリポジトリにする
    • リポジトリ名は何でもいい。TIL したいんだから til が無難か
    • しかし私は将来公開用の til を作るかもしれないので、あえて til は使わなかった
  • ローカルで xxxx.md や xxxx.txt に、xxxx に関するネタを書き殴り、適宜アップロード(add-commit-push)

編集時:

  • xxxx について書きたい時は、xxxx.txt や xxxx.md をつくる or 既存ならそこに書き足す
  • つくる際はスクリプトで一発で(xxxxを入力するだけで作成するとか)できるようにすると楽

検索時:

  • fenrir を使って xxxx.txt や xxxx.md にアクセス
    • いわゆるファイル名のインクリメンタルサーチ
    • Mac で言えば Spotlight や Alfred みたいな感じだろうか
  • Grep を叩くスクリプトを実行する
    • スクリ叩く → キーワード打つ → knowledge配下がgrepかけられる
    • このスクリも fenrir から呼び出す(例: _grep.bat )

同期時:

  • 適当なタイミングで _upload.bat を叩いてアップロード
    • これは add, commit -m "テキトーなメッセージ", push を行うスクリ
  • 他 PC からは git pull でダウンロード

環境のつくりかた

  • 1: til リポジトリをつくり、適当なところに clone
  • 2: fenrir をインストールして、clone した 1 をスキャンさせる
  • 3: AutoHotkeyをインストールして、2 の fenrir をキー一発で呼べるようにする
  • 4: 便利スクリプトを clone した 1 に追加する
    • xxxx.txt や xxx.md を新しくつくるやつ
    • Grep するやつ
    • アップロード(add-commit-push)するやつ
    • ダウンロード(pull)するやつ

fenrir や AutoHotkey などの詳細は割愛。

オレオレ TIL 付録

使うツールやスクリやらの中身を晒す。

fenrir の scan.ini

*.txt;*.bat;*.py;*.md;*.rst;\
D:\work\github\stakiran\knowledge
-D:\work\github\stakiran\knowledge\.git

まずファイルタイプは txt や md など主要なものは網羅する。スクリプトも呼び出すのでバッチファイル bat や Python py なども追加している。

次に走査先だが、.git フォルダは省くこと。

fenrir.exe の設定ファイルなど

長くなるので割愛。

AutoHotkey から fenrir を呼び出す

; fenrir を Alt + 1 で呼ぶ
!1::
  run, D:\bin\fenrirs\fenrir\fenrir.exe /t /pathfile=D:\bin\fenrirs\knowledge\path /scanfile=D:\bin\fenrirs\knowledge\scan.ini /initfile=D:\bin\fenrirs\fenrir\data\fenrir.ini /instantfile=D:\bin\fenrirs\fenrir\data\instant.ini /cmddir=D:\bin\fenrirs\fenrir\cmd, D:\bin\fenrirs\fenrir
return

; fenrir の作業フォルダを Ctrl + Alt + F で呼ぶ
^!f::
  run, D:\bin\fenrirs
return

まず fenrir のディレクトリ構造を整理しておく。

  • D:\bin\fenrirs
    • fenrir …… fenrir本体フォルダ
    • knowledge …… knowdlgeリポジトリ用の設定を入れるフォルダ
    • ...

コマンドラインは煩雑だが、fenrir 本体に必要なパラメータを指定しているだけである。

あとは、おまけとして fenrir 絡みの作業フォルダを一発で開くホットキーも用意している。fenrir 自体をいじりたい時に地味に便利。

アップロードするやつ

_upload.bat

git add -A
git commit -m "update."
git push -u origin master
pause

最後の pause は、このバッチファイルを実行した時の画面を閉じずに止めるための決まり文句。

ダウンロードするやつ

_download.bat

git pull
pause

たまにアップロード忘れで衝突が発生するが、その時は手作業でテキトーに解決する。

xxxx.txt や xxx.md を新しくつくるやつ

_new_knowledge.bat

@echo off

prompt $$
pushd %0\..

set /p filename="Input the textfilename and the extension if needed. >"
copy /-Y nul %filename%
start "" "%filename%"

ファイル名 xxxx.ext を入力すると、knowledge/xxxx.ext を空ファイルで生成した後、関連付けられたエディタで開くという感じ。

※英語はたぶんおかしいけど見逃してください(普段 utf-8 で書いてるので日本語で指示させるとコマンドプロンプトが文字化けしてしまう&文字コード cp932 に直すのだるかったのであえて英語にした、のがそのまま放置されている 苦笑)

Grep するやつ

実はスクリプトとしては用意してない。

私が使っている秀丸エディタでは、knowledge/xxxx.xxx を開いている状態で F4 を押すだけで Grep 機能を呼び出せる(検索先は knowledge ディレクトリ配下がデフォ)ようになっている。ので、Grep したい時は

  • Alt + 1 で fenrir 呼び出して何か開く
  • F4 で Grep 機能呼び出す

という流れ。