CI boot camp

>100 Views

October 26, 12

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

CI Boot Camp

2.

こんにちは

3.

一番最初に大切なコト • 会場を提供してくれた長久さんNIIさん、 ありがとう • 企画してくれた粉川さん、ありがとう • 参加してくれたみなさん、ありがとう

4.

ゲーム開発環境勉強会 • Facebookグループを中心に活動 – http://www.facebook.com/groups/189611231110905/ • CEDEC2011「ゲーム開発効率化/品質向上 ラウンドテーブル」の後に発足 • 1年間で4回の勉強会(今回除く)を開催

5.

新しいものが続々と!

6.

競争の激化

7.

何をよりどころに すれば良いの

8.

これからの開発に必要なコト • 価値の創造 – UX、… • 素早い具現化 – Agile 本日のテーマ

9.

アジャイルを実際に行うには • プロセス • ツール

10.

アジャイル 三種の神器 • SCM: Software Configuration Management – ソフトウェア構成管理(ツール) • Git, SubVersion, … • BTS: Bug Tracking System – バグ管理システム • Redmine, Trac, JIRA, … • CI: Continuous Integration – 継続的統合(ツール) • Jenkins, Travis CI

11.

というのは建前で

12.

妄想 TDD Boot Camp SCM Boot Camp Agile Boot Camp Scrum Boot Camp やりたい!

13.

妄想 TDD Boot Camp SCM Boot Camp Agile Boot Camp Scrum Boot Camp 何かが足りない…

14.

妄想 TDD Boot Camp SCM Boot Camp Agile Boot Camp CI Boot Camp Scrum Boot Camp

15.

CIBCとは • CIを手を動かして体験してもらうことで、 本を読むよりも深く理解してもらう場 • ただし、与えられた課題をこなすだけでなく – 自分の現場でどのように応用できるか 考えて下さい – 他の方と議論してください

16.

CIとは?

17.

バグを出したことが ない人?

18.

今日の対象者 ではないので お帰り下さい

19.

バグを防ぎたいとは 思いませんか? 品質を高めたいとは 思いませんか?

20.

あるんです 銀の弾丸 が となり得るもの

21.

バグを防ぐには⇒ なるべく早くバクを 見つけて退治する 品質を高めるには⇒ なるべく早くフィードバックを もらって改善する

22.

CI (Continuous Integration) • 継続的インテグレーション(統合) – 常にソフトウェアを統合しておくことで、モジュー ル間の不整合を最小限に留め、品質を向上する 手法 • ビルド • テスト • 静的解析 – 自動化できる部分は自動化しておくことで、バグ を早期に発見し、不具合を未然に防ぎやすくする

23.

継続的デリバリー • CIをデプロイ(製品出荷)まで進める – 何時でも使えるものが出荷できる • バグは使われる時間が多いほど発見されやすい • 早期提供、早期フィードバック – 新しいアイデアがすぐに実現できる – ムダな昨日の作り込みを排除 • 自動化されたデプロイ – リリース作業でのヒューマンエラーの削減 • 焦っても大丈夫 – 価値を生む仕事に専念 – デプロイメント職人が不必要になる

24.

継続的デリバリーで得られる物 • 堅実な開発 – バグを事前に見つけやすい安心感 – 最新版の動作が実感できる安心感 • 通常は直前の状態に戻しやすい – 何時でも見せられるものがある安心感 • 偉い人は突然やってくる – すぐに中止の判断も出来る • 金の垂れ流しを防止して、すばやいリカバリー

25.

従来のデプロイ SCM デプロイ先 誰かがビルド 誰かが置く コンパイラ

26.

継続的インテグレーション1 失敗したら通知 メール CIサーバー ①SCMの更新を監視 or 定期的に取得 SCM ②ビルド ③実行ファイル を渡す コンパイラ

27.

継続的インテグレーション2 失敗したら通知 メール CIサーバー ①SCMの更新を監視 or 定期的に取得 SCM ②ビルド ④テストを実行 ③実行ファイル を渡す Unit test コンパイラ

28.

継続的デリバリー1 失敗したら通知 メール CIサーバー ①SCMの更新を監視 or 定期的に取得 ⑤ビルド、テストが 成功なら配布 SCM ⑤ビルド、テストが 成功ならコミットに目印 ④テストを実行 ②ビルド ③実行ファイル を渡す Unit test コンパイラ デプロイ先

29.

継続的デリバリー2 BTS 失敗したら通知 失敗したらバグチケット作成 メール CIサーバー ①SCMの更新を監視 or 定期的に取得 ⑤ビルド、テストが 成功なら配布 SCM ⑤ビルド、テストが 成功ならコミットに目印 ④テストを実行 ②ビルド ③実行ファイル を渡す Unit test コンパイラ デプロイ先

30.

登場人物たちの補足 (1/3) Git • 分散バージョン管理システムの1つ – ローカルでみんなが同じコピーを所有 – ブランチ変更が高速なため多用しやすい – みんなもいるし何とかなりやすい • Linus Torvalds が初期開発者

31.

Gitの使い方 • 使い方の一例 feature, story, fix, topic, .. 機能等の価値ある単位での個別開発 機能開発開始: git branch story/#番号 git checkout story/#番号 機能開発終了: git checkout develop git merge --no-ff story/#番号 develop 主要開発ソース リリース、デプロイ: git checkout master git merge --no-ff develop master 最新製品と同じソース

32.

登場人物たちの補足 (2/3) Google test • C++ Unit Test フレームワークの1つ – http://opencv.jp/googletestdocs/index.html – EXPECT_EQ(期待値, 実行結果)等で正しいか判断 • EXPECT_TRUE, EXPECT_FALSE • EXPECT_EQ, EXPECT_NE, EXPECT_LT, EXPECT_LE, EXPECT_GT, EXPECT_GE • EXPECT_STREQ, EXPECT_STRNE, EXPECT_STRCASEEQ, EXPECT_STRCASENE • ASSERT(エラーで停止), EXPECT(エラってもそのまま実行)

33.

登場人物たちの補足 (3/3) ALMinium – BTSの1つであるRedmineを利用(プラグイン追加)して ALM(Application Lifecycle Management)を実現する ためのツール – BTS • チケット発行、ステータス管理で作業タスクを管理 – – – – – – 新規 進行中 解決 フィードバック 終了 (却下)