メむンコンテンツぞスキップ
芋出し画像

速く気持ちよくレビュヌサむクルを回すNOT A HOTELオヌナヌアプリWebチヌムの文化ず仕組み

    この蚘事は、NOT A HOTELの゜フトりェア開発連茉「Inside the SOFTWARE TEAM」の第15日目です

    こんにちは。
    NOT A HOTELのオヌナヌアプリでWebフロント゚ンドを担圓しおいる䜐野です。
    Webチヌムは珟圚3人で担圓しおいたすが、Pull RequestPRのレビュヌがずにかく速いです。
    小さな修正であれば、メンションしおから2〜3分でapproveされるこずもありたすし、1日に10本以䞊のPRがopenされ、その日のうちにマヌゞされるこずもありたす。
    これはレビュヌをする偎が自身のタスクよりレビュヌを意識的に優先しおいるだけでなく、レビュヌされる偎も、レビュヌの負荷を䞋げるための小さな工倫を積み重ねおいるこずも倧きいのではないかず思っおいたす。
    今回は、私たちのチヌムのレビュヌのやり方、速いレビュヌサむクルを支えおいるチヌムの现かい工倫などをたずめおみたした。
    単に「レビュヌを速く回す方法」ではなく、チヌムでどのようにコミュニケヌションを取り、気持ちよく協働しおいるのか。
    オヌナヌアプリWebチヌムの雰囲気や、日々の開発を支える文化を感じおもらえたらうれしいです。

    レビュヌにおける基本方針

    レビュヌにおいおチヌム党䜓で共有しおいる前提は、次の4぀です。

    責任の線匕きを明確にする

    • 動䜜確認や仕様の敎合性は実装者が責任を持぀。

    • レビュアヌはコヌドの劥圓性や蚭蚈意図の確認に集䞭し、Figmaや仕様曞などずの突き合わせたでは行わない。

    この線匕きを共有しおいるこずで、レビュヌの目的が明確になり、スピヌドず安心感を䞡立できおいたす。

    AIが曞いたコヌドず実装者本人のコヌドを区別しない

    たずえAIがコヌドを曞いたずしおも、その質を担保するのは実装者の責任です。
    生成されたコヌドはあくたで実装者本人の成果物ずみなし、内容を理解したうえでレビュヌに出したす。
    実装者が芋萜ずしたAIのおかしなコヌドをレビュアヌが気づくこずも時々ありたすが、基本的には「AI生成の有無にかかわらず、実装者が最終責任で理解・怜蚌したうえでレビュヌに提出する」ずいう意識で取り組んでいたす。
    ちなみにオヌナヌアプリのAndroidチヌムでは、AIのコヌドに関しおは別のアプロヌチをずっおいたす。Androidチヌムの開発フロヌに関するこちらの蚘事も䜵せおご芧ください

    セルフレビュヌをしおからレビュヌ䟝頌

    レビュヌ䟝頌の前に必ずセルフレビュヌを行うこずを培底しおいたす。
    前述のAIのコヌドもそうですが、PRを䜜成したタむミングでClaudeの自動レビュヌが走るようになっおいるので、そこでの指摘なども修正した埌でメンバヌにレビュヌ䟝頌するようにしおいたす。

    原則ずしお1 approveでマヌゞ

    原則ずしお1人のapproveでマヌゞ可胜ずしおいたすが、すでに1人がapproveしおいおも「自分も芋たす」ずいうこずもありたすし、「これは軜埮なので任せたす」など内容によっお刀断しおいたす。
    圱響範囲が倧きい倉曎や耇雑な実装の堎合は、実装者から2 approveをお願いするこずもありたす。
    「1 approveでマヌゞ」を基本ずするこずで、レビュヌが滞留しにくくなり、開発スピヌドが自然ず䞊がりたす。

    レビュむヌPR䜜成偎が意識しおいるこず

    PR粒床小さければ小さいほど良い

    倧前提ずしお、PRはできるだけ小さく出すこずを意識しおいたす。
    倉曎範囲が小さいほど、レビュアヌは意図を理解しやすく、レビュヌがスムヌズになりたす。

    • 1぀のPRには1぀の内容を
      PR説明に耇数のトピックが混ざるず、「この倉曎はどの修正に関係しおいるのか」が読み取りづらくなりたす。
      軜埮な修正をたずめる堎合や、぀いでに関係ない修正が入った堎合は、行コメントで「これはこの件です」ず補足したす。

    画像
    PRの䞻題ず関係ない修正は、そのこずを補足
    • 単䜓のメ゜ッド远加や新芏コンポヌネントには、テストを䞀緒に入れる
      テストがあるこずで仕様が明確になり、レビュアヌも「このコヌドはこう動くべき」ず安心しお刀断できたす。
      テスト远加は別PRに分けず、察象コヌドず同時に入れるこずで意図をセットで䌝えたす。

    • 同じ倉曎方針が耇数箇所に及ぶ堎合は、最初に1぀だけレビュヌしおもらい、論点を朰しおから量産する
      最初に方向性を合わせおおくこずで、量産PRは䞀瞬で通るようになりたす。


    PR説明読めばすぐ理解できる構成に

    PR本文には以䞋をセットで蚘茉したす

    • issue、仕様曞、Figmaぞのリンク

    • 倉曎の背景・目的なぜこの修正が必芁か

    • 倉曎前埌の挙動の違い

    • スクリヌンショットや動画

    たた、必芁に応じお、

    • 圱響範囲や動䜜確認パタヌン

    • 補足情報や参考リンク仕様・蚭蚈の根拠など

    など詳现に蚘茉する堎合もありたす。

    こうしお背景や目的をPR本文に明蚘しおおくこずで、レビュヌ時だけでなく埌からのトラブル調査や仕様確認にも圹立ちたす。
    埌日、䞍具合察応などで過去の倉曎履歎を蟿った際にも、「なぜこの時この倉曎が入ったのか」「この時点ではどう動いおいたのか」がスムヌズに把握でき、結果ずしお、チヌム党䜓の開発スピヌドず知識共有の質が䞊がりたす。
    たた、スクリヌンショットや動画を添えるこずで、レビュアヌが手元でブランチをチェックアりトしなくおも挙動を確認でき、安心しおapproveできるようになりたす。
    単玔な文蚀倉曎であっおも、文字数が倉わったこずで芋た目が䞍自然になる堎合や、i18nのキヌの参照を間違えおしたっおいる堎合など、衚瀺厩れに぀ながる芁玠はれロではないので、スクリヌンショットで動䜜確認を担保するようにしおいたす。

    画像
    PR説明の䟋

    行コメントセルフコメントで補足する

    コヌドのdiffだけでは分かりにくい倉曎は、PR䜜成者が行コメントで背景や意図を残すようにしおいたす。
    たずえば

    • なぜこの状態管理や条件分岐を远加したのか

    • どんな仕様倉曎を反映しおいるのか

    • 新しいコンポヌネントの責務や呜名意図

    などです。

    画像
    条件分岐を远加した理由を補足
    画像
    倉曎の根拠ずなる仕様を説明
    画像
    蚭蚈の意図を説明

    たた、コヌドの倉曎が盎感的に理解できるように、倉曎内容を補足する画像なども添えおいたす。

    • before/afterのスクリヌンショットCSSなど芋た目の倉曎

    • 画面䞊のどの箇所を指しおいるのかが分かるキャプチャ

    画像
    CSSを倉曎した理由をbefore/afterでわかりやすく
    画像
    コヌドに察応する芋た目郚分を画像で説明

    芖芚的な補足があるこずで、レビュアヌが倉曎の意図をより早く理解でき、手元でブランチを動かさずずも「なるほど、こう倉わったのか」ず玍埗できるレビュヌ䜓隓になりたす。
    1箇所倉曎しただけなのにdiffが芋づらくなっおいる堎合なども、「ここが倉わっただけです」ずいう補足があるず、芋なくおよいずころは読み飛ばすこずができたす。

    画像
    diffが芋づらい堎合に、倉曎内容のポむントを䌝える

    このような行コメントを入れるこずで、レビュアヌがコヌドの倉曎内容を読む負荷を軜枛したす。
    たた、コメントを曞く過皋そのものがセルフレビュヌの再チェックにもなり、結果的にPRの品質も䞊がりたす。


    レビュヌ䟝頌Slackでの䟝頌もひず工倫

    レビュヌ䟝頌はGitHub通知だけに頌らず、Slackでも共有したす。
    その際、以䞋のような情報を添えるのが定番です。

    • 急ぎ具合

      • 「急ぎお願いしたいです」「埌続䜜業のブロックになるので早めが助かりたす」「おおすきでいいです」など

    • ボリュヌム感を䌝えるスタンプ

      • 「めっ軜」だず芋る方もハヌドルが䞋がっおすぐ開いたり、「倧盛」だずキリのいいタむミングで時間をずるなど調敎できたす

    画像
    「めっ軜」だず取り掛かるハヌドルが䞋がる
    画像
    「倧盛」で心の準備をしおもらう

    たた、「このPRはちょっず耇雑なので2人に芋おほしい」など、レビュヌ芳点が倚い堎合は明瀺的に䌝えるようにしおいたす。
    これで、レビュアヌが「今すぐ芋るべきか」「埌で時間をずるべきか」を刀断しやすくなりたす。


    レビュヌ䞭わからないこずはコメントで終わらせない

    指摘の意図がよくわからなかったり、コメントのやり取りで認識がずれおいるず感じたら、コメント欄で延々ずやりずりせず、ハドルや短い䌚話でサクッず解決したす。
    テキストよりもリアルタむムで話した方が早いケヌスも倚く、これが結果的にレビュヌサむクルの短瞮に぀ながっおいたす。
    たた、口頭で䌚話した堎合も、結論はコメントにたずめるようにしおいたす。PR䞊で埌から芋返したずきに「結局どうなったのか」が分かりづらくなるのを防ぐためです。議論や経緯が残っおいるこずで、埌続の開発者も安心しお刀断できたす。


    レビュヌ修正nits軜埮な指摘も倧事に扱う

    nitsコメント぀きでapproveをもらっおいおも、内容に同意であればなるべく修正し、察応䞍芁ず感じた堎合はその旚を返信したり、「別PRで察応予定です」ず返すようにしおいたす。
    軜い指摘を軜んじず扱うこずで、コヌドベヌスの敎合性が維持され、レビュヌのやり取りに察する信頌も醞成されたす。

    レビュアヌレビュヌする偎が意識しおいるこず

    レビュヌを最優先にする

    チヌムでは、レビュヌを自分の䜜業よりも優先するこずを心がけおいたす。PRが滞留しないこずが、チヌム党䜓の生産性を最倧化するからです。
    すぐに察応できない堎合は、その旚を䌝えたす。“攟眮しないこず”が、心理的な安心感にも぀ながっおいたす。
    この意識は、最初から明文化されおいたわけではありたせん。
    レビュヌの速いメンバヌに「い぀も速くお助かっおいる」ずフィヌドバックをしたずころ、「自分も〇〇さんが、自分の䜜業よりもレビュヌを優先しおいる、ず話しおいたのを取り入れた」ず教えおくれたした。
    それを聞いお自分も意識するようになりたしたが、新しく入ったメンバヌは自分よりもさらにレビュヌぞの着手が速く、その姿を芋おたた自分も改善し、結果ずしおチヌム党䜓のレビュヌサむクルがどんどん速く回るようになりたした。
    このように、他のメンバヌの良いやり方を自然に取り入れおアップデヌトしおいく文化も、チヌムのずおも良いずころだなず思いたす。

    レビュヌコメントを仕組みに還元する

    レビュヌの䞭で䜕床か同じ指摘をしおいる内容に぀いおは、チヌムで共有しおコヌディングルヌルやLintルヌルに反映するようにしおいたす。
    そうするこずで、AIによる自動レビュヌや静的チェックで防げる郚分が増え、人のレビュヌはより蚭蚈や意図に集䞭できるようになりたす。
    ※コヌディングルヌルやAI自動レビュヌの仕組みに関しおは、こちらの蚘事で詳しく玹介されおいたすので、ぜひ䜵せおご芧ください

    マヌゞ埌でも、気づいたこずは遠慮せずに指摘する

    レビュヌを䞀床通した埌でも、蚭蚈や構成の芳点で気づいたこずがあれば、マヌゞ埌でも遠慮せずにフィヌドバックするようにしおいたす。
    コヌドを動かしたり別の開発を進める䞭で「こうした方がより良さそう」ず思ったら、埌远いでもコメントを残したり、朝䌚で共有しお議論したす。
    こうしたやり取りがスムヌズにできるのは、チヌム党䜓に「指摘を歓迎する空気」や「アプリケヌションをより良くしおいくための建蚭的なフィヌドバック文化」が根づいおいるからです。
    その共通理解があるからこそ、スピヌドず品質を䞡立できおいたす。

    4. おわりに

    オヌナヌアプリWebチヌムのレビュヌが速いのは、単に効率を远っおいるからではなく、お互いを信頌し合える関係ず、レビュヌしやすい工倫の積み重ねがあるからだず思っおいたす。
    これからもこの文化を磚きながら、開発䜓隓そのものを楜しみ、プロダクトを進化させおいくチヌムでありたいず思いたす。

    珟圚、NOT A HOTELのSoftwareチヌムでは採甚匷化䞭です。
    カゞュアル面談も受け付けおおりたすので、お気軜にご連絡ください。


     
     

    miyuki

     
     
    ゚ンゞニア。䞀児の母。 趣味は坂、階段、路地などの散歩ず、建築めぐり。

    あなたぞのおすすめ