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

8,023
-1

Published on

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

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

No Downloads
Views
Total Views
8,023
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
44
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

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

  1. 1. PHP部の紹介も終わったところで<br />
  2. 2. Redmineで始めるチケット駆動開発<br />佐藤琢哉<br />LOCAL PHP部<br />
  3. 3. あれ、ここってPHP部の時間じゃ…<br />
  4. 4. 技術的な話はほとんど出てきません<br />
  5. 5. 開発手法の話なのでPHPプログラマにも安心して使えます<br />
  6. 6. 自己紹介<br />佐藤琢哉 aka nazo<br />旭川出身 東京在住<br />株式会社RYUS所属(http://ryus.co.jp)<br />rhaco-ja?<br />LOCAL PHP部<br />Hatena : nazone<br />twitter/wassr : nazo<br />
  7. 7. LOCALの人になりました<br />
  8. 8. アジェンダ<br />チケット駆動開発について<br />Redmineについて<br />具体的な使い方<br />まとめとおまけ<br />
  9. 9. そもそも何の話?<br />
  10. 10. Redmine?チケット駆動開発?<br />
  11. 11. 日本語でおk<br />
  12. 12. タスク管理を効率的に行うための話です<br />
  13. 13. わかりづらい説明<br />
  14. 14. チケット駆動開発<br />
  15. 15. チケット駆動開発?<br />
  16. 16. チケット<br />タスクの最小単位<br />例えば「検索フォームで未入力の状態で検索するとエラーになるので修正する」<br />例えば「新規登録画面を実装する」<br />バグ登録フォームで登録したバグ1つ<br />バグ以外の新規開発もチケット<br />
  17. 17. 一つのタスク=チケット<br />
  18. 18. チケット駆動開発<br />タスクをチケットの単位まで細かく区切って、それを消化していく開発手法<br />すべてのタスクがチケットとして存在するので、タスクの量がわかる<br />チケットにステータスが付いているので、タスクの消化量がわかる<br />
  19. 19. チケットの消化量=進捗具合<br />
  20. 20. どのくらい進んでいるかがチケットの量でわかる<br />
  21. 21. プログラミングに限らず使える<br />
  22. 22. 普通の進捗管理の問題点<br />誰が何してるのかわからない!<br />あの機能誰に振ったっけ?<br />あれ作るのに他の人の作業の完了を待たないといけない?<br />その機能大きいから他の人と分担させたいんだけど…え、全部に手をつけてるから分担できない?<br />
  23. 23. 普通の進捗管理の問題点<br />どこまでの機能が完成予定なのかわからない<br />次回のリリースはどこまで含めるんだっけ?<br />あの機能は当然完成してるものだと思ってたんだけど…<br />
  24. 24. それEXCELでできるよ!<br />
  25. 25.  <br />
  26. 26. EXCELガントチャートの問題点<br />ガントチャートだからそもそも1日単位でしかタスクをアサインできない<br />1日に何時間振るの?<br />1日のタスクの順序は?<br />そのタスクは現在どういう状況?<br />
  27. 27. EXCELガントチャートの問題点<br />そもそも修正が面倒<br />一人で全部設定するの?<br />複数人でやったら誰がどこを編集したかわかる?<br />
  28. 28. そこでチケット駆動開発<br />
  29. 29. そして<br />
  30. 30. チケット駆動開発のためのRedmine<br />
  31. 31. 注意<br />
  32. 32. チケット駆動開発で調べるといろいろ出てきますが<br />
  33. 33. どれが正しい方法というわけではありません<br />
  34. 34. 今回の紹介は私の個人的な体験に基づいて作成したものです<br />
  35. 35. どれが正しいというわけではないので、皆さんの状況に合わせてご利用下さい<br />
  36. 36. Redmineとチケット駆動開発<br />
  37. 37. Redmine?<br />
  38. 38.
  39. 39. Redmineとは<br />Ruby On Railsをベースに作られたIssue Tracking System<br />(懸案管理システム:ITS) <br />いわゆるtracとかMantisみたいなの<br />チケットを登録して、チケットの管理を行うためのシステム<br />
  40. 40. trac<br />
  41. 41. Mantis<br />
  42. 42. Redmineのいいところ<br />複数プロジェクトの管理ができる<br />多数の案件を抱えている人には必須<br />豊富な標準機能<br />チケット、Wiki、タイムライン、ガントチャート、カレンダー、リポジトリ、ファイル管理、etc…<br />標準で日本語対応<br />
  43. 43. インストール方法とか<br />http://redmine.jp/<br />に大体載ってます<br />ryus.co.jpのスタッフブログでも少し書きました<br />
  44. 44. インストールの説明とかしても仕方ないので<br />
  45. 45. 実際の作業の流れを追ってみましょう<br />
  46. 46. タスクの進め方<br />
  47. 47. ワークフロー<br />タスク発生<br />チケット登録<br />担当者アサイン<br />作業確認<br />終了<br />管理者タスク<br />実作業<br />解決<br />開発者タスク<br />
  48. 48. ここから実際の流れ<br />
  49. 49. タスク発生!<br />
  50. 50. タスクをチケットとして登録<br />
  51. 51. タスクをチケットとして登録<br />
  52. 52. チケット登録時の説明を簡単にすると<br />
  53. 53. 1つのチケットはあまり時間がかからないように<br />
  54. 54. チケットを見て疑問点がないように<br />
  55. 55. 以上!<br />
  56. 56. 以下詳細<br />
  57. 57. タスクをチケットとして登録<br />ほどほどに細かく分ける<br />当然細かすぎてもよくない<br />最初は細かすぎると思うくらいでいいかも<br />1つのチケットは1人の担当者で解決できるようにする<br />ケースバイケース<br />
  58. 58. タスクをチケットとして登録<br />時間がかかりすぎている、いつ終わるかわからない、と感じたらもっと細かくする<br />明らかにまとめたほうがいいと感じたらまとめる<br />1つのタスクを解決するのに、別の大きな問題が発生したら、途中ででもチケットを分割する<br />
  59. 59. 1つのチケットは最大でも1日で終わるレベル<br />
  60. 60. チケット入力フォーム<br />
  61. 61. 入力フォーム説明<br />
  62. 62. トラッカー<br />チケットの大枠の分類。全プロジェクト共通<br />
  63. 63. 題名<br />そのチケットの内容を的確に表すもの<br />短いよりは長いほうがいいが、長すぎないように<br />「検索が動かない」よりは「検索結果が0件になる」のほうがいい<br />「検索が動かない」だと、「ボタンを押しても反応しない」とか「次の画面が真っ白になる」とか「ボタンを押すと関係ない画面が表示された」という例も考えられる<br />
  64. 64. 説明<br />そのチケットの内容を詳細に記述<br />以下の要素が必須<br />具体的な発生条件(わかる範囲まで調べる)<br />URL<br />入力内容<br />その結果どうなるか<br />本来期待される動作<br />チケットを起こした後に担当者がチケットを起こした人に再度質問しないようにする<br />
  65. 65. ステータス<br />そのチケットの現状<br />とりあえず最初は当然「新規」<br />
  66. 66. 優先度、担当者、開始日、期限日、予定工数、進捗、ファイル<br />説明不要<br />
  67. 67. Watchers<br />このチケットを監視する人<br />監視対象になると、マイページの「ウォッチ中のチケット」で確認できる<br />自分は起票者でも担当者でもないけど、そのチケットの進捗を確認したい時などに使う<br />
  68. 68. 関連するチケット<br />チケットを起こした後に設定可能<br />「このチケットを終わらせるにはあのチケットを先に終わらせないといけないよねー」みたいな時に設定する<br />片方で設定すると相互リンクされる<br />
  69. 69. チケットを起こしたら<br />
  70. 70. タスク発生<br />ワークフロー<br />チケット登録<br />担当者アサイン<br />作業確認<br />終了<br />管理者タスク<br />実作業<br />解決<br />開発者タスク<br />
  71. 71. 担当者を決める<br />
  72. 72. 担当者はチケットが割り振られたら<br />
  73. 73. タスク発生<br />ワークフロー<br />チケット登録<br />担当者アサイン<br />作業確認<br />終了<br />管理者タスク<br />実作業<br />解決<br />開発者タスク<br />
  74. 74. 優先度や期限などから作業順序を判断し作業を開始する<br />
  75. 75. 担当者が作業中にするチケット操作<br />
  76. 76. 進捗<br />通常は0%->100%で終了することが多い<br />少し長めのチケットの場合、数時間おきに進捗を更新するとスケジュールが把握しやすくなる<br />作業開始時はステータスを「担当」にする<br />
  77. 77. コメント(注記)<br />作業中に気になったことや、メモしておきたいことは随時記入する<br />起票者と担当者が遠隔地にいる場合(OSS開発とかでありそう)、ここを「このチケットに対するフォーラム」的な扱いとして議論することもある<br />
  78. 78. こうして作業を進めていき<br />
  79. 79. 終わった!と思ったら<br />
  80. 80. タスク発生<br />ワークフロー<br />チケット登録<br />担当者アサイン<br />作業確認<br />終了<br />管理者タスク<br />実作業<br />解決<br />開発者タスク<br />
  81. 81. 解決に必要なもの<br />確認方法<br />ソースコード<br />ステータスを「解決」にする<br />
  82. 82. まずコミットがされていること<br />
  83. 83. コミット<br />プロジェクトのリポジトリを事前に設定<br />コミットログに「refs #1111」のようにチケット番号を書くと、そのチケットへの相互リンクが作られる<br />コミットログに「fixes #1111」のようにチケット番号を書くと、そのチケットが自動的に解決状態になる(要設定)<br />refsとかfixesの文字は任意に設定可能<br />
  84. 84. 起票者が確認可能であること<br />
  85. 85. 確認<br />Webアプリの場合はそれを確認するURL<br />その他の場合はどのテストを実行すると判別できるか、など<br />「私の環境では動いたんだけど…」とかの基本的なミスをなくすために、自分以外の環境で動作を確認できるようにする<br />
  86. 86. タスク発生<br />ワークフロー<br />チケット登録<br />担当者アサイン<br />作業確認<br />終了<br />管理者タスク<br />実作業<br />解決<br />開発者タスク<br />
  87. 87. 確認<br />問題があればフィードバック(差し戻し)にする<br />フィードバックになったチケットは、それだけで時間の無駄が発生しているということになるので、どうすればフィードバックになるチケットが無くなるかを考える必要がある。<br />
  88. 88. タスク発生<br />ワークフロー<br />チケット登録<br />担当者アサイン<br />作業確認<br />終了<br />管理者タスク<br />実作業<br />解決<br />開発者タスク<br />
  89. 89. 終了<br />お疲れ様でした!<br />
  90. 90. 「チケット駆動」の名の通り<br />
  91. 91. チケットの扱いが重要なので<br />
  92. 92. プロジェクトの体制や環境に合わせてカスタマイズすると使いやすくなります<br />
  93. 93. ガントチャートとか<br />
  94. 94. あくまでおまけ程度の機能です<br />
  95. 95. 「全ての開発作業がチケットとして登録されている」状態を目標としてみてください<br />
  96. 96. 実際に弊社(RYUS)でも使っています<br />
  97. 97. RYUSでは…<br />しばらくMantisで管理<br />Mantisちょっと機能たりなくね?<br />そこでRedmine<br />移行スクリプトも標準であるよ!でもかなり手を入れた<br />
  98. 98. RYUSでは…<br />ステータスの追加<br />保留とか<br />却下とか<br />一部Mantis時代の名残も<br />
  99. 99. CSS調整大事<br />
  100. 100. チケット一覧カスタマイズ<br />
  101. 101. classとかIDとか最初から振られているのでCSS側を変更するだけ<br />
  102. 102. その他便利機能<br />
  103. 103. ロードマップ<br />マイルストーン<br />次回のリリースではどのチケットがcloseされている必要があるか?を一覧できる<br />予定工数を入れておけば、「トータルで何時間かかるか」も見ることができる<br />
  104. 104. Wiki<br />Textile記法<br />h1. 見出し<br /># リスト<br />チケット番号の自動リンク付き(#1234)<br />リビジョンへの自動リンク付き(r1234)<br />
  105. 105. フォーラム、ニュース<br />プロジェクト自体の報連相に<br />ニュースはRedmineのトップページに出る<br />
  106. 106. リポジトリ連携<br />GitやMercurialにも対応<br />単純なリポジトリブラウザとしても便利<br />refsやfixesでチケットと連動<br />設定するときはcronでリポジトリ情報を取得するようにする(説明省略)<br />
  107. 107. まとめ<br />
  108. 108. Redmineを使うと<br />
  109. 109. タスク管理が楽になる<br />
  110. 110. メリット<br />タスク管理がとにかく楽<br />Wikiとかもあるので情報の集約ができる<br />コミットとタスク(チケット)を関連付けできる<br />
  111. 111. よくわかんないという方は<br />
  112. 112. とりあえずインストールして触ってみてください<br />
  113. 113. 使ってみないとわかりません<br />
  114. 114. 難点<br />インストールがやや面倒<br />Railsアプリの経験がないと…<br />Windows環境は更に難関<br />APIとか拡張方面に弱い<br />このへんはtracのほうが上<br />
  115. 115. インストールは楽なほうがいい<br />
  116. 116. PHPだともっと楽だよね!<br />
  117. 117. PHPでRedmineみたいなのあればなぁ…<br />
  118. 118. PHPならカスタマイズも楽なのになぁ…<br />
  119. 119. そこで<br />
  120. 120. Candycane<br />安藤祐介(yandod)さんが中心になって作られているオープンソースプロダクト<br />CakePHPでRedmineを作る!<br />RedmineのコードをベースにCakePHPに移植するのが第一目標<br />将来的には独自路線の使いやすさを目指す<br />
  121. 121. Candycane<br />
  122. 122. 本当はこれの紹介を重点的にしたかったのですが<br />
  123. 123. 私が既にあまり関わっていないためそれほど紹介できません<br />
  124. 124. orz<br />
  125. 125. 今夏公開予定!(らしい)<br />
  126. 126. おわり<br />

×