Más contenido relacionado
Similar a CIBC workshop by imagire (20)
Más de Takashi Imagire (20)
CIBC workshop by imagire
- 1. CI Boot Camp
ワークショップ1
今給黎 隆
http://www.slideshare.net/imagire/cibc-workshop-by-imagire
今回のワークショップには罠が仕掛けてあります。
この通り試しても失敗しますので注意してください。
ま、間違っていたのを直すのが面倒くさいからってわけじゃないんだから!
- 2. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 3. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 13. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 26. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 41. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 55. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
– 生成されたファイルを配る
– 成功したビルドをマスターにコミット
– Gitのpushによりjenkinsを走らせる
– エラーをメールで通知する
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 65. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
– 生成されたファイルを配る
– 成功したビルドをマスターにコミット
– Gitのpushによりjenkinsを走らせる
– エラーをメールで通知する
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 74. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
– 生成されたファイルを配る
– 成功したビルドをマスターにコミット
– Gitのpushによりjenkinsを走らせる
– エラーをメールで通知する
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 84. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
– 生成されたファイルを配る
– 成功したビルドをマスターにコミット
– Gitのpushによりjenkinsを走らせる
– エラーをメールで通知する
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 88. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
– Unitテスト導入計画
– Google Testの組み込み
– Jenkinsでのテストの実行
• アジャイル×チケット駆動×テスト駆動開発
- 96. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
– Unitテスト導入計画
– Google Testの組み込み
– Jenkinsでのテストの実行
• アジャイル×チケット駆動×テスト駆動開発
- 100. ライブラリの作成
• 実はそのままでは
上手くライブラリ
ファイルが作れな
いので、ヘッダファ
イルを修正
http://srz-zumix.blogspot.jp/2012/03/visual-studio-11-beta-google-test.html
- 101. ライブラリ用のプロジェクトファイルの
読み込み
• 「gtest-1.6.0/msvc/ gtest.sln 」を開く
– VCのバージョンが古いもので作られているので、
ソリューションのアップグレードが行われる
- 106. テストプログラムの作成
テストを有効にするフラグ
テストを動かすためのヘッダ
• 「UNIT_TEST」というdefineで ライブラリをリンクする
テスト関数か、普通の処理か
切り替える
• 追加項目
テスト対象の関数
– main関数でのおまじない
グループ名 個別のテスト名
– テスト関数 TEST 等しい?
テスト関数
• 呼び出しは、自動で行われる
– 非テスト関数 Google testを呼び出す
おまじない
– ヘッダとライブラリの読み込み テストしないときは、その後を実行
- 112. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
– Unitテスト導入計画
– Google Testの組み込み
– Jenkinsでのテストの実行
• アジャイル×チケット駆動×テスト駆動開発
- 119. ワークショップ課題
• Gitリポジトリの作成
• Visual Studio プロジェクトの作成
• Gitリポジトリにpush
• Jenkinsによるビルド
• 自動デプロイ
• Unit テスト
• アジャイル×チケット駆動×テスト駆動開発
- 120. アジャイルな開発
• 小さくリリース出来る単位で分解
– ストーリー:一日から数日:ブランチの単位
– タスク:数時間:コミットの単位
• ストーリーは依存性を排除
– UI、ビジネスロジック等の単位で作らずに成果物
を単位とする
• ストーリー、タスクに見積もりを立てて、リリー
ス計画が立てられるようにする
• ストーリーに優先順位を付け、優先順位の高
いものから実装
- 121. チケット駆動開発
• チケットをプロジェクトの情報の中心とする
• チケットによる作業の割り振りと進捗管理
• チケットなしのコミットは禁止とする
– No Ticket, No Commit!
• ワークフロー
– 大まかなリリース計画を作る
– 仕事を細かいタスクに分割し、チケットを発行する
– イテレーション単位でタスクをまとめて、イテレーション計画を作る
– タスクを一つ選び、実装する
– 差分をコミットし、完了する。(チケットのクローズ)
– イテレーションに紐づくタスクがすべて終了ステータスになるとリリースする。
– リリース後、開発チームで作業をふりかえる。
– 次のイテレーション計画へ顧客の要望やふりかえりの内容を反映する。
- 123. アジャイル×チケット駆動×テスト駆動開発
1. ストーリーを書きだす
2. ストーリーに優先順位を付ける
3. ストーリーに見積もりを付ける
4. スプリントで頑張れるストーリー量を推定する
5. ストーリーをタスクに分解
6. タスクにかかる時間を付ける
7. スプリントで頑張れるストーリー量を宣言する
8. 毎日の最初は朝会
1. 自分が行うタスクを宣言(と、したこと、気になる点の報告)
2. 残りタスク時間をトラッキング
3. 改善アクションの確認
9. タスクのチケットを上から順番に手を付ける
1. テストを書く
2. 実装を書く
3. リファクタリングする
4. チケットを閉じる
10. 最後に、完成済みのストーリーについてデモ
11. ふりかえりを行い、次のスプリントで実行する改善案を決める
- 124. お題
• カレンダーを作成しよう
– ストーリー案
• 今月の日数を表示
• 入力した月の日数を表示
• 入力した月の曜日を表示
• 表示をマトリックスで出す
• 土日は色を変える
• 祝日も分かるように表示する
• (この後は自分達で考えよう!)
- 125. タスクの分解
• 今月の日数を表示
– 日数を表示する
• 数自体はコードに埋め込む
• テストは、期待値を文字列として比較
• 月の入力ができるようにする
– キーボード入力を受け付ける
– 受け付けた値を数値として認識する
– 数値から、月の日数を計算する
– 年の入力がない時は今年と判定する
– 閏年も考慮する(グレゴリオ暦の範囲は気にしなくて
いいか…)
- 126. ありがとうございました
• 参考
– かんばん!~もし女子高生がRedmineで「スクラム」開発をしたら
• http://www.atmarkit.co.jp/fjava/index/index_scrum.html
– ブログズミ
• http://srz-zumix.blogspot.jp/
– その他、各アプリケーションのページや先人の記録
で今回のワークは出来上がりました