Redmineでチケット駆動開発を実践する~チケットに分割して統治せよ

42,275 views

Published on

関西Ruby会議01@関西-KOF2008講演資料「Redmineでチケット駆動開発を実践する~チケットに分割して統治せよ」
http://magazine.rubyist.net/?0025-KansaiRubyKaigi01Report

【公開】KOF2008講演資料「Redmineでチケット駆動開発を実践する~チケットに分割して統治せよ」: プログラマの思索 http://forza.cocolog-nifty.com/blog/2008/12/kof2008redmine-.html

SQIP2009 チケット駆動開発- BTS で Extreme Programming を改善する-
http://www.juse.jp/sqip/symposium/archive/2009/day1/files/ippan_2-1.pdf

Published in: Technology
0 Comments
16 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
42,275
On SlideShare
0
From Embeds
0
Number of Embeds
6,028
Actions
Shares
0
Downloads
189
Comments
0
Likes
16
Embeds 0
No embeds

No notes for slide

Redmineでチケット駆動開発を実践する~チケットに分割して統治せよ

  1. 1. KOF2008(Copyright Akipii)1 Redmineでででで チケット駆動開発をチケット駆動開発をチケット駆動開発をチケット駆動開発を 実践する実践する実践する実践する 2008/11/7 あきぴー チケットに分割して統治せよチケットに分割して統治せよチケットに分割して統治せよチケットに分割して統治せよ
  2. 2. KOF2008(Copyright Akipii)2 自己紹介 HN:あきぴー 主な職歴 業務系Webシステムの開発部隊に所属 プログラミングからプロジェクト管理まで何でも 得意な言語 Java、PLSQL Rubyはまだ初心者 興味 XP、Scrumなどのアジャイル開発
  3. 3. KOF2008(Copyright Akipii)3 第第第第1部部部部 Redmineでででで プロジェクト管理をプロジェクト管理をプロジェクト管理をプロジェクト管理をIT化せよ化せよ化せよ化せよ タスクはチケットにタスクはチケットにタスクはチケットにタスクはチケットに 分割して統治せよ分割して統治せよ分割して統治せよ分割して統治せよ
  4. 4. KOF2008(Copyright Akipii)4 Redmineとは Ruby on Rails で作られたバグ管理システム(BTS) 最新版:0.7.3 (2008/5) http://www.redmine.org LAMP、WAMP環境で動作 GPLで配布 強力なプロジェクト管理機能を持つ ガントチャートがデフォルト表示 チケットで様々なタスクを一元管理できる ワークフロー管理が使いやすい バージョン管理(Subversion等)と連携 Trac(Python製BTS)と並んで最近注目されている
  5. 5. KOF2008(Copyright Akipii)5 Redmine導入前(Excel編) Excelの進捗管理に不満 残工数、残タスクの計算に労力がかかりすぎ Excelのガントチャートを保守するだけで半日潰れる ガントチャートでしか開発者の作業状態を追跡できない 結合テスト以後のプロジェクト管理が難しい バグ情報や作業状態を一元管理できてない バグ修正とテスト検証の担当切替に時間がかかる プロジェクトにリズム感やスピード感が無い イテレーションを管理できるツールが無い アジャイル開発はプロジェクト管理が難しい リリースが多いため管理工数がかかる
  6. 6. KOF2008(Copyright Akipii)6 Redmine運用前(Trac編) Tracは使いこなせなかった Wikiを仕様書代わりに使ったが保守されなくなった チケットの乱発でプロジェクトは大混乱 でもWebベースのプロジェクト管理が今後主流になるだろう Tracの赤色と灰色が嫌い Redmineは青色でデザインがカッコいい! Railsなのでインストールも簡単。AjaxのUIが使いやすい。 RedmineはSVNコミットログとチケットの連携が簡単 Trac運用時はチケットとSVNコミットログ連携を知らなかった 以前からCVSコミットログを書くよう口煩く運用してきた チケットと相互リンクさせれば構成管理できるだろう
  7. 7. KOF2008(Copyright Akipii)7 Redmine運用後 プロジェクトの問題や進捗を見える化できた 残タスク、進捗率がリアルタイムに一目瞭然 遅延タスクが明確なので進捗管理しやすくなった チーム内の連携作業がスムーズになった 開発者は担当タスクを自発的に作業してくれる バグを見つけたら自発的にチケット登録してくれる アジャイル開発をようやく理解できた ロードマップがXPのイテレーション計画に相当する 1イテレーションでリリースするからリズムが生まれる チケットの取捨選択が重要(本来のマネジメント) チケット管理の課題が見えてきた チケット管理を上手に運用できなければ、BTSは無意味 リスク管理はガントチャートではなくチケットで追跡する
  8. 8. KOF2008(Copyright Akipii)8 チケットの概念モデル
  9. 9. KOF2008(Copyright Akipii)9 Redmineの運用フロー(例)
  10. 10. KOF2008(Copyright Akipii)10 チケットの状態遷移図(例)
  11. 11. KOF2008(Copyright Akipii)11 Redmineの運用サイクル Redmine PL ユーザ PG 開発チーム バージョン登録 チケット更新 集計表示 問合せ バージョンClose 次バージョンへ
  12. 12. KOF2008(Copyright Akipii)12 Redmineとメインラインモデル Redmineではプロジェクトとソースリポジトリが1対1対応 する Redmineは複数のプロジェクトを一元管理できる Tracは複数のプロジェクトを作れないのが最大の弱点
  13. 13. KOF2008(Copyright Akipii)13 Redmineは更なる可能性を秘めている チケット集計表示、進捗管理機能が優れている ガントチャートはデフォルト表示 ロードマップで進捗率と残タスクが一目瞭然 サマリで色んな観点で残タスクの作業状態が一目瞭然 バグ収束曲線、バーンダウンチャート等のメトリクスが作れそう 強力な変更管理機能を持つ SVNリビジョンからソースの修正理由を追跡できる 「要件→【チケット】 ←ソース」で変更管理や構成管理できそう 強力なワークフロー管理機能を持つ強力なワークフロー管理機能を持つ強力なワークフロー管理機能を持つ強力なワークフロー管理機能を持つ トラッカーでバグ修正、新規開発毎にフローを切り替え可能 チケットが追加・更新されるイベントでメールやRSSで自動通知 バグ管理以外に新規開発や運用保守でも使えそう
  14. 14. KOF2008(Copyright Akipii)14 (1)ロードマップ作成 バージョン単位でチケットをグループ化する。バージョン単位でチケットをグループ化する。バージョン単位でチケットをグループ化する。バージョン単位でチケットをグループ化する。 ↓ 残タスク、進捗率が一目瞭然残タスク、進捗率が一目瞭然残タスク、進捗率が一目瞭然残タスク、進捗率が一目瞭然
  15. 15. KOF2008(Copyright Akipii)15 (2-1) チケット登録 1.トラッカー:チケットの種類トラッカー:チケットの種類トラッカー:チケットの種類トラッカー:チケットの種類 2.ステータス:チケットの作業状態ステータス:チケットの作業状態ステータス:チケットの作業状態ステータス:チケットの作業状態 3.TargetVersion::::マイルストーンマイルストーンマイルストーンマイルストーン 4.開始日、終了日:作業期間開始日、終了日:作業期間開始日、終了日:作業期間開始日、終了日:作業期間 5.カテゴリ:機能の単位。カテゴリ:機能の単位。カテゴリ:機能の単位。カテゴリ:機能の単位。
  16. 16. KOF2008(Copyright Akipii)16 (2-2)ワークフロー管理 ロール、トラッカー、ステータスロール、トラッカー、ステータスロール、トラッカー、ステータスロール、トラッカー、ステータス でフローを切り替え可能でフローを切り替え可能でフローを切り替え可能でフローを切り替え可能 ↓ 1.ロール:管理者、開発者ロール:管理者、開発者ロール:管理者、開発者ロール:管理者、開発者etc 2.トラッカー:バグ、新規開発トラッカー:バグ、新規開発トラッカー:バグ、新規開発トラッカー:バグ、新規開発etc 3.ステータスは先行と移行先のステータスは先行と移行先のステータスは先行と移行先のステータスは先行と移行先の マトリックスで一覧表示マトリックスで一覧表示マトリックスで一覧表示マトリックスで一覧表示
  17. 17. KOF2008(Copyright Akipii)17 (2-3)メール送信機能 チケットが追加・更新されると、チケットが追加・更新されると、チケットが追加・更新されると、チケットが追加・更新されると、 メールが自動送信される。メールが自動送信される。メールが自動送信される。メールが自動送信される。 ↓ 3人以上の大規模チームの運人以上の大規模チームの運人以上の大規模チームの運人以上の大規模チームの運 用で重要な機能。用で重要な機能。用で重要な機能。用で重要な機能。
  18. 18. KOF2008(Copyright Akipii)18 (3)ガントチャート チケットに開始日、終了日を記入すれば、チケットに開始日、終了日を記入すれば、チケットに開始日、終了日を記入すれば、チケットに開始日、終了日を記入すれば、 ガントチャートを自動生成してくれる。ガントチャートを自動生成してくれる。ガントチャートを自動生成してくれる。ガントチャートを自動生成してくれる。
  19. 19. KOF2008(Copyright Akipii)19 (4-1)バージョン管理と連携 SVNリポジトリを一覧表示。リポジトリを一覧表示。リポジトリを一覧表示。リポジトリを一覧表示。 プロジェクトとソースリポジトリがプロジェクトとソースリポジトリがプロジェクトとソースリポジトリがプロジェクトとソースリポジトリが1対対対対1対応。対応。対応。対応。
  20. 20. KOF2008(Copyright Akipii)20 (4-2)コミット時にチケットと連携 SVNコミットログに下記のキーワードをコミットログに下記のキーワードをコミットログに下記のキーワードをコミットログに下記のキーワードを 書くとチケットと連携できる。書くとチケットと連携できる。書くとチケットと連携できる。書くとチケットと連携できる。 例例例例1:::: refs 11 (11はチケットはチケットはチケットはチケットNo) 例例例例2:::: fixes 11
  21. 21. KOF2008(Copyright Akipii)21 (4-3)チケットにリビジョン表示 チケットにチケットにチケットにチケットにSVNリビジョンを表示リビジョンを表示リビジョンを表示リビジョンを表示 ↓ ソースから変更理由を追跡できるソースから変更理由を追跡できるソースから変更理由を追跡できるソースから変更理由を追跡できる
  22. 22. KOF2008(Copyright Akipii)22 (5) リリース後にニュースで告知
  23. 23. KOF2008(Copyright Akipii)23 (6-1)サマリ(チケット集計結果) トラッカーやバージョン毎に、残チケットの作業状態を表示。トラッカーやバージョン毎に、残チケットの作業状態を表示。トラッカーやバージョン毎に、残チケットの作業状態を表示。トラッカーやバージョン毎に、残チケットの作業状態を表示。 開発チームの成績表に相当する。開発チームの成績表に相当する。開発チームの成績表に相当する。開発チームの成績表に相当する。
  24. 24. KOF2008(Copyright Akipii)24 (6-2)リポジトリ統計 SVNリポジトリの月別リビジョン回数、コミット回数を表示。リポジトリの月別リビジョン回数、コミット回数を表示。リポジトリの月別リビジョン回数、コミット回数を表示。リポジトリの月別リビジョン回数、コミット回数を表示。 開発チームの活発度合いが分かる。開発チームの活発度合いが分かる。開発チームの活発度合いが分かる。開発チームの活発度合いが分かる。
  25. 25. KOF2008(Copyright Akipii)25 第第第第2部部部部 チケット駆動開発チケット駆動開発チケット駆動開発チケット駆動開発(TiDD)でででで アジャイル開発!アジャイル開発!アジャイル開発!アジャイル開発! チケット・ファーストで始めようチケット・ファーストで始めようチケット・ファーストで始めようチケット・ファーストで始めよう
  26. 26. KOF2008(Copyright Akipii)26 チケット駆動開発とは チケット駆動開発はTracのチケット管理から生まれた チケット駆動開発の提唱者:まちゅさん ITpro Challenge のライトニングトーク(2007/9) http://www.machu.jp/diary/20070907.html#p01 「チケット無しのSVNコミットは不可」を強調! Redmine運用フローはアジャイル開発そのものだ! Redmine運用フローをチケット駆動開発チケット駆動開発チケット駆動開発チケット駆動開発と呼ぼう RedmineチケットをSW開発のタスクへ汎用化する発想 XPの原則、価値をベースにチケット駆動開発を再構築する チケット駆動開発のプラクティスを作りたい チケット駆動開発の略称「TiDD」 (えと~さん) 「TDD」だと「テスト駆動開発」と間違えそう
  27. 27. KOF2008(Copyright Akipii)27 チケット駆動開発のプラクティス キャッチフレーズは「チケットに分割して統治せよチケットに分割して統治せよチケットに分割して統治せよチケットに分割して統治せよ」 1. チケット・ファースト(Ticket First) 1. プロジェクトの作業はチケットを受け取ってから始める 2. チケット無しのソースコミット不可 2. チケットで分割統治(Divide and Conquer) 1. チケットの粒度は追跡可能なタスクまで細分化する 2. バージョン毎にチケットをグループ化してまとめる 3. 小規模リリース(Small Releases) 1. バージョン毎に小さく作って小刻みにリリースする 2. リリース結果は終了チケットの履歴として残る 4. ふりかえり(Retrospect) 1. チケット集計結果から次バージョンへ向けて改善しよう
  28. 28. KOF2008(Copyright Akipii)28 チケット駆動開発の特徴 ラフなタスク管理。ガントチャートは重要でない。 顧客の要望と開発者の工数見積のバランスで優先順位付け チケットの取捨選択でリリース計画は頻繁に変わる ソースから作業理由・要件を追跡しやすい 例えば3年前のパッチの意図を検索できる 運用保守時にソースから仕様をリバースする時に役立つ 自然に強力なSW構成管理のインフラになる 変更管理、構成管理、メトリクス収集が自動化される 開発者はチケットだけ意識すればいい チーム内のコミュニケーションが活発化する 自分のタスク、進捗、問題点が見える化する リリース後のチケット集計結果からふりかえりし易くなる
  29. 29. KOF2008(Copyright Akipii)29 補足・TiDDはSW構成管理のインフラ 狭義のSW構成管理はバージョン管理だけ。 IT技術者はSW構成管理の概念をもう一度見直すべき! バージョン管理バージョン管理バージョン管理バージョン管理ビルド管理 変更管理変更管理変更管理変更管理マネジメントマネジメントマネジメントマネジメント
  30. 30. KOF2008(Copyright Akipii)30 チケット駆動開発の運用の注意点 チケットを乱発・放置しない運用は何か? リリース時期が不明なチケットはパーキングエリアで一旦保留 遅延したチケットは更にチケットを分割する 大規模チームで運用できるか? チケット管理だけの専門担当者を置く チケット取捨選択を議論する変更管理会議を開催する チケット管理はSW開発の全業務をカバーできるか? チケットを要件管理(ストーリーカード)に使う 変更管理ではチケットの親子関係が発生する チケット集計結果から得られたメトリクスを過信しない メトリクスはBadノウハウが多すぎる
  31. 31. KOF2008(Copyright Akipii)31 まとめ・謝辞 Redmineでプロジェクト管理をIT化しよう タスクはチケットに分割して統治せよ タスク管理はチケット・ファーストから始めよう チケット駆動開発でアジャイル開発しよう チケット駆動開発はRedmineで簡単に実現できる チケット駆動開発は、中身は古いが新しい衣を被ったアジャイル開発 謝辞 勉強会で一緒に議論してくれた仲間へ えと~さん、八朔さん、よしうみさん、たけぷ~さん、うえださん、 Tanigonさん、せりまささん、garyoさん、inoさん 講演の場を作ってくれたRuby関西コミュニティへ 独り言:チケット駆動開発の本を書きたい!

×