プルリクエストのフォーマット

MMM Corporation
mmmuser

リモートワーカーの特権を活かして、8月30日~9月5日の7日間は沖縄でリゾートワークする予定の伊藤です。
一緒に行く予定の大学時代の友人もリモートワーク可の企業に勤めているのですが、
お互い違う会社に勤めているのにリゾート地で一緒に仕事ができるというのは、大変良い時代に生まれてきたなと感じます。

MMMでは約3ヶ月前からプルリクエストをする際のフォーマットを決めて運用してきたため、今回はその紹介をしたいと思います。

プルリクエストのフォーマット

プルリクエストを作成する際には以下のテンプレートを元に説明文を書きます。

## 機能概要チケット
[APIのレスポンス修正](URL)

## UIに対する変更・画面
* CacooのURL
* 開発画面のスクリーンショット/スクリーンキャスト
* などなど

## 技術的変更点概要
* なにを、どう、変更したか
* 何のライブラリを追加したか
* 複雑なアルゴリズムの説明

## 本プルリクエストによる影響範囲
このプルリクエストにより、影響を及ぼしそうな範囲・事柄を詳細に記述する

## 特にレビューをお願いしたい箇所
特にチェックをお願いしたいポイントを簡潔に記述する

## レビューアー
レビューをお願いしたい人をGithubアカウントで指定し、メンションを飛ばす

## レビュー優先度
* [x] 最速でお願いしたい
* [ ] なるべく早く(なるはや)
* [ ] お時間あるときでOK

## その他
その他、特記すべき事項を記述

一部補足をしておくと、機能概要チケットの項目は、MMMではPivotal Trackerでタスク管理をしているため、そのタスク名URLを記述します。
Pivotal Trackerのタスクには以下のフォーマットでタスクの説明が書かれているので、ここでどのような機能が実装されている必要があるのかを確認することができます。

## なぜこの対応が必要か?
* 現状の問題点
* 対応の必要性

## この対応により提供される価値
* 対応することによってどういったメリットがあるのか

## その他
* 備考など

コードレビュー完了コメントのフォーマット

コードレビューをした結果、問題なさそうであれば以下のフォーマットでコメントをします。

## チェックレベル
* [x] ロジック含めて詳細にコードをレビューした
* [ ] 機能要件ベースに斜め読みした
* [ ] 時間がありません
* [ ] わかりません

追加で一言

メリット

こういったフォーマットを用いて開発を進めることで以下のようなメリットが考えられます。

  • プルリクエスト作成時にひと通り自分の実装内容を見直すことになるため、実装忘れを防止できる。
  • スクリーンショットの画像も含めて、実装内容が文章で丁寧にまとめられているため、時間がないときにも効率よく斜め読みレビューができる。
  • 他の人達が 機能要件ベースに斜め読みした レベルでレビューを行っていた場合、「自分が詳細にレビューしてあげよう!」と思える。
  • 逆に、自分が忙しくてどうしても手が離せない時にも、他の人達が ロジック含めて詳細にコードをレビューした であれば、自分は斜め読みもしくは、時間がありませんとして、レビューをパスすることができる。
    (レビュアーが1人減ってでも早くマージしたい時がありますよね!)

テンプレート挿入Chrome拡張

そんなテンプレートですが、毎回コピペをするのは面倒なので、ボタン一つでテンプレートを挿入できるChrome拡張を使っています。

プルリクエスト作成時

コメント記入時

まとめ

プルリクエスト作成時に書かなければいけない情報が多すぎると、プルリクするのが嫌になってしまいますし、少なすぎるとレビューの効率が悪くなったり、実装抜けを見抜けなかったりすることがあると思います。
その加減が難しいところですが、上記テンプレートの場合は3~5分程度で記述することができるので、ちょうどよい分量なのではないかと思います。
MMMでは、プロジェクトに関わっている人全員がコードレビューを行っているため、レビューしやすい形でプルリクエストをすることは業務全体の効率を向上させることにもつながっています。

適切にコードレビューを行い、品質を担保したアプリケーション開発を御希望の企業様は、是非MMMにご相談下さいませ!

AUTHOR
デロイト トーマツ ウェブサービス株式会社(DWS)
デロイト トーマツ ウェブサービス株式会社(DWS)
デロイト トーマツ ウェブサービス株式会社はアマゾン ウェブ サービス(AWS)に 専門性や実績を認定された公式パートナーです。
記事URLをコピーしました