Misocaのプルリクエストの運用について

こんにちは。 開発チームのウォーボーイズことめろたん(@)です。 みんな!V8讃えてるぅ!?

f:id:renya-mizuno:20150911150801j:plain

はい。

今回は前回まで続けていた便利なGem紹介ネタ切れのため一旦置いておいて、 Misocaのプルリクエストの運用について書きたいと思います!

Descriptionのテンプレート

弊社ではプルリクエストのDescriptionを書くときのためのテンプレートが存在しています。 CONTRIBUTING.mdに、

## 関連文書

 * ****
 * 関連Pull request: xxxx

## 変更点概要
(どう変わるのかを簡潔に。 複数の変更を行なっているならPRを分割すること)

## 注意・伝達事項
 * 今後の実装において注意すべき点や、使うと便利な点。
 * 見てほしい箇所や、整合性が気になる箇所について。
 * レビュー時の観点について:****

## このPull requestでやらないこと

 * aa
 * bb
 * cc

## チェックリスト

 * [ ] UIの変更が生じる場合など、ユーザ通知やヘルプへの反映が必要か確認する。必要ならば対応する。
 * [ ] 既存データが新しいルールに抵触しないことを確認した。(必要ならデータメンテナンスの手順を記載する)。

以上のようなテンプレートが書かれておりこれでみんなが共通したdescriptionを書けます。 また、新しく入った人もこれを見ればどう書けばいいかわかるようになっていてとても良いです。

実際のPRでは、 f:id:renya-mizuno:20150911115809p:plain f:id:renya-mizuno:20150911115817p:plain 以上のようにdescriptionが揃っていてストレス無く読めます*1

タグの運用

またPRにつけれるラベルを使ってプルリクエストの状態やそのプルリクエストの種類、注意すべき点を表すようにしています。 このラベルをつけるルールもCONTRIBUTING.mdに書かれています!

## タグ運用
### 注意喚起

 * **マイグレーション注意**: DBマイグレーションが発生する場合につける。
 * **リリースタイミング注意**: 既存のUIを変更して従前の操作で作業できなくなり、混乱を生じさせる場合につける。ユーザーの定時時間内にデプロイしてしまうと操作中にいきなりUIが変わって混乱させてしまうため避ける。
 * **要ヘルプ更新**: teachmeのコンテンツの更新が必要な場合につける。
 * **要ユーザ通知**: ウィークリーメールの送信が必要な場合につける。テンプレートのうち「要ユーザ通知」セクションを利用すること。

### 作業進捗状況
作業の進捗状況を表現する。

基本的には以下の順番に進捗していく。

 1. **WIP**: 作業中
 2. **REVIEW**: レビュー待ち、レビュー対応中
 3. **マージ可能**: LGTMを1個以上もらい、マージ可能とPR作成者が考えた。

状況に応じて以下のものを使う。

 * 実験中: 試しに何かやってていて、かならずしもマージを目的としない場合につける
 * Pending
 * RFC: wipだけどコメント欲しい、実験中でコメント欲しい、みたいなときに使う

### タスクの種類の表現
タスクの種類を表現する。

 * **BUGFIX**: 不具合修正
 * **Refactor**: リファクタリング
 * **UI/UX**: UI修正
 * **feature spec**: feature specの修正・追加

これで迷わずラベルをつけることができます。 正しくラベルをつけることでプルリクエスト一覧を見た時にどのプルリクエストがどんな常態なのかすぐに把握することができます! 実際の一覧では(プルリクエスト少なめですが…)、

f:id:renya-mizuno:20150910175519p:plain

このように一覧でこのプルリクエストは、iOS(API関連)のプルリクエストなのか、UI/UX関連なのか、作業中なのかReview中なのかマージ可能なのか、というのがすぐに分かります!!

とてもわかり易くてよいです!

プルリクエストに反応するbot

また弊社ではprprというbotを飼っています!

github.com

githubのプルリクエストに反応するbotです! mzpさんが作りました!

色々機能がありますが、例えばプルリクエストにREVIEWタグがついたらSlackに通知してくれたり、

f:id:renya-mizuno:20150911114344p:plain

プルリクエストの作成時に、チェックリストを投稿してくれたりします!

f:id:renya-mizuno:20150911114739p:plain

すごい便利です!

最後に

Misocaではこのようにプルリクエストを運用しています!

テンプレートやラベルは日々改善を行ってよりよいものにしています!

*1:個人的な感想です