黒歴史は隠したいかどうかにまつわる深遠らしき考察みたいなものを広く浅く

何が言いたいんだ何が。

これとかね、まぁ「ちゃんとしたものに仕立て上げるかどうかがグレーで、皆に見せたくて、なおかつリビジョン管理もしたくて」というものを GIST で「お披露目」しているわけだ。この条件のいずれかに合致しないなら、ほかの手段で管理する。

たとえば「ちゃんとしたものに仕立て上げる気満々だが最初は内緒でこっそり」のためには BitBucket のプライベートレポジトリを使う。ここでの「履歴」ははっきりいって「各コミット単位で自分が「何をしでかしたのか」が識別出来ればいいので、コミットログも相当いい加減に書いている。一番ひどいときはコミットログは「…」だらけである。何か大きな「事件」、つまり影響が大きな変更をしたタイミングだけが目立つように、そこだけ目立つコミットログを書く、という感じだね。

同じく「皆が使えるものとしてのちゃんとしたものに仕立て上げる気がまったくないが、個人用途ではそれなりにちゃんとしてて欲しいもの」も BB のプライベートレポジトリだね。実際これは、もっと大きな「プロジェクト」の一部として「皆が使える部分だけ」を GIST に上げてるだけであって、実際は BB の Git で管理していたりする。(これは「おれ専用 MeCab ユーザ辞書の、作成環境 + 実際のユーザ辞書」てやつ。「おれ専用」なので、18禁な辞書も入っている。)

それらの履歴は「おれさえわかればいい」ものだが、「公開してるもの」についての履歴は、はっきりいって「よそゆき」を意識している。どういうことかというと、本当は「おれがやらかしたこと」の記録のためには、非常に細かい単位をコミット単位にし、差異が都度小さくはっきり識別出来るのが良いのだが、「読み手」にとってはこれが迷惑な場合が多い。具体例で言えば例えば「本題の修正前にコメントのミスペルを発見してしまった」場合に、この修正も本題に含めるかどうか、などである。こうしたコミット単位の考え方はほんとに人それぞれで、私はとにかく差異のわかりやすさを重視したくて、なので人のコミットの単位がやたらにデカいとイヤな気分になるけれど、逆にいえばそうした人たちにとっては私のようなのは迷惑に感じるわけである。

この考え方の違いはかなり「性格」に依存するみたいだ。昔職場で、皆で使いましょうと配布されたツールの誤りを指摘したら、パスワードがかかって返ってきた。要するにその作り手は「勝手にソース見るんじゃねーよっ」と激怒したわけである。こういう「見られるのが恥ずかしい」人たちは、細かな履歴が記録されていくのをきっと好まないんだと思う。どんなに試行錯誤で苦労しようが、そうした苦労を「恥ずかしいこと」として隠蔽したい、ということなのだと思う。けれども私は「どんどんワタシのバカさを鑑賞してくれっ」という考え。実際実用的にもそうした「間違いの記録」が役にも立つことを知っているから、というのもあるけれど、シンプルに図太いんだと思う。

そんな考えなわけなんだけれど、「いずれはちゃんとする気満々」のものを「最初は BB のプライベートレポジトリで」とするのも結局隠蔽ではないのか。まぁそうなんだけれど、実際「まともに動きもしない状態でも管理したい」というものを「公開された身にもなれ」ということだわな。実際それを受け取る側の立場に立てば、「バージョンゼロ未満のものを見せられても…」と思うであろう。だから「正式公開初版」前の履歴は、ほとんどの場合は「迷惑行為」なのだと思うわけである。


さて。GIST はほんとにシンプルな管理しか出来ないのでともかくとして、かつてはこういう「自分向けには細かく、公けには大きく」という履歴にしたい場合に、出回っていた (C)VCS でどんな手があったかといえば、これは無論「ブランチ」である。自分向けの履歴が欲しいがために作業用ブランチを作り、本題の変更が済んだらトランクにマージする。ブランチでの行為すべてがトランクに残るんでは意味がないけど、知ってる VCS は全部期待通りのものだった。

そうやって私は「間違おうが何しようが出来るだけやらかしたこと全部を記録したい」としてブランチで細かくコミットするスタイルだった。かつては。

ただ最近 Git 中心の生活になってきてからちょっと変わってきたんだよね。それは…「amend」の存在によってである。これはまさに「ほんとは細かく少しずつ作業したんだけどその一つ一つをなかったことにして、「おれって一気にこんなに大規模に変更できたんだぜっー、すげかろっ」と履歴を隠蔽するのに使う」。…まぁ「そのためのもの」かどうかはともかく、まさしく「コミット単位が細か過ぎると読む人が大変」への配慮に使えるわけなのよ。

TortoiseGit 経由だとコミット時に amend のチェックボックスが付いてて、これを付け外しすることによって差異が「一つ前のコミットとまとめた差異/今回のコミット対象の差異」が切り替わるので、「おれさまが何をしでかしたのか」の確認目的だけならこれで半分は十分なんだよね。

半分、というのは…。だいたい「何かをやらかしてしまっている」ことを見逃している場合、「このコミット単位が識別出来るべきかどうか」の判断を間違うんだよね、たいていは。だって「些細な修正だよどーせ、だからまとまった単位の方がいいでしょ」と思ってそうするんだけど、そういう「些細な修正」に致命傷が混入することが多いのだよね。つまり「やらかした、まさに大事件」のピンポイントな記録のチャンスを amend は屠るということなのだわ。こうなると「一回一回のとても大きな大量の更新の差異からしでかした事件を掘り起こす」のはかなり難儀することになるわけだ。


黒歴史の記録、ということに関しては、最近個人的な話でちょっと Wayback Machine に関して考えるところがあった。

考えるところがあった、といっても実際は昔からこれに対する考え方は変わってないんだけどね。まさしく「頼むから私の黒歴史を掘り起こさないで」が起こっているわけなのよね。なんというかほんとこれ、なんか考えないといかんと思うんだよね。

確かに「デジタル資産の収集・保存」という考え方そのものには同意はするよ。けれども「そうしたい」かどうかは人によるしものによるわけなのだ。なんで本人の意思とは無関係にアーカイブされてしまうのであろうか、と。

ワタシのサイトは別にえーよ。黒歴史はそのまま記録されていい。そういうのを隠蔽するのは卑怯だとも思うし、簡単に隠せないからこそ面倒を起こさないように気を使う心意気になるのだし。


うん、結局何が言いたかったのであろうか。うん、書きたいことを書いただけである。をしまい。