ただのにっき
2010-05-17(月) [長年日記]
■
入門Git(濱野 純(Junio C Hamano))
4ヶ月も前に買っておいて今ごろ読むとかね。しかも出版はさらに4ヶ月前とか、どうなんですかね。
すでにGithubを便利に利用していて、チュートリアルにも一通り目を通してあるので、まぁ復習がてら……と思って読み始めたらとんでもない、これはツールの入門書ではなく、新しいソフトウェア開発のワークフロー解説書だ。というか、いきなり内部構造の説明から入る入門書なんてあるかい!
冒頭Linusのはしがきに、彼が作ったベースの上に「一般のユーザにも適したユーザインタフェース」と「磨きあげられたシステムにまで育てていくメンテナ」が必要だと書いてあって、いきなり吹き出してしまう。いや、実際Gitプロジェクトは(本書の著者という)素晴らしいメンテナを得ているが、ユーザインタフェースはとても一般向けとは言い難い。特にリポジトリを操作するコマンドが多すぎて、正直「きれいなリポジトリの維持」に対するこだわりがパラノイアすぎるんじゃないかと感じる。
そんなわけで、本書はGitにそういう「過剰さ」が必要になった背景の説明に満ちている。
LinusがBitKeeperからの乗り換え先を探すにあたって、「履歴管理」のツールではなく「パッチ管理」のツールが欲しいと言っていたのを覚えているが、Linux Kernelのように巨大で、歴史があり、大勢が関わっているようなプロジェクトの場合それは必然で、プロジェクトを効率良く運用していくためにGitにはそれをサポートするコマンドが数多くある……という背景を理解するのが、Git理解の近道なのだ。そういう意味で、本書のChapter 10(パッチベースのワークフロー)こそが本書の本論部分になるんだと思う。
おそらくLinux Kernelほど大きくない普通のプロジェクトにおいては、Gitの持つ機能の大半は不要だろう。だが、なぜ「歴史」をきれいに編纂しておく必要があるのか、そのためにプロジェクトメンバがどのような心がけを持つ必要があるのかについては、ひととおり理解しておいた方がいいと思う。というか、そこを押さえずにGitを使っても、たぶん宝の持ち腐れだろう。
で、思想はわかったとしても、やっぱりこの複雑なコマンド群を使いこなせるとはとても思えないんだよなぁ。Gitはもう、コマンドラインで使うツールじゃないよ。だから標準でGUIツールが付属するのは非常に納得がいく。GUIで対話式に操作しないと、普通の人は歴史の編纂なんてできないって(→TortoiseGitを入れてWindows上に開発環境を移すフラグ?)。