今日の #shibuyarblunch で「詰めvi のような git の練習問題が欲しい」という話で盛り上がった。正解の操作をなぞる -> 詰めvi -> 手数を競う? -> Code Golf だ!という流れで Git Golf と呼んでいたけど、競技性は重要ではないし、 Code Kata に例えたほうが適切なのかもしれない。あるいは L-99 か。
レポジトリと「トピックブランチをマージせよ」のようなお題が与えられて、指示を満たすように git の各種コマンドを使ってレポジトリをいじる。操作の練習が目的なので、答え合わせは適当でいい。 git log --graph の結果を見比べる、とか。最初は簡単なのからはじめて、徐々に難しくなっていく。あまりお目にかからないシチュエーションのお題で、そうそう使わないようなコマンドを使う、組み合わせる、など。
バージョン管理システムはプログラミングよりも学びづらいと思う。参考書の数は比較にならないし、用例も少ない。何より困るのが、誰かがブログにちょっと込み入った使い方を書いていたとしても、たいていその人が仕事で取り組んだことのメモだったりして、それを試せるレポジトリは用意されていないので自分で試すことができない(自分で同様のシチュエーションを再現するレポジトリを育てれば試せるが、手間がかかりすぎる)練習用のレポジトリが用意されていれば clone してきて簡単に試せる。壊しても問題ないので、大胆に、思う存分いじくれる。
新人研修向けとか教育用にすごく役立ちそうだし、そんな問題集を解くのはきっと楽しいだろうから、是非欲しいし自ら作ってみたいとも思うが、問題を考えるのが難しい。 Git に習熟している必要があるが、習熟していないからこそ問題集が必要なのであって、堂々巡りだ。問題のシチュエーションと回答についてはTIM Lab の Git 関連のエントリがとても良い教材になりそうなので、再現レポジトリ集を勝手に作っても問題ないようであればそれをひと通りおさらいしてみるのが、雰囲気をつかむためには良いかもしれない。
なんてことを今日一日考えていたんですけどみなさんはどう思いますか?