はじめに
- 1月くらいから React-Redux を利用したフロントエンド開発のリーダーをやりました。
- 自社ではタスク管理にJIRA や Redmine を使うのが定番ですが、今回は実験的に GitHub Project を使ってみました。
- 一通り開発が終わったので感想などを書いていこうと思います。
- GitHub Project の利用を考えている方の参考になると幸いです。
どんな感じのプロジェクトだったか
概要
- すでに導入しているシステムのエンハンス
- サーバーサイドは導入済みのシステムがある
- フロントエンドは大幅刷新に向けた PoC が終わった状態
- 開発期間は 3ヶ月
- 画面開発、および打鍵も含めた単体テストまでが開発チームのスコープ
- フロントエンド開発メンバーは 4人
- 2週間ごとのイテレーション開発
GitHub Project の使い方
ルール
- Issue を上げるときに Project/Milestone を指定する
- 上がっている Issue に紐づく Pull Request は Project を指定しない
- Issue を上げるほどでもない修正は直接 PR を上げて Project を指定する
- PR は Issue へのリンクをする(
nnn
とするだけなので簡単)
Milestone
- 各イテレーションごとに Milestone を作成
- タスク(Issue) に Milestone を設定してスケジュール管理
レーン
- 開発中は
To do
->Doing
->Review
->Done
- 終盤に BugFix が増えてきてからは
To do
とDoing
の間にTriaged
レーン を追加
Tag
デフォルトでこのようなタグが用意されています。
これに加えて、「ボタンにアイコンをつける」のような細かい改善タスクを捉えてスキマ時間で取り組むために、自分たちのプロジェクトでは以下のものを追加しました。
styling
: ロジックの変更を伴わないスタイリング改善kaizen
: リファクタリングやドキュメンテーションなど、レベル感を問わない改善タスク
また、終盤に BugFix が増えてきてからは以下の2つの Tag を追加しました。
flash fix
: パッと直して大丈夫なバグneed discussion
: 修正内容を議論/検討してから直したいバグ
開発リーダー(自分) が Issue の内容を確認(Triage)してからメンバーが対応することで、
need discussion
なバグの修正方針を事前にすり合わせることが出来て、レビューでの突き返しが減りました。
GitHub Project への感想
総じて、機能が足りてないところはあるが、非機能がイケてるから使いやすい
という印象です。
小規模なプロジェクトだと、JIRAやRedmineよりも足回りが良いので使いやすいように思いました。
良いところ
- デフォルトでカンバンがメインUIなので、状況把握が楽
- カンバンでの Tag の見やすさなど、総じて UI が良い感じ
- Issue, Pull Request のリンクが楽。
#nnn
ですぐにリンクができる- Issue の検討段階の議論と、実装段階の議論がすぐに結びつく
- 他の Issue から参照するのも楽なので、他の Issue での議論の内容を活かしやすい
- 既存のコードへのパーマリンクも出来るので議論自体もしやすい
- ある程度は自動でレーンを動いてくれるので、ステータス変更忘れを防げる
イマイチなところ
- カンバンで Milestone でのフィルタが出来ない。
- Filter cards by milestone on a project board · Issue #1220 · isaacs/github · GitHub という Issue も上がっているように、結構不便...
- 一覧のテーブルエクスポートが(機能としては)出来ない。
別に... なところ
- Commit と Issue のリンクができる
- あ、やってんな、とは思うけど、最終的に Pull Request の単位で見るので....
- ワークフローの制御(クローズできるのはリーダーだけ、みたいな)が出来ない
- そもそも、ワークフローと実際の業務が合ってないので、別に困らない
- 検討 -> 実装 -> テスト とリニアに進むとは限らない
- その観点だと、チェックリストが埋まってないとクローズ出来ない、とかは合っても良い
- ドキュメント修正・実装修正・テスト、3つがすべて完了していること、みたいな?
- そもそも、ワークフローと実際の業務が合ってないので、別に困らない
まとめ
小規模な開発チームであれば、GitHub Project はオススメです。特に、Issue の検討段階の議論と、実装段階の議論がすぐに結びつく はめちゃめちゃ大きいと感じました。
大規模なチームではレポーティング周りの機能がちょっと物足りないかもしれませんが、APIが充実しているので必要に応じてツールを作っていけば対応できそうです。