読者です 読者をやめる 読者になる 読者になる

GitHubの新機能「Projects」を使ってタスク管理してみた

みなさんこんにちは。teratail開発チームの出川(@ikuwow)です。

少し前ですが、9月14日にサンフランシスコで開催されたGitHub Universeにて 「Code Review」と「Projects」という大きな新機能が発表されましたね!

github.com

中でもIssueやPull Requestをかんばん上に表示できる"Projects"機能は 誰もが待ち望んでいたツールとも言えるでしょう。

以前からGitHubのIssueをかんばん化するツールは ZenHubWaffleなど様々なものがありましたが、 ついにGitHubが公式で実装してくれました。

teratail開発チームでは開発でGitHubを利用しているので、 ニュースを聞いたときにはチームメンバーの皆がすぐに使いたくなりました。

既にこのProjectsを使ってみた様々な記事がありますが、 teratail開発チームでは本プロジェクトに導入する前にひとまず 単なるタスク管理ツールとしてこのProjetct機能を使ってみました。

Projectsとは

f:id:ikuwow:20160930121508g:plain

A whole new GitHub Universe: announcing new tools, forums, and features より引用)

Projectsとは、アジャイル開発でおなじみのかんばんを作りその上にリポジトリ内のIssueやPull Requestを並べて表示できる機能です。 「Backlog」「Doing」「Done」などのカラムを自由に作ることができ進捗管理等に利用すると良さそうです。またリポジトリごとに複数のかんばんを作成することもできます。

さらに、このかんばん上でCardと呼ばれる簡易的なメモ書きを追加することもでき、これはいつでもIssueに変更可能です。

それぞれのIssue等はCardと呼ばれ、ドラッグアンドドロップでカラム間を移動します。 またヘッダ等を非表示にすれば、ウィンドウ全体にかんばんを表示できました。

GitHubのIssueは、そのリポジトリに対する問題や課題、実装予定のもの、実装提案、バグの報告など様々な使われ方をすることが多いですが、 改めて見てみるとシンプルなようで実に様々な機能がありました。

  • Issueの報告者の表示
  • Asigneeの追加
  • 使い慣れたMarkdown記法
  • 他のIssueとのリンク
  • 具体的な実装(コミット、プルリクエスト)とのリンク
  • タスクのステータス(Open, Closed)
  • タイトル変更やタグ追加の履歴の表示
  • 他のユーザーへのメンション機能

これに今回の"Projects"機能で、複数のタスクの進捗の管理や一覧で見れるようになるので、 単にタスク管理ツールとしても使えるのでは? と感じました。

使ってみる

teratail開発チームではちょうどインフラ移行に関するプロジェクトがあり、普段の開発のかんばんとは別にタスクの進捗を管理する必要がありました。 このタイミングでProjects機能の発表があったので、よい機会なので早速使ってみることに。

まずプロジェクト用のリポジトリを作り、そこにProjectを一つ作りました。Projectsでは、Backlog、Ready、Doing、Doneという名前のカラムを作りました。Backlogは今後作業予定のもの、Readyはいつでも着手できる状態のもの、Doingは作業中のもの、Doneは完了したものです。

f:id:ikuwow:20160929205846p:plain

"Projects"で見られるIssue(タスク)の情報は、タイトルと担当者、タグ、どこのカラムにいるかの4つ。

どこのカラムにいるかは現在の進捗状況を表します。アジャイル開発で使われるかんばんと全く同一ですし、Trello等のツールとも同様なので直感的に理解しやすいです。

作業時間をかんばんから可視化するために、「2h」「3h」「5h」「8h」などのアジャイルのストーリーポイント風にフィボナッチ数列を使った時間のタグを作りました。
また、Backlogにあるタスクはこのタグがついたら(作業時間の見積もりができたら)Readyに移動することに。
他にもDoneに移動したIssueは必ずCloseするなどの細かいルールも使いながら決めていきました。

使ってみて

このような決まりを作って1週間ほど使ってみて、 タスクに関するコミュニケーションは問題なくスムーズに行なえます。 当然進捗が以前よりも圧倒的にわかりやすく可視化されるようになりましたし、 タグが全て表示されるので簡単な分類や見積もり時間がわかります。

それぞれのタスクは使い慣れたIssueなので、 作業内容の詳細や他のIssueとのリンクが書きやすく議論も弾み、 あとから見たときのログとしてもかなり有用です。 GitHubのIssueはSlack等のチャットツールほどカジュアルすぎず、 メールやドキュメントほどフォーマルすぎないよい単位で作られていると感じました。

開発をするリポジトリではないのでPull Requestやコミットの参照は行っていませんが、これだけでも十分便利に使えています。

また、使ううちに細かい欠点も明らかになってきました。 Doneに移動したIssueが自動でCloseになったり、リポジトリではなくOrganizationごとにProjectを作成できるようになるとよいなと感じます。 私はIssueの内容を軽く覗きたいときでも毎回ページ遷移するのが面倒だったので、SafariのLookup機能を利用しこれを補完しています。

まとめ

Projects機能はIssueやPull Requestの進捗をまとめて管理するためにはかなりよい機能だと感じました。 ZenHub等の完全な代替物とはなりませんが、 比較的短期間のプロジェクトで使ってみるのもよいと思います。

GitHubはITエンジニアにとってのインフラのような存在ですが、 今も新機能の開発がものすごい勢いで行われています。 冒頭で紹介した"Code Review"機能も大変便利なため、積極的に取り入れて開発の速度を上げていきたいなと感じました。