名古屋アジャイル勉強会 分科会のMercurial入門に参加してきました。

名古屋アジャイル勉強会 分科会のMercurial入門に参加してきました。
名古屋アジャイル勉強会本会には一度しか参加したことがありませんでしたが、今回は入門編ということで友人を誘って気軽に参加してみました。
他にも初めて参加される方もおられました。今後は名古屋の勉強会に新規さんが増えて活性化するといいですね。

自己紹介

自己紹介では昨晩の晩御飯、今まで利用したバージョン管理システム、勉強会への意気込みを皆で話しました。
利用したバージョン管理システムではSubversionが多かったような印象を受けました。時点でVSS、CVSとかだったかな?
あと、昨晩の晩御飯を思い出せないと記憶力や脳的に色々とまずい気がしますので頑張りましょうね!

勉強会スタート

さて、勉強会の内容ですが、まずはバージョン管理システムについてお話がありました。
バージョン管理システムはファイルの履歴を管理するシステムのこと。

  • いつ変更したのか
  • 誰が変更したのか
  • 何のために変更したのか
  • 何を変更したのか
  • どのように変更したのか

ファイルをバージョン管理システムで管理することにより、上記のポイントを押さえることができます。
これにより、過去の状態に戻したりメンバーが同じリソースを扱うことができるようになります。
また、何か問題が発生した場合などに原因を追うことが可能となり、開発者は安心して開発を進めることができます。*1

VCSの歴史

最初はローカル環境で。

  • SCCS、RCS
  • PVCS

どれもまったく聞いたことがありません。思わずTwitterで呟いたらきょんさんが反応してくれました。

ゆとり世代とか自虐しておいてなんでそんな古いの知っているんですか…。
流石はSCMBC主催者!今度参加します!


次に共有できるようにサーバー・クライアント方式へ進化。

有名なのはCSVSubversion、VSSなどでしょうか。
VSSから更に高機能になったTFSは調べてみるとTFS単体でSCM(CIだけじゃない?)となっているようです。バージョン管理に加え自動ビルド、プロジェクト管理、レポート管理などを備えている模様。VisialStudioならTFSはかなり有効に利用できそうですね。


そして流行りの?分散リビジョン管理方式へ

GNU archは聞いたことがありませんでしたが、歴史は古いみたいです。


今回勉強するのは分散型リポジトリであるMercurialとなります。
サーバー・クライアント方式では集中リポジトリとして一つのリポジトリを各端末が参照するという形でしたが、分散型では各端末がリポジトリを持ちます。
ただ、分散型でも集中リポジトリを立て、各端末でのリポジトリは作業用リポジトリとして使用することが可能です。こちらのがより一般的ではないでしょうか。
今回学ぶ形式も後者となります。
ちなみに私も一人でGitを利用していますが、同様に集中リポジトリを立てて、ローカルでは作業用リポジトリとして利用しています。

Mercurialとは

Pythonで開発された分散型リビジョン管理方式です。ただ、一部パフォーマンスを重視しているロジックに関してはCで実装されているとのこと。
Mercury(水銀)から、コマンドは元素記号のhgが利用されている。ハードゲイを連想してはいけない。
プラットフォームによる依存もなく、WindowsでもLinuxでもMacでも楽々インストールが可能。
(私はMacだったのでMacPortsで導入しました)
コマンドがSubversionに似ていることから、今まで開発環境はWindowsでVCMはSubversionを利用していた人には移行しやすい。
プラグインによる機能拡張も可能。
GitはWindows環境にインストールするには少し敷居が高いですし、色々できるが故にコマンドが複雑という欠点もあります。
特にSIerなどスキルセットの幅が大きいプロジェクトに導入するにはMercurialは良さそうです。


ハンズオン

まずはMercurialのインストールから。
半数ぐらいは既にインストール済だったようです。そういう私もインストール済でした。
(私の場合はMacPortsXCodeのバージョンが古すぎてインストールできずにエラー吐きまくり。当日インストールしていたら間違いなく間に合いませんでした。試しに入れてみて良かった…。ちなみに、MacPortsよりHomebrewのが素敵だと教えて頂いたので導入したいと思います)


ハンズオンで行われたコマンドの説明とかは最初頑張って書いてましたが、記事の量が多くなってきた(=めんどい)ので省略します。


全員がコマンドの内容を理解する為に大変丁寧に進められました。
しかし、やはり時間が足りずに後半は巻き巻きで進行となりました。
コマンドを打つだけで結果を得て終わり、ではなく、このコマンドは何を意味しているのか、まで理解が伝われれば良いなぁと。
今回はそこまでの時間が足りなかったようにお見受けしました。
ハンズオン自体、もう少し時間があると良さそうですね。3時間だと短いかなー。5時間ぐらいは欲しい…。
借りてる会場の兼ね合いもあるので、已む無しですね。

KPT

最後にKPT(Keep Problem Try)が行われました。
初めて行う方もペタペタ貼られていて、素敵だなぁと思いました。
自分は最初、あまり思い浮かばなかったんですよね。聞いているようで頭に入っていない証拠ですね!


また、BitBucketの導入もできなかったので、こちらは用意して頂いた資料を元に導入したいと思います。

資料

勉強会で使用された資料です。参考にさせて頂きました。
Mercurial入門(前半)
Mercurial入門(後半)
Bitbucket入門


また、別のスライドですがMercurial導入時に参考にさせて頂きました。こちらも一通り眺めると楽しいと思います。
http://sliwww.slideshare.net/kenjis/mercurialbitbucket



懇親会

懇親会は近くの四川料理屋で。
開店前に到着したので外で待っていたのですが、他のお客さんもぞくぞくと…。
かなりの人気店のようです。
で、2500円のコース料理と1500円の飲み放題を付けて90分お食事しました。
感想:激辛
辛いのはかなり得意ですが、そんな僕でも唇と舌と胃が焼ける程熱かったです。
翌日は僕のお尻が大変なことになりました。恐ろしい…。
お客さんは年配の方が多かったのですが、えーと、大丈夫なんでしょうか…。
でも美味しかったのでまた行きたいですね。次はラーメンと餃子を頼む!美味しそうだった!


次回の分科会も参加するぞ、ということで締め。

*1:以上のVCSのメリットを伝えても納得されない方も居るので、導入に向けてもっと良い伝え方が無いか模索中