中電シーティーアイ流 ハイブリッド型アジャイル開発のすべて 平成 29 年 3 月 3 日 株式会社 中電シーティーアイ 佐村 卓
INDEX 1. はじめに 2. アジャイル開発とは 3. 従来型開発との融合 4. 見える化の徹底 5. 顧客との協調作業 6. 開発環境の自働化 7. まとめ 1
はじめに 中電シーティーアイのご紹介 商号 株式会社中電シーティーアイ 設立 ( 合併 ) 平成 15 年 10 月 1 日 資本金 1 億円 出資会社 中部電力株式会社 従業員数 1053 名 ( 平成 28 年 7 月現在 ) 売上高 333 億円 ( 平成 27 年度 ) 2
はじめに 当社システム開発の特徴 課題特徴 中部電力株式会社およびグループ各社のシステム開発 保守 開発 保守件名の一括受注とメーカーおよび協力会社への発注課題 要求仕様がなかなか固まらない 度重なる仕様追加 変更と手戻り手直し 更なる生産性向上と効率化 3
アジャイル開発とは アジャイル開発への期待 要件が決まっていなくても開発できる 開発期間を短縮できる 開発費用を安くできる 4
アジャイル開発とは アジャイル開発の概要 アジャイルとは すばやい 俊敏な という意味で 反復 ( イテレーション ) と呼ばれる数週間 ~ 数ヶ月の短い開発単位を採用することにより リスクを最小化しようとする開発手法 開発対象を多数の小さな機能に分割し 反復内で機能を開発する この反復を繰り返し行うことで 機能を 1 つずつ追加的に優先度を付けて開発してゆく 1 つの反復内では 計画 要求分析 設計 実装 ( コーディング ) テストといった ソフトウェア開発で必要とする全ての工程を行う 計画 ~ テスト計画 ~ テスト計画 ~ テスト 反復反復反復 毎回リリース 毎回リリース 数週間 ~ 数ヶ月数週間 ~ 数ヶ月数週間 ~ 数ヶ月 毎回リリース 5
アジャイル開発とは Scrum スクラム 開発 開発チーム会議 デイリースクラム 受入テスト 作業タスクの洗い出し 日々進捗や問題の共有 アプリの動作を確認 プロダクト バックログ 顧客要求事項 スプリント 数週間 数ヶ月 スプリント 計画会議 スプリントバックログ スプリント期間で 実施するもの 設計 製造 テスト スプリント レビュー 振り返り タスク 洗い出し ス プ リ ン ト を 反 復 繰 り 返 す 6
アジャイル開発とは XP( エクストリームプログラミング ) アジャイルソフトウェア開発宣言の起草者の一人である米国のケント ベックらによって考案されたソフトウェア開発手法 4 つの価値 コミュニケーション (Communication) シンプルさ (Simplicity) フィードバック (Feedback) 勇気( 変更に対する )(Courage) XP のプラクティス ( 実践 ) 顧客同室 テストファースト ペアプログラミング リファクタリング ソースコードの共同所有 メタファー/ 比喩 継続的インテグレーション チーム全体/ 多能工 持続可能なペース/ 週 40 時間 小さなリリース 計画ゲーム コーディング標準 7
アジャイル開発とは アジャイル開発のプラクティス プロセス的なプラクティス ( スクラム開発 ) ファシリテーション 振り返り 自律的な開発チーム 朝会 技術的なプラクティス (XP) テストファースト ペアプログラミング リファクタリング 継続的インテグレーション 人間性を重視し リードタイム短縮と自働化を図る 8
アジャイル開発とは アジャイル開発の源流 代表的なアジャイル開発手法のすべてがトヨタ生産方式を源流とする カイゼン 見える化 ムリ ムラ ムダの排除 かんばん 自働化 現地現物 なぜなぜ 5 回 5S など アジャイル開発への応用 7 つのムダ余分な機能のムダ 遅れのムダ 引き継ぎのムダ 再学習のムダ 未完成のムダ タスク切り替えのムダ 欠陥のムダポカよけ欠陥を出さないためにリリースを短い期間で繰り返し フィードバックを頻繁に行う方法 かんばん JIT フロー JIT(Just In Time) で必要なモノを 必要なときに 必要なだけ作るように見える化 9
アジャイル開発とは アジャイル開発のまとめ カイゼン や ムダの排除 などによる生産性向上と品質向上 自働化 による作業効率の向上と欠陥除去 かんばん などの 見える化 による問題の早期発見と対策ムダなくシンプルに作ることによる変更要求への柔軟性確保顧客と開発メンバーの協調作業反復型開発での要求仕様の早期確認によるリスクの最小化 10
従来型開発との融合 ハイブリッド型アジャイル開発 ハイブリッド型 事前に行う 企画 要件 定義 2週間 スクラム開発 sprint(1) sprint(2) sprint(3) sprint(4) sprint(n) 従来型 ウォーターフォール型 企画 要件 定義 基本 設計 詳細 設計 (外部設計) (内部設計) プログラミング 結合 総合 単体テスト テスト テスト 複数開発チームが次々とソフトウェアを製造するため これら を統合するテスト工程 結合 総合テスト工程 を設ける 11
従来型開発との融合 ハイブリッド型アジャイル開発 従来型開発での成果物量 ハイブリッド型開発での成果物量 基本設計書 詳細設計書 保守用資料 その他 80% 基本設計書 詳細設計書 保守用資料 その他 12
見える化の徹底 ストーリーボード 高 優先度 低 プロダクトバックログ要求事項 A 要求事項 B 要求事項 C 要求事項 D 要求事項 E 要求事項 F 要求事項 G 要求事項 H ユーザーストーリー ( ストーリー ) に変える 顧客の要求事項を 5W1H で表す 例 : 日中に営業部が自席の事務 PC から入力確認のために販売一覧を参照したい ストーリーポイント を付ける 標準値 = ポイントを決め 各ストーリーの相対値を決める 13
見える化の徹底 ストーリーボード 高 優先度 低 プロダクトバックログ要求事項 A 要求事項 B 要求事項 C 要求事項 DX 要求事項 E 要求事項 F 要求事項 G 要求事項 H スプリントバックログ 生産性を上げない限りプロジェクト全開発期間で開発可能な量は変わらないため開発枠が固定される 全開発期間 14
見える化の徹底 ストーリーボード 高 優先度 低 プロダクトバックログ要求事項 X 要求事項 E 要求事項 F 要求事項 G 要求事項 H スプリントバックログ 要求事項 A 要求事項 B 要求事項 C 要求事項 D 生産性を上げない限りプロジェクト全開発期間で開発可能な量は変わらないため開発枠が固定される 全開発期間 15
見える化の徹底 ストーリーボード スプリント スプリント (1) (4 月第 1,2 週 ) ストーリーストーリーストーリー ストーリー 全開発期間 スプリント (2) (4 月第 3,4 週 ) ストーリー ストーリー 開発期間を見極める ストーリー 達成感を共有する スプリント (12) (9 月第 3,4 週 ) ストーリーストーリーストーリーストーリー 16
見える化の徹底 ストーリーボード 17
見える化の徹底 タスクかんばん ストーリー ToDo( 未着手 ) Doing( 進行中 ) Done( 終了 ) タスク 2 あんどん表示 タスク 1 ストーリー 1 タスク 4 タスク 3 タスク 5 タスク 6 ストーリー 2 タスク 2 タスク 4 タスク 1 タスク 3 タスク 5 タスク 6 18
見える化の徹底 タスクかんばん 19
見える化の徹底 タスクかんばん ( 電子かんばん ) 20
見える化の徹底 テストかんばん ( 結合テスト以降 ) ToDo Doing A 機能不具合 B 機能不具合 C 機能不具合 Done テストケース5 テストケース3 テストケース1 A 機能 B 機能テストシナリオ テストケース 6 テストケース 4 テストケース 2 テストケース 5 テストケース 4 テストケース2 テストケース1 テストケース3 B 機能 C 機能テストシナリオ テストケース 6 21
見える化の徹底 テストかんばん ( 結合テスト以降 ) ToDo 不具合レーン Done 22
見える化の徹底 バーンダウンチャート ( 進捗管理 ) 23
見える化の徹底 KPT ボード Keep Try 継続 Problem 強化 挑戦 問題 24
見える化の徹底 今の気持ちは? 開発メンバー全員の気持ち 振り返りの際にシールを貼る 25
顧客との協調作業 顧客同室 顧客には開発チームと可能な限り協調して作業をしていただくために プロジェクトルームを設け 動作確認のための顧客用 PC 専用の打合せコーナーを用意した 顧客にお願いしたこと プロジェクトルームで毎日行われる朝会への参加 朝会後 プロジェクトルームでの短時間の打合せ スプリント毎の計画会議への参加 スプリント毎のレビュー 区切り区切りでの慰労会参加 26
開発環境の自働化 継続的インテグレーション 開発ツールを駆使し ビルドとテストを頻繁に行うことにより開発効率の向上と品質の向上を実現すること 毎日の全アプリケーション自動コンパイル & リンク ( ビルド ) 毎日の全アプリケーション自動テスト ( リグレッションテスト ) 開発メンバ 開発担当者 8 結果通知 Redmine 7チケット登録 5ビルド 静的解析 1チケット登録 テスト WAR 作成 3コミット通知 Subversion Jenkins Tomcat 2コミット 4コミット通知 6デプロイ GUIテスト 27
まとめ アジャイル開発への期待要件が決まっていなくても開発できる開発期間を短縮できる開発費用を安くできる 要件の定義は必要 早期リリースで思い違いを早く見つける 要件の早期確定 開発期間短縮 コスト低減を実現カイゼンやムダの排除 シンプルな考え 自働化で生産性を上げる 動くソフトウェアを重視し ドキュメント作成稼動時間を低減する 28
まとめ アジャイル開発 成功のポイント 顧客の理解と合意顧客の迅速な意思決定強いリーダーシップカイゼンマインドの定着ワーキングスタイルの変革コミュニケーションロスの低減 29