独自試験を作成できるコーディングテストツール「Track Test」
Track Testは、600問以上ある問題ライブラリーから求人企業が扱う技術領域と求める難易度で独自試験を作成できるコーディングテストツールである。試験のスコアリングやソースコードを元にした対象者の選定や、面接での活用にも役立つ。
![コーディングテストツール「Track Test」とは?](http://cz-cdn.shoeisha.jp/static/images/article/18172/18172_001.png)
問題作成は、AtCoderのレッドコーダーやICPC世界大会の出場者、大手GAFAなどに属しているエンジニアなど、総勢100名以上のトップクリエイターによるコミュニティメンバーによって開発されている。
今回のセッションでは、Track Testの初級問題と上級問題を用意し、株式会社10Xの石田光一氏と、GMOグローバルサイン・ホールディングス株式会社の津田良太郎氏がChatGPTで挑戦。その検証結果についてディスカッションを行った。
Trackアルゴリズム初級・上級問題を解いてみたい方へ
今回のセッションで使用した問題は、どなたでも解いていただけるよう一般公開をしております。Trackのアルゴリズム問題をChatGPTで解くことで、AI時代に最適な“エンジニア採用選考”を考えるきっかけとして、是非チャレンジしてみください。
初級問題「道路の横切り」をChatGPTに解かせた結果
初級問題は、道路の横入りをテーマに移動距離が変数として与えられ、交差点を横切る回数に対する質問に答えるものだ。条件分岐、繰り返し構文などの基本的な構造化プログラミング問題だ。基本的な実装能力を測ることができる。
![初級問題「道路の横切り」](http://cz-cdn.shoeisha.jp/static/images/article/18172/18172_002.png)
株式会社ギブリーの「Track Test」カスタマーサクセスリーダー田島聖也氏は、まずはじめに検証結果をサマリーを述べた。初級の問題であっても、一度ChatGPTにそのまま入力するだけでは満点の回答は得られなかった。だが、出力内容に対して適切な指示や修正を加えることで、満点を取ることができた。
「コードの内容を含めて、一部ChatGPT特有の記述や過剰な記述部分もあるが、合格を出せるラインまで到達することができてしまうと思っています」(田島氏)
10X石田氏がChatGPTで解いてみた結果と所感は?
10X石田氏は、まずTrackの問題がコピー&ペーストできなかったので、ブラウザの検証からCSSのクラスを取って問題をコピーし、ChatGPTに入力して解答をもらうようにした。メモリ不足など、Trackに入れるとエラーになってしまう入力に対しては、都度指摘して直してもらいながら、18分で全問正解。全問正解するまで、全く問題を読んでない状態で解くことができた。
「解かれたコードを試験官として見てみると、細かい改善点などはあったものの、ちゃんと整理できていて、満点も取っているので合格だと思っている」(石田氏)
![10X石田氏がChatGPTで解いた結果](http://cz-cdn.shoeisha.jp/static/images/article/18172/18172_003.png)
GMO津田氏がChatGPTで解いてみた結果と所感は?
GMO津田氏も同じく、Trackの問題文をChatGPTに入力して解答を得ようとしたものの、標準入出力を伝えるのに苦戦。問題を見ながら、ポイントごとに分けて聞くことで、無事満点を得た。
所感としては、Devツールや正規表現などの予備知識は必要だという。また、書かれたコードは特に問題はないが、かなり過剰に書いているtoo muchなコードに見受けられた。
「採用プロセスでは、書かれたコードはディスカッション目的としてるので、もう少しシンプルにするにはどうしたらいいかを質問しながら進められるといいと思いました」(津田氏)
自力で解いた場合とChatGPTを利用した場合の違いを比較する
続いて、2つのテーマについてディスカッションが行われた。1つ目のテーマは、「自力で解いた場合とChatGPTを利用した場合ではアプローチが異なるか」。10Xの石田氏、GMO津田氏ともに、構造が理解できてうまく使いこなせるのであれば、「ChatGPTの方が断然速い」と回答している。
2つ目のテーマは、「未経験やプログラミングの経験が浅い人が挑んだ場合も有効な解答が得られるか」。GMO津田氏は、「コーディング試験後のディスカッションを通して、どのようなアプローチで解いたかを語れるのであれば評価できる。新しく評価軸が加わった印象を持った」と語っている。
一方、10Xの石田氏も「Trackの使い方や概念を理解していれば、プログラム経験が浅くても解答できるのでないか」とポテンシャルの高さと採用の判断軸としての有効性を述べた。
上級問題「ラッパーと最高の韻」をChatGPTに解かせた結果
上級問題は、最も韻を踏んでいる単語の集合を見つけるため、特定のスコアを最大化する部分集合を見つけ出す問題だ。数理的な発想や高度なアルゴリズム・データ構造・重実装を要する問題であり、大規模データや複雑性の高い操作を拘束処理することが求められる。
![上級問題「ラッパーと最高の韻」](http://cz-cdn.shoeisha.jp/static/images/article/18172/18172_004.png)
上級問題に関しても、ギブリー田島氏が挑戦結果のサマリーを3点でまとめている。1点目は、問題の複雑性が上がったことでChatGPTの問題理解度や出力精度が落ち、指示を区分するないしは工夫するスキルもより求められてくるところだ。
2点目は、出力されたコードの改善がより必要となるため、プログラミングに対する能力が求められる点。3点目は、受験者が理解をして使いこなせると、効率的にコーディングをする上では、優秀な補助ツールである点が挙げられた。
10X石田氏がChatGPTで解いてみた結果と所感は?
10X石田氏は、最初に問題文を入れても全く正しい回答をしてくれず、苦戦したと振り返る。30分くらいで諦めて、初めて問題文を読んで理解した上で、どのように解くか考えた。
文字列のリストを入れて、最長共通接尾辞の組み合わせを高速に出せれば解けそうだとわかったので、工夫して入力。速度が出ないところもChatGPTにお願いし、時間ぎりぎりで96%の正解率を出すことに成功した。
「コーディングの友として、十分役立つので問題をしっかり分割して、正しいお願いができれば、正しい答えが返ってきそうだと感じました」(石田氏)
![10X石田氏がChatGPTで解いた結果](http://cz-cdn.shoeisha.jp/static/images/article/18172/18172_005.png)
GMO津田氏がChatGPTで解いてみた結果と所感は?
GMO津田氏も開始15分ぐらい苦戦した後、20分くらい問題を読み込み、自分が理解した後に要素を分解してChatGPTに設計を依頼した。
設計に関しては自分でやっても同じぐらいの品質・時間が出せると思ったが、メソッドを書いてもらったところ、コードを書く速度は圧倒的にChatGPTの方が品質・時間ともに良かったと語っている。最終的に20問中19個回答して時間終了となった。
上級問題となると、コードを書く速度は圧倒的に速く、アルゴリズムを理解できる最小単位を把握して、そこで正しくこの条件を出すメソッドを作ってくれるのであれば、使わない手はないと語った。
「辞書検索で使うTrie木を使ったら?など、いろいろ提案してくれるので、コーディングの友として本当に役立つと思いました」(津田氏)
今回の結果を採用選考に活かすとしたら、どのような目線で臨むかも語られた。
「ChatGPTが教えてくれる結果をうまく活かしてコーディングできていればいい。コーディング結果をディスカッションで語りたい。問題は、複雑な仕様を読み解いて、コードに落とすことのできる問題を選ぶ可能性が高いですね」(10X石田氏)
「ChatGPTをうまく使いこなせるかは、有効な評価になります。逆にChatGPTに使われてる状態になっていないかも判断の必要があると思っています。設計(PM)と実装(ChatGPT)を分けることで、PMのテストにも使えるのではないかと思いました」(GMO津田氏)
今回の検証結果についてのまとめ
最後に田島氏は、今回の検証結果を以下のようにまとめた。
- 従来のコーディングテストに対して、ChatGPTを用いても有効である
- 出力内容を適切に読解し、指示できるプログラミング力が求められる
- ChatGPTをスキルも有効な手段になってくる
「企業が知りたいと考えるエンジニアの純粋なコーディングスキル、AIを活用することができる実務力を測るプロダクトを今後も開発していきたいと思います」(田島氏)
参考記事:AI主導の世界においてのコーディングテストはどうあるべきか
Track Testでは、ChatGPTのコーディングテストの正答率を検証した結果をレポートにまとめています。AIが普及した世界における、企業のエンジニア採用選考や評価への向き合い方についての見解にご興味がある方はぜひご覧ください。
![Trockとしての見解と今後の方針](http://cz-cdn.shoeisha.jp/static/images/article/18172/18172_006.png)