GitHub
プロジェクト管理

プロジェクト管理ツールとしてGitHubを"普通に"使う

※ここでは「プロジェクト」をチームで達成する計画という意味で使っていて、「Project」をGitHubのカンバンツールという意味で使っています。


タスク管理にGitHubを使う一連の記事の中の一つです。今回はプロジェクト管理ツールを新たに導入しなくても、GitHubの機能を普通に使うだけで実はうまくいったという話です。

今自分が関わっている開発プロジェクトではアサイン時はミニマルで、自分とCTOで設計しつつスプレッドシートで1週間毎の計画をたてるところから始まりました。Trelloを検討したりWrikeを導入してみたり試行錯誤しながらやっていましたが、結果的に「GitHubのProjectで良いのでは?」ということで落ち着きました。


タスクはIssueに集約する

基本的にタスクは細かいものも含めて全てIssueを立てます。例えば以下のようなものを含みます。


  • 通常の To Do

  • 仕様決め

  • バグ報告

  • リファクタリング

  • 個人的に気になっていること

  • リリース作業

  • 通しテスト

  • ...

とりあえず必要だと思われるものは立てて、それぞれに応じたタグを付けておきます。立てたものはあとからスプリントプランニングのときなどに、やるかやらないか・工数見積・優先度などを考慮してバックログに組み込みます。

Issueの中で細かくやることがある場合はチェックリストを作っておきます。そうするとIssue一覧画面などでインジケーターを表示してくれます。

issue.png


Issueのテンプレートを用意しておく

GitHubのIssueはテンプレートを用意することができます。1

具体的にはリポジトリのルートディレクトリ直下に .github/ISSUE_TEMPLATE.md.github/ISSUE_TEMPLATE というディレクトリの下に任意のファイルを作成することで実現可能です。


.github/ISSUE_TEMPLATE/sample.md

---

name: Sample template
about: サンプルテンプレート。
title: ''
labels: ''
assignees: itkr

---

## 概要

issueの内容


ちなみに .github/PULL_REQUEST_TEMPLATE.md で Pull Request のテンプレートも作成できます。


.github/PULL_REQUEST_TEMPLATE.md

## 概要

## チェックリスト

- [ ] テスト
- [ ] ドキュメント


テンプレートを作っておくことで足りない情報を防ぐことができ、このプロジェクトで作っているサービスの利用者(社内の人)もバグ報告などで迷うことが少なくできます。


全体のProjectとスプリントごとのProjectを作成する

あまり活用しているという声を聞いたことがないのですが、実はGitHubではリポジトリやOrganizationごとにProjectというものを複数作成することができます。Trelloを使ったことがある方ならイメージしやすいと思いますが、いわゆるカンバンを作成することができる機能です。

project.png

立てたIssueをそのリポジトリ全体のProjectと、スプリントごとのProjectに配置します。こうすることで全体のIssueがどれくらい溜まっていて、直近のスプリントでは何をしなければならないのかをチームで共有することができます。

projects.png

スプリントごとにProjectを作成することはスプリントごとにやることを把握することに役立ちますが、スプリントごとに「やったこと」を把握することにも役立ちます。基本的にスプリントの終了するときにリリースブランチを切ってデプロイ作業を行いますが、そのデプロイ対象のコミットにタグを付けておいてProject名とタグ名を一致させておき、簡易的なリリースノートの代わりにできます。

release.png

ちなみにプロジェクトは「A successful Git branching model」(GitFlow) に従っていてmasterブランチにマージするとCircleCIでテストが通ればデプロイされるようになっています。テストも自動化しています。

test.png


ProjectTo doIn progressDone を作る

GitHubが最初から用意している Automated kanban というテンプレートを利用すると


  • To do

  • In progress

  • Done

というカラムが作成されます。これはあとから設定もできますが、このテンプレートで作っておくとIssueProjectに追加すると自動で To do に入り、Issueをクローズすると自動で Done に入ります。(作業を開始するときは作業者が手動で In progress に移動します)

また、 To do はグレー、In progress は紫、Done は緑にインジケーターが表示されるのでそのProjectがどれだけ進んでいるかを視覚的に把握しやすくなります。

i.png

この3つのカラムで足りない場合は状況に応じてカラムは追加します。例えば Waiting など。


まとめ

チームの規模やプロジェクトの進め方によっては、新しく管理ツールを導入することもなくGitHubの標準の機能を普通に使うだけで行えることを紹介しました。

人数が増えて技術者以外の人もプロジェクトに関わってくるとまた別の方法が必要になるかもしれませんが、前の記事にも書いたとおりGitHubに集約するメリットしては技術者が見慣れたUIであることと余計なライセンス料を必要としないことだと思います。また、ツールを行き来して集中力が途切れてしまうのも防ぐ効果もあるのではないかと思います。