〈ショートストーリー〉
改札の向こうへ、田中の背中が消えていく。
二十年ぶりだった。楽しかった。本当に、楽しかった。なのに別れぎわの一言が、ホームに立った今も耳の奥で鳴っている。
「お前、変わらないなあ」
私も同じことを思っていた。だから笑って、手を振った。
電車を待つあいだ、その「変わらない」が、だんだん妙な手触りになってきた。嬉しいはずの言葉なのに、底のほうが少し寒い。
私の中の田中は、たぶんまだ十八歳のままだ。あいつの中の私も、きっとそうなのだろう。二人ともどこかで、相手を更新するのをやめた。会えば昔の話だけがなめらかに転がる。今の話は、お互いうまく受け取れない。
いつからだろう。
いつから、あの友達と話が合わなくなったんだろう。
はっきりした喧嘩はなかった。決定的な裏切りもなかった。ただ、気づいたらこうなっていた。犯人のいないすれ違い。
手首をさすった。心のリポジトリが薄く灯る。生まれた日から今日までの、長いログ。このどこかに境い目があるはずだ。まだ二人の話が合っていた私と、もう合わなくなった私の、あいだに。
それを知りたい、と思った。
知るには、たぶんいちばん最初まで遡るしかない。私が、まだ誰でもなかったあの日まで。誰かにcloneされて、この世界に生まれ落ちた最初のcommitまで。
電車が来る。
私は、自分の履歴のいちばん最初へcheckoutした。
〈この本の読み方〉
この世界では、人は心をgitで管理している。生まれ(clone)、家を出て(fork)、人と出会い(remote)、ぶつかり(conflict)、過去を悔い(revert / rebase)、やがて読み取り専用の記憶(tag)になる。
各章は、二枚で一組だ。
- 〈ショートストーリー〉 が、gitの言葉で人生のひとときを描く。
- 〈技術ノート〉 が、物語が比喩で嘘をついた、ちょうどその場所を、正確なgitの言葉で正す。
感情で覚える。ノートで確かめる。── 物語を信じすぎないために。
目次
- 序 ── いつから(この目次)
- 第1章 ── clone / fork(人はcloneでは生まれない)
- 第2章 ── branch / commit(gitで本当に消えるのは、間違えたcommitではない)
- 第3章 ── tag / merge base(旧友とのmerge-baseは高校で止まっている)
- 第4章 ── fetch(「変わらないな」は、fetchしていないだけ)
- 第5章 ── 複数リモート(「本当の私」は、gitのどこにも無い)
- 第6章 ── cherry-pick(cherry-pickしたcommitには、日付が二つある)
- 第7章 ── merge conflict(「あとで一気にmergeしよう」が、いちばん高くつく)
- 第8章 ── forge / GitHub(issueもPull Requestも、gitの機能ではない)
- 第9章 ── rebase / force-push(force-pushしてはいけない日がある)
- 第10章 ── revert / reset --hard(gitは、なかったことにを許さない)
- 第11章 ── 最後のタグ(gitでは、死は消滅ではなくpushの停止だ)
姉妹作