• Save
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

【第7回redmine.tokyo勉強会】RedmineのFAQと アンチパターン集 ~WBS駆動からチケット駆動へ

  • 2,081 views
Uploaded on

【事前公開】【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ #redmineT: プログラマの思索

【事前公開】【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ #redmineT: プログラマの思索
http://forza.cocolog-nifty.com/blog/2014/11/7redminetokyore.html

第7回勉強会 - redmine.tokyo http://redmine.tokyo/versions/13

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment

Views

Total Views
2,081
On Slideshare
429
From Embeds
1,652
Number of Embeds
9

Actions

Shares
Downloads
0
Comments
0
Likes
12

Embeds 1,652

http://forza.cocolog-nifty.com 1,007
http://app.m-cocolog.jp 603
https://twitter.com 22
https://pyxis.sega.co.jp 13
http://www.peeep.us 2
https://www.chatwork.com 2
http://app.cocolog-nifty.com 1
http://www.open.sh 1
http://webcache.googleusercontent.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 【第7回redmine.tokyo勉強会】 RedmineのFAQと アンチパターン集 〜WBS駆動からチケット駆動へ 2014/11/15 あきぴー@Redmine.tokyo copyright2014 akipii@XPJUG関西1
  • 2. 自己紹介 • ハンドルネーム • あきぴー(@akipii) • スタッフとして所属するコミュニティ • XPJUG関⻄、SEA関⻄ • RxTStudy、redmine.tokyo • 著書 おかげ様で 第7刷9500部まで 増刷しました!!!! • 「Redmineによるタスクマネジメント実践技法」(with @sakaba37) • 「チケット駆動開発」(with @sakaba37) • 「Redmine超入門」 (with redmine.tokyoスタッフ) copyright2014 akipii@XPJUG関西2
  • 3. Redmine.tokyoにコミュニティ名称変更 日本のRedmineユーザ会としてアピールしたいから! ※@akiko_pusuさん、ロゴ作成ありがとうございます! 【ロゴの意味】 ①『波千鳥』で「Tokyo=日本」を イメージしたかった ※波千鳥は日本の伝統的な紋様 ②『海』で品川Redmineの面影を 残したかった ※品川水族館&海のイメージ ③RubyやRedmineの面影を残す ために⾚⾊や⻘⾊を付けた copyright2014 akipii@XPJUG関西3
  • 4. 本日のテーマ • チケット駆動のアンチパターンを紹介 • チケット管理は、従来のPM手法と違う特徴がある • Redmineの豊富な機能を使いこなせていない • 下記の前提で、アンチパターンを紹介 • 前提①:自分でRedmineサーバーを⽴ち上げられる • 前提②:チーム運営やプロジェクト運営の経験が少ない • 前提③:前作のアンチパターン集以外の事例(2011/7) (http://www.slideshare.net/akipii.oga/redminefaq) • チームや案件の制約条件(Force)によって、チケット管理 を微妙に変える手法を議論したい • 5人の小規模チームx 20人の複数チーム • 自社開発x オフショア開発 • 大規模な受託開発案件x 小規模な保守案件 copyright2014 akipii@XPJUG関西4
  • 5. Agenda • 本日のテーマ(済) • 【1】小規模保守案件のプロジェクト管理 • 【2】大規模受託案件のプロジェクト管理 • 【3】オフショア開発の構成管理 • まとめ (1)FAQ 【Q】のつくタイトルです。 (2)アンチパターン 【反例】のつくタイトルです。 (3)再構想解のプラクティス 【参考】のつくタイトルです。 copyright2014 akipii@XPJUG関西5
  • 6. 【1】小規模保守案件の プロジェクト管理 copyright2014 akipii@XPJUG関西6
  • 7. 【反例】ヤミ作業(@g_maeda) copyright2014 akipii@XPJUG関西7 名前ヤミ作業 頻出場所初心者リーダーのプロジェクト運営 症状と結果チケット化されない作業は、手順漏れやミスが多い。 挿話証拠「チケット化されない作業は、ポロポロ抜け漏れが多いね」 根本原因チームに必要なタスクがチケットに記載されていない 再構想解の プラクティス ・Ticket First ・No Ticket, No Work ・No Ticket, No Commit 再構想による 解決 ①チケットを起票してから作業を始める (No Ticket, No Work) ②チケット無しで作業を完了にしない (No Ticket, No Commit) 変種一人ヤミ作業
  • 8. 【反例】一人ヤミ作業 copyright2014 akipii@XPJUG関西8 名前一人ヤミ作業 頻出場所初心者リーダーのプロジェクト運営 症状と結果チケットにない作業に従事する人がいるため、チームに一体感 がない 挿話証拠「残業している割には、彼の成果が見えないね」 根本原因・案件掛け持ちの担当者の作業負荷が高い ・メンバー全員の作業が見える化されていない 再構想解の プラクティス ・Scrumチーム ・防火壁(組織パターン) 再構想による 解決 ・マルチタスクを排除する ・チームの外部にいる利害関係者からチームを守る
  • 9. 【参考】Scrumチーム PLは、外部の利害関係者からチームを守るようにしよう プロダクトオーナー(PO) スクラムマスター(SM) チーム 上司 copyright2014 akipii@XPJUG関西9 スクラムチーム 顧客 防御壁 ・ニワトリとブタ(ニワトリ=外部の人、ブタ=Scrumチーム) ・POがMANを持つ最終決定者(Money、Authority、Needsの略) ・イベントもプロセスもフレームワーク化 ・リーダーが育ちやすい 協調 協調 協調 干渉
  • 10. 【反例】モンスターチケット 名前モンスターチケット 頻出場所チケット管理に慣れていない初心者チーム 症状と結果チケットが何度も差し戻しされて、Closeされずに残る 挿話証拠「このチケットは何度も差し戻しされてるね」 根本原因チケットの完了基準があいまい copyright2014 akipii@XPJUG関西10 再構想解の プラクティス ・Doneの基準 ・チケット無しでCloseしない(No Ticket, No Commit) 再構想による 解決 スプリント計画を作るたびに、Doneの基準を定義し直す ※Doneの基準は、チームが成長するたびに変わっていく 変種・放置されたチケット ・停滞したチケット
  • 11. 【参考】Doneの基準 • チケットの完了基準を明確にする • 作業範囲と成果物を明確にする タスク#12 ショッピングサイトの カート画面を開発する ・チケットの完了基準は、 カート画面に商品を登録するだけ? ・商品の削除は必要? ・使いやすいUIにすべきか? ・大量アクセス時の性能は保証され ているか? 【Scrumの知恵】 Doneの範囲は、チームの成⻑によって拡大する ⇒毎回、イテレーション終了時にチームで再定義し直す copyright2014 akipii@XPJUG関西11
  • 12. 【反例】サイロ型プロジェクト 名前サイロ型プロジェクト 頻出場所数多くのシステム保守の案件管理 症状と結果Redmineプロジェクトが階層化されておらず乱立している。 チーム全体のタスクの進捗状況が見えにくい。 挿話証拠「各案件の進捗を一覧できないね」 根本原因Redmineプロジェクトで階層化していない copyright2014 akipii@XPJUG関西12 再構想解の プラクティス Conwayの法則(アーキテクチャは組織構造に従う) 再構想による 解決 案件の性質ごとに、Redmineプロジェクトを階層化する ①派生パターン::::共通基盤PJ・製品カスタマイズPJ ②保守パターン::::保守PJ・一時的開発PJ ③CCBパターン::::課題管理会議PJ 変種工程単位のプロジェクト 【サイロ型PJの例】
  • 13. 【参考】派生パターン、保守パターン(「チケット駆動開発」) 派生パターン、保守パターンも、寿命の⻑いPJは親プロジェクトにする copyright2014 akipii@XPJUG関西13 【派生パターン】 親プロジェクト:共通基盤 子プロジェクト:派生製品 【派生パターン】 親プロジェクト:保守 子プロジェクト:派生開発
  • 14. 【参考】CCBパターン(「チケット駆動開発」) copyright2014 akipii@XPJUG関西14 【CCBパターン】 ・親プロジェクト:複数チーム 横断の課題管理 ・子プロジェクト:各チームの タスク管理 【変種】 CCB+派生パターン の組合せもある
  • 15. 【2】大規模受託案件の プロジェクト管理 copyright2014 akipii@XPJUG関西15
  • 16. 【Q】MSProjectからの移⾏ 質問MSProjectからRedmineへ移行できますか???? 頻出場所大規模受託案件のWBS登録 根本原因WF型開発やWBS駆動にこだわり過ぎている 回答①小規模リリースによるチケット駆動開発に乗り換える ②WBSを親子チケット方式で階層化する ③タスク管理は従来のMSProjectで運用し、こぼれ落ちた 作業は補完チケット方式でサポートする ※MSProjectとRedmineで二重管理する 関連プラクティス①小規模リリース ②チケットで分割統治 ③アダプタブルWF (@sakaba37) copyright2014 akipii@XPJUG関西16 関連 アンチパターン ・担当者固定 ・Excel管理
  • 17. 【参考】アダプタブルWF(@sakaba37) WF型開発の各⼯程で管理しづらい作業をチケット駆動開発(TiDD)で補完する ⇒PJ管理では、進捗管理から漏れるリスク管理の⽅が重要! copyright2014 akipii@XPJUG関西17 要件 定義 設計 開発 テスト リリース シス テム テス ト WF型開発 設計 開発 テスト 設計 開発 テスト 課題・レビュー管理障害管理 補完型 TiDD 補完型 TiDD
  • 18. 【反例】担当者固定(松谷) copyright2014 akipii@XPJUG関西18 名前担当者固定 頻出場所大規模WF型開発のWBS管理 症状と結果1チケット====1担当者で運用すると、90%シンドロームになり やすく、進捗を管理しにくい 挿話証拠「WBSで管理すると、いつも進捗が遅くなるね」 根本原因・1つの作業を設計・開発・テスト・レビューに分割しすぎ ・WF型開発に固執しすぎ 再構想解の プラクティス ・ペア作業 ・Doneの条件 再構想による 解決 ①チケットのステータスごとに担当者を変える運用にする ※チケットのやり取りを「ペア作業」で行う ②作業を親子チケットに分割し、チェックリスト化する 変種・停滞したチケット(90%シンドローム) ・WBS駆動
  • 19. 【参考】ペア作業 担当者の作業を チケットの状態遷移図で 管理できる 「〜中」「〜完了」ステータス は「混乱させるステータス」の アンチパターン! • チケットは2人以上の担当者がキャッチボールして終わる • 開発者がバグ修正後、テスターがバグ検証する • 開発者が作業完了後、管理者が承認する • 開発者が仕様を質問後、設計者が回答する copyright2014 akipii@XPJUG関西19
  • 20. 【反例】混乱させるステータス 名前混乱させるステータス 頻出場所チケット管理に慣れていない初心者チーム 症状と結果「~~~~中」「~~~~完了」ステータスにすると、担当者が不明確になり やすく、作業が停滞する 挿話証拠「検証中、リリース完了のステータスは、誰がボールを持って copyright2014 akipii@XPJUG関西20 いるのかね????」 根本原因「~~~~中」「~~~~完了」というステータス名は、作業のトリガーになっ ていない 再構想解の プラクティス ・Doneの基準 ・ペア作業 再構想による 解決 ・ステータス名は「~~~~待ち」「~~~~前」に統一する ・ステータスが作業のトリガーになるように運用する 変種・足りないステータス ・停滞したチケット(90%シンドローム)
  • 21. 【反例】乱発されたトラッカー 名前乱発されたトラッカー 頻出場所チケット管理に慣れていない初心者チーム 症状と結果似たような意味で、同じステータス遷移のトラッカーが多くて、 開発作業が混乱する 挿話証拠「「開発」「管理」「タスク」はどう使い分けるの????」 「課題とQAは何が違うの????」 根本原因業務フローや開発プロセスが整理されていない copyright2014 akipii@XPJUG関西21 再構想解の プラクティス ・チケットはワークフローに従う ・チケット集計はワークフローに従う 再構想による 解決 ・似たようなトラッカーは、運用を統一する ・Redmineから出力される帳票単位にトラッカーを作る 変種スタンプラリー
  • 22. 【参考1】チケットはワークフローに従う • 同じワークフローを持つトラッカーは、抽象化して一つにま とめる(知識操作パターンで統一) (「チケット駆動開発」) • 「タスク」は作業のインスタンスを抽象化した概念 • トラッカーが多すぎると、メンバーが混乱する copyright2014 akipii@XPJUG関西22
  • 23. 【参考2】チケット集計はワークフローに従う • Redmineから出⼒される帳票単位にトラッカーを作る • ワークフローやチケットの属性をトラッカー単位に揃える 帳票出力 copyright2014 akipii@XPJUG関西23 進捗一覧 Redmine 障害一覧課題一覧 タスクバグ課題 各種帳票 トラッカー
  • 24. 【反例】スタンプラリー copyright2014 akipii@XPJUG関西24 名前スタンプラリー 頻出場所ソフトウェア保守の変更管理プロセス 症状と結果ワークフローが複雑すぎて、チケットが停滞している 例::::あるトラッカーには、ステータスが10個もある 挿話証拠「チケットを完了させるには、ステータスが多すぎるね」 根本原因1個のワークフローで複数の作業を完了させようとしている 再構想解の プラクティス ・トラッカーライフサイクル ・サイクルタイム 再構想による 解決 ・プロセスのフェーズごとに、トラッカーを使い分ける ・ワークフローのリードタイム(チケット平均完了日数)を短縮 化するように運用する 変種・放置されたチケット ・停滞したチケット(90%シンドローム)
  • 25. 【参考】トラッカーのライフサイクル(「チケット駆動開発」) 登録 Redmine ライフサイクルに応じて ワークフローは変わる 分割 copyright2014 akipii@XPJUG関西25 更新 Application Lifecycle Management(ALM)の 概念に繋がる
  • 26. 【Q】複数システムを横断する案件管理 質問複数システムを横断する短期案件のPJ管理は、Redmineでど のように管理すべきか???? 頻出場所複数システムを横断するが、短期の案件 例::::消費税対応、WindowsOSのVerUp対応 根本原因複数システムのタスク管理をRedmineにマッピングできていない 回答管理対象の案件の規模によって、チケット管理を変える ①小規模の場合、親子チケットで一元管理する ②中規模の場合、Redmineバージョンで機能単位に管理する ③大規模の場合、複数プロジェクト機能を使って、案件ごとに Redmineプロジェクトで管理する copyright2014 akipii@XPJUG関西26 関連プラク ティス ①WBS駆動(親子チケット方式) ②パーキングロットチャート ③プロジェクト分割
  • 27. 【参考1】WBS駆動(親子チケット⽅式) • 親チケットの下に、タスクを子チケットでぶらさげる • 【利点】親チケットで子チケットの進捗状況を集計できる • 【課題】タスクが増えると、階層が深くなり保守しにくくなる 親チケットの下記の項目に、子チ ケットの値が集計される。 ・開始日、終了日 ・進捗率 ・予定⼯数、実績⼯数 copyright2014 akipii@XPJUG関西27
  • 28. 【参考2】パーキングロットチャート • サブシステムのタスク管理をRedmineバージョンに対応付ける • 【利点】ロードマップやパーキングロットチャート画面で、進捗管理 しやすい • 【課題】チーム数が多くなると、Redmineプロジェクトごとにタスク 管理したくなる パーキングロットチャートは、ロードマップの別 の表示⽅法である。 (https://github.com/daipresents/redmine_parking_ lot_chart) copyright2014 akipii@XPJUG関西28
  • 29. 【参考3】プロジェクト分割 • サブシステムのタスク管理をRedmineプロジェクトに対応づける • 【利点】チーム単位にサブシステムを担当する時に管理しやすい • 【課題】サブシステム単位の進捗が分かりにくい • プロジェクト単位の進捗を表示するプラグインを使う(下記参照) 親プロジェクトの下にある 子プロジェクトの進捗を 集計して表示してくれる 【プロジェクト単位の進捗を表示するプラグイン】 redmine-progressive-projects-list https://github.com/stgeneral/redmine-progressive-projects-list copyright2014 akipii@XPJUG関西29
  • 30. 【3】オフショア開発の 構成管理 copyright2014 akipii@XPJUG関西30
  • 31. 【Q】ブランチの対応付け 質問ブランチはRedmineのどの機能に対応づけるべきか???? 例::::Redmineプロジェクト、バージョン、チケット copyright2014 akipii@XPJUG関西31 頻出場所ブランチ管理 根本原因ブランチの性質を理解していない 回答ブランチの性質によってRedmineの以下の機能に割り当てる。 ①長い寿命のブランチ(trunk)は、Redmineプロジェクト ※Redmineは、プロジェクトとリポジトリを対応付ける設計思想 ②リリースバージョンは、Redmineバージョンごとにタグ付け ※保守期間中だけ存命するリリースブランチは、Redmineの複 数リポジトリ管理機能で1プロジェクトにまとめる ③短い寿命のトピックブランチは、Redmineチケット ※Redmineチケットとブランチを対応づける思想は、Redmine に基本的にない 関連プラク ティス ブランチライフサイクル、製品とリポジトリの一致 小規模リリース、Iteration is Version
  • 32. 【参考】ブランチのライフサイクル ブランチの寿命に応じて、Redmineの機能へのマッピングを変える リリースブランチは、リリース時に生成され、次Verリリース 時に消滅する。 →リリースバージョンはRedmineバージョンでタグ付する 【関連パターン】 ・小規模リリース、Iteration is Version メインラインは製品の生存期間中、残り続ける。 →メインラインは、Redmineプロジェクトに対応付け、 リポジトリブラウザで⾒る。 【関連パターン】 ・製品とリポジトリの一致 トピックブランチは、トピック発生時に生成され、マージ 時に消滅する。 →トピックブランチは、Redmineチケット単位に作る。 トピックブランチがマージされるとRedmineチケット はCloseされる。 【関連パターン】 ・No Ticket No Folk, No Ticket No Merge copyright2014 akipii@XPJUG関西32 Redmine バージョン Redmine プロジェクト Redmine チケット
  • 33. 【Q】トピックブランチの実現⽅法 質問トピックブランチはどのようにRedmineチケットと対応づけ copyright2014 akipii@XPJUG関西33 るべきか???? 頻出場所ブランチ派生、masterへマージ、プルリクエスト 根本原因トピックブランチがRedmineの機能に対応づけられてない 回答【一つの解決策】 ①トピックブランチ名はチケットIDにする (No Ticket, No Folk) ②トピックブランチが消滅する時に、チケットもCloseする (No Ticket, No Merge) 関連プラクティス・No Ticket, No Folk ・No Ticket, No Merge 関連ツール https://github.com/mikoto20000/redmine_git_branch_hook https://github.com/bleis-tift/Git-Hooks https://github.com/coiled-coil/git-redmine https://github.com/nvie/gitflow
  • 34. 【参考】「No Ticket, No Folk」「No Ticket, No Merge」 • チケットIDごとにトピックブランチをFolkする(No Ticket, No Folk) • チケットをCloseするタイミングで、トピックブランチをmergeする(No Ticket, No Merge) • 【利点】チケットにパッチを添付して、やり取りしなくても良い(手順1→2、3→4) copyright2014 akipii@XPJUG関西34 メインライン (trunk) トピックブランチ 【手順1】 #10 機能追加 (新規) 【手順3】 #10 機能追加 (終了) 【手順2】 folk 【手順4】 merge #10 機能追加 (作業中) • 【課題】GitHubのような手軽さがない • 例:folkやmerge、pull requestの操作後に、チケット登録・Closeのフック処 理を自動で実⾏する(手順2→1、手順4→3にしたい)
  • 35. まとめ copyright2014 akipii@XPJUG関西35
  • 36. まとめ • Redmineを利⽤して、PJ運営能⼒を⾝に付けよう • チケット管理はプロジェクトの問題を⾒える化してくれる • PM経験が不⾜していても、RedmineでPJ管理を実験できる • Redmineの豊富な機能を利⽤場面に応じて使い分けよう • チケット管理はAgile開発を参考にしよう • 「チケットは柔軟で変化に対応しやすい」特徴を活かそう • WBS駆動のタスク管理は変化に弱い • リスク管理はチケットで追跡していく • Redmineの課題の一つは「Git連携の機能強化」 • Git-flowモデル、プルリクエスト機能は不⼗分 • Git連携を機能強化して、RedmineをAgileな開発基盤にしたい • 【試案】Redmine+GitLabでGitHub機能を実現する(@_shimada) copyright2014 akipii@XPJUG関西36
  • 37. ご清聴 ありがとう ございました copyright2014 akipii@XPJUG関西37