全力で怠けたい

怠けるために全力を尽くしたいブログ。

TokyoMercurial#4.5 に参加してきた

TokyoMercurial#4.5 - connpass に参加してきた。

参加までの背景

Mercurial は人気のある DVCS だけど、「Git に比べると出来ることが少ない」と言われることが少なくないと思う。
その一方で、Mercurial を使いこなしている人たちからは「MQ (Mercurial Queue) 抜きで Mercurial を語るのは片手落ち」「MQ を使えば Git と大概同じことが出来るよ」といったことも良く聞かされていた。
Mercurial を (MQ 抜きで) 使っているとたしかに痒いところに手が届かない感があるのだけど、マニュアルを読んだりネットで調べたりしながら MQ を使うことで、そのあたりの "届かない感" はだいぶ解消されるようになった *1
しかし、「実はバッドプラクティスを身につけていっているのではないか」「もっと良い、ベストプラクティス的なものがあるのではないか」といった思いは以前からあって、ちょうどそれが高まりつつあった頃に TokyoMercurial#4.5 - connpass の開催と募集要項を読んで、そのまま即決で参加することにした。

多くの人にMercurial(hg)の極意に触れてもらうためにMercurial Queue ハンズオンを開こうと思います。
参加者全員がMercurial(hg)の極意であるMercurial Queueの思想を理解し、自由にリビジョングラフを操作する技能を身に付けるのを目標にします。

TokyoMercurial#4.5 - connpass

大まかな流れ

大まかに下記構成で、休憩をはさみながら進行。

  • MQ 導入の話
  • ハンズオン 第一部
  • ハンズオン 第二部

MQ 導入の話

主催者の @ さんによる MQ 導入のプレゼンテーション。
@ さんの解説とスライドの素晴らしさが際立っていた。
参加者のレベルは「Mercurial 使い始めたばかり」から「Mercurial 上級者」「Git なら何でも出来ますが何か?」といった人まで実に幅広かったのだけど、Mercurial を普通に使っている人なら「スライドを見るだけで MQ 入門できる」と思えるほどの完成度の高さ。素晴らしすぎる。
プレゼンの最後にハンズオンの事前準備を確認、休憩をはさんでハンズオンへ。

ハンズオン 第一部

ハンズオン資料を見ながら、ひたすら MQ コマンドを叩く。
いつもは「普通にコミット→必要になった時 (主に歴史改変) だけ MQ 使う」という使い方しかしていなかったのだけど、このハンズオンではまずパッチを作り (qnew)、そのパッチを MQ で操作していく、という流れ。
考え方がいつもとは正反対になるので最初こそとまどったけど、していることはパッチの操作なのですぐに慣れることが出来た。
qdiff と diff の動作の違いが理解できたのは収穫 *2

ハンズオン 第二部

ハンズオン第二部は事前に構築されたリポジトリに対して、歴史改変操作を行うというもの。
第一部に比べるとより実践的で、実際の現場ですぐに役立てることが出来る内容 *3
第一部も同じ事を感じたのだけど、ハンズオンの各課題が非常にシンプルな構成になっていて、「一つの課題に一つのテーマ」が徹底されていたのがとても分かりやすかった。
ハンズオンではどうしても「あれもこれも」と、非常に密度が濃い内容になってしまいがちなところ、一つの課題の中に一つのテーマだけが設定されているので、一度に考えることが少なく済み、結果として理解を進める大きな助けとなった。
このあたりの難易度設定はベストというものがないだけに、今回の設定と構成は絶妙だったのではないかと思う。
ハンズオン課題を作成した @ さんには脱帽の他ない。

収穫

MQ の一番基本的な操作を設定された課題と共に行うことにより、使い方と使いどころを体感できた。
使い方も大事なのだけど、それ以上に "使いどころ" を感じることができたのは大きな収穫だったと思う。
このあたりは気がつかなければ気がつかないし、こういう機会がなければ知ることも少ないので、とても経験になった。
また、graft や rebase に代表されるエクステンションの素晴らしさを再確認できたのも収穫。
究極的には MQ コマンドでどうにかしなければならない状況というのもあるのだろうけど、普段使いでは簡単かつ確実に歴史改変が出来るこれらのコマンドはとてもありがたい (と実感した)
なんとなく使っていた MQ だけど、今回の勉強会をとおして多少なりとも極意にかすることが出来たと思う。

定期的な開催があったら素敵

とても素晴らしい勉強会なので、今後も定期的な開催があったら素敵!

最後になりますが、主催の @ さん、スタッフのみなさん、会場を提供して下さった株式会社タイムインターメディアさん、そして参加者のみなさん、お疲れ様でした。
とても楽しく、そして充実した時間でした。ありがとうございます!

*1:コメントを修正したりコミットの〜といった歴史改変

*2:正直なところ qdiff をまともに使ったことがなかった

*3:実際の現場でははるかに難易度は高くなるが