SCM Boot Camp in Tokyoに参加してきた #scmbc
(写真:会場の独特な雰囲気を切り取った印象的な一枚。URLはこちら。)
近年のソフトウェア開発においてSCM※1の重要性が増していますが、SCMで重要になってくる 「DVCS※2の概念・思想・パターン」を学習する機会はなかなかありません。 今後のソフトウェア開発に活かせるよう、講演と演習を通して「DVCSの概念・思想・パターン」を 学んでもらいたいと思います。 プログラミング言語に依存しない演習にし、プログラマーに限らず、 デザイナーや管理者などVCSの使用経験がある方であれば気軽に参加できます。 -------------------------------------------------- ※1 SCMとは? Software Configuration Management(ソフトウェア構成管理)の略です。 ソフトウェア開発プロジェクトの成果物を管理する方法論です。 ※2 DVCSとは? Distributed Version Control System(分散バージョン管理システム)の略です。 Git, Mercurial, Bazaarなどのアプリケーションが該当します。 今回のイベントで参加者の皆様に実際に操作してもらうアプリケーションです。
イベント告知ページの概要より。
ありそうで無かった『分散バージョン管理』のBoot Campイベント、『SCMBC(SCM Boot Camp)』がこの度初開催されました。
SCMBC開催に至るまでの経緯はこちら。主催者の一人であるなかやん・そるじゃー・ゆーき (TwitterID:@pocketberserker)さんが自らのブログにて詳細を綴っています。
この日はSCMBCに加え、品川で『Scrumbc(Scrum Boot Camp)』、『第5回 MongoDB 勉強会 in Tokyo』等有名且つ告知即定員達成の大人気イベントも同日開催。それぞれ分野としては別であり、2つまたは3つ全てに参加したい!けど出来ない!といった感じで悩まれた方々も多かったのではないでしょうか。ちなみに私は前回のScrumBootCampに参加していたので自然と第2回参加対象からは外れており、選択は比較的悩まずに済みました。(^-^*)
- 7月30日 Scrum Boot Camp 東京(東京都)
- 「第5回 MongoDB 勉強会 in Tokyo」?真夏の大Mongo祭り? : ATND
- 第7回 qpstudy07 - キユーピー3分インフラクッキング 公式Webサイト
- Hack For Japan (7/30) 東京会場 #hack4jp : ATND
- 東京OpenSolaris勉強会 2011.07 : ATND(※こちらは同一会場、お隣の部屋での開催でした。)
開催場所はおなじみのオラクル青山センター@外苑前。
そしてタイムスケジュール。
--第一部[講演]-- 10:00〜10:15 開会および諸説明 10:15〜11:15 講演 (@bleis) 11:15〜11:30 休憩 11:30〜11:45 LT no.1 11:45〜12:00 LT no.2 12:00〜13:00 ランチ、ランチLT 13:00〜13:30 アイスブレイク、環境構築 13:30〜14:00 デモ --第二部[演習]-- 14:00〜15:00 演習 15:00〜15:30 レビュー+休憩 15:30〜16:30 演習 16:30〜17:00 レビュー+休憩 17:00〜18:00 演習 18:00〜18:30 レビュー、総括 --懇親会-- 19:00〜21:00 会場にてビアバッシュ 21:00〜21:30 後片付け
第一部:開会及び諸説明(10:00〜10:15)
まずはイベント開始に先立ち、会場地図、諸施設利用、冷房などの説明及び注意がありました。会場を提供して頂き、ありがとうございました!
そして主催者ご挨拶。
きょんさんの講演/LTは『うさみみ』モードで行われるというのが最近では徐々に周知・認識されつつある今日この頃ですが、この日はその動きがスタッフ全体にまで拡大。冒頭挨拶の時点でまずはなかやんさんが挨拶に先立ちうさみみモード突入です(笑)
きょんさんの『Scrumbc, mongodb等、今日は色々な有名イベントが被っていますが、ここに来た人は勝ち組です』というコメントが印象的。独特のイベントの雰囲気・参加スタッフ・テクニカルサポーターの充実さから言えばその言葉もあながち嘘では無いと言い切れるのではないでしょうか。
第一部:基調講演(10:15〜11:15)
発表資料:
- SCM Boot Camp
- View more presentations from bleis tift
発表Ustream:
名古屋からのご参加となったF#/Gitのスペシャリスト、@bleisさんによる基調講演です。講演詳細は上記スライド及びUst動画を御覧頂く方が確実ですが、自分なりにも一応メモ。
- バージョン管理
- バージョン管理:変更の履歴を管理すること。
- 目的
- いつでも過去のバージョンに戻せる
- 変更に対するメタデータの格納
- 変更の調査
- Zip管理:過去のバージョンには戻せるけど、変更の意味は保持していない
- バージョン管理とは言わない
- 履歴コメント管理:変更の意味は保持しているけど・・・
- これもバージョン管理とは呼べない
- 二つとも採用したら…カオス!
- バージョン管理を行うには、ツールの利用が不可欠
- ツールを使わない言い訳
- 1つの場所にすべて書いてないと不安
- バージョン管理システム?何それ?
- ツールがバグってたら・・・
- 『ツールを知る』と言うこと
- 動作、コマンド
- 概念、文化、思想
- 実装
- 『動作』さえ知っていれば一応使える。でも使いこなすには『概念』を知る必要がある
- 概念
- ツールごとに文化がことなるので概念も異なる
- 例)git - mercurial
- 基本的な操作は同じように見えても、細かいところは結構違う
- ツールごとに文化がことなるので概念も異なる
- バージョン管理システムの分類
- メインでgitをつかているので、gitと他のdvcsの違いを中心に。
- ファイル名の管理方法
- ファイル内容の管理方法
- 差分を積み上げ(Svn)
- 差分だけ格納するので空間効率が良い
- スナップショットを格納(Git)
- 特定バージョンの内容を高速に取り出せる
- 差分を積み上げ(Svn)
- 協調方法
- ロック(VSS)
- マージ(その他)
- ロック vs マージ
- ロックはコンフリクトが発生しない・・・本当
- ファイル内では存在しないけどそれ以外の場所では普通に発生。
- 発生させないようにするには全体ロックしかない。
- バイナリいじるのでない限りロック方式に利点はない?
- ロックはコンフリクトが発生しない・・・本当
- 集中管理 or 分散
- 集中管理(Svn)
- 分散管理(Git,Hg)
- 両方(Bazaar)
- 分散バージョン管理システムの誤解
- バージョン管理する目的(再掲)
- いつでも過去バージョンに戻せる
- 変更に対するメタデータの格納
- 変更の調査
- DVCSでできるようになること
- 自由なコミット
- 自由なブランチ
- 自由な歴史改変(git固有?)
- 集中管理型では出来なかった事が出来るように!
- トピックブランチ
- dvcsではローカルブランチを気軽に作れる
- 作業
- hoge機能追加とか、バグ修正とか
- dvcsならこんな小さなレベルでブランチを使っても苦にならない。
- hoge機能追加とか、バグ修正とか
- コミットの粒度
- トピックブランチを使うと、コミットの粒度を細かく出来る
- いつコミットすれば良いの?
- 保存したということは、何かの区切りの可能性が高い
- 最初のうちは保存のタイミングでやった事を顧みる(やりすぎ?)のもいいかも。
- rebase 歴史改変
- 枝分かれしてしまった状態の整理・解決方法の1つ。
- rebase - dvcsならではの方法
- 親歴史を、rebaseで書き換える。
- 歴史を一本化
- 分岐した情報が消えて、歴史が一本になる
- 親歴史を、rebaseで書き換える。
- rebase つかいどころ
- トピックブランチ程度の小さなブランチに
- 大きいブランチだときつい
- rebaseの何が嬉しいのか
- リポジトリの内容が綺麗
- 作業が追いやすくなる
- 歴史の二分探索がカチッはまる
- リポジトリの内容が綺麗
- BTS/ITSとつかう
- トピックブランチを使い、コミットの粒度が細かくなり、ブランチのマージにrebaseを使うようになると…
- どこからどこまでがどの作業のコミット?
- BTS/ITSと一緒に使うのは1つの解決策
- トピックブランチを使い、コミットの粒度が細かくなり、ブランチのマージにrebaseを使うようになると…
- SVNとの比較
- 運用例
- 事例紹介
- Jenkinsとの組み合わせ
- ビルドが失敗するようなpushを弾く
- 中央のリポジトリへのpushを禁止、などなど
- 開発者が5人以下のチームで採用
- 運用し出して1年経過
- 新規案件を中心に5案件ほど回した
- 小さいチームではうまくいくことがわかった
- 大きいチームでは難しいかも?
と、一通り講演が終了して質疑応答へ。ここでの会話レベルは相当に高かったようで、特に文殊堂(TwitterID:@monjudoh) さんの質問等には皆さん関心しきりでした。 自分はどの方の質疑/応答も詳しく意味が飲み込めずポカンとしてましたが。(^^;) せめて意味が把握出来る位には力を付けていきたいですね。
第一部:LT no.1 / subversionユーザーのためのbazaar
関連Ust動画はこちら。
- 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2010/05/28
- メディア: 大型本
- 購入: 33人 クリック: 791回
- この商品を含むブログ (90件) を見る
-
- ローカルでコミットするとき、先にチェックアウト元のブランチにコミットされる
- pull & commit & push ではなくupdate & commitを使える
- SVNと同じ使い勝手で使える。
-
- 差分:
- 微妙に体系ことなる。
- ローカル変更の取り消し
- svn revert
- bzr revert
- 差分:
-
- つまり移行は alias svn=bzrでほぼ完了。
- ブランチとメインライン
- svnマージと同じ形で扱える。
- merみたいな使い方も出来る。
第一部:LT no.2 / MacHg on Lion
関連Ust動画はこちら。
第一部:LT no.3 / Gitの基本的なことを何か話す
発表資料はこちら。
以下メモ。
- gitを始める前に準備
- まずは入門Gitを手元におく
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/24
- メディア: 単行本
- 購入: 31人 クリック: 736回
- この商品を含むブログ (155件) を見る
-
- Pro Gitをブクマ
- bleis先生のblogをブクマ
- gitk
- ブランチをグラフ表示できる
- gitで扱うファイル形式
- blob
- gitではファイルをぶろぶオブジェクトで管理している
- tree
- ディレクトリ構成をツリーオブジェクトで管理している
- blob
- commit
- ファイル、ディレクトリ構成以外に…
- どのrevから作られたか?
- 誰が変更したか?
- 変更した理由は何か?
- ファイル、ディレクトリ構成以外に…
- tag
- ごめんなさい、資料用意してないです…
- 各オブジェクトの関係
- gitはスナップショット管理している
- マージとリベースの違い
- リベースの歴史概念の話
第一部:ランチ・ランチLT(12:00〜13:00)
事前に用意されていたお弁当を頂き、束の間の休息。程良い分量で美味しく頂きました。
また昼食時間後半には、文殊堂(TwitterID:@monjudoh) さんによる即興LT。スライド資料無し、ほぼフリースタイル?で語られる内容はこれまたハイレベルなものでした。LTのUst動画(音声)は以下。
(追記)文殊堂さんLTの詳細がBlogにUPされていたのでリンク致しました。
第一部:アイスブレイク、環境構築(13:00〜13:30) / デモ(13:30〜14:00)
事前に用意されていた/イベント期間内に告知のあった情報を元に、各自環境構築作業を進めました。
ところがGitについては会場のネットワーク環境の都合上、意図した環境・構成が実現出来ないのではないかという疑惑が浮上。最終的にはGitHubにセントラルリポジトリを作成し、そこに対して各種作業を進めていくという形に落ち着きました。(あ、自分はちなみに『Git』を選んでいました)
デモ実演に関してはToshiyuki Kawanishi(TwitterID:@tosikawa) さんと[http://twitter.com/#!/sinsoku_listy:title=神速(TwitterID:@sinsoku_listy)さんによるGit環境構築を想定。…していたのですが、環境構築の問題もあり結構ドタバタした感じになってしまいました。時間の最後には『すいません、神速さんがあまり使えなくて』というヒドスwなコメントもありましたが、実際の職場でも隣同士(!)という仲もあっての、愛のあるDISだったのでしょう。と理解(笑)
その時のUst動画はこちら。
…ちなみにここまでの講演・LTを経ていく過程で、ほぼ全員が講演/LT時にうさみみを装着し、当日中にはうさみみさんが10人近くに増殖するという異様な雰囲気に発展(笑) 当エントリ冒頭の写真がその風景です。
ちなみにうさみみをつけたスタッフの方曰く、建物同階、別の会場で開催されていた勉強会の参加者と廊下ですれ違った際、二度見され『(うさみみ)?ねぇ何あれ?』的な振る舞いをされたそうです(笑) 実際の会場ではそんな方々が真剣に、超ハイレベルなDVCS議論を交わしていた訳なのですが、外部から客観的に見ると何と怪しい会なのだろう、という風に感じるのは無理のないところなのかも知れません(笑)
第二部:演習&レビュー その1(14:00〜15:30) / その2(15:30〜17:00) / その3(17:00〜18:30)
演習の課題としては『グループで対象となるDVCS環境のチートシートを作成し、リリースする』というもの。カンバン形式でタスクを洗い出し、管理をしながらDVCS環境上で作業を進めて行く流れです。
カンバンについては以下を参照。
…すいません。ここからはスゴイざっくりな内容になります(笑)
というのも、今回SCMBCに参加するにあたって自分なりに基礎を学んでから臨もうと思いつつも、諸々で忙しくて時間が取れず結局インストールしてちょろっと触った程度しか出来ず。
スタンスとしては
・バージョン管理(Subversion)は使っているが、GUIで非常にシンプルな扱い方しか(現場などでは)しておらず、 正直熟知しているとは言い難かった(『使っている』が『分かっている』訳ではない) ・DVCS(分散バージョン管理)については、『興味がある』という点のみで参加。 概念や各種コマンドなども殆ど知識がない状態で臨んだ。
状態でSCMBCに挑む形となりました。
そんな状態で臨んでいた訳なので、ひとたび問題が発生すると何をしていいのか分からなくなり、グループ内の有識者の方々や各スタッフの方々にサポートして頂くも基礎的なコマンドや概念を理解しきれていない状態であったので十分理解・吸収しきれない形に。DVCSのスペシャリストがこんなにも大勢居て何でも聞けるのに、自分のスキルが足らない為に思うように聞くことが出来ない〜!むぉ〜〜〜! ヽ( `Д´)ノ となり、次第にテンションも落ちて行きお手上げ状態となってしまいました(笑) ( ´-ω-`) ショボーン
グループで一緒になられた皆さん、色々お手数をお掛けしてしまい申し訳ありませんでした&丁寧に教えて頂き、ありがとうございました!
…とは言えこれは完全に自分の準備不足によるもの。@bleis さんの講演でも『(DVCS毎の)概念を知る事は大事』とありましたがまさにそこが抜け落ちており、そういった概念やコマンド操作を知らない状態ではこうなることは目に見えていたのかも知れません。参加する機会を得たのに、実に勿体無い事をしてしまったと思いました。(>_< )
今回のお題は『チートシートを作ること』でしたが、課題は別の内容で演習時に各種環境のチートシートが紙で配布されていると個人的には超助かったかもしれないです。知識が浅かったので『あれ、次は何のコマンド打てば良いんだ?』ってなりまくりだったので。
あとは主にSCMBCに臨む上でのDVCS初心者・初学者に対しての取り組み方、開催当日のそういった人達についての対応・ケア等をどうしていくか、という点でしょうか。この辺りについては、主催者であるきょんさんやなかやんさんと直接お話したりTwitter上でやり取りしてたりしたので詳細はここでは省きますが、如何にDVCS初心者の参加のハードルを下げ(or調整して)、スムーズに当日の作業を進められるようにするのか、というのは大きなテーマなのかなぁと思いました。
まぁ何にせよ今回が記念すべき第1回目。参加するまでは見えてこない部分も多く課題は沢山出ていた模様でした。このような試み(DVCSをテーマとした勉強会、かつ各DVCS間での交流も兼ねたイベント)が成された事自体とても素晴らしい事であり、興味を持って参加したDVCS初学者だけではなく、各DVCSを業務で扱ってたり、精通されている方々にとっても非常に意義のあるものとなったようです。
中にはコミッタや著者等その道のハイレベルな人がグループの半数を占めると言った何とも贅沢なところあったり、隣の勉強会に参加されていたMercurialのスゴイ方(すみません、詳細を存じ上げておりませんのでこんな書き方しか…)がひょこっと顔を出され、その流れで次回参加を取り付けたり…DVCSの知識が浅い自分にとってはあんまりピンと来てませんが、ある程度の知識レベルを備えた方であれば何とも贅沢すぎるひとときとなっていたようです。
演習自体は自分の準備不足もあり消化不良気味でしたが、勉強会の雰囲気自体は非常に良く、とても素晴らしいものだったと思います!
休憩も少し多めに取ってあったり(15〜20分)、途中スイーツ等も多めに提供されていたり(写真を取り損ねてしまいましたが、他にもシューアイス等がありました!)、そこかしこで各DVCSの精通者が雑談や論議を繰り広げていたり(しかもうさみみ着けて!)…他の勉強会とは一線を画し、かつクオリティの高いこのようなイベントが開催出来たのも主催者の努力の賜であり、彼等へのリスペクトが成せたものなのではないでしょうか。
また、今回のSCMBCのトピックの一つとして、
実際この格好をされていた方はカヲリ(TwitterID:@kaori_t_spica) さんだった模様で、DVCSはMercurialを選択し講演・演習に参加されてました。各種セッションやLTの時間終了後『ご主人様、お時間です♪』の掛け声も担当されていました(笑)
時折写真撮影にも応じてたりも。一枚だけこちらのブログにもUPさせて頂きたいと思いますが、他にも撮影に成功された写真もあると思いますので、興味のあるかたはTL/Togetter等を調べてみては如何でしょうか(笑)
懇親会(19:00〜21:00)
予想以上に凹み度合いが大きく、また翌日にもTDD Boot Camp 東京 1.6が控えていた為、何人かとご挨拶を済ませてこの日は帰宅。Blog上でブクマやスターを度々頂いていたYuta Shimakawa(TwitterID:@banana_umai) さんと初めて実際に顔を合わせ、お話する事が出来ました。いつもありがとうございます!
帰り際には、『やはり基礎から勉強せにゃならんな!』という事で以下の書籍を購入。
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/24
- メディア: 単行本
- 購入: 31人 クリック: 736回
- この商品を含むブログ (155件) を見る
勉強用:
- Gitことはじめ
- View more presentations from bleis tift