継続的インテグレーション を軽く紹介
DESCRIPTION
継続的インテグレーションを軽く紹介します。TRANSCRIPT
継続的インテグレーション
比較的 新しいソフトウェア開発手法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日水曜日