本文へスキップ
Hironobu Iga

プルリクエストのコメントにはラベルバッジをつける

コメントの温度感が伝わらない問題を、must / imo / ask / nit pick といったラベルで解決し、さらにバッジ化とコマンド化まで進める話です。

公開日

この記事は別サイトにも掲載しています。 https://qiita.com/iganin/items/aee297eade84849cc9cd

はじめに

Git を使用したプルリクエストのコメントに対する対応の際に、そのコメントに対して温度感がわからず戸惑ってしまうといった体験はありませんでしょうか。必須で対応が必要なのか、ただの意見なのか… 結局判断がつかず、直接聞く、Slack で確認するなど場合によっては不要なコミュニケーションが発生してしまい、コストに繋がってしまいます。 本記事ではそのような事態を避ける方法として以下を紹介します。

  1. プルリクエストのコメントにラベルをつける
  2. ラベルを視認しやすくするためにバッジにする
  3. バッジ付与をコマンド化し効率的に付与できるようにする

1. プルリクエストにラベルをつける

実践されている方も多いかもしれませんが、プルリクエストのコメントにそのコメントの意味合いをラベルとして付与すると「はじめに」に記述したような事態を避けることができます。具体的には以下のようなものをコメントの先頭に付与します。

ラベル 意味
must 対応必須 この対応がされていないとマージを認められない
imo in my opinion 自分ならこう実装するけど、どう?
ask 実装意図の確認
nit pick 細かい指摘(コードを整える、不要な改行など)
suggestion 提案、このようにしたらどうか

例えば下記のようになります。

[imo]
enum の switch 文では default は使用せずに全て網羅して記述した方が良いと思いますがいかがでしょうか。
将来的に case が追加され、その case が網羅されていない際にコンパイラが検知してくれるためです。
default を使用した場合は、該当ケースが網羅されていなくてもそのケースは default にながれてしまい、
バグが生まれる原因になりかねません。

2. ラベルを視認しやすくするためにバッジにする

1 の方法をおこなうことで改善できるかと思いますが、より視認性をあげることができそうです。 たとえば、バッジ画像をつかう方法があります。 例えば、1 の must の場合は下記のようなものを使用します。

review: must のバッジ

行なっていることは、Markdown の画像付与です。

![review:must](https://img.shields.io/badge/review-must-red.svg)

上記のようにした場合下記の HTML のように変換され、画像が表示されます。

<img src="https://img.shields.io/badge/review-must-red.svg" title="must" />

ここで具体的な画像の URL が問題になりますが、shields.io 経由で簡単にバッジ画像を取得することができます。バッジ作成は下記の構文で行います。

https://img.shields.io/badge/<SUBJECT>-<STATUS>-<COLOR>.svg

SUBJECT が画像の左側の文言、STATUS が画像の右側の文言、COLOR が画像の右側の色になります。 上記 must のバッジでは下記のようになります。

  • SUBJECT = review
  • STATUS = must
  • COLOR = red

色は red, blue など shields.io で定義されているものの他に ffffff のような hex 形式も使用可能です。 shields.io の HP では様々なサンプルも掲載されています。 詳細は、公式ページおよび本記事の参考資料をご覧ください。

1 でご紹介したラベルとバッジ画像の対応は例えば下記のようになります。

ラベル 画像 構文
must must ![must](https://img.shields.io/badge/review-must-red.svg)
imo imo ![imo](https://img.shields.io/badge/review-imo-orange.svg)
ask ask ![ask](https://img.shields.io/badge/review-ask-blue.svg)
nit pick nits ![nits](https://img.shields.io/badge/review-nits-green.svg)
suggestion suggestion ![suggestion](https://img.shields.io/badge/review-suggestion-blue.svg)

3. バッジ付与をコマンド化し効率的に付与できるようにする

上記画像付与ですが、毎回書くのはもちろん手間になりますし、どこかにテキストをまとめておき、コピー & ペーストするのもあまり良いやり方とは言えません。Text Blaze を使用することでこの問題を解決することができます。 Text Blaze は特定の文字列をコードスニペットに自動変換するよう登録することができるツールです。 ※ 執筆時点ではまだ β バージョンのようです。 ※ 無料アカウントではグループ作成数や登録スニペット数に上限があるなどいくつかの制限があります。

使用方法

簡単な使用方法を記載します。 詳細は Text Blaze の公式 HP をご参照ください。

1: Text Blaze HP にアクセスし、Add To Chrome を押下し Chrome Extension をインストールします

Text Blaze のトップページ。Add to Chrome ボタンが強調されている

2: インストールした Text Blaze の Chrome Extension を押下し、アカウントの作成もしくは Google Account との連携を行います

Text Blaze のサインイン画面

3: ホーム画面左上の項目からフォルダを押下しグループを作成し、プラスボタンを押下しグループ内にスニペットを作成します。

Text Blaze の画面左上。グループ作成とスニペット追加のボタン

4: 作成したスニペットに必要な情報を入力します。

Text Blaze のスニペット編集画面。must という名前で /must のショートカットを登録している

  • Snippet Description - 画面左側に表示される文言です
  • Shortcut - type to trigger - この文字列を入力することで登録したスニペットに変換されます
  • 画面下部 - 変換後のスニペットを登録します

以上、1 〜 4 の作業によってスニペットへの変換を登録できます。これ以後は Google Chrome を使用中に登録した ShortCut 文字列を入力すれば登録したスニペットに変換されます。例えば、画像の例の場合は /must と入力することで ![must](https://img.shields.io/badge/review-must-red.svg) に変換されるようになります。

まとめ

本記事では、Git でのプルリクエストの際にラベルを付与することで温度感やニュアンスを伝える方法、バッジを付与する方法と付与方法を簡単にする Text Blaze というツールをご紹介しました。 本記事の方法によって、プルリクエスト時のコミュニケーションコストを減らすことに寄与できたら嬉しいです。 良い開発ライフを!

参考資料

Git のプルリクエストのコメントについて

バッジの作成について

Text Blaze、コードスニペットについて