レビュー、キライ、そして今。「ここだけ見ました」から始めるコードレビューのトップ画像

レビュー、キライ、そして今。「ここだけ見ました」から始めるコードレビュー

投稿日時:
misato maedaのアイコン

Recustomer株式会社 / 開発エンジニア

misato maeda

多様な開発組織のコード/PRレビューを“図鑑”のように紹介する連載「コードレビュー図鑑」。Recustomer株式会社の開発エンジニア・前田さんが語った「コードレビューが嫌いだった自分が、少しずつ嫌いではなくなってきた」変化と、その背景にある取り組みをご紹介します。
また、読者のみなさんの声を執筆者にお届けするフォームを試験的に設置しています。記事最後のフォームより、読後のひと言をお寄せいただけると嬉しいです。
[1]


Recustomer株式会社で開発エンジニアをしている前田です。今回は、私が「レビューが嫌いだ」と感じていた理由と、考え方が変わってきた背景を紹介します。

私はレビューが嫌いです

突然ですが、私はレビューが嫌いです。レビューに必要な前提情報が揃っていないことが多かったからです。実装の背景や設計思想が見えないと、コードの意図を追うことができません。

つらかった思い出もあります。例えば、ファイル変更以外の情報がまったくない、Descriptionが空白のPR。あるいは、目的や期待する結果が分からないPRもありました。

PRとの悲しい思い出。実装背景が不明のPRのキャプチャ

「開発が速い会社」のレビューは雑ではなかった

そんな中で、私が所属するRecustomerは2年連続の受賞[^2]など、開発生産性を評価されているスタートアップです。開発スピードが速いと聞くと、「レビューは雑なのでは」と思われるかもしれません。

しかし、私の体感は逆でした。レビューは丁寧で、むしろレビューが強く意識されていました。レビューされていないPRがSlackで通知され、1日に数回「誰のPRが、誰に見てほしくて、何時間待っているか」が流れてきます。

レビューされないと仕事が進みません。だからこそ、レビューの優先度を実装よりも高く置く、という思想が根付いていました。

Slack上でレビューされていないPRが通知されているキャプチャ

レビューを支える取り組み

ここからは、そんな弊社で実践しているレビューの取り組みを紹介します。

設計思想を揃え、差分とコンテキストを小さくする

まず取り組みとして大きかったのが、設計思想を揃えることです。Recustomerでは「DDD(ドメイン駆動設計)+ヘキサゴナルアーキテクチャ」を採用しています。詳細は本筋から外れてしまうので、ここでは特徴だけ説明します。

1つは、上位モジュールが下位モジュールに直接依存せず、インターフェースに依存する点です。インターフェースが変わらなければ、内部実装の変更が影響しにくくなります。例えば、PostgreSQLからDynamoDBへデータベースを変更した場合でも、ビジネスロジックまで見る必要が減り、差分が小さくなりやすいと感じています。また、単体テストが書きやすいというメリットもあります。

もう1つは、各モジュールが単一の責務に集中する点です。レビュワーが把握すべきコンテキストが減るので、責務外の変更が混ざったときも指摘しやすくなります。全員が同じ設計思想で書くことで、誰が書いても大きく揺れない統一されたコードになり、迷いや考え事を減らしてくれます。

社内で「良いルール」を共有する

この記事のつづきを読もう
新規登録/ログインしたらできること
  • すべての記事を制限なく閲覧可能
  • 限定イベントに参加できます
  • GitHub連携でスキルを可視化
ログイン
アカウントをお持ちでない方はこちらから新規登録