チケット単位に並行開発する事例
分散バージョン管理Git、Mercurialを絡めたチケット駆動開発で、興味深い事例があったのでメモ。
【事例1】
gitだからこそできるチケット駆動開発のやり方 - kunitの日記
今やっている方法は、作業するなら作業用のブランチを切れ!それにはチケット番号を付けろ!という方式にしている。
たとえば会員管理の機能に追加したい場合は以下のような手順になる。
1. 会員管理を拡張したいなぁ
2. じゃRedmineでチケットを切るぞ
3. チケット番号が振られた(たとえば #567 だとする)
4. さぁ、ブランチ切るか(members_567)
5. そのブランチで作業開始!
濱野さんがWEB+DBでも入門Gitでもかかれている「トピックブランチ」というものの良さが本当に現れてくる。
【事例2】
Mercurialを使った俺々バージョン管理ノウハウまとめ(2009年夏編) - 文殊堂
ticket毎に開発作業用branchを作成する
* 同期branchから作成する
* 同期branchから随時rebaseする
* 必ず、同期branchの最新版からrebaseした状態でテストを行う。
* テストが通ったらticket別branchから同期branchにmergeする。その後、同期branchの内容で中央リポジトリにcommitする。
o 同期branchにmerge後、ticket別branchはinactiveなbranchになる
いずれの事例も、作業する時はチケットを作り、trunkから切ったブランチにチケットNoを紐づけて運用する。
つまり、チケット単位にブランチを作り、そのブランチ上でソースの修正を行い、作業が完了したらtrunkにマージしてチケットが終了する。
分散バージョン管理では、ブランチは中央リポジトリではなく、開発者個人のローカルなリポジトリに作られる。
つまり、SVNやCVSのような中央集権的バージョン管理ではローカルの開発環境で作業していたコードラインを、GitやMercurialのような分散バージョン管理では、明示的に開発者のローカル環境のブランチとして作業できる。
その利点は、trunkとは別個に作業履歴を残せること、そして、分散バージョン管理の優れた自動マージ機能のおかげで、trunkにすぐに反映できることだ。
そして、このブランチをチケットに紐付けて、作業ステータスを管理できるようにする。
このやり方をトピックブランチと呼ぶらしい。
SVNなら管理しづらいブランチも、分散バージョン管理では普通の状況であり、その利点をフルに生かしている。
しかも、チケット駆動開発と絡めれば、トピックブランチの作業状態もBTS上でリアルタイムに把握できる。
このトピックブランチは、プライベートブランチ、タスクブランチの一種とも言えるが、チケット駆動開発とかなり相性がよい。
トピックブランチをチケットブランチと言ってもいいくらいだ。
特に、作業者が複数人の場合、更には大規模プロジェクトで並行開発する場合、あるいは、組込製品やパッケージ製品での並行開発で、このやり方は大きな威力を発揮するのではないか?
アジャイル開発が事実上、並行開発せざるを得ないように、チケット駆動開発はソフトウェア構成管理と密接に関係する。
その理由は、チケット駆動開発と並行開発の相性が良いから。
元々、Redmineでは、1リポジトリ=1プロジェクトの運用思想のため、ブランチ単位にRedmineプロジェクトを作る。
この複数プロジェクト機能を使えば、チケット駆動開発を並行開発のインフラにできる。
普通は、並行する2本のライン(trunk, branch)はプロジェクト単位だが、上記のトピックブランチはチケット単位でブランチを管理する。
つまり、BTSのプロジェクトとチケットで観点を変えて、ブランチを管理すればいい。
分散バージョン管理とチケット駆動開発の組み合わせは、並行開発の管理を劇的に効率化する可能性があると思う。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- 掃き溜めの鶴を活かすマネジメント、それは強みSと環境Oを組み合わせたクロスSWOT分析と同じだ(2026.10.01)
- 第23回Redmine大阪の感想~AIの暴走はチケット駆動で制御する!AI時代に人間が担うべき真の役割は何なのか? #redmineosaka(2026.09.06)
- Redmineのブロッキング機能はどこで使うのか?~FF関係で使うべきだ!(2026.08.10)
- 製造業でアジャイルが定着しない理由~スプリント不在とチケット二重管理の壁 #Redmine(2026.07.18)
- Redmine利用成熟度モデルによる運用戦略(2026.07.12)
「ソフトウェア工学」カテゴリの記事
- Redmineのブロッキング機能で工程単位Redmine運用とトレーサビリティを解決するアイデア(2026.09.21)
- 第23回Redmine大阪の感想~AIの暴走はチケット駆動で制御する!AI時代に人間が担うべき真の役割は何なのか? #redmineosaka(2026.09.06)
- AI時代のソフトウェア開発者とはアーキテクトの役割として再定義される(2026.08.30)
- AI時代の「コードと人間の関係」を問い直す—デブサミ関西2026で考えた、アーキテクチャの未来とコミュニティの価値 #devsumi(2026.08.22)
- 人の成果物は品質基準に不足しすぎるが、AIの成果物は品質基準を超過しすぎる(2026.08.16)
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「構成管理・Git」カテゴリの記事
- PLMツールとは部品表の構成管理ツールでありGitHubである(2026.03.08)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
「チケット駆動開発」カテゴリの記事
- Redmineのブロッキング機能で工程単位Redmine運用とトレーサビリティを解決するアイデア(2026.09.21)
- 第23回Redmine大阪の感想~AIの暴走はチケット駆動で制御する!AI時代に人間が担うべき真の役割は何なのか? #redmineosaka(2026.09.06)
- 人の成果物は品質基準に不足しすぎるが、AIの成果物は品質基準を超過しすぎる(2026.08.16)
- チケット駆動でAIを制御する仕組みのアイデア(2026.08.13)
- Redmineのブロッキング機能はどこで使うのか?~FF関係で使うべきだ!(2026.08.10)


コメント