このブログは更新を終了しました。移転先はこちらです。

2021-08-03

Git日誌:テキストファイルをホワイトボードのように使う

 今更ながら今年になってGitとGitHubを活用し始めました。

 と言っても、プログラムを書く人間ではないので専らメモの管理である。メモとはつまり文字を使って書き留めた情報全般のことを指す。私の場合は今のところMarkdownファイルとtxtファイルがGitHubのリポジトリのほとんどを占めている。


 言うまでもないことではあるが、Gitでバージョン管理をするメリットとしてまず挙げられるのは「念の為」でファイルを増殖させることがなくなることである。テレビゲーム風に言うと、保険用のセーブデータをファイルとして作成する必要がなくなる。途中段階は全部「.git」フォルダ内にGitだけが解釈できる形で収まっており、ファイルとして私が扱えてしまう状態で置いておくことがなくなるのである。管理能力などないポンコツな私の脳を通さなくとも、Gitに頼めば任意の過去の状態をたちどころに復元してくれる。

 コンシューマのRPGをやっていた時分にはいつも「後からやり直したくなった時のために」といってセーブデータを分岐させていったものだが、なんとただの一度もそれを活用したことはない。しかし「どうせやり直しなんかしないんだよな」と割り切れるわけでもない。「やり直す可能性」がゼロになることはなく、毎度「やり直さずに済んだなあ」と思うのである。
 とはいえ「やり直す可能性」は実質ゼロだ。理由としては、分岐して少し進んでしまうともう分岐点の状況がわからなくなり、その時の気分や目的意識がすっかり失われてしまうことがある。文脈を喪失するのである。

 失敗したところでなんということのないテレビゲームでもセーブデータを増殖させなくては不安だったのだから、ましてや大事だという自覚のある情報の扱いに於いては分岐させずにいられるはずもない。

 実際問題、分岐させて残すこと自体が愚かなのではなく、むしろ適切な方法でやらなくてはならないものとも言えるが、凡人には「適切な方法」が一向に培われないのが致命的である。既に要らなくなっているファイルに対して「要らない」と評価する仕組みが自分の中に確立されないので、よくわからないゴミファイルが「もしかしたら要るのかも…?」という儚い可能性によって残されたままになる。ついぞロードしなかったセーブデータのように、当時の文脈を完全に失って、ただセーブした瞬間の「念の為」が亡霊として彷徨っているのだ。

 そういうゴミファイルを生み出さないためにGitは大変に有効なわけである。セーブデータを増やしたい自分の傾向を矯正する必要は一切なく、Gitにセーブしていけばいいだけなのだからそれはもう楽だ。自分を正そうとも賢くしようともしなくていい、なんて生きやすいことか。


 以上のことはGitについての一般的な利便性の話だが、一応ここからが本題である。

 Gitを使い始めてから、メモについて根本的に考え方が変わった点がひとつある。それは「要らないメモはさっさと消す」という感覚だ。先に語ったのはファイルを増殖させた結果のゴミを解決するという話だが、今言いたいのはファイル内で経緯を保存したいがために残されるゴミを解決するという話である。

 自分の中の困った性質として、「一度書いたものを消せない病」というのがある。後から必要になったらどうしようという不安もあるし、なんとなくもったいなくて消したくないという気持ちもある。自分の頭の中を言葉にするということの下手さに長らくコンプレックスを抱いていたこともあり、どんな些細なものであれ、せっかく言葉にできたものを消したくないのである。

 斯くしてメモ用のファイルの中身はゴミで溢れ、読み返すものとしては機能しなくなる。紙のメモでもそうなるし、デジタルなら尚の事だ。

 さて今年に入ってGitを使い始め、Gitが変えてくれることはなんだろうとSourcetreeの画面をぼんやり眺めていた時に、ふと閃きを得た。

 そうだ、ホワイトボードだ!

 もう一体何年前になるかわからないが、印刷機能付きのホワイトボード(コピーボード)を初めて見たときに甚く感動したことを思い出した(今はもう印刷ではなくデータ化するタイプのコピーボードが主流だろう)。板面を読み取って印刷し、要らなくなった記述は黒板消し状のイレーザーでさっさと消す。きちんと役目を終えて綺麗サッパリ片付けられていく様がどこか未来的な感じがして感動したのである。
 黒板も授業ごとに消されるが、印刷して残されることはない。スマホやデジカメで写真を撮って残すというのも同じことではあるが、自分でカメラを構えてカシャッとやるのは少しアナログで、どちらかというと「保険用のセーブデータ」感がある。


 さてGitとホワイトボードが具体的にどう繋がるかということを書いてみよう。

 まず消したり書いたりすることを前提としたプレーンテキストのファイルを作る。タイトルは何でも良いのだが、私はホワイトボードのイメージを忘れたくないということで「Whiteboard.md」にした。

 そして書き留める必要があることをそこに書く。感覚としてはRoam ResearchやObsidianなど様々なツールおよびメソッドで登場する「デイリーノート」や、GTDでのINBOXと同様である。
 書き方は他に使っているツールとの兼ね合いもあるのでこうしたらいいと例示はできないが、自分にとって普通だと思う書き方をすれば良いだろう。その情報がこのファイルにいつまでも残るわけではないことさえ踏まえればよい。

 書いたら適当なタイミングでGitでコミットする(=後から戻ってこれるセーブデータを作る)。私の場合は、毎日書き込んでいる時は毎晩PCを閉じる直前に、そうでない時は書き込みが多かったり大幅に書き換えたりしたタイミングでコミットしている。私の中でこれはコピーボードの板面を印刷するのとほぼ同じイメージである。

 ちなみに、大事なのはGitでコミットする(=後から戻ってこれるセーブデータを作る)ことなので、GitHubにプッシュする(≒ネット上にセーブデータをコピーしておく)のはそんなに頻繁にやる必要はない。(やらない方がいいというのではない。)

 コミットしたらもう安心である。Whiteboard.mdを見直し、移すべき情報は然るべきところに移し、要らない書き込みはイレーザーでサッサッと撫でるように消していく。
 別に必ずまっさらにする必要はなく、気に留めておきたいものはそのまま残す。残すが、残す用に形を整えることは多少する。ホワイトボードの隅に備忘録として最低限のサイズで書き直すように、テキストファイルの中でもなるべくコンパクトにまとめておく。
 整える過程で例えば何月何日に書いた記述かといったことは失われたりするが、いざとなればGitの力を借りればよい話なので気にしない。今のところその用途でGitの力を借りたことはない。逆に言うと、情報に付随するそういう全てのメタデータを取っておきたいがために私はメモを自由には扱えなかったのである。

 重要なのは具体的にどんなものをどう書くかではなく、メモとして新陳代謝し続けるホワイトボードのイメージを持つことだ。単に「要らないものは消す」ではなく、ホワイトボードという物的な見本を見出したことによって、私はメモを整理整頓するコツを掴んだように思う。


 元々要らない記述をさっさと消せる人にとっては一体何を力説しているのだろうという話かと思うが、さっさと消せない人間にはこれは手枷足枷を粉砕してくれる画期的な転換と言っても過言ではない。

 一度書いたものは、そのファイルの歴史として.gitの中のどこかに保存されている。今編集している画面の中にはもう残っていなくとも、このファイルの歴史には確かに存在していて、辿ろうと思えば辿ることができる。そのことが、「今」を自分の書き込みの履歴から解放し、「今」と「これから」をクリアにしてくれるのである。