法律はGitというよりPijul

下の記事では法令の変遷をバージョン管理システム上で機械可読な形式で管理することを提案しています.
提案については賛成するのですが,技術的な点についてコメントをします.
note.com

リンク先の記事では法改正を行う法律は元の法律に対する差分として記述されている,ということを紹介しています.
その上で改正を行う法律のことをGitのコミットと同一視していますが,これは正確ではありません.
なぜならば,Gitのコミットはファイルの差分ではなくスナップショットとしてファイル全体を保存しているからです.
git cat-fileコマンドを使うとスナップショットを確認することができます(詳しくはGit公式の解説が良いです).
つまり,Gitのコミットは法律の改正が「溶け込んだ」後の現行法の条文を保存していると言えます.
git show等で差分が表示されるのはその時その時にスナップショット間の差分を計算しなおしているからです*1

一方,差分(パッチと呼びます)をコミットとして保存するバージョン管理システムはパッチベースであるといわれます.
パッチベースのバージョン管理システムとしてはDarcsやPijulが有名です.
これらのシステムにおいてリポジトリの状態(「ブランチ」)はパッチの集合として表現されます.
例えば,Gitで過去に適用したパッチを打ち消す場合はリバートコミットを現在のブランチの上に適用する必要があります.
反対にDarcsやPijulの場合,現在のブランチを表すパッチ集合からリバートしたいパッチを削除するだけで変更を指し戻せます.シンプルだとは思いませんか?

マージコンフリクトの取り扱いも考えてみると面白いでしょう.
Gitにおいてマージは複数のコミットを親とするマージコミットを作成することで行われます.
親コミットの変更がコンフリクトした場合は手でコンフリクトを解消するまでマージは完了せず,その他の処理を行うことはできません.
パッチベースなシステムの場合,マージは常に実行できます.なぜならば,ブランチのマージは単にパッチ集合の和をとるに過ぎないからです.
これはコンフリクトが発生しないということを意味するわけではありません.むしろ,コンフリクトが正常系として組み込まれているといえます.
コンフリクト検知が可能なエディタを用いれば,コンフリクト下においても編集を続けつつ適当なタイミングでコンフリクトを解消するということも難しくないでしょう.

現時点ではGitがバージョン管理システムの中でも独占的な地位を築いています.
ですが,天下もいつまでも続くとは限りません.そのとき台頭してくるのはパッチベースなバージョン管理システムかもしれませんね.

*1:実際,git showは差分アルゴリズムを変更することもできます

ASMR筋

最近,YouTubeASMR(Autonomous Sensory Meridian Response)動画を見る(聴く?)ようになった*1

ASMRは「ぞわぞわする反応」のことで,各動画はその反応を催すように作られているはずなのだが,どうやらそれにも適性があるらしい.
ぼくはこれを「ASMR筋」と呼んでいる.

例えばシャンプーで頭*2をマッサージするという動画がある.しかし,自分にとってはガサガサ音がしているだけで全く頭を弄られているという気はしないし,耳のオイルマッサージについては聞こえる音が手で耳をふさいだ時の音だと気づくのに1か月以上かかっている.
シチュエーションボイスはその極北で,自分が記憶喪失だと聞かされたときには理解不能な科学理論を聞かされているような心持ちになった.

そんな自分でも感じ取れるのが吐息で,ラトナ・プティのASMRは良く聴いている.息で耳が暖かくなるのが分かるんだよ.いやマジで.
www.youtube.com

最近はカリカリとした耳かきも少しずつ分かるようになってきた.
ASMR筋トレの道はどこまでも続いていく....

*1:Vの者経由で様々なインターネット文化に触れるようになってきた

*2:ダミーヘッドマイクの頭部分

積み本『ゲーム理論はアート』

この記事は積み本アドベントカレンダーの9日目です

今日の本は『ゲーム理論はアート 社会の仕組みを思いつくための繊細な哲学』

ゲーム理論はアート  社会のしくみを思いつくための繊細な哲学

ゲーム理論はアート 社会のしくみを思いつくための繊細な哲学

なんで買ったの?

大学の課題でゲーム理論を見る必要があり,フォン・ノイマンのアレとか買ったんだけどそのときに面白そうなので一緒にカートに突っ込んだ.

フォン・ノイマンのアレ↓

ぱらぱら読んでみたけど

いいですね.ゲーム理論で出てくる面白例とそれを現実に適用していこう!という本.楽しそう

積み本『月とライカと吸血姫 (4)』

この記事は積み本アドベントカレンダーの8日目です

今日の本は『月とライカと吸血姫 (4)』

月とライカと吸血姫 (4) (ガガガ文庫)

月とライカと吸血姫 (4) (ガガガ文庫)

冷戦×宇宙×差別という下地にボーイミーツガールを被せた名作ラノベ
...5巻も出てるじゃん!!!!!!(欲しいものリストに入れた)

なんで買ったの?

赤月ゆに(
赤月ゆに 🦇 12/31西A-57a (@AkatsukiUNI) | Twitter
)のコラボ...と思わせて実はデビュー前から読んでたんだよな.多分Twitter経由(ほとんどそうなため)

今年中に既刊全部読んじゃお

積み本『太った男を殺しますか?』

この記事は積み本アドベントカレンダーの7日目です

今日の本は『太った男を殺しますか? 「トロリー問題」が教えてくれること』です

太った男を殺しますか? (atプラス叢書11)

太った男を殺しますか? (atプラス叢書11)

なんで買ったの?

多分Amazonセールに合わせて買った.セールのポイントアップに合わせて欲しいものリストに積んでた本を購入するというのをよくやる(このサイバーマンデーもやる).
トゥイッターでトロッコ問題よくワイワイやってるのが虚無に感じる.こういうのちゃんと議論されてはるかに精緻な体系ができあがっているはずなので,そういうのが紹介されていく場であっていてほしい(祈り).
インターネットやめろ本を読め

目次眺めてみたんですけど

あとがきが嫌いな人で読む気失せてきちゃった・・・

積み本『kinyou_benkyoukai vol.3』

この記事は積み本アドベントカレンダーの6日目です

今日の本は『kinyou_benkyoukai vol.3』

技術書典7で頒布された同人誌です.
kinyoubenkyokai.github.io

なんで買ったの

「IPFSとOrbitDBを利用した分散アプリケーション開発入門」が気になったので

IPFSの記事読んで

いいなー.IPFSちゃんと乗っかってやりたい.OrbitDB使うだけじゃなくて実装覗いてみるのも楽しそう.分散システムやりて~

積み本『労働者のための漫画の描き方教室』

この記事は積み本アドベントカレンダーの5日目です

今日の本は『労働者のための漫画の描き方教室』

労働者のための漫画の描き方教室

労働者のための漫画の描き方教室

  • 作者:川崎 昌平
  • 出版社/メーカー: 春秋社
  • 発売日: 2018/07/24
  • メディア: 単行本(ソフトカバー)

なんで買ったの

Twitter

序章だけ読んで

忙しい労働者が生きがいを獲得するための手段としての漫画描きの話.
「我々」にとっては輪講であったり技術同人誌出版によってなされるような,フィードバックのある自己表現の場に入るために漫画という手段をとるというのはなるほどとなる.

それはそれとして文章が冗長という気持ちがやってくる