SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

プロが求める実装スキルとは? コーディング試験の解答を実際にレビューしてみた

【10-C-5】ゆめみ流“技術面接”コードチェック実践方法 ~エンジニアによるエンジニアのための、最高の選考体験の作り方~

  • このエントリーをはてなブックマークに追加

実際にコードレビューしてみた

 「解答コードを見ると全部で55行くらいあり関数化もされていて、シンプルに書いてあったと思います。ただコメントが記述されていませんでした」

 実際の採点テンプレートとレビュー結果は次図の通り。

採点テンプレートとレビュー結果
採点テンプレートとレビュー結果

 本セッションでは、各評価項目について実際に詳しく解説したが、本レポートでは代表的な項目に限って紹介する。まず全体的に可読性の高いコードか調べるため、メインロジックの記述内容を見た。すると、csv_info変数があるが、一度も利用されていないことが分かった。また、scores変数とplayers変数・plyayer_score変数を唐突に利用していた。

コードレビュー > メインロジックを確認する
コードレビュー > メインロジックを確認する

 「コードをよく読むと、唐突に出てきた変数をすべて先頭行でグローバル変数として定義していました。この時点でグローバル変数に中身は入っていないので、各関数でこのグローバル変数を自由に読み書きしているようでした。おそらく最初は関数化せずに、頭から作っていって、それを処理のブロックごとに関数化したのではないかと考えました」

コードレビュー > 先頭行でグロ―バル変数を定義
コードレビュー > 先頭行でグロ―バル変数を定義

 これは、もちろんグローバル変数の汚染につながりやすい。あるべきコードとしては、グローバル変数をすべて削除し、main()関数のなかで各関数を呼び出して、その戻り値をmain()関数のスコープ内だけで利用する形にしたい。

コードレビュー > To Be グローバル変数の排除
コードレビュー > To Be グローバル変数の排除

 次は個別の関数を調べていった。ここでは、load_csv()関数の責務に注目した。すると、players変数とscores変数を返しており、それからjoin_list()関数で、この2つの値を連結したplayer_score変数を作成していた。

コードレビュー > load_csv()の責務に注目すると
コードレビュー > load_csv()の責務に注目すると

 「このデータをよく見みると、インデックス値は同じでplayers変数はプレイヤーIDだけ、scores変数はそのプレイヤーIDの人が取った得点をリストで含んだデータでした。インデックス値が同じだけど2つの別データは、扱いづらい不安定なものだと考えています。どちらか片方だけデータを挿入すると全部ずれてしまう。そういうものがバグを生み出しやすいと思います」

 load_csv()関数が辞書型でデータを返すようにすれば再度連結しなくても良くなる。次図の右下のように、プレイヤーIDに対するスコアのリストを保持するのだ。

コードレビュー > To Be 互いに相関のある不安定な変数の排除
コードレビュー > To Be 互いに相関のある不安定な変数の排除

 いずれも現場でコードを書くにあたって必要となる実践的なテクニックばかりだ。本セッションのコードレビューでは、この他にも「プログラムの処理の流れが適切な粒度で分離されているか」「関数名と変数名のリファクタリング」「唐突なマジックナンバーの使用と、問題に対応した数字の使用」「ファイルI/O周りの処理」「メモリとCPUの効率」など、多くのポイントについて詳しく解説した。

 ゆめみでは、このようやレビュー結果を、テキストでキレイにまとめてフィードバックするのは難しいので、評価でよかったところと改善ポイントをセットにして不合格になった応募者にも伝えているそうだ。

 「もしかすると応募者によってはピンとこないところがあるかもしれませんが、『我々はこのように見ました』という内容を改善ポイントとしてお伝えするようにしています」

 なお、講演後のAsk The Speakerで「合否関係なくレビューのコメントを応募者に伝えるのはなぜでしょうか?」という質問があった。

 これについて仲川氏は「不合格だった場合も6カ月とか一定の期間をおいて再チャレンジできる仕組みを用意している」と説明した。コードレビューの内容をちゃんと自分で理解して、もう一度チャレンジして、そこが改善されていたらそれを評価するというのだ。

 「あとは、学生さん全体への貢献といった側面もあり、こういうことをやっている会社だよと見ていただければと思います」

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2023 セッションレポート連載記事一覧

もっと読む

この記事の著者

可知 豊(カチ ユタカ)

フリーランスのテクニカルライター 興味の対象はオープンソースの日常利用、ライセンス、プログラミング学習など。 著書「知る、読む、使う! オープンソースライセンス」。https://www.catch.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社ギブリー

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17452 2023/04/13 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング