475 Views
April 22, 14
スライド概要
2014年4月22日に開催された 28th Embarcadero Developer Camp 【A5】のセッション資料です。
継続的インテグレーションから継続的デリバリーへの本質とコスト構造の変化、RAD Studio と Atlassian での実践について。
お問い合わせ:
https://www.servantworks.co.jp/contact/
[email protected]
RAD Studio で実践する 継続的インテグレーション アプリとデベロッパーの価値 を拡張するエッセンス 長沢 智治 テクニカル エバンジェリスト アトラシアン株式会社 re-workstyle.com @tomohn
アプリとデベロッパーの価値
ビジネスとアプリケーションの進化 90s 00s Business 10s Business Business Apps Apps Apps C/S ✓ コード品質 ✓ 開発者中心 ✓ 分業 Web サービス ✓ サービス品質 ✓ 開発チーム中心 ✓ 分業から協調 マルチデバイス + サービス ✓ ビジネス品質 ✓ 開発と運用 ✓ 協調
ビジネスを駆動するアプリケーションへ BUILD LEARN Business Apps MEASURE 創造 | 成果 | 変革
ビジネスを駆動するプラクティス Feedback loop Deployment 継続的デリバリー Small Batch Production Ready Acceptance Test DevOps Business DVCS Design for Operations Apps Retrospective Burn down Value Up DoD Scrum MTTR Customer needs Service Desk Cloud Cycle Time Agile Time Box Backlog Task Board eXtreme Programing TDD CI Pair Programming
C ontinuous Integration 継続的インテグレーション
継続的インテグレーション CI: Continuous Integration アプリケーション作成時の 品質改善や納期の短縮のための習慣のことです。 ウィキペディア XP のプラクティスの一つでビルドやテスト、 インスペクションなどを継続的に実行していく ことを意味する。
品質改善 納期の短縮 継続的 ビルド 習慣
習 慣 ソフトウェア開発における心臓はなにか? チームの循環器はなにか?
ソフトウェア開発 〜 アイデアを価値に転換する Software Delivery
開発とビルドのリズムとコスト Develop Build 1 : 10 : 100 の法則 1 ✓ 開発: コスト × ✓ ビルド: コスト × 10 ✓ テスト: コスト × 100 テストを書こう!頻繁にコミットしよう! (DVCS)
開発とビルドのリズムとコストの蓄積 Develop Build 1 : 10 : 100 の法則 ✓ 開発: コスト × 1 ✓ ビルド: コスト × 10 ✓ テスト: コスト × 100
開発とビルドのリズムとコストの改善 Develop Build 1 : 10 : 100 の法則 1 ✓ 開発: コスト × ✓ ビルド: コスト × ✓ テスト: コスト × 1 10 10 100 継続的ビルドによる品質改善とデリバリーの短縮
開発とビルドのリズムからデプロイのリズムへ Develop Build Deploy 1 : 10 : 100 の法則 ✓ 開発: コスト × ✓ ビルド: コスト × ✓ テスト: コスト × 1 1 10 10 100 ✓ デプロイ: コスト ×100
開発とビルドのリズムからデプロイのリズムへ Develop Build Deploy DEVELOPMENT TESTING PRODUCTION
開発とビルドのリズムからデプロイのリズムへ Develop Build Deploy DEVELOPMENT TESTING ! PRODUCTION !
開発とビルドのリズムからデプロイのリズムへ Develop Build Deploy DEVELOPMENT TESTING ! PRODUCTION
開発とビルドのリズムからデプロイのリズムへ Develop Build Deploy ! DEVELOPMENT ! TESTING ! PRODUCTION
開発者のコード変更は直接デリバリーへ Develop Build Deploy 継続的インテグレーション VCS + CI (+BTS/ITS) ! アイデアとバグを コードに転換 DEVELOPMENT ! TESTING ! デプロイの自動化 リリース管理 手を抜けないコード の品質の作りこみ PRODUCTION フィードバックの 収集と適切な反映
開発者のコード変更は直接デリバリーへ Develop Build Deploy ! 1 : 10 : 100 の法則 DEVELOPMENT ✓ 開発: コスト × ! TESTING ✓ ✓ ✓ 1 1 ビルド: コスト × 10 PRODUCTION 5 テスト: コスト × 100 10 デプロイ: コスト ×100 !
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! 開発者同士: DEV ITS/BTS VCS TEST PROD CI チーム同士: 開発者と、 • デザイナー • テスター • マネージャー ITS/BTS 利害関係者: 開発チームと、 • 企画 • 運用 • 顧客 ITS/BTS DEPLOY
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! 開発者同士: DEV ITS/BTS VCS TEST PROD CI チーム同士: 開発者と、 • デザイナー • テスター • マネージャー ITS/BTS 利害関係者: 開発チームと、 • 企画 • 運用 • 顧客 ITS/BTS DEPLOY
アトラシアン製品にみる 開発支援ツールの進化とカバー範囲
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! 開発者同士: DEV DVCS リポジトリ 継続的インテグレーション 技術依存しない自動ビルドツール ビルド管理 開発者と、 • デザイナー • テスター • マネージャー BST / ITS: 要求、バグ、タスクの追跡, 変更管理 利害関係者: ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない 開発チームと、 • 企画 • 運用 • 顧客 PROD DVCS クライアント 無償のデファクトスタンダード チーム同士: TEST コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
RAD Studio + Atlassian 製品での 継続的インテグレーション Demo
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! 開発者同士: DEV DVCS リポジトリ 継続的インテグレーション 技術依存しない自動ビルドツール ビルド管理 開発者と、 • デザイナー • テスター • マネージャー BST / ITS: 要求、バグ、タスクの追跡, 変更管理 利害関係者: ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない 開発チームと、 • 企画 • 運用 • 顧客 PROD DVCS クライアント 無償のデファクトスタンダード チーム同士: TEST コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy RAD Studio (Delphi, C++Builder) でのテスト ! ! 開発者同士: チーム同士: 開発者と、 • デザイナー • テスター • マネージャー 利害関係者: 開発チームと、 • 企画 • 運用 • 顧客 ✓ テスト容易性の高い設計と実装 TEST(MVC, PROD MVVM) DEV ✓ ビューとロジックの分離 ✓ デバッグ実行 ≠ テスト ✓ テスティング フレームワークの活用 ✓ DUnit DVCS クライアント ✓ DUnitX 継続的インテグレーション 無償のデファクトスタンダード 技術依存しない自動ビルドツール ✓ DUnit ビルド管理 DVCS リポジトリ✓ DUnit: xUnit 互換の Delphi ユニットテスト 継続的デプロイメント コードレビューや連携可能 自動デプロイとデプロイ状況の管理 なリポジトリ管理 ✓ RAD Studio で標準搭載 ✓ IDE からのテスト実行に特化 BST / ITS: 要求、バグ、タスクの追跡, 変更管理 ✓ GUI とコマンドライン実行 ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 ✓ テスト結果は対話的 (ログなし) 開発者とアプリの価値をわかりやすく示すのに欠かせない ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy DUnit でのテストの作成 ! ! 開発者同士: ウィザードによるテストの作成 DEV DVCS リポジトリ 継続的インテグレーション 技術依存しない自動ビルドツール ビルド管理 開発者と、 • デザイナー • テスター • マネージャー BST / ITS: 要求、バグ、タスクの追跡, 変更管理 利害関係者: ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない 開発チームと、 • 企画 • 運用 • 顧客 PROD DVCS クライアント 無償のデファクトスタンダード チーム同士: TEST コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop ! Build Deploy DUnit でのテストロジックの記述 開発者と、 • デザイナー • テスター • マネージャー procedure TestTCalc.TestAdd_Case1; var TEST PROD DEV _result : System.Integer; y: System.Integer; x: System.Integer; begin DVCS クライアント テスト対象の実行 無償のデファクトスタンダード 継続的インテグレーション x := 1; 技術依存しない自動ビルドツール y := 1; ビルド管理 DVCS リポジトリ 継続的デプロイメント コードレビューや連携可能 _result := aTCalc.Add(x, y); 自動デプロイとデプロイ状況の管理 なリポジトリ管理 CheckEquals(x+y, _result); end; BST / ITS: 要求、バグ、タスクの追跡, 変更管理 利害関係者: ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない ! 開発者同士: チーム同士: 開発チームと、 • 企画 • 運用 • 顧客 テスト対象の検証 ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy DUnit でのテストの実行 ! ! 開発者同士: テストの実行 TEST PROD DVCS クライアント 無償のデファクトスタンダード チーム同士: DEV DVCS リポジトリ 継続的インテグレーション 技術依存しない自動ビルドツール ビルド管理 開発者と、 • デザイナー • テスター • マネージャー BST / ITS: 要求、バグ、タスクの追跡, 変更管理 利害関係者: ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 テスト結果がファイルに出力できない 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない = 継続的インテグレーションで検証困難! 開発チームと、 • 企画 • 運用 • 顧客 コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build XMLTestRunner2.pas の読み込みにより ! NUnit 互換ファイルを出力 ! 開発者同士: チーム同士: Deploy DUnit でのテストロジックの記述 TEST PROD DEV unit TestTCalcUnit; interface uses TestFramework, …, XMLTestRunner2; DVCS クライアント 無償のデファクトスタンダード type 継続的インテグレーション 技術依存しない自動ビルドツール // テストメソッド ビルド管理 DVCS リポジトリ 開発者と、 • デザイナー • テスター • マネージャー BST / ITS: 要求、バグ、タスクの追跡, 変更管理 利害関係者: ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない 開発チームと、 • 企画 • 運用 • 顧客 コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 Initialization RegisterTest (TestTCalc.Suite); ! With XMLTestRunner2.RunRegisteredTests do Free; ライブ ドキュメント共有 end. 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! 開発者同士: 1 DEV 開発者と、 • デザイナー • テスター • マネージャー 利害関係者: 開発チームと、 • 企画 • 運用 • 顧客 PROD 企画、アイデアの顕在化と実施計画 DVCS クライアント 無償のデファクトスタンダード チーム同士: TEST 2 継続的インテグレーション 技術依存しない自動ビルドツール ビルド管理 プロジェクト計画とタスクの割り出し DVCS リポジトリ コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 BST / ITS: 要求、バグ、タスクの追跡, 変更管理 ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! DEV 開発者同士: 開発者と、 • デザイナー • テスター • マネージャー 利害関係者: 開発チームと、 • 企画 • 運用 • 顧客 PROD DVCS クライアント 無償のデファクトスタンダード チーム同士: TEST 3 継続的インテグレーション 技術依存しない自動ビルドツール ビルド管理 開発作業の ”起動” DVCS リポジトリ コードレビューや連携可能 なリポジトリ管理 継続的デプロイメント 自動デプロイとデプロイ状況の管理 4 BST / ITS:開発の実施 要求、バグ、タスクの追跡, 変更管理 ドキュメントやソースコードの変更要素 (Issues) の追跡と管理 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない ライブ ドキュメント共有 5 継続的インテグレーション 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化
開発者とアプリ、要求とコードとビルドをつなぐ Develop Build Deploy ! ! DEV 開発者同士: 開発者と、 • デザイナー • テスター • マネージャー 開発チームと、 • 企画 • 運用 • 顧客 PROD DVCS クライアント チーム同士: 利害関係者: TEST ! 無償のデファクトスタンダード 継続的インテグレーション DVCS リポジトリ 技術依存しない自動ビルドツール ビルド管理 DEV コードレビューや連携可能 なリポジトリ管理 自動デプロイとデプロイ状況の管理 継続的デプロイメント BST / ITS: 要求、バグ、タスクの追跡, 変更管理 ! ! ! ドキュメントやソースコードの変更要素 (Issues) の追跡と管理TEST 各種の成果物の粒度の調整と各成果物をつなぐ重要な役割 開発者とアプリの価値をわかりやすく示すのに欠かせない ライブ ドキュメント共有 企画や仕様書を陳腐化させない。ドキュメントから協調、思考と経験の形式知化 チーム内外のコミュニケーション インフラ タイムラインでアクティビティを通知、対処の円滑化 PROD
関連リソース Delphi と DUnit での継続的デリバリーについて http://re-workstyle.com/articles/continuous-integration-with-delphi-and-dunit/ RAD Studio での Git 利用について http://re-workstyle.com/articles/rad-studio-git/ DUnit の概要 http://docwiki.embarcadero.com/RADStudio/XE5/ja/DUnit̲%E3%81%AE %E6%A6%82%E8%A6%81 DUnit での NUnit 互換結果ファイル出力 (XMLTestRunner2.pas) http://cc.embarcadero.com/Item/28239 DUnitX http://www.finalbuilder.com/Resources/Blogs/PostId/697/introducing-dunitx
about Atlassian
We ♡ Software
Atlassian Solution ビジネス / 企画 We 開発 / テスト ♡ Software チーム / マネージメント 運用 / ビジネス
ユニークなビジネスモデル We ♡ ビジネス モデル Software 成長し続ける ✓ 営業 0 名 ✓ 枯れた分野で急成長 ✓ エキスパートによる付加価値 ✓ ユーザーの支持が母体 ✓ 開発にフォーカス ✓ イノベーションへの貢献
アトラシアンの文化を体験しに、遊びに来てください! マリノスタウン内 Google Maps: 「アトラシアン」 最寄り駅: 各線 横浜駅から徒歩 10分 みなとみらい線 新高島から徒歩 5 分
アトラシアンの文化を体験しに、遊びに来てください! We ♡ Software
アトラシアン製品 10 ユーザー $10 から スターターライセンスは、全額をチャリティーに寄付 無償提供 OSS コミュニティや、クラスルームに無料で提供 We Software 全製品を無料で評価 ♡ 30日フル機能を評価 オンプレミスとクラウド ダウンロード版とオンデマンド版を提供
無料で講演いたします 出張セミナーなどお気軽にご連絡ください。 メール: [email protected] @tomohn Facebook: Tomoharu.Nagasawa Twitter: