開発のプロジェクト管理をGitHub ProjectsからJiraに移行しました

f:id:kazuhei0108:20210219113421p:plain

こんにちは。M&Aクラウドのかずへいです。

今年に入って開発のプロジェクト管理をGitHub ProjectからJiraに移行しました。

どのような意図で今回Jiraに移行したのかを紹介させてもらえばと思います。

GitHub Projectsを利用していたときの課題

GitHub Projectsを使い始めた時はホワイトボードの物理的なカンバンの代わりとしてだったと思います。その時のエンジニア数はまだ3名で、 GitHub Projectsの機能でも特に問題は感じていませんでした。

元の運用は、

  1. issueのマイルストーンバックログを作る。マイルストーン内ではissueが優先度順に並べられる。ストーリーポイントは数字のラベルをissueにつける。
  2. マイルストーンから次のスプリントでやる分だけをスプリントマイルストーンに移動、GitHub Projectsに紐づけてカンバンに表示させる。
  3. スプリント開始!プルリクエストにissueを紐付けておくとプルリクエストがmergeされたときにissueもdoneになって便利。

というシンプルな形でした。

しかし、メンバーが増え、リポジトリが増え、管理するタスクが増えるとこの運用がつらくなってきました。

つらかった点

GitHub Projectsでの運用で辛かった点には以下の様なものがありました。

  1. マイルストーンGitHub Repositoryに紐付いているissueをまとめる機能なので、複数のRepositoryをまたいで一つのマイルストーンにissueを集めることが出来ない。
  2. issueが入れ子関係を持てないのでlabelで管理することになり、labelが増殖する
  3. 消化したストーリーポイントを数えるのがめんどくさい
  4. asigneeをつけ忘れると誰がやってるか分からない
  5. バックログの整理が大変(GitHubマイルストーンは複数のissueをドラッグアンドドロップで動かせない😢)
  6. 何がいつリリース予定なのか整理するのが大変

たまたま、エンジニア以外からもタスク管理ツールを選定して導入して欲しいという話があったので、このタイミングでJiraを全社導入し、開発チームもJiraに移行することに決めました。

Jiraの導入

今回Jiraに乗り換えたことで上記の問題が全て解決されました!

  1. Jiraのバックログリポジトリに関係無いので、複数リポジトリにまたがるストーリーも管理できる
  2. epicを親のissue、storyを子のissueとすることによって、issueを入れ子で管理
  3. スプリントのベロシティを自動で計測してくれるし、epicに属するissueのポイントの合計もすぐ表示される
  4. カンバン上の移動にルールを追加することが出来るので入力漏れがない
  5. バックログのissueは複数選択出来、簡単に動かせる。
  6. いつ何がリリースされるのか一目瞭然

いくつかピックアップして説明していきます!

スプリントのベロシティを自動で計測してくれるし、epicに属するissueのポイントの合計もすぐ表示される

f:id:kazuhei0108:20210217192440p:plain
Jiraのベロシティーチャートの画面

スプリントの機能を使って、スプリントの開始、終了を実行すると毎回の消化ポイントを自動で集計してレポートに出してくれます。 以前はissueについてるlabelのストーリーポイントを数えていましたが、そんなことをする必要はありません!

また、epicに属するissueの合計の見積もり、完了、残りのストーリーもすぐ表示されるので、大きな機能がどれくらいでリリースされそうかわかります。

f:id:kazuhei0108:20210217193332j:plain

カンバン上の移動にルールを追加することが出来るので入力漏れがない

f:id:kazuhei0108:20210217194559j:plain
左下に足りない入力項目が出ています

カンバン上でTO DOからWIPにカードを移動させようとすると、移動するためのルールを満たしているかどうかのチェックが走ります。 今は、担当者とリリース予定の日付を入力しないとWIPに移動出来ないようにしています。

バックログのissueは複数選択出来、簡単に動かせる。

f:id:kazuhei0108:20210217194921j:plain
ドラッグアンドドロップで簡単にissueを動かせます

Jiraのバックログではスプリントとバックログが同じページに表示されており、簡単に移動させることが出来ます。

いつ何がリリースされるのか一目瞭然

f:id:kazuhei0108:20210218194616j:plain
リリース機能

Jiraのリリース機能によって、リリース予定日ごとに何をリリースするかをまとめるようになりました。 GitHubのPRと連動しているので、もうマージされたのか、まだレビュー中なのかというところまで細かく分かるようになっています。

移行手段

すでにGitHubに大量のissueが積まれており(500個以上!)、それらを整理してJiraに移行する作業はどう考えても苦行に思えました。GitHubAPIでissueをダウンロードしてcsvに整形してJiraにアップロードするというのが正攻法のようでしたが、そもそも全部移行する必要は無いのではと考えたため移行したいものだけ移行できるZapをZapierで作りました。

GitHub issueのコメントにjira移行と書くとJiraのストーリーを作ってくれた上で元のGitHub issueのURLを説明文に入れてくれるというすぐれものです。

f:id:kazuhei0108:20210218194141p:plain
zapierのzap作成画面

移行してみて

Jiraに移行したことにより、これから更にチームメンバーが増えたり、Repositoryの数が増えたりしても大丈夫な体制を構築できたと自負しています。 また、想定していたわけではないのですが、開発のビジネス要件が全てJiraにまとまるようになり、PMとのコミュニケーションが円滑になりました。 元々はGitHub Issue上でやっていたことですが、GitHub上で管理すると、どうしてもコードについてのアレコレを書いてしまいがちになったり、どこのRepositoryに起票したらいいんだ、となったりしていました。 これがJiraとGitHubで使い分けられたことにより、PMはJiraのみ見れば良い状態になりました。

まだ導入して1ヶ月ほどですが、開発チームの状態に合わせてこれからカスタマイズを続けていきます!