はじめに
Jiraのチケット管理機能1を使うことでチーム開発のタスク管理を効率化することができますが23,GithubなどのSCMとの自動連携は追加設定が必要です.今回はこの過程と実際の開発環境での使用方法を解説します.
Jiraのチケット管理機能とGithubの連携によって以下のような恩恵が得られると考えています.
背景
私は自律走行ロボットのチーム開発を行なっています.チームではJiraを用いたタスク管理を行なっていました.
Jiraだけでもタスク管理はできていたのですが,①タスクの粒度が曖昧で,チケットと実装機能の対応関係が判然としないため,②打ち合わせで作成したタスク表の内容と実装の粒度が一致しない.その結果,③Jiraのタスクボードと実装の進捗が一見してもわからない(実情と不一致).
最終的にJiraの利用が面倒になってしまう.という問題が発生しました.
解決策として「1ブランチにおいて1機能を追加実装する」というGitの原則をJiraでのタスク管理に適応させることで,チケットが持つべきタスクの粒度を明確にすることが考えられます.
その手段として今回のJiraとGithubの連携を行います.
(Git ワークフローやGitのブランチモデルについてはこちら)
0.事前準備 Jiraと Githubの連携
Jiraのアカウントと,Githubのアカウントおよび作成済みのリポジトリは必須です.どちらも管理者権限が必須です.Jiraでもプロジェクトがすでに作成されていることを前提として進めます.
これらが用意できたら,GitHub Cloud を Jira に接続する |アトラシアン サポートを参考にしてJiraとGithubを接続します.
1. 自動化の手順
1.1 ワークフローの設定
さらに右上のワークフローの編集をクリックして,チケットのステータスを変更します.
ワークフローの編集方法は他の記事に任せます4.はじめに述べたように,チケットはGithubのブランチに紐付けるため,チケットのライフタイムは,ブランチを作成→開発→プルリクエストの作成→マージに合わせたいです.
チケットのステータスは,
1.ブランチを切る:DOTO → WIP (Work In Progress)
2.開発する:WIP
3.プルリクエスト:WIP → REVIEW
4.実装内容がマージされる:REVIEW → DONE
としてワークフローを編集しました.
1.2 自動化の設定
Automationを設定することで,Githubでブランチを作成したり,プルリクを出す度にチケットステータスが自動で変更されるようになります.
1.1と同様の右側のリストからプロジェクト設定→自動化をクリック
→右上のルールを作成をクリック
ここで先ほど定義したワークフローの繊維に合わせて
1.ステータスがTODOの時にブランチが作成されたらステータスをWIPに移動する
2.ステータスがWIPの時にブランチが作成されたらステータスをREVIEWに移動する
3.ステータスがREVIEWの時にブランチが作成されたらステータスをDONEに移動する
の3つの自動化ルールを作成していきます.
※詳しいやり方→Jira 自動化ルールを作成して編集する | アトラシアン サポート
ルール1: ステータスがTODOの時にブランチが作成されたらステータスをWIPに移動する
ルール2: ステータスがWIPの時にブランチが作成されたらステータスをREVIEWに移動する
ルール3: ステータスがREVIEWの時にブランチが作成されたらステータスをDONEに移動する
ここまで設定を行えば,自動化が完了です.次に実際どのように使うのか見ていきましょう.
2. 使い方
自動化の設定が完了したので,開発フローの中でどのように使うのか見ていきましょう.
2.1 チケットからブランチを作成する:TODO→WIP
打ち合わせなどで自分のタスクが決定し,Jiraに自分のタスクが割り当てられているとします.リモートリポジトリはすでに存在していて,チケットに対応する機能の開発を始めます.
まずチケットを開いてブランチを作成しましょう.
すると以下のような画面に遷移するので,対象のリポジトリを選び,branch nameを決めます.branch nameは任意の命名ではなく,チケットのIDを含む物でなくてはなりません.今回はARCDEV-20
という文字列を含むものにする必要があるので,文字列の後に,EdgeDetection
を追加して開発内容を明示します.
するとその名前でブランチが作成されます. Githubの画面でも確認できますね.
あとは開発を行なって,最終的にはプルリクエストを作成することになります.
この段階で,タイムラインではチケットのステータスがWIP(開発中)に切り替わっていることがわかります.
TODOからWIPに変わっている!!

2.2 開発する:WIP
ガリガリ開発しましょう!!!
2.3 プルリクエストを作成する:WIP→REVIEW
さて,実装が済んだらメインブランチなどにプルリクエストを出します.こちらは Githubで作業します.
プルリクを出すと,チケットのステータスがレビュー
へと自動的に変わっていますね.
2.4 マージする:REVIEW→DONE
さらにレビューが完了して,マージされると,チケットのステータスは完了
へ遷移しました.これで実装が完了し,開発フローの工程が終了しました!!
この流れでタスク割り当てと実装を行うことによって,チーム内での会議の効率から,個々の開発時の作業を効率化できるのではないでしょうか.
3.終わりに
今回は僕たちのチームの開発フローに合わせて自動化を行っています.1チームの工夫に過ぎないのでチームごとに開発フローやタスクの粒度に合わせて自動化フローを決めると良いと思います.
やったこと
チケットのステータス遷移のオートメーションの利用により,Githubを用いた開発フローを効率化した.このフレームワークを確立し,それに従ってチケット割り当てを行うことで,タスク割の粒度も実装単位に整理される.
タスクの粒度について
チケット1つはあるリポジトリで行っている開発の1機能に対応させる必要があります.タスクをメンバーに振り分ける時,チケットに対応する追加機能が複数だったり,ひとつ未満だったりすることは避けるように工夫する必要があります.
一方タスク割り当てに無駄に制約がかかってしまう場合もあります.一つの参考にしていただけると幸いです.