インタビュー 2024.12.24

コードレビューを通したウイングアーク流の新人教育について紹介します!

コードレビューを通したウイングアーク流の新人教育について紹介します!
【インタビューのお相手】川代さん
2008年に新卒で入社、現在17年目。Javaを主に扱いC++やPythonも経験あり。機能開発だけでなく、CI/CDツールの『Jenkins』を用いたビルド、テストの自動化、開発インフラの整備やTDD(テスト駆動開発)による品質強化、製品企画と、幅広い分野にて活躍中。
【インタビューのお相手】山口さん
2022年に新卒で入社、現在3年目。Dr.Sumの速さに惹かれDr.Sum開発部で働くことに。業務での開発と趣味での開発との違いを感じながらも日々奮闘中。

\この記事はこんな人におすすめ!/
・当社開発エンジニアの成長を支援する仕組みを知りたい人
・現場の開発環境はレベルが高そう、ついていけるのだろうか?と不安に感じている人

内定者から先輩社員へのインタビュー企画(第3弾)
当社では、25新卒内定者を対象に「内定者アルバイト」を実施しています。
今回、内定者アルバイトの一環として、25新卒内定者の皆さんに、先輩社員へのインタビューおよび記事作成を行っていただきました!
「就職活動中にこんな情報が知りたかった…」という生の声を元に、学生の皆さんへリアルな情報をお届けします!

こんにちは、内定者の谷山と番場です。
就活生の皆さんの中には、入社してからエンジニアとしてキャッチアップしていけるか不安に思われる方もいらっしゃるのではないでしょうか?
ウイングアークではコードレビュー(※)を通してエンジニアがスキルアップできる環境が整っています。今回は、Dr.Sum開発に携わっている、新卒3年目の山口さんと、コードレビューを通した教育を担当している川代さんのお二人にお話を伺いました。

※コードレビュー:エンジニアが実装したコードを他のエンジニアに見てもらい、その内容に誤りや改善点が無いかどうかをチェックする過程。プロダクトとそのコードの品質を担保する目的で行われる。

<補足情報>
Dr.Sumについて:
企業のデータを収集・分析して可視化するBIツールで、C++、Javaなどの言語で開発されています。当記事では、Javaにおけるコードレビューについて取り上げます。

Dr.Sumの詳細はこちら:https://www.wingarc.com/product/dr_sum/index.html
Dr.Sum含めたウイングアーク製品の開発環境はこちら:https://corp.wingarc.com/recruit/engineer/environment.html

先輩社員へのインタビュー

Dr.Sumチームにおけるレビューの仕組み

——本日はよろしくお願いします。早速ですが、Dr.Sumでのレビューの仕組み・ルールはどのようになっているのでしょうか?

川代さん:開発作業の際に発生したコードの変更は、すべてレビューを通し、他者によるチェックが行われています。レビューにおける議論が解決し、レビュワー全員から承認されたら、その変更が製品へ適用されるようになります。
また、コードが完成していない段階でレビューをすることもあります。これは途中で詰まっている場合や、実装について自信がない場合に実施されるもので、早い段階でベテランのエンジニアに見てもらうことで差し戻しなどの問題の芽を摘むことができます。

はじめてのコードレビューについて

——では続いて、レビューを受ける側に関する質問を山口さんにしていきたいと思います。はじめてコードレビューを受ける前、山口さんはコードレビューに対してどんな印象を抱いていましたか?

山口さん:ベテランの人たちの視点を知れることにワクワクしましたね。また、レビュー後の自分のコードが実際にサービスに適応されるので緊張感もありました。プロに自分のコードを見られることに対して多少怖い気持ちはありましたが、「ちゃんと見てもらうぞ」、「直していくぞ」という気持ちの方が強かったです。動作確認もして自分の中では完璧だと思えるようなコードでもやっぱり抜けているところはあるので、それを知るためにも必要な業務だと思っていました。

——川代さんはレビュワーとして、新人にどのようなことをよく指摘しますか?

川代さん:タイポや処理の記述ミスといった、明らかな間違いを指摘することもありますが、やはり最初のうちは命名規則やコードスタイルについて指摘することが多いですね。コードが動くことは大事ですが、チームで開発する以上は、コードの可読性や保守性といった観点が非常に重要となってきます。そのコードについてはじめて触れる人でも一目で理解できる状態に保つことでコードの属人化を防ぎ、開発能率の向上を見込むことができます。

——なるほど、具体的にはどのような指摘をされるのでしょうか?

川代さん:例えば、「a」や「b」といった命名では周りのコードを読まないとその役割を理解することができません。そのため、「textLength」や「position」のように、名前を一目見ただけでその意味と役割を理解できるようにするのが命名上の重要事項です。加えて、適切なコメントが記述されているかどうかも確認します。コードを一目見て処理を理解できるのがベストですが、実際はそううまくいきません。処理の概要を表すコメントや、難しい処理に対する補助的なコメントを交えることで、実装者以外が読んでもコードを素早く理解できるようになります。

二つの文字列を連結するメソッドのコードの比較。 右の方の可読性がより高い
二つの文字列を連結するメソッドのコードの比較。 右の方の可読性がより高い

——山口さんは実際にコードレビューを受けてみていかがでしたか?

山口さん:レビューを受ける前に何度も確認して自信満々で提出したのにもかかわらず、大量の指摘が来て「自分って他人から見てこんなに指摘の来るコードを書いてたのか!」と思い、少し落ち込みました。実際に内容を見てみると、川代さんが仰っていたような可読性・保守性などの基本的な内容が多くありました。
万全だと思っても基本的な内容の見落としが多いことに驚きましたが、自分のコードがどういった観点で見られているのかを実感できたのはすごくよかったです。

コードレビューを通してどのように成長したか?

——入社してから三年間、コードレビューを何度も受けてきたと思いますが、レビューコメントに何か変化はありましたか?

山口さん:はじめは、プロトタイプの作成ということもあり、命名規則やコメントといったとにかく基本的なところを見直すような指摘がされました。しかし、コードが書けるようになっていくにつれてテストのしやすさを考慮した書き方やクラス構成といった高度な内容になっていきました。こうしたレビュー内容の移り変わりを通じて、これまでのレビュー内容を理解してしっかり自分の力にできていると感じています。

——レビューを通して成長を重ねていった中で、コードの書き方はどのように変わりましたか?

山口さん:ちゃんと個人の開発でもコメントを書くようになりました。私は元々競技プログラミングをやっていて、その影響で普段のプログラミングもアルゴリズムや計算量の改善などに意識が向いていました。コードの可読性については自分がわかればいいと疎かになっていたのですが、現在は他の人に見せてもわかるようなコードを目指すようになっています。分かりにくい変数や処理内容などに関してもコメントをつけるようになりました。

——川代さんはレビュワーとして、どのようなときに相手の成長を実感しますか?

川代さん前に指摘した部分を最初からクリアした状態でコードを提出するようになったことですね。最初のうちはどうしても指摘の量が多くなりがちです。そんな中でも、それら一つ一つを身に着けていって次に活かせているのを見ると、「ああ、ちゃんと実践できているんだな」という実感を覚えます。また、成長していくにつれて指摘の方向性も変わっていきます。はじめのうちは、不十分な質のものを製品として出せるレベルまで引き上げるのがメインになります。ですが、既に合格点にある状態からよりよいものにしてゆく、深い議論へと徐々にシフトしていきます。

お二方のコードレビューに対する姿勢

——コードレビュー時には様々な事項について指摘することとなりますが、その際に気を付けていることはありますか?

川代さん:根拠を併せて伝えることと、優先度をつけることの二点を心がけています。一点目の「根拠を併せて伝えること」について、客観的な根拠を伝え、提案の形でコメントしています。こうすることで相手が納得しやすく、そして畏縮もさせないコメントにできます。例えば、ベストプラクティスを示した書籍を引いたり、他の観点におけるメリットを提示したりといった具合です。二点目の「優先度を付けること」について、レビューのコメントには「必ず直すべきもの」もあれば、「修正を相手の裁量に任せるもの」もあります。すべての修正が必須だと受け取られぬよう、どちらに該当するのかを文面にて明示するようにしています。修正が必須でないものについても指摘するのは、実装の新たな引き出しを増やすことができ、エンジニアとしてのスキルアップに繋がるためです。

——そのようなレビューコメントを受ける中で、山口さんは指摘をどのように理解するようにしていますか?

山口さん:頂いた参考資料の内容を出発点にして、自分なりに深堀りしています。「読んでおきましょう」と決められている内容も、一度読んだだけでは定着しないので、間違えたらその都度修正していくようにしています。資料をレビュワーの方が示してくれているのでキャッチアップはしやすいですし、解決が難しい場合は先輩に質問しています。

——山口さんが受けてきた指摘のうち、今でも記憶に残っているものを教えて下さい

山口さん:時間が迫っている状況下では、自分の出来ないところは出来ないとはっきりと伝えて、分かる人に任せましょうと言われたことですね。
これは指摘というより自分の失敗ですが、製品の開発で期限が迫っているのにもかかわらず、自分では手に負えないところを自分の力で実装することにこだわりすぎてしまっていました。一人でやっているわけではないので問題はチームで共有すべきと実感した指摘でした。

——川代さんがエンジニアの成長のために他に行っていることはありますか?

川代さん:参考にする資料の提示、勉強会の実施、レビューのオープン化の三つです。参考にする資料については『リーダブルコード』や『Effective Java』といったベストプラクティスを記す書籍を提示し、予め読んでおいて欲しい旨を伝えています。レビュー時に引き合いに出すことで、「これはあの本のどこどこにあったな」と頭の中に独自の索引を作れるようになればよいなと考えています。ウイングアークでは書籍の購入ができ、リモートワークでもそういった資料にアクセスしやすい体制が整っています。レビューのオープン化についてですが、レビュー内では他のエンジニアにとっても有益な情報がやり取りされていることがままあります。これらの情報を他のエンジニアとも共有することで、多様なレビューの観点を互いに学べるように努めています。

——レビューを受ける側として、山口さんはどのようなことに気を付けていますか?

山口さん:自分がコードを書くときに考えていたことや、選択肢の中からなぜそれを選んだのかをちゃんと共有することです。選択した背景を話すことで新たな選択肢を理解して学ぶことが出来るので、自分の考えをどんどんチームに共有していくのがいいと思います。
あと、わからないことはわからないと伝えることも大事ですね。レビュー内容が理解できているかどうかは大事なことなので、言いづらいことがあっても勇気を出して言いましょう。

読者へのメッセージ

——お二方とも、本日はありがとうございました。最後に就活生へそれぞれ一言お願いします

川代さん:ウイングアークは自分たちでどんなものを創っていくかを、エンジニアとして考えられる会社です。そのようなことに興味を持っている方は弊社を選択肢の一つに加えて就活をしていただければ幸いです。
また、就活生の方向けのイベントになりますが、ウイングアークでは現在、「コードレビュー面談」というものを実施しております。これは就活生の皆さんが書いたコードを現役のエンジニアがレビューしてフィードバックするというものです。今回我々が話した内容を実感できるチャンスですので、是非ご検討ください。

山口さん:これはよく言われていることですが、自分のやりたいことが複数ある場合は、それぞれで何が一番やりたいのかを選び、最終的に自分の性格と照らし合わせるとうまく一つに決められると思います。
あと、就活もそうですが嘘をつかずに正直に生きたほうがいいと思います!

最後に

いかがでしたでしょうか?
今回は2人の現役エンジニアにコードレビューについて教えていただきました。ウイングアークのコードレビューでは、基本的な事項から丁寧なコメントがなされ、新人含めたチーム全体で成長できる体制が整っています。
川代さんも山口さんも、基本をクリアしていって発展的な議論を行えるようになった点について成長を感じておられました。入社後に成長していけるか不安だった方も、この記事を通して「ウイングアークなら大丈夫だ」と感じていただければ幸いです。

ウイングアークではエンジニアとして共に働く仲間を募集しています。少しでも興味をお持ちの方は、是非エントリーをご検討ください。

編集後記
*採用担当 ジナン:
インタビューお疲れさまでした!記事を書いてみていかがでしたか?

*25新卒内定者 番場さん:
レビュワーの川代さんへインタビューを行いましたが、コード的な正しさだけでなく、心理障壁の高くならないような伝え方やレビュイー側の知識の定着に対する配慮など、レビュワーとしてのレベルの高さを感じました。将来的に自分が人のコードをレビューする立場になったときには参考にしていきたく思います。
記事を執筆する際には読者の皆さんの理解に難の出ぬよう、用語の使いどころや説明の仕方について試行錯誤できるという貴重な経験ができました。当記事をここまでご覧くださった就活生の貴方と共に働ける日を、心よりお待ちしております。

*25新卒内定者 谷山さん:
レビュイーの山口さんへインタビューをしましたが、エンジニアとして働きながらも学習していく強い姿勢を感じられました。私も来年からウイングアークのエンジニアとして働く際に意識できたらと思います。
今回の記事に際して、インタビューでは記事以外のことも沢山話ができ、ウイングアークのエンジニアがどういった方なのかをよく知るいい機会になりました。私たちの記事が皆さんの参考になればうれしいです。

*採用担当 ジナン:
ありがとうございます。レビュワー側である川代さんの工夫やスタンス、レビュイーである山口さんの成長実感や前向きな姿勢を感じることができて、いいインタビューになっていたと思います!
レビュワー、レビュイー双方にTrustがあるからこそ、お互いを尊重していい影響を与えあうことができるのだと思います。ウイングアークは新卒のみなさんの成長に真摯に向き合う会社ですので、お二人とも入社をぜひ楽しみにしていてください!

<補足>本記事でご紹介している内容は、2024年12月時点の内容です。今後、取り組み内容が変わる可能性もございますので、あらかじめご了承ください。

【内定者から先輩社員へのインタビュー企画(第1弾)】ウイングアークの開発エンジニアが語る!フルフレックス&フルリモートの働き方とは

【内定者から先輩社員へのインタビュー企画(第1弾)】ウイングアークの開発エンジニアが語る!フルフレックス&フルリモートの働き方とは

Read More
【内定者から先輩社員へのインタビュー企画(第2弾)】23新卒の先輩に聞いてみた!ウイングアークの新人研修とサポート体制

【内定者から先輩社員へのインタビュー企画(第2弾)】23新卒の先輩に聞いてみた!ウイングアークの新人研修とサポート体制

Read More
ウイングアーク1st|採用情報

ウイングアーク1st|採用情報

ウイングアーク1st株式会社の採用情報はこちら!

Read More

\ ウイングアーク1st情報配信登録 /
ウイングアーク1stでは、定期的に求人情報やイベント情報をご案内しています。

▶▶▶ 情報配信をご希望される方は こちら