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

Post on 28-May-2015

1.134 views 2 download

description

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

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

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

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

13年2月20日水曜日

旧世代の手法

V字モデル

13年2月20日水曜日

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

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

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

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

5.

13年2月20日水曜日

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

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

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

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

5. 開発頓挫

13年2月20日水曜日

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

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

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

• 品質向上

13年2月20日水曜日

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

開発者

コミット

監視実行

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

13年2月20日水曜日

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

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

13年2月20日水曜日

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

13年2月20日水曜日

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

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

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

13年2月20日水曜日

ループ

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

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

13年2月20日水曜日

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

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

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

• 品質向上

13年2月20日水曜日

実際に試してみた

13年2月20日水曜日

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

第3問の答案コード

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

13年2月20日水曜日

13年2月20日水曜日

テストコード

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

• JUnitを使う。

13年2月20日水曜日

13年2月20日水曜日

ビルド・テストの自動化

• Ant を使う。

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

13年2月20日水曜日

build.xml

13年2月20日水曜日

GitHubに上げる

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

13年2月20日水曜日

CIサーバと連携

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

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

13年2月20日水曜日

Travis CI の設定画面

13年2月20日水曜日

準備OK

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

• GitHubにUPすると、

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

13年2月20日水曜日

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

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

13年2月20日水曜日

修正し、待つこと数十分

これで安心

13年2月20日水曜日

まとめ

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

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

13年2月20日水曜日