アジャイルサムライ読書会 新宿道場#8 に参加してきた #agilesamurai #新宿道場
- アジャイルサムライ読書会 新宿道場#8 - connpass
- アジャイルサムライ読書会 新宿道場#8 (懇親会) - connpass
- 2012/07/08 アジャイルサムライ読書会 新宿道場#8 #agilesamurai #新宿道場 - Togetter
- アジャイルサムライ読書会 新宿道場#8 - Yukarin'Note
(写真:懇親会、KPT振り返りでの一幕。)
第8回目は第V部の最終章である第15章継続的デリバリーをテーマにすすめます。 今回はSpecialゲストとして、分散バージョン管理システム Mercurial のエバンジェリストである @troterさんをお迎えしての講演、@tk0miyaさん司会の座談会、LT大会等を計画中です! LT参加者も合わせて募集しますので、話をしてみたい人は是非声をかけてくださいね (アジャイルサムライに記載の内容と関連する事であれば第15章以外であってもOKです)。 初LTデビューも大歓迎です! 前回参加していなくとも参加できますので、気軽に参加してくださいね。 アットホームで和やかな雰囲気なので、初めての参加でも大丈夫ですよ:-)
新宿道場は今回で第8回を数え、読書対象範囲も第15章と終盤を迎えた状況ではありますが、継続的デリバリーに関するテーマで@troterさんが講演されるというのにも非常に興味があり、(新宿道場)初参戦してきました。
会場は株式会社タイムインタ―メディア@曙橋。事前に別件で参加者数名の方々と打ち合わせをしていたので、その流れで(新宿道場)常連参加者の方々についていって到着。
オープニング
- 新宿道場 道場主:たい焼きの人(TwitterID:@tmmkr)さんによる挨拶
- 新宿道場は転んでも起き上がる会です。言いたい事をじゃんじゃん言おう。脱線しましょう。
- 副道場主Takeshi KOMIYA(TwitterID:@tk0miya)さんによる会場諸注意
- 1人1分程の各自自己紹介。
講演:継続的インテグレーションって実際どう導入するの
- 今日の話
- 継続的てどう導入するの?
- 導入した経験を元に実際の導入方法について話そうと思います。
- 導入したい人向けなので、利点の話とかはあまりしない。
- CIとは
- アジャイルサムライの定義 277p
開発者がソフトウェアに加えた変更を取り込んで、ソフトウェア全体として統合する作業を途切れなく続けていく取り組みの事
-
- ツールではなく、プラクティスの事。
- コミットするたびに結合。
- コミット
- チェックアウト・クローン
- ビルド
- テスト
- インスペクション
- 開発者を交え、フィードバックを得て行くサイクル
- 一連の流れの作業について、何を利用しても良い
- (例)Javaの場合
- (例)Ruby on Railsの場合
- まずは説得が大事
- 何をするにも味方の存在が重要
- 見込みのある同僚を確保し、次の本を与えよう
- 作者: Chad Fowler,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2010/02/26
- メディア: 単行本(ソフトカバー)
- 購入: 24人 クリック: 683回
- この商品を含むブログ (126件) を見る
- 作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未
- 出版社/メーカー: オーム社
- 発売日: 2011/07/16
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 1,991回
- この商品を含むブログ (257件) を見る
継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化
- 作者: David Farley,Jez Humble,和智右桂,高木正弘
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2012/03/14
- メディア: 大型本
- 購入: 24人 クリック: 567回
- この商品を含むブログ (53件) を見る
-
- 出来れば上司とも掛け合い、同僚や上司にCIサーバ用マシンを用意してもらえるよう頑張って。
- CIマシンの確保
- 型落ちのPCやVMで問題ない、
- プロジェクトごとに必要なスペックは違うが、目安にすればいいだろう。
- CPU/その時のもの
- メモリ/1.5G
- 容量30GB
- とろたーさん自身、仮想環境を使うことが多い。
- EC2とか使う場合は毎晩落としている。
- CIマシンの注意点
- ビルドとテストの実行に必要なソフトウェアをすべてインストールする必要がある。
- .NETの場合とか、結構掛かる。
- ライセンスの確保頑張ってください。
- テスト実行する都合上、デプロイするマシンと(OSレベルで)同じ構成にするのが好ましい。
- インストールするソフトウェアもデプロイ環境に合わせること。
- ビルドの自動化
- CIサーバ構築
- 確保したCI用マシンにサーバをセットアップする。CIサーバにはJenkinsを使う。
- Jenkinsのインストールには用意された手法を用いて導入するのがオススメ。
- 開発ツールのインストール
- バージョン管理システム(Mercurial,Git)
- 開発ツール、ビルドツール(Msbuild,Gradle)
- バージョンマネージャー(rvm, pythonbrew)
- サーバ群(Mysql, mongodb, memcached)
- ジョブの作成2
- メンバーの教育
- VCSを変更する場合は説明会を開催する。
- 最近だとscmbcの資料があるのでそれを利用するのが良い。
- ハンズオンの開催も効果的。みんなで覚えようとするのが大事。
- VCSの効果的な使い方
- 1.一度に1つの変更を行う
- 問題の箇所がすぐわかる
- 2.コミット前、プッシュ前にテストを動かす
- ソースツリーを壊さない、迷惑をかけない
- 3.DVCSの場合は)履歴改変方法を覚える
- 変更点をより論理単位に出来る
- 必須ではないがだんだん必須になってくる
- 1.一度に1つの変更を行う
- テストの書き方
- 書き方を共有する。
- モデルのテスト
- コントローラのテスト
- ビュー・テンプレート
- モックの作り方
- DBと結合する場合
- フィクスチャ・テストデータの管理
- 書き方を共有する。
- テストの書き方の注意点
- 全部終わった後は?
- 改善点はたくさんある。次の事をやりましょう。
- テストコードの充実,理ファクタリング
- Lintやカバレッジの実行
- ドキュメントのビルド
- 通知の工夫
- よくある質問
-
- [Q].途中から導入したい時は?
- 上司、お客さんを説得してCIサーバ構築の為の作業をスケジュールに組み込む、。
- [Q].途中から導入したい時は?
-
- [Q].初めてCIサーバを構築するのですが不安です。時間も掛かります。
- 練習するしか無い。自分で学ばない限り、出来るようにはならない。
- Jenkinsならダウンロード含め1時間で立つよ。
- [Q].初めてCIサーバを構築するのですが不安です。時間も掛かります。
-
- [Q].対象言語のビルドツールに習熟していないのですが...
ggrks習熟するしか無い。- CIは種々の知識が無いと何も出来ない。
- 頑張ってください。
- ビルド職人が居るのはまだ幸せなプロジェクト
- やはり、この辺りの習熟コストは高い。
- [Q].対象言語のビルドツールに習熟していないのですが...
-
- [Q].どんなプロジェクトでも導入すべき?
- 理想としては導入すべき。
- だが、場合によってはかけたコストを回収できない可能性も。
- 3ヶ月以上、開発者?人位の中規模程のプロジェクトなら十分回収できるので試すと良い。
- [Q].どんなプロジェクトでも導入すべき?
- 発展課題(詳細は資料をご参照ください。)
- まとめ
- 一歩一歩進めれば継続的インテグレーションは必ず導入できる。
- 導入すると道がひらける。
この辺りの環境を導入し、広めて行くのって割と長い道のりであり、手順として表に多く出てきているものでもないと思うので、順を追って流れを追えるというのはとても助かりますね。大いに参考にさせて頂こうと思います。
座談会
今回の読書対象範囲は第15章。Takeshi KOMIYA(TwitterID:@tk0miya)さんによるファシリテートの元、ディスカッションが進められて行きました。
第15章 継続的インテグレーション:リリースに備える 15.1 ショータイム 15.2 リリースに備える文化 15.3 継続的インテグレーションとは 15.4 どうすればうまくいくのか? 15.5 チェックイン手順を習慣づける 15.6 ビルドを自動化する 15.7 作業単位を小さくする 15.8 この先どこへ向かえばいいのか?
- 15-1.デモの準備を済ませなければならん
- バージョン管理してれば一大事シナリオは無いはず…
- 入れるものを制御出来ないとしっちゃかめっちゃかになる
- 不安なコードの塊の場合、どうする?
- 不安なコードが入らなくなるというタイミングがあると気分が違う
- 勝手に導入できない…交渉の必要がある。
- この状況は悲鳴的、致命的。
- ショートのスパンでデモする際に、準備出来る状況にあるのか?
- いつでも価値を提供する、という視点から見れば大混乱している状況。
-
- 日常茶飯事シナリオ
- 5分に渡る格闘の末…テストは手動(悲劇的シナリオ)
- チェックイン5分…こちらは自動。
- アメリカンドリームなシナリオ?
- 日常茶飯事シナリオ
-
- 理想論と現実論(オンザフライで修正したい)
- 本番サーバのファイルを直に修正をやりたいから自動化をやりたくないんだ...という声もある。
- 作業的に間に合っちゃうよね、という話
- 『色々合ったけど上手く行ってよかったね〜』という点に着地してしまう人も居る。
- トラブルが起きた時にサーバ上のものをアドホックで直すのはあり。だがそれをバージョン管理してないのはNG。(※クビか減給モノだろ!)
- 例外ケースも有ると思うが、普段の作業は安全側に倒さないと行けない。
- 組織やチームではなく個人の判断でその辺りの作業判断を決められてしまう?
- 変更したものをバージョン管理してないのなら、バージョン管理使わないほうがいいんじゃない?
- バージョン管理しない、避けるような人はチケット管理等も避ける傾向がある。(そういう人たちの考えって)治るのか?
- 理想論と現実論(オンザフライで修正したい)
- 15.2 リリースに備える文化
- リリースの習慣を身につけるのは簡単なことでは無い。
- 15.4 どうすればうまくいくのか?
-
- コミット頻度・粒度に関する議論
- コミット前・後何時にレビューをするかの議論
- ブランチを切ってレビューをすれば?
- ブランチの話はもう辞めてくれ…(心の叫び)
- svnのまま頑張るなら、hg-subversion等のツールを使って頑張った方がいいのでは?
- 15.5 チェックイン手順を習慣づける
- 習慣づけましょう!
- ビルドを大事に…壊す人についての議論
- 『ドラクエ(の作戦)みたい』
- 壊すようなものについてはどうすべきか/スキップさせるべきか無視か。
- Task Scanner Plugin - Jenkins - Jenkins Wiki
- TODO, FIXMEといったコメントを読み込んで結果表示するプラグイン。
- オススメです!
- 言語を選びません。
-
- テストファーストとTDDの話
- テスト結果を二分探索
- JapaneseBisectExtension - Mercurial
- 二分探索(O(log(n)))を用いてバグ探しの手間を軽減。
- Red-green-refactaringの流れの中で、どこでプッシュすべきか?
- ビルドが壊れないようなプッシュ方法をおすすめします。
- コミット溜めてしまえる、長時間掛かるようなものでなくても想定する状況は発生する。
- テストコードを書いてないとbisectは常に成功してしまう。
- 失敗したものを見つけていくものなので
- テストファーストとTDDの話
- 15.7 作業単位を小さくする
- 『一般的なプラクティスだ』…一般的...なの?
- 作業単位を小さくする…機能リリースとの兼ね合い
- ブランチ戦略によって対応?
LT
ここからはLT祭り。計3名の方によるLTセッションが行われました。LTという割には結構皆さんボリュームがあったような気も。:-)
LT:継続的インテグレーション3分クッキング
- 継続的インテグレーション3分クッキング
- View more PowerPoint from Takayuki Kondou
『JenkinsとMercurialを使って、ビルドやテストが通ったものだけを中央リポジトリにpushする』環境について、諸々の解説を交えながらハンズオン形式で進めて行く、というもの。環境的には以下のような構成でした。(詳細は既にスライド資料が上がっているため割愛)
- Jenkins
- Mercurial/TortoiseHG
- Python
- Apache
- Visual Studio 2010 Express
LT:History of Waterfall(増補改訂版)
- History_of_waterfall_append
- View more presentations from Shin Semiya
以前、『アジャイルサムライ読書会 横浜道場』某回の懇親会にて、闇LT的に発表されたものが元。発表後の反響が大きく、このタイミングでボリューム増&再演となりました。初出典版はこちら。
こちらのメモについても、前回の資料もあったりスライド資料が既にUPされているのもあるので割愛します。
LT:継続的デリバリー単報(環境編)
継続的デリバリーの内容に感銘を受け、実際に環境構築を行った内容についての調査結果・まとめ的なLT。こちらも非常にてんこもり、充実の内容で、LT時間枠では収まらず懇親会でも続きを行うほどでした。
内容については未完・調査中の部分もあるため、資料公開については後日まとまった時点で、という事です。Chef等を使った自動化の部分も多々あるため、内容の公開が非常に待ち遠しいLTでした。以下ざっくりメモ。
- 自己紹介
- Block-diagの中の人
- Sphinx-users.jpのエライ人
- 新宿道場 道場主補佐(通称:ヒラ)
- お知らせ:
- pycon jp 2012 9/15-17
- SphinxCon Jp 2012も併催しています。
- 誰か継続的デリバリーの探求、一緒にやりませんか?
- 問題
- 開発環境が壊れた。再構築が面倒
- 歴史的経緯であの環境だけXX
- 環境つくり用の手順が複雑
- 新入りさん、初日は環境構築ね!
- 余計なコストを減らそう!
- 目標
- 環境をバージョン管理せよ
- 開発/本番環境構築の自動化
- 楽したい
- 継続的デリバリーに感化されまくり
- 目標
- 利用するソフトウェア
- chef(chef-solo)
- 環境構築ソフトウェア
- パッケージ、設定を自動的に最新に保つ
- 今回はchef-soloのみ、serverは使わない
- vagrant
- virtual boxの管理ソフトウェア
- chef(chef-solo)
- Chef+Vagrantによる環境構築
- 開発環境
- 本番環境
- Chefで環境構築
- アプリのデプロイは別途capistranoで!
懇親会
本編終了後、そのまま同じ場所で懇親会へ。会の途中では小宮さんのLT後半戦であったり、各自KPTの内容を元にふりかえりを実施(当エントリTOP画像もその時のもの)したりとこちらも内容盛り沢山、和気あいあいとした雰囲気で過ごすことが出来ました。
14時から始まり懇親会が終わったのが21時。計7時間(本編4時間、懇親会3時間)の超長丁場! 内容も濃かったので、終わったころにはだいぶぐったりしていました...(^_^;)(笑) 新宿道場の皆さん、毎回この規模で道場参加をされてきたのはスゴイの一言ですね。
これまで参加してきた(道場の)中では、技術的な側面の話が多かったのも印象的でした。Jenkins周りについては職場や個人的なプロジェクトで利用し、使いこなしたい部分でもありますし、Chef等のサーバ作業自動化についても、先日自宅鯖を移行すべくさくらVPSを契約したのもあり、サーバ構築自動化作業に関してもこの辺の技術を使って実現・効率化出来ればなぁ〜と淡く思ってたりします。(まぁ淡くなので自動化自体は何時になるか分かりませんがw)
当初次回(最終回)開催は9/1(土)と言う予定のようでしたが、懇親会での流れで行くとどうやら8月にも第9回が開催される雰囲気。(9/1開催が第10回:最終回?) 新宿道場も残りあとわずかですが、興味のある方は是非参加してみてはいかがでしょうか。
その他関連: