GitHubの機能を活用したプロジェクト管理
GitHubにはいつの間にか便利な機能が追加されていて、最近はそれを活用しながらスムーズに開発できる体制の整備を進めています。
Trelloを使っていたこともありましたが、あんまり凝った使い方してないよねということでGitHub Projectsに移行しました
カードからIssueを立てたり、IssueをクローズしたらカードがDoneに移動したりなどのAutomationができるのが便利
Trelloだと二重管理が面倒で、ProjectsはGitHubのワークフローに自然に組み込めるのが良いですね
クローズできるもの(期限を設定した具体的なタスクなど)はIssue、アイデアや議論を発散させたいときはScrapboxを使うことが多くなりました
最初はプロジェクト単位で切っていましたが、メンバーそれぞれが持っているタスクの見通しが悪いため、プロダクト開発にかかわるメンバー全員が集まる大統一Projectを作成しました
Issue・Pull Requestに適切にAssigneeを設定するとProject内でフィルターできるため、これで全体を見つつ個人の持っているタスクも見れるようになります
高機能なZenHubもありますが、使っていた人に聞いたところ使いこなすための管理コストもかかるということで、ひとまずGitHubデフォルトの機能をフル活用しようと考えています Code Review Assignmentによるレビュアー自動振り分け
経験の多いメンバーにレビュアーが偏りがちだったため、これを使いエンジニア全員が順番にレビュアーを担当するようにしました
web-engineersやmobile-engineers、designersといった職種ごとにTeamを作り、レビュー時はそのTeamを指定します
CODEOWNERSによるレビュアー自動設定
さらにCODEOWNERS機能を用いることで、変更されたファイルに応じて、Pull Requestを立てたときに適切なメンバーに自動でレビュー依頼がされるようにしました 個人宛にすると属人化してしまうため、上で作ったweb-engineersなどのTeamにアサインし、Code Review Assignmentと連動するようにしています
これを使う場合は特に属人化しないように注意
例えば認証認可にまつわるファイルの変更ではセキュリティチームのレビューを必須にしたりなども考えられ、なかなか活用できそうな機能だと思います
prprによるレビュアーアサイン通知、Slackメンション変換
レビュアーにアサインされたときはGitHubの通知は飛びますが、Slack通知もしてくれると便利です
定時通知とアサインされたときのリアルタイム通知どちらも対応
いくつかフォークして変更を加えています
Approveしたときにレビュー待ちのラベルを剥がすようにした
メンションと判定する正規表現を変更し、Team宛にも対応
GitHubとSlackのユーザー名マッピングに使うファイルを指定したリポジトリから取ってくるようにした
上に同じくマッピングファイルの対応
Pull Request出したいけど需要がある機能なのかわからなくて気が引けている…