チケット駆動開発の展望part1
チケット駆動開発について思ったことをラフなメモ書き。
「チケット駆動開発」という言葉がそれほど巷で知られてきたという事実の方が感慨深い。
チケット駆動開発が従来のBTSやITS何が違うのか、従来のBTSやITSからどのように発展してきたのか、を考えると、単なるタスク管理だけでなく、アジャイル開発をサポートするインフラである事実の方が重要な気がしている。
Redmineによるチケット駆動開発で、ソフトウェア開発のタスク管理の諸問題がすべて解決するのは幻想だ。
むしろ、チームのタスクや課題が溢れて、手に負えなくなる状況をメンバーだけでなく、上司にも顧客にも見せてしまう。
1週間で10枚のチケットしか消化できないチームが1週間で20枚もチケットが増え続けたら、チケットで溢れかえって、チームは混乱しているだろう。
チケット駆動開発が教える所では、バージョン単位にチケットをタイムボックス化し、ロードマップでリリース計画を作るのがチケット管理の基本だ。
この手法はScrumのバックログ、PMBOKのスコープ管理にも通用する。
マイルストーン単位にタスクの量を抑えて、チームがタスクをコントロールできる能力を付与するのだ。
チケット駆動開発を運用すること自身が自己目的化する罠は、特にマネージャ層に多いと思う。
そもそも開発者は、チケットの粒度を整えたり、チケットを綺麗に書いたりすることに執着しない。
プログラミングを通じて価値あるソフトウェアを作るのが目的なのであり、Redmineを運用するのはあくまでもその過程のタスク管理を有効にサポートしてくれるから使っているだけ。
でも、マネージャは、Redmineに貯まったデータから進捗一覧、課題一覧、障害一覧のような帳票を綺麗に出してみたくなる。
実際、Redmineに貯まった予定・実績工数は、コスト管理やコストの予測にとても有効に使えるからだ。
だから、開発者に無理強いして、予定・実績工数を入力させたがり、プロセスそのものがどんどん重くなっていく。
その話は、丁度ERPやCMMIの導入による失敗事例にとても似ている。
いくら効果的なツールやプロセスであっても、社員やメンバーに強制させれば、業務は回るだろうが、本来の崇高な目的から離れた運用になってしまう。
Pivotal Trackerとredmineの違い: プログラマの思索
チケット駆動開発はレベルが高いと思ってしまう理由は、チケットをストーリーカードのように扱うPivotal Trackerのような使い方を想定しているからだろうと推測する。
倉貫さんが実運用している事例では、自社パッケージ製品開発において、ストーリーカードを1人日未満で細分化してチケット駆動で開発されている。
この手法が有効なのは、自分たちで作っている製品だから設計もアーキテクチャも知り尽くしているが故に、わざわざタスクカードまで落とさなくてもストーリーカードで、メンバーが十分理解できて作業できる環境にあるから。
でも、普通はそんなソフトウェア開発ばかりではない。
むしろ、フィーチャのような荒い粒度のストーリーを更にタスクへ分割し、それをチケットに当てはめて試行錯誤しながら開発していく方が普通だ。
チケット駆動開発は、チケットをストーリーカードのように扱うこともできるし、タスクカードとして扱ってタスク駆動として運用することもできる。
つまり、適用範囲(コンテキスト)に応じて、使い分けることの方が重要だ。
逆に、チケットをコンテキストに応じてどの概念にマッピングした方が良いのか、をもっと研究する方が大切だろうと思う。
※追記
@kuranukiさんからコメントがきたのでリンクします。
Twitter / @akipii: Jenkinsの本質はバッチジョブ制御ツール。継続的インツグレーションからバッチ処理の簡易化へ進化してる。
Twitter / @hayato_1980: @akipii 最近、画面に"最近の成功ビルド"とかでてるのが違和感あるくらいビルド以外に使ってます。.
チケット駆動開発では、@haru_iidaさんが提唱されたSW開発の3種の神器という概念が出てくる。
つまり、ITS・SCM・CIの3つのツールが組み合わさることによって、新たな使い方や概念が出てくることを意味している。
上記の記事では、Gitのトピックブランチをチケットに対応付けて、トピックブランチからマスター(trunk)へマージする場合、Jenkinsがテストを走らせてOKならマージし、常時ビルドする仕組みを提供している。
この記事が示唆する重要なポイントは二つある。
一つは、コミットフックはJenkinsによるバッチ処理でチケットと連携できる点。
チケット駆動開発の運用ルールとして「No Ticket, No Commit」があるが、これはSVNやGitのpost-commit-hookないしpre-commit-hookの機能を利用して実現される。
pre-commit-hookによって、コミットログにチケットNoが書いていなかったり、決められフォーマットで書かれていないコミットログは弾かれる。
post-commit-hookによって、コミット後に、コミットログに書かれたチケットNoがリビジョンとリンクすることによって、トレーサビリティを実現できる。
その場合、post-commit-hookの実現方法は、Redmineのリポジトリ画面をリフレッシュしたり、RedmineのWebサービス機能を使って自動化する方法があげられる。
だが、最もエレガントな方法は、Jenkinsでpost-commit-hookをイベントドリブンないしポーリング化することだろうと思う。そのアイデアは下記に書いた。
Redmineを業務システム化するアイデア~メトリクス集計の本質は集計バッチ処理: プログラマの思索
もう一つは、Jenkinsが単なるビルド管理ツールではなく、バッチ処理を制御するバッチ監視ツールである点。
Redmineを業務システム化するアイデア~メトリクス集計の本質は集計バッチ処理: プログラマの思索にも書いたけれども、Redmineのチケット集計機能の本質はバッチ処理に落ち着く。
何故なら、複雑なレポート(帳票)を出力したいならば、大量データを一括処理するバッチ処理の設計が必要になってくるからだ。
実際、IPAもRedmineやTracに貯められたプロジェクトの作業データからバッチ処理で意味あるメトリクスを出力するツールを開発されている。
【公開】RedmineのFAQとアンチパターン集 #Rxtstudy: プログラマの思索
その場合、バッチ処理を制御するツールとしてJenkinsが有力候補になるだろう。
実際、Jenkinsにはジョブという概念がまさにバッチジョブに相当するし、複数のジョブを組み合わせることでジョブフロー図らしきものを作ることができる。
そして、Jenkinsの優れたレポート機能を使えば、ジョブの状態をリアルタイムにモニタリングできる。
Jenkinsはたくさんのプラグインがあり、カスタマイズもしやすいので、バッチ処理を制御するためにもっと使いやすいUIや環境を作ることができるはずだ。
そうすれば、ソフトウェア開発の中で昔から難しいバッチ処理をてなずけることができるようになるかもしれない。
色々なアイデアを試してみたい。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
「Redmine」カテゴリの記事
- 第24回redmine.tokyo勉強会の感想 #redmineT(2023.06.03)
- 「Redmineハンドブック」は良い本です(2022.12.17)
- 第23回東京Redmine勉強会の感想~コミュニティは仲間から生まれて続く #redmineT(2022.11.06)
- 第22回東京Redmine勉強会の感想 #redmineT(2022.05.29)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
「ソフトウェア工学」カテゴリの記事
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- QAエンジニアの役割は開発チームのガードレールみたいなものという考え方(2023.08.21)
- テストアーキテクチャ設計モデルとJSTQB概念モデルの比較(2023.07.02)
- パターンカタログよりもモンスターカタログの方が面白いね #jasstkansai(2023.06.24)
- 「ゲームをテストする バグのないゲームを支える知識と手法」の感想(2023.06.10)
「チケット駆動開発」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
- タスク分割は親子チケットにすべきか、それともチェックリストにすべきか #redmine(2022.03.04)
- Redmineにメンション機能が入るらしい(2022.01.15)
「Agile」カテゴリの記事
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 日本のアジャイル開発の先人による話が良かった(2023.07.15)
- JSTQBのテストプロセスの概念モデルを描いてみた(2023.05.26)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
コメント