ユニークビジョンでは制度として「コードレビュー」が導入されています。主にコードレビュー改善ワーキンググループが制度について議論し、レビューを通してよりよいエンジニアチームを作るために日々活動をしています。コードレビュー改善ワーキンググループに関連する記事はこちら。
コードレビューとは一般的にはコードの作成者以外の誰かが成果物を検査するプロセスですが、ユニークビジョンではシステムの品質担保のほか、日々のコミュニケーションやエンジニア全体の技術力の向上のための教育としての側面も持ち合わせています。
レビュー制度は利用し放題
社内にはフロント/バックエンド/インフラ/ハードウェア/競技プログラミングなど様々な分野に精通したエンジニアが揃っているため、困ったときに相談できる環境が整っています。
うまく仕様を整理できない段階で相談をしたり、不完全なコードを何度も誰かにみてもらうのには気が引けてしまうという人がいますが、ユニークビジョンではどんどんレビューにいくことが良しとされている風土があります。
もちろん時間の制限や回数上限などもありません。むしろ1人で1日中問題を抱えてしまうことを防止するために、原則毎日レビューを出すことが求められています。
レビューは知識量・経験値共にトップクラスのエンジニアに毎日「いつでも」「なんでも」相談できるという面でエンジニア個人の技術力向上に役立ち、活用するほど個人も会社も成長につながる、積極的に利用してもらいたい制度です。
レビューの種類
ユニークビジョンの開発フローには方針・コード・テストの3種類のレビューがあり、それぞれSlackのワークフローから気軽に送れるようになっています。複雑な内容や即座に解決することが必要な場合には、対面でレビューを受けることも可能です。
方針レビュー
これから入る作業の内容と工程などを相談するレビューです。目的と書くコードの方向性などに齟齬がないかをレビュワーに説明します。コードを書く前にレビューをうけることで事前に懸念事項を洗い出し、作業の手戻りを減らすことができます。
また、初めて扱う技術や分野で方針立てるのがなかなか難しい場合などはその分野に強いエンジニアに気軽に相談する、ということでもこの方針レビューは利用されています。たとえばバックエンドに強いエンジニアが初めてフロントの開発に入るときには開発環境の構築の仕方やコードの構成などを聞きながら方針レビューを受けることがあります。
コードレビュー
実際に書いたコードの内容や書き方に問題がないかどうかを確認するレビューです。想定通りに動くコードかという視点以外にも、セキュリティ面や負荷がかかった際にパフォーマンスに問題がないかなど、有識者でないと気づけない問題を見つけるフェーズでもあります。
レビューは完成品を見せることが目的ではないため、途中段階でレビューを受けることも多くあります。最後に一度だけレビューに行くよりも、こまめにレビューを受けていく方が方向性を保ちやすく、大きな手戻りが発生しづらくなります。
テストケースレビュー
開発したものをテストするためのケースが網羅されているかの確認をするレビューです。書いたコードの影響範囲やバグが出そうな操作など、想定されうるケースが足りていない場合はここで指摘が入ります。
ペアプログラミング
初めて触れる分野や難易度の高いプログラムを書く際は、その分野に理解の深いエンジニアと画面を共有しながらプログラミングをする「ペアプログラミング」もユニークビジョンではよく実施されています。その場で問題を共有しながら進めることで結果的に開発工数を短縮できる場合もあります。
レビュー制度の改善
2021年まではレビュワーになれるエンジニアが限定されており、レビューを依頼する場合はその中から指定する方式で実施していました。しかし、エンジニア1人にいくつものレビュー依頼が集まり個人負担が大きくなってしまう状態やレビュイーの待ち時間などを鑑みて、2022年からはコードレビュー改善ワーキンググループが2つの改善施策を実施しています。
①レビュワー指定なしのレビュー依頼フローの作成
レビューをするエンジニア1人1人の負担が減り、レビュワーには以前よりも早くレビュー結果が返されるように改善されています。
②レビュワーの自由化!
レビュワーの登用制度が廃止され、誰でもレビューをすることができるようになりました。これには人のコードを読むことで情報共有や教育を促進する狙いがあります。画家が感性を磨くために他の画家の作品を見るのと同じように、プログラマーも他人のコードを読むことで審美眼を磨くことができます。
このようにユニークビジョンでは確かな品質を担保するための仕組みが整っており、エンジニアの声を聞きながら必要に応じてブラッシュアップされていきます。品質の担保という点ではコードレビュー制度のほかに記事内で紹介したコードレビューワーキンググループや品質ワーキンググループ、最終確認チームなどの記事もあるのでぜひ覗いてみてください。