EXERCISE 60分

演習:レビュー対応シミュレーション

ストーリー

「レビューの基本は学んだね。次は実際のレビューコメントへの対応を練習してみよう」

「シミュレーションですか?」

「そう。架空のレビューコメントを見て、どう対応するか考えてみて」

「やってみます!」


ミッション概要

架空のコードレビューシナリオを通じて、レビュー対応の練習をします。

Part内容目安時間
Part 1レビューコメントの分類15分
Part 2レビューへの返信文を作成25分
Part 3修正後のセルフレビュー20分

達成条件

  • Part 1: レビューコメント5件を正しく分類できた
  • Part 2: 適切な返信文を3件以上作成できた
  • Part 3: セルフレビューチェックリストを使って確認できた

前提:提出したPRの内容

あなたは「ユーザー検索機能」を実装し、PRを提出しました。 以下のレビューコメントが付きました。

javascript
// あなたが提出したコード(user-search.js)
function searchUser(name) {
  var result = [];
  for (var i = 0; i < users.length; i++) {
    if (users[i].name == name) {
      result.push(users[i]);
      console.log("found user:", users[i]);
    }
  }
  return result;
}

function deleteUser(id) {
  // TODO: あとで実装
}

Part 1: レビューコメントを分類しよう(15分)

以下の5つのレビューコメントを読み、種類を分類してください。

レビューコメント一覧

コメント1(佐藤さん):

var ではなく let または const を使うようにしましょう。チームのコーディング規約に従ってください。

コメント2(田中さん):

console.log がそのまま残っています。本番環境では出力されないようにしてください。

コメント3(山田さん):

users[i].name == name の部分、厳密等価演算子 === を使った方が安全です。型の違いによる予期せぬ動作を防げます。

コメント4(鈴木さん):

この検索処理、filter メソッドを使うともっと簡潔に書けますよ。参考: MDN Array.filter

コメント5(木村さん):

deleteUser 関数のTODOコメント、このPRで実装する予定ですか?それとも別タスクですか?

タスク 1-1: コメントを分類する

以下の表を完成させてください。

コメント種類対応の優先度
コメント1
コメント2
コメント3
コメント4
コメント5

種類の選択肢:

  • バグの指摘
  • スタイル指摘
  • 改善提案
  • 質問
  • セキュリティ指摘
<details> <summary>解答例</summary>
コメント種類対応の優先度
コメント1スタイル指摘必須(規約違反)
コメント2バグの指摘必須(本番に影響)
コメント3改善提案推奨(安全性向上)
コメント4改善提案任意(可読性向上)
コメント5質問回答必須
</details>

Part 2: レビューへの返信文を作成しよう(25分)

各レビューコメントに対する返信文を作成してください。

タスク 2-1: コメント1への返信

佐藤さんのコメント:

var ではなく let または const を使うようにしましょう。チームのコーディング規約に従ってください。

返信文を書いてください:

markdown
あなたの返信:
<details> <summary>解答例</summary>
markdown
@佐藤さん
ご指摘ありがとうございます。
コーディング規約を確認し、`var` を `const` と `let` に修正しました。
- `result` → `const result`(再代入しないため)
- ループの `i` → `let i`(ループ内で変化するため)

今後はコーディング規約を確認してからコミットするよう心がけます。
</details>

タスク 2-2: コメント4への返信

鈴木さんのコメント:

この検索処理、filter メソッドを使うともっと簡潔に書けますよ。

ポイント: この提案を採用する場合と、別の理由で今回は採用しない場合の両方を考えてみましょう。

返信文(採用する場合):

markdown
あなたの返信:

返信文(採用しない場合):

markdown
あなたの返信:
<details> <summary>解答例</summary>

採用する場合:

markdown
@鈴木さん
改善提案ありがとうございます!
MDNのリンクも参考になりました。`filter` を使って以下のように修正しました。

const result = users.filter(user => user.name === name);

とても読みやすくなりました。ありがとうございます!

採用しない場合:

markdown
@鈴木さん
改善提案ありがとうございます。
`filter` を使う方法も検討したのですが、今回は以下の理由で現在の実装を維持したいと考えています。

理由: この関数は将来的に、検索中にログ出力やカウント処理を追加する予定があり、
ループ内で細かい制御が必要になる可能性があるためです。

この判断で問題ないか、ご意見いただけると助かります。
</details>

タスク 2-3: コメント5への返信

木村さんのコメント:

deleteUser 関数のTODOコメント、このPRで実装する予定ですか?それとも別タスクですか?

返信文を書いてください:

markdown
あなたの返信:
<details> <summary>解答例</summary>
markdown
@木村さん
ご質問ありがとうございます。
`deleteUser` は別タスク(チケット #456)で実装予定です。

このPRでは検索機能のみをスコープとしているため、TODOコメントを残していました。
ただ、コメントが紛らわしいかもしれないので、以下のように修正しました。

// TODO(#456): deleteUser は別タスクで実装予定

これでスコープが明確になったと思います。ご確認ください。
</details>

Part 3: 修正後のセルフレビュー(20分)

レビュー指摘を修正した後、再度PRを出す前にセルフレビューを行います。

修正後のコード

javascript
// user-search.js(修正後)
function searchUser(name) {
  const result = users.filter(user => user.name === name);
  return result;
}

// TODO(#456): deleteUser は別タスクで実装予定
function deleteUser(id) {
  throw new Error('Not implemented');
}

タスク 3-1: セルフレビューチェックリスト

以下のチェックリストを使って、修正後のコードを確認してください。

markdown
## セルフレビューチェックリスト

### コーディング規約
- [ ] var を使わず let/const を使っている
- [ ] 厳密等価演算子(===)を使っている
- [ ] console.log が削除されている

### レビュー指摘への対応
- [ ] 指摘1(var → const/let)に対応した
- [ ] 指摘2(console.log削除)に対応した
- [ ] 指摘3(== → ===)に対応した
- [ ] 指摘4(filter使用)に対応した
- [ ] 指摘5(TODOの説明)に対応した

### その他
- [ ] 新しいバグを作り込んでいない
- [ ] テストが通る
- [ ] 不要な変更が含まれていない

タスク 3-2: 修正漏れがないか確認

上記のチェックリストを実際にチェックして、修正漏れがないか確認してください。

<details> <summary>解答例</summary>
markdown
## セルフレビューチェックリスト

### コーディング規約
- [x] var を使わず let/const を使っている → const result を使用
- [x] 厳密等価演算子(===)を使っている → filter内で === を使用
- [x] console.log が削除されている → filter使用により不要に

### レビュー指摘への対応
- [x] 指摘1(var → const/let)に対応した
- [x] 指摘2(console.log削除)に対応した
- [x] 指摘3(== → ===)に対応した
- [x] 指摘4(filter使用)に対応した
- [x] 指摘5(TODOの説明)に対応した

### その他
- [x] 新しいバグを作り込んでいない
- [ ] テストが通る → 要確認
- [x] 不要な変更が含まれていない
</details>

達成度チェック

以下を確認してください:

  • Part 1: レビューコメント5件を正しく分類できた
  • Part 2: 適切な返信文を3件以上作成できた
  • Part 3: セルフレビューチェックリストを使って確認できた

まとめ

この演習で実践したこと:

操作内容
コメント分類指摘の種類を理解し優先度を判断
返信作成感謝 + 対応内容を明確に伝える
セルフレビュー修正漏れを防ぐためのチェック

重要なポイント

  1. まず感謝を伝える - レビュアーの時間を大切にする
  2. 対応内容を明確に - 何をどう修正したかを説明する
  3. 採用しない場合も理由を - 一方的に却下せず、議論する姿勢を見せる
  4. セルフレビューで漏れ防止 - 再レビューを減らし、効率を上げる

次のステップへ

レビュー対応のシミュレーションは完了しました。

次のセクションでは、Step 4の理解度を確認するチェックポイントに挑戦します。


推定所要時間: 60分