継続的インテグレーション を軽く紹介

25
継続的インテグレーション 比較的 新しいソフトウェア開発手法 Linoal 2013/02 13220日水曜日

Upload: tomoki-suzuki

Post on 28-May-2015

1.134 views

Category:

Technology


2 download

DESCRIPTION

継続的インテグレーションを軽く紹介します。

TRANSCRIPT

Page 1: 継続的インテグレーション を軽く紹介

継続的インテグレーション

比較的 新しいソフトウェア開発手法Linoal 2013/02

13年2月20日水曜日

Page 2: 継続的インテグレーション を軽く紹介

旧世代の手法

V字モデル

13年2月20日水曜日

Page 3: 継続的インテグレーション を軽く紹介

V字モデルの問題点1. コーディング時にバグを洗い出せない

2. テストで大量のバグが発現

3. どこがバグの元か検討がつかない

4. ソフトが全く動かない状態が続く

5.

13年2月20日水曜日

Page 4: 継続的インテグレーション を軽く紹介

V字モデルの問題点1. コーディング時にバグを洗い出せない

2. テストで大量のバグが発現

3. どこがバグの元か検討がつかない

4. ソフトが全く動かない状態が続く

5. 開発頓挫

13年2月20日水曜日

Page 5: 継続的インテグレーション を軽く紹介

継続的インテグレーションでは• 作ったその日にバグ発見

• 最新の動作するバージョンを何時でも誰でも取り出せる

• デバッグ時間が大幅軽減

• 品質向上

13年2月20日水曜日

Page 6: 継続的インテグレーション を軽く紹介

継続的インテグレーションの構成例

開発者

コミット

監視実行

フィードバック、デプロイ

13年2月20日水曜日

Page 7: 継続的インテグレーション を軽く紹介

開発者とバージョン管理システム開発者:コードとそれを検証するテストコードをコミット(UPする)。

バージョン管理システム:開発者全員の変更差分を記録。いつでも皆のソースを確認できる。

13年2月20日水曜日

Page 8: 継続的インテグレーション を軽く紹介

インテグレーションサーバインテグレーションサーバ:バージョン管理システムを監視し、変更があればビルド・インスペクション・テスト・フィードバックを自動で行う。

13年2月20日水曜日

Page 9: 継続的インテグレーション を軽く紹介

Jenkinsの画面例• テストや解析の結果がグラフで分かる。

• いつでも最新のビルド結果を取り出せる。

• エラーが起きたらメールなどの通知ですぐ分かる。

13年2月20日水曜日

Page 10: 継続的インテグレーション を軽く紹介

ループ

• テストもビルドも自動化されているので

• 毎日のようにこのサイクルを回せる

13年2月20日水曜日

Page 11: 継続的インテグレーション を軽く紹介

そして得られる恩恵• 作ったその日にバグ発見

• 最新の動作するバージョンを何時でも誰でも取り出せる

• デバッグ時間が大幅軽減

• 品質向上

13年2月20日水曜日

Page 12: 継続的インテグレーション を軽く紹介

実際に試してみた

13年2月20日水曜日

Page 13: 継続的インテグレーション を軽く紹介

元となるソース• プログラミングコンテスト AtCoder012

第3問の答案コード

• 5目並べの譜面が正しいか判別せよ

13年2月20日水曜日

Page 14: 継続的インテグレーション を軽く紹介

13年2月20日水曜日

Page 15: 継続的インテグレーション を軽く紹介

テストコード

• 「この関数にこれを与えたら、これが返ってくるはずだ」というケースを数パターン書く。

• JUnitを使う。

13年2月20日水曜日

Page 16: 継続的インテグレーション を軽く紹介

13年2月20日水曜日

Page 17: 継続的インテグレーション を軽く紹介

ビルド・テストの自動化

• Ant を使う。

• Antって?MakeFileの上位互換みたいなもの。xml記法で書く。

13年2月20日水曜日

Page 18: 継続的インテグレーション を軽く紹介

build.xml

13年2月20日水曜日

Page 19: 継続的インテグレーション を軽く紹介

GitHubに上げる

• こちらで見れますhttps://github.com/linoal13f/AtCoder012

13年2月20日水曜日

Page 20: 継続的インテグレーション を軽く紹介

CIサーバと連携

• Jenkinsを使うには、自分でサーバを立てる。

• Travis CI ならクラウドで手軽!

13年2月20日水曜日

Page 21: 継続的インテグレーション を軽く紹介

Travis CI の設定画面

13年2月20日水曜日

Page 22: 継続的インテグレーション を軽く紹介

準備OK

• プログラムに変更を加え、

• GitHubにUPすると、

• メールでフィードバックが来る

13年2月20日水曜日

Page 23: 継続的インテグレーション を軽く紹介

メールで送られたフィードバック

ビルドエラーがあることが判明

13年2月20日水曜日

Page 24: 継続的インテグレーション を軽く紹介

修正し、待つこと数十分

これで安心

13年2月20日水曜日

Page 25: 継続的インテグレーション を軽く紹介

まとめ

• 継続的インテグレーションでバグレス開発

• 古い開発手法に固執する企業は疑おう

13年2月20日水曜日