redmineで始めるチケット駆動開発

126
PHP 部部部部部 部部部部部部部部

Upload: takuya-sato

Post on 28-May-2015

7.406 views

Category:

Technology


4 download

DESCRIPTION

オープンソースカンファレンス2009 Hokkaido Redmineで始めるチケット駆動開発 佐藤琢哉(nazo) http://labs.nazone.info/

TRANSCRIPT

Page 1: Redmineで始めるチケット駆動開発

PHP 部の紹介も終わったところで

Page 2: Redmineで始めるチケット駆動開発

Redmine で始めるチケット駆動開発

佐藤琢哉LOCAL PHP 部

Page 3: Redmineで始めるチケット駆動開発

あれ、ここってPHP 部の時間じゃ…

Page 4: Redmineで始めるチケット駆動開発

技術的な話はほとんど出てきません

Page 5: Redmineで始めるチケット駆動開発

開発手法の話なのでPHP プログラマにも

安心して使えます

Page 6: Redmineで始めるチケット駆動開発

自己紹介• 佐藤琢哉 aka nazo• 旭川出身 東京在住• 株式会社 RYUS 所属 (http://ryus.co.jp)• rhaco-ja ?• LOCAL PHP 部• Hatena : nazone• twitter/wassr : nazo

Page 7: Redmineで始めるチケット駆動開発

LOCAL の人になりました

Page 8: Redmineで始めるチケット駆動開発

アジェンダ• チケット駆動開発について• Redmine について• 具体的な使い方• まとめとおまけ

Page 9: Redmineで始めるチケット駆動開発

そもそも何の話?

Page 10: Redmineで始めるチケット駆動開発

Redmine ?チケット駆動開発?

Page 11: Redmineで始めるチケット駆動開発

日本語でおk

Page 12: Redmineで始めるチケット駆動開発

タスク管理を効率的に行うための

話です

Page 13: Redmineで始めるチケット駆動開発

わかりづらい説明

Page 14: Redmineで始めるチケット駆動開発

チケット駆動開発

Page 15: Redmineで始めるチケット駆動開発

チケット駆動開発?

Page 16: Redmineで始めるチケット駆動開発

チケット• タスクの最小単位• 例えば「検索フォームで未入力の状態で

検索するとエラーになるので修正する」• 例えば「新規登録画面を実装する」• バグ登録フォームで登録したバグ1つ• バグ以外の新規開発もチケット

Page 17: Redmineで始めるチケット駆動開発

一つのタスク=

チケット

Page 18: Redmineで始めるチケット駆動開発

チケット駆動開発• タスクをチケットの単位まで細かく区

切って、それを消化していく開発手法• すべてのタスクがチケットとして存在する

ので、タスクの量がわかる• チケットにステータスが付いているので、

タスクの消化量がわかる

Page 19: Redmineで始めるチケット駆動開発

チケットの消化量=

進捗具合

Page 20: Redmineで始めるチケット駆動開発

どのくらい進んでいるかがチケットの量でわ

かる

Page 21: Redmineで始めるチケット駆動開発

プログラミングに限らず使える

Page 22: Redmineで始めるチケット駆動開発

普通の進捗管理の問題点• 誰が何してるのかわからない!– あの機能誰に振ったっけ?– あれ作るのに他の人の作業の完了を待たない

といけない?– その機能大きいから他の人と分担させたいん

だけど…え、全部に手をつけてるから分担できない?

Page 23: Redmineで始めるチケット駆動開発

普通の進捗管理の問題点• どこまでの機能が完成予定なのかわから

ない– 次回のリリースはどこまで含めるんだっけ?– あの機能は当然完成してるものだと思ってた

んだけど…

Page 24: Redmineで始めるチケット駆動開発

それEXCEL で

できるよ!

Page 25: Redmineで始めるチケット駆動開発

 

Page 26: Redmineで始めるチケット駆動開発

EXCEL ガントチャートの問題点• ガントチャートだからそもそも1日単位

でしかタスクをアサインできない– 1日に何時間振るの?– 1日のタスクの順序は?– そのタスクは現在どういう状況?

Page 27: Redmineで始めるチケット駆動開発

EXCEL ガントチャートの問題点• そもそも修正が面倒– 一人で全部設定するの?– 複数人でやったら誰がどこを編集したかわか

る?

Page 28: Redmineで始めるチケット駆動開発

そこでチケット駆動開発

Page 29: Redmineで始めるチケット駆動開発

そして

Page 30: Redmineで始めるチケット駆動開発

チケット駆動開発のための

Redmine

Page 31: Redmineで始めるチケット駆動開発

注意

Page 32: Redmineで始めるチケット駆動開発

チケット駆動開発で調べると

いろいろ出てきますが

Page 33: Redmineで始めるチケット駆動開発

どれが正しい方法というわけではありません

Page 34: Redmineで始めるチケット駆動開発

今回の紹介は私の個人的な体験に

基づいて作成したものです

Page 35: Redmineで始めるチケット駆動開発

どれが正しいというわけではないので、

皆さんの状況に合わせてご利用下さい

Page 36: Redmineで始めるチケット駆動開発

Redmine とチケット駆動開発

Page 37: Redmineで始めるチケット駆動開発

Redmine ?

Page 38: Redmineで始めるチケット駆動開発
Page 39: Redmineで始めるチケット駆動開発

Redmine とは• Ruby On Rails をベースに作られた

Issue Tracking System– (懸案管理システム: ITS )

• いわゆる trac とか Mantis みたいなの• チケットを登録して、チケットの管理を行

うためのシステム

Page 40: Redmineで始めるチケット駆動開発

trac

Page 41: Redmineで始めるチケット駆動開発

Mantis

Page 42: Redmineで始めるチケット駆動開発

Redmine のいいところ• 複数プロジェクトの管理ができる– 多数の案件を抱えている人には必須

• 豊富な標準機能– チケット、 Wiki 、タイムライン、ガント

チャート、カレンダー、リポジトリ、ファイル管理、 etc…

• 標準で日本語対応

Page 43: Redmineで始めるチケット駆動開発

インストール方法とか

• http://redmine.jp/• に大体載ってます• ryus.co.jp のスタッフブログでも少し書

きました

Page 44: Redmineで始めるチケット駆動開発

インストールの説明とかしても仕方ないので

Page 45: Redmineで始めるチケット駆動開発

実際の作業の流れを追ってみましょう

Page 46: Redmineで始めるチケット駆動開発

タスクの進め方

Page 47: Redmineで始めるチケット駆動開発

ワークフロータスク発生

チケット登録 担当者アサイン

実作業 解決

作業確認 終了

管理者タスク

開発者タスク

Page 48: Redmineで始めるチケット駆動開発

ここから実際の流れ

Page 49: Redmineで始めるチケット駆動開発

タスク発生!

Page 50: Redmineで始めるチケット駆動開発

タスクをチケットとして登録

Page 51: Redmineで始めるチケット駆動開発

タスクをチケットとして登録

Page 52: Redmineで始めるチケット駆動開発

チケット登録時の説明を

簡単にすると

Page 53: Redmineで始めるチケット駆動開発

1つのチケットはあまり時間が

かからないように

Page 54: Redmineで始めるチケット駆動開発

チケットを見て疑問点が

ないように

Page 55: Redmineで始めるチケット駆動開発

以上!

Page 56: Redmineで始めるチケット駆動開発

以下詳細

Page 57: Redmineで始めるチケット駆動開発

タスクをチケットとして登録• ほどほどに細かく分ける– 当然細かすぎてもよくない– 最初は細かすぎると思うくらいでいいかも

• 1つのチケットは1人の担当者で解決できるようにする

• ケースバイケース

Page 58: Redmineで始めるチケット駆動開発

タスクをチケットとして登録• 時間がかかりすぎている、いつ終わるか

わからない、と感じたらもっと細かくする

• 明らかにまとめたほうがいいと感じたらまとめる

• 1つのタスクを解決するのに、別の大きな問題が発生したら、途中ででもチケットを分割する

Page 59: Redmineで始めるチケット駆動開発

1つのチケットは最大でも

1日で終わるレベル

Page 60: Redmineで始めるチケット駆動開発

チケット入力フォーム

Page 61: Redmineで始めるチケット駆動開発

入力フォーム説明

Page 62: Redmineで始めるチケット駆動開発

トラッカー• チケットの大枠の分類。全プロジェクト共通

Page 63: Redmineで始めるチケット駆動開発

題名• そのチケットの内容を的確に表すもの• 短いよりは長いほうがいいが、長すぎない

ように– 「検索が動かない」よりは「検索結果が 0 件

になる」のほうがいい– 「検索が動かない」だと、「ボタンを押して

も反応しない」とか「次の画面が真っ白になる」とか「ボタンを押すと関係ない画面が表示された」という例も考えられる

Page 64: Redmineで始めるチケット駆動開発

説明• そのチケットの内容を詳細に記述• 以下の要素が必須– 具体的な発生条件(わかる範囲まで調べる)

• URL• 入力内容

– その結果どうなるか– 本来期待される動作

• チケットを起こした後に担当者がチケットを起こした人に再度質問しないようにする

Page 65: Redmineで始めるチケット駆動開発

ステータス• そのチケットの現状• とりあえず最初は当然「新規」

Page 66: Redmineで始めるチケット駆動開発

優先度、担当者、開始日、期限日、予定工数、進捗、ファイル

• 説明不要

Page 67: Redmineで始めるチケット駆動開発

Watchers

• このチケットを監視する人• 監視対象になると、マイページの

「ウォッチ中のチケット」で確認できる• 自分は起票者でも担当者でもないけど、

そのチケットの進捗を確認したい時などに使う

Page 68: Redmineで始めるチケット駆動開発

関連するチケット• チケットを起こした後に設定可能• 「このチケットを終わらせるにはあのチ

ケットを先に終わらせないといけないよねー」みたいな時に設定する

• 片方で設定すると相互リンクされる

Page 69: Redmineで始めるチケット駆動開発

チケットを起こしたら

Page 70: Redmineで始めるチケット駆動開発

ワークフロータスク発生

チケット登録 担当者アサイン

実作業 解決

作業確認 終了

管理者タスク

開発者タスク

Page 71: Redmineで始めるチケット駆動開発

担当者を決める

Page 72: Redmineで始めるチケット駆動開発

担当者はチケットが割り振られたら

Page 73: Redmineで始めるチケット駆動開発

ワークフロータスク発生

チケット登録 担当者アサイン

実作業 解決

作業確認 終了

管理者タスク

開発者タスク

Page 74: Redmineで始めるチケット駆動開発

優先度や期限などから作業順序を判断し

作業を開始する

Page 75: Redmineで始めるチケット駆動開発

担当者が作業中にするチケット操作

Page 76: Redmineで始めるチケット駆動開発

進捗• 通常は 0%→100% で終了することが多い• 少し長めのチケットの場合、数時間おき

に進捗を更新するとスケジュールが把握しやすくなる

• 作業開始時はステータスを「担当」にする

Page 77: Redmineで始めるチケット駆動開発

コメント(注記)• 作業中に気になったことや、メモしておき

たいことは随時記入する• 起票者と担当者が遠隔地にいる場合

( OSS 開発とかでありそう)、ここを「このチケットに対するフォーラム」的な扱いとして議論することもある

Page 78: Redmineで始めるチケット駆動開発

こうして作業を進めていき

Page 79: Redmineで始めるチケット駆動開発

終わった!と思ったら

Page 80: Redmineで始めるチケット駆動開発

ワークフロータスク発生

チケット登録 担当者アサイン

実作業 解決

作業確認 終了

管理者タスク

開発者タスク

Page 81: Redmineで始めるチケット駆動開発

解決に必要なもの• 確認方法• ソースコード• ステータスを「解決」にする

Page 82: Redmineで始めるチケット駆動開発

まずコミットが

されていること

Page 83: Redmineで始めるチケット駆動開発

コミット• プロジェクトのリポジトリを事前に設定• コミットログに「 refs #1111 」のよう

にチケット番号を書くと、そのチケットへの相互リンクが作られる

• コミットログに「 fixes #1111 」のようにチケット番号を書くと、そのチケットが自動的に解決状態になる(要設定)

• refs とか fixes の文字は任意に設定可能

Page 84: Redmineで始めるチケット駆動開発

起票者が確認可能であること

Page 85: Redmineで始めるチケット駆動開発

確認• Web アプリの場合はそれを確認する URL• その他の場合はどのテストを実行すると判別できるか、など

• 「私の環境では動いたんだけど…」とかの基本的なミスをなくすために、自分以外の環境で動作を確認できるようにする

Page 86: Redmineで始めるチケット駆動開発

ワークフロータスク発生

チケット登録 担当者アサイン

実作業 解決

作業確認 終了

管理者タスク

開発者タスク

Page 87: Redmineで始めるチケット駆動開発

確認• 問題があればフィードバック(差し戻

し)にする• フィードバックになったチケットは、そ

れだけで時間の無駄が発生しているということになるので、どうすればフィードバックになるチケットが無くなるかを考える必要がある。

Page 88: Redmineで始めるチケット駆動開発

ワークフロータスク発生

チケット登録 担当者アサイン

実作業 解決

作業確認 終了

管理者タスク

開発者タスク

Page 89: Redmineで始めるチケット駆動開発

終了• お疲れ様でした!

Page 90: Redmineで始めるチケット駆動開発

「チケット駆動」の名の通り

Page 91: Redmineで始めるチケット駆動開発

チケットの扱いが重要なので

Page 92: Redmineで始めるチケット駆動開発

プロジェクトの体制や環境に合わせて

カスタマイズすると使いやすくなります

Page 93: Redmineで始めるチケット駆動開発

ガントチャートとか

Page 94: Redmineで始めるチケット駆動開発

あくまでおまけ程度の機能です

Page 95: Redmineで始めるチケット駆動開発

「全ての開発作業がチケットとして

登録されている」状態を

目標としてみてください

Page 96: Redmineで始めるチケット駆動開発

実際に弊社( RYUS )でも

使っています

Page 97: Redmineで始めるチケット駆動開発

RYUS では…• しばらく Mantis で管理• Mantisちょっと機能たりなくね?• そこで Redmine• 移行スクリプトも標準であるよ!でもか

なり手を入れた

Page 98: Redmineで始めるチケット駆動開発

RYUS では…• ステータスの追加–保留とか–却下とか– 一部 Mantis 時代の名残も

Page 99: Redmineで始めるチケット駆動開発

CSS 調整大事

Page 100: Redmineで始めるチケット駆動開発

チケット一覧カスタマイズ

Page 101: Redmineで始めるチケット駆動開発

class とか ID とか最初から振られている

のでCSS側を変更するだけ

Page 102: Redmineで始めるチケット駆動開発

その他便利機能

Page 103: Redmineで始めるチケット駆動開発

ロードマップ• マイルストーン• 次回のリリースではどのチケットが close

されている必要があるか?を一覧できる• 予定工数を入れておけば、「トータルで

何時間かかるか」も見ることができる

Page 104: Redmineで始めるチケット駆動開発

Wiki

• Textile記法• h1. 見出し• # リスト• チケット番号の自動リンク付き

( #1234 )• リビジョンへの自動リンク付き

( r1234 )

Page 105: Redmineで始めるチケット駆動開発

フォーラム、ニュース• プロジェクト自体の報連相に• ニュースは Redmine のトップページに出

Page 106: Redmineで始めるチケット駆動開発

リポジトリ連携• Git や Mercurial にも対応• 単純なリポジトリブラウザとしても便利• refs や fixes でチケットと連動• 設定するときは cron でリポジトリ情報を取得するようにする(説明省略)

Page 107: Redmineで始めるチケット駆動開発

まとめ

Page 108: Redmineで始めるチケット駆動開発

Redmine を使うと

Page 109: Redmineで始めるチケット駆動開発

タスク管理が楽になる

Page 110: Redmineで始めるチケット駆動開発

メリット• タスク管理がとにかく楽• Wiki とかもあるので情報の集約ができる• コミットとタスク(チケット)を関連付

けできる

Page 111: Redmineで始めるチケット駆動開発

よくわかんないという方は

Page 112: Redmineで始めるチケット駆動開発

とりあえずインストールして触ってみてください

Page 113: Redmineで始めるチケット駆動開発

使ってみないとわかりません

Page 114: Redmineで始めるチケット駆動開発

難点• インストールがやや面倒– Rails アプリの経験がないと…–Windows環境は更に難関

• API とか拡張方面に弱い– このへんは trac のほうが上

Page 115: Redmineで始めるチケット駆動開発

インストールは楽なほうがいい

Page 116: Redmineで始めるチケット駆動開発

PHP だともっと楽だよね!

Page 117: Redmineで始めるチケット駆動開発

PHP でRedmine みたいなの

あればなぁ…

Page 118: Redmineで始めるチケット駆動開発

PHP ならカスタマイズも楽なのになぁ…

Page 119: Redmineで始めるチケット駆動開発

そこで

Page 120: Redmineで始めるチケット駆動開発

Candycane

• 安藤祐介( yandod )さんが中心になって作られているオープンソースプロダクト

• CakePHP で Redmine を作る!• Redmine のコードをベースに CakePHP

に移植するのが第一目標• 将来的には独自路線の使いやすさを目指

Page 121: Redmineで始めるチケット駆動開発

Candycane

Page 122: Redmineで始めるチケット駆動開発

本当はこれの紹介を

重点的にしたかったのですが

Page 123: Redmineで始めるチケット駆動開発

私が既にあまり関わっていない

ためそれほど紹介できませ

Page 124: Redmineで始めるチケット駆動開発

orz

Page 125: Redmineで始めるチケット駆動開発

今夏公開予定!(らしい)

Page 126: Redmineで始めるチケット駆動開発

おわり