第13回名古屋アジャイル勉強会発表資料『チケット駆動開発入門』
DESCRIPTION
第13回名古屋アジャイル勉強会発表資料『チケット駆動開発入門』TRANSCRIPT
第13回名古屋アジャイル勉強会
『チケット駆動開発入門』
2009/06/26
本日持ち帰って頂きたいこと。
チケット駆動開発は
高いトレーサビリティを容易に実現してくれる。
ウォーターフォールでもばっちり使える。
バージョン管理ツールは超重要。
「誰が、いつ、何をやったか」がわかる。
情報集約重要ツールとしてのITSは熱い。
今日やること
チケット駆動開発の説明
チケット駆動開発とは?
デモ
情報共有ツールとしてのITS
他のやり方と比較してどう?
ワークショップ
みんな大好きワークショップ
自己紹介
北村亮です。(id:RKTM)
三重から名古屋に通うプログラマ。
好きな言語:Ruby。
大学時代は文学心理学専攻。
OSC2009 Nagoya@8/22(土)にも
ご参加下さい。
今日のお題
『チケット駆動開発入門』
『チケット駆動開発』とは?
チケット駆動開発
(ticket-driven development; TiDD) とは、
プログラム開発手法の一種。
作業をタスクに分割しBTSのチケットに割り当てて管理
を行う開発スタイル。
参考:http://ja.wikipedia.org/wiki/チケット駆動開発
チケット?
「行うべき作業」を記録したもの。
例:
「○○画面設計」
「△△バッチの不具合の修正」
「●●環境で動作するか検証」
ステータスあり。
開始日・終了日あり。
担当者欄あり。
見積もり工数を入れるのも可。
チケット『駆動』? その1
「はじめにチケットありき。」
「チケットなしの作業禁止。」
チケットがない作業は闇作業。
「チケットなしのコミット禁止。」
チケットがないコミットは闇コミット。
チケットにより作業のインプット・原因・「なぜ」を
明確にする。
作業説明のお供にチケットを。
作業メモもチケットに記録していく。
チケット『駆動』? その2
プロジェクトの流れ。
リーダーは、作業をチケットとして登録。
メンバーは、チケットをサインアップ。
メンバーは、作業が完了したらチケットのステータスを
「解決」に変更。
リーダーは、メンバーの成果物を確認し、
Okならチケットのステータスを完了にして終了。
Ngならまたメンバーに差し戻し。OKが出るまで繰り返す。
仕事の流れのデモ
リーダーが、チケット登録
メンバーが、チケットをサインアップ
メンバーが、成果物をコミット
リーダーが、成果物をレビュー
差し戻し
終了
ITS(BTS)
ITS(Issue Tracking System)・・・問題管理システム
BTS(Bug Tracking System)・・・バグ管理システム
実際のツール
Trac(Python)
手始めはWindowsへの導入が簡単なTrac Lightningがお勧
め。
Redmine(Ruby)
複数プロジェクト対応。
デザインが良い(気がする)。
バージョン管理システム
皆さん使ってますか?
仕事のアウトプットは
バージョン管理システムに入れる。
ソースコードはもちろん。
設計書も。
なぜか?
よくある(かもしれない)話
設計書をファイルサーバーで管理している場合
履歴を「bkフォルダ」などに入れたり、「XXX設計
書.xls_20090626」といったファイルを作成したり。
レビュー承認後の「完成した状態」から手が加えられて
しまうと・・・
変更されたことが検知できない。最悪の場合、レビューされな
いまま納品されることも。
こんな非生産的な事態が発生します。
怒れるマネージャーの詰問
バージョン管理システム超重要。
プロジェクトの成果物はリポジトリに保管。
設計書はバイナリだろうと当然対象。
チケットと連携できる。(後述)
誰が、いつ、何をやったかが分かる。
「このあらいを作ったのはだれ?」
ただし、「なぜ」それをやったか、「何をインプットとして」
やったかは、わからない。
それをチケットで補う。
ふつう仕事はこんな流れ。
INPUTを受け取り、
PROCESSして、
OUTPUTを出す。
PROCESSINPUT OUTPUT
もう少し補足すると
PROCESSINPUT OUTPUT
作業説明 完了報告
人
情報
リーダー メンバー リーダー
レビュー
チケットコミット
バージョン管理ツールとチケットの連携
チケット駆動開発では、OUTPUT(コミット)と
INPUT(チケット)が紐付く。
コミットログに特定のキーワードを入れることにより、チ
ケットと紐付けが可能。
下記が明確に、かつ、記録として残る。
チケット(INPUT)に対して、何を行ったか(コミット)。
この変更(コミット)は、なぜ行ったのか(チケット)
高いトレーサビリティを簡単に実現。
高トレーサビリティを容易に実現
「容易」に
1件の不具合修正の結果、1つの設計書と2つのソース
ファイルと、1つの単体テスト結果に変更が加わった。
これを人手でトレースするのは困難。
不具合を記録したチケットから、関係するリビジョンのリンクを
クリックすれば修正したファイルが何かすぐに分かる。
チケット駆動開発での課題
チケット駆動開発での課題
チケットの粒度:最大で2~3日ぐらいの粒度に分ける。
チケットは定期的に棚卸。放置しない。強制アサインも
OK。
Redmineの紹介
チケット関係の機能
ガントチャート、サマリ
情報共有の機能
wiki、ニュース。
ノウハウはwikiにためる。
「活動」にて日々のメンバーの動きを確認。
検索
プロジェクト内、プロジェクト間。
Redmineの紹介
色々な設定
ロールと権限
ワークフロー
チケットのステータス
トラッカー
全てのプロジェクトに影響を与える項目の設定は
要注意。
他のツールと比較。
ツール エクセル MS-PROJECT Redmine
ライセンス料 △ × ○フリー。
ガントチャート × ○イナヅマ線が魅力
過去の時点のイナヅマ線と比較もできる。
△顧客に提示するには苦し
いかも。
工数集計 ○計算式を埋め込むのが容易。
○確かそういった機能が
あったはず。
○チケットにかかった作業時
間を設定できる。
参考情報
『入門Redmine』
前田 剛 (著)
『Xp祭り関西2009講演資料「チケットファーストでア
ジャイル開発!~チケットに分割して統治せよ」』
http://forza.cocolog-nifty.com/blog/2009/02/xp2009-746a.html
ワークショップ
4コマ漫画を描く!
4コマ漫画作成プロジェクト
ゴール:
完成した4コマ漫画を皆の前で発表。
先ずは作業を洗い出してください。
その内容を付箋紙に書き付ける。→擬似チケット。
予定作業時間も。
4コマ漫画作成プロジェクト
作業を洗い出したらイテレーション開始。
チケットに従って作業を進めてください。
一定の時間で区切りますので、振り返り。
それが終わればまた次のイテレーション開始。