見出し画像

ChatGPTによってエンジニア採用はどう変わるのか?

こんにちは、Startup Tech Live事務局です。「エンジニア組織のグロースに必要な知見の流通」をテーマに様々なイベントを開催しております。
こちらは2023年4月25日に開催したオンラインイベント「ChatGPTによってエンジニア採用はどう変わるのか?」のイベントレポートになります。
今回はハイヤールー CEO 葛岡氏と樽石デジタル技術研究所 代表 樽石氏に登壇いただきました。是非ご覧ください。

スピーカー

樽石将人 | 樽石デジタル技術研究所
代表Google、楽天という巨大企業を経て、まだ黎明期にあった2014年にRetty株式会社にCTOとしてジョイン。現在は樽石デジタル技術研究所の代表を務めながら、某大手企業のCTOとして組織変革をリードしている。
葛岡宏祐 | 株式会社ハイヤールー |CEO1996年生まれ、京都府出身。
バックパッカーとして世界一周を経験後、独学でiOSの旅行アプリ『AminGo』をリリース。2018年にAIエンジニアとして株式会社ディー・エヌ・エー(DeNA)に入社し、数々のイベントに登壇。2020年2月、画像検索プロジェクトのテックリードとして株式会社メルカリに入社し、在籍中の2020年12月に株式会社ハイヤールーを創業。

ChatGPTの仕組みの理解

葛岡)まずは簡単にChatGPTがそもそも何かというところから話をしていきます。リリースされたのは、最近で、Twitter等のSNS上で非常に話題になっています。そもそもこれはどういったツールなのか仕組みをご説明していきます。(今回はテクニカルな部分は省いております)

まずこのChatGPTの話をする際には、LLM(LargeLanguageModel)の話が出てきます。このLargeLanguageModelは、インターネット上に公開されている膨大なデータを基に学習された自然言語モデルであり、例えば機械翻訳だったり文章の生成等を行うようなモデルです。
ChatGPTの仕組みを理解する | HireRoo Tech Blogs

次に入ってくる単語を予測するような自然言語モデルの場合、
「現在、私は機械学習モデルの _ _ 」のところを、テキストから次にくるワードを予測してくださいのように学習指示をし、次に「訓練」というワードが推論されます。「訓練」が入り、次は何を書くか学習し、最終的に推論していき文章の生成等を行うようなモデルです。(下記スライド参照)LargeLanguageModelという大きな枠があり、ChatGPTはその中の一つのモデルとイメージしてください。

学習を事前にしておき、その学習したモデルに対して、改めて再度学習することを「転移学習」と専門用語では言います。この転移学習をすることにより、元々のモデルの用途が先ほどのような予測変換するようなモデルだった場合、それを何か別の用途に変えるということができます。
ChatGPTは、人間のように対話ができることを目的としています。人間の手で1万データほどサンプルを作り転移学習させて学習を行っているため、例えば以下のように「コーディングテストに関して説明してください」とChatGPTプロンプトを入れると、あたかも向こうに人間がいるように振る舞います。
ただ、ここで大事なのはこれは知能ではなくて、学習されてるからです。人間が事前に「その回答は良い」、「その回答は悪い」と学習をさせていった結果、人間らしく振る舞うことができます。

Google検索は、インデックスが日々更新されそこに対してテキストでクエリを上げると、該当する検索の結果が出てきます。
例えば「コーディング試験に関して説明してください」と質問した場合、その説明はGoogle検索でも返ってきます。(下記スライドが実際にGoogle検索で検索し、一番上に出てきた結果です。)
元々のデータは同じデータ情報ソースなので、基本的にはChatGPTが返えす内容もGoogle検索の内容もそう大きくは異なりません。
一方でChatGPTは対話式のため、前後のコンテキストをある程度理解することができます。
例えば「問題を解いてください」とリクエストすると、問題を解くようにChatGPTは返してくれます。「ここ間違ってます」と返答すると、その前後のコンテキストを理解するのでそこに対してまた新たなレスポンスをくれます。ここはGoogle検索と大きく異なるところです。

たどり着きたい情報にたどり着く方法がこれまではGoogle検索のウィンドウだったところがChatGPTになると、コンシェルジュのように対話式で返してくれるといったインターフェイスが変わっただけで、本質としては、変わらないと捉えています。

知能ではないことがわかれば、ある程度ChatGPTの得意分野と苦手分野が理解できます。
例えば「ハイヤールーはどんなサービスですか」と質問すると、「ハイヤールーは日本で提供されている人材採用支援サービスです」や「職場をマッチングするプラットフォームを提供してます」という、あたかも最もらしい回答は返ってきますが、我々は人材採用の支援はしていないですし、職場をマッチングすることもしていません。
我々はコーディングテストのプラットフォームを作っている会社なので、これは明らかに誤りです。しかし、それらしく返信するソリューションになっています。そのため、情報量の多い分野は、比較的得意ですが、情報量が少ない分野は苦手と捉えています。

ChatGPTは、転移学習で次々に学習し新しいモデルを作っていきますが、LargeLanguageModelのため、全てのオンライン上のデータとなると、1回あたりのモデルを作る計算量が恐ろしいぐらいかかります。そのため、毎日情報を更新するのは、今の計算資源ではスーパーコンピューターとかを使っても相当難しいはずです。
一方Googleは、基本的にはウェブ上にある情報をいろんな観点でインデックスをして、検索窓から入ってくるクエリに対して応答を返すやり方です。ChatGPTのインデックスの扱いと比較すると、情報更新の頻度はGoogleの方が高いため、例えばプレスリリースを出した場合Google検索では即日表示されますが、ChatGPTはそのデータを含んだ学習はまだしてないため、おそらく意図しないレスポンスが返ってくると思います。

その他ChatGPTの弱点としては、情報のソースを見せることができません。Googleであればきちんと情報ソースやリンクを教えてくれると思いますが、ChatGPTはそれができない。(以下スライド参照)
私の見解としてはChatGPT自体非常にインパクトがあると捉えていますが、原理を理解すると、元々ソースとなっている情報はGoogleと大きく変わらないと考えています。

(Google検索での検索結果)

先ほどの「コーディング試験とは」をGoogle検索すると、約800万件以上結果として見つかります。逆に弊社のサービス内容を検索すると1300件ぐらいしか情報がないんです。おそらく我々はまだ2年ちょっとのスタートアップのため情報量も少ないのでさっきのような間違った情報を返してくる状態になっています。

ChatGPTにコードを書いてくださいと言うと、検索すると出てくるようなコードであれば返してくれるようになります。これにより、ある程度単純なコードを書く仕事は民主化されるんじゃないかと思ってます。例えば、とても難しいアセンブリ言語が必要な時代から、C++、Python、JavaScriptとかそういう言語ができて、暗号のようなものから、人間でもわかるような英語で書けるような言語っていうのが出てきました。これがさらに1階層上のレイヤーに近づくのかなと捉えています。これから大きく二極化していくと思っています。「ツールを使える人」と「ツールを作る人」、この二極化が間違いなく進むとこれを機に思ってます。例えばスタートアップの場合、プロダクトで差別化を生みたいと目指していても、民主化が起こると誰でも作れるツールだと差別化はできないわけです。そうなると、ツールを作る人が非常に大事になってきます。ツールを使える人が十分な企業はいると思いますが、ツールを使える人、ツールを作る人どちらが自社に必要か、状況と照らし合わせた上で、どうやって見極めていけばいいのか、この後のパネルディスカッションでお話していきます。

時間の関係上さらっとした説明だけになりますが、詳しく書いている記事もあるので興味のある方は詳細を見ていただければと思います。
ChatGPTの仕組みを理解する | HireRoo Tech Blogs
ChatGPTでコーディングテストはどのように変わるのか | HireRoo

~対談~パネルディスカッション

仕組み化を考慮した上で今までのコーディングテストはどうワークするか?ー他社事例ー

葛岡)
樽石さんはGoogle時代からコーディングテストを作成していた経験があると伺っているので、その経験も踏まえてお話し伺いたいです。
前述のようなChatGPTの話があると、一般的に出てくるような問題を活用して、スキルを確認するのが難しくはなってきますよね。Googleのエンジニアのように自社でオリジナリティを持って問題を考えるみたいなことは今後重要になってくると思っていますが、樽石さんはどう考えていますか。

樽石)
確かにオリジナルでテストを作っていましたが、オリジナルのテストだから価値があったというわけではなく、出した問題とそれに回答するまでのプロセスが重要だと感じています。答えを基に、ディスカッションをして、様々なインサイトを見いだしていく。その過程を一番よく見ていました。
特にGoogleの例ですが、一般的なコンピュータサイエンスの問題を出題したりします。
例えば「コンパイラを作ってください。」まず作ってもらいつつ、そこから分析したりします。「計算量はどうなってるんですか」いろんなインサイトを見出しながら、「より改良するにはどうするんですか」といった話をしていました。
Google時代をイメージしてコーディングテストにおいての活用を考えると、ChatGPTが返してくれた行動(結果)を分析してインサイトを見出す。そういった活用方法はあるのかなと思っています。


葛岡)
樽石さんがご説明されたコーディングテストは、基本的に正解or不正解を重要とするのではなくて、そのプロセスや、コミュニケーション能力、思考プロセスを見ているテストだと思います。私自身様々な会社のコーディングテストを受けたことがありますが、GoogleやFacebookが見てるのは、案外”コードが正しく動いているか””コードにバグあるか”よりもコミュニケーション力や思考プロセスを中心によく見ていますよね。(もちろん最低限の技術レベルは見ていると思いますが)


樽石)
そうですね、思考プロセスは重要ですね。あとは作ったもの自体の分析角度を見ています。特にGoogleは巨大なデータを使うので、早くないといけません。作ったけどそれがとても遅い、メモリを使いすぎるとかが発生すると動かないので、それを何とか高速にしたり、小さなメモリー・フットプリントで動かしたり、何か工夫をすることを試みているのか時間をかけて、ディスカッションしていました。

葛岡)
Googleでやられているようなライブコーディングや対話式ベースで思考力を見るテストは、ChatGPTによって影響されないと思ってます。一方でオンライン上のテストだけで完結するもの(候補者の方に1週間ぐらい時間を与えて、「解いてください、結果を見てご連絡します。」という宿題形式のもの)は、性善説で成り立っているところもあるため、後者の方が横でChatGPTのタグを開いて検索して、類似コードで提出することはもちろんできると思っています。
点数だけで評価している場合、その人のスキルとは関係なくChatGPTの行動で通してしまうことは起きると思っています。
そのため、ChatGPTの登場により影響が出るコーディングテストの形式と出ない形式が明確にわかれてくると思っています。
実際、オンライン上でテストを受けてもらいそれが点数化され、通すか通さないか判断するというコーディングテストを活用されている企業さんは日本には多く存在すると思っています。
我々もライブコーディング(まさにGoogleがやっているような、面接官と候補者の方がホワイトボードを用いたテストやるようなイメージ)のような形式も用意していますが、現時点では圧倒的に点数化されるオンライン上のコーディングテスト形式のほうが使用率が高いです。
問題自体を一から考えることは難しいため、全ての会社でオリジナルクエッションを作るのはあまり現実的でありません。そのため、弊社のようなサービスが活用されますが、正解or不正解というのはあくまで一つの指標として判断し、それ以上にコミュニケーション能力や思考プロセスなどを確認していくようなテストに今後ニーズが出てくるのではないかと思っています。


樽石)
知人のエンジニアを見ていると、ChatGPTにいろんな質問(依頼)をして、コーディングをしてもらう方も多くいます。軽い質問ではなく、きちんと要件定義をして、それで返してもらう。出てきたのが少し違ったら、どう違うのかをChatGPTにきちんと説明をしています。
そうするとChatGPTは勘違いしましたと言って直してくれます。これは、思考プロセスでもあるし、コミュニケーションプロセスにも似ています。そういった目的達成のためのプロセス一連をChatGPTを使って提出してくださいというようなやり方(コーディングテスト)も可能性があるなと思いましたが、どうでしょうか。

葛岡)
プロンプトエンジニアみたいな話ですね。確かに面白いなと思います。例えばデータ分析をしたいとなった場合に、SQLを1ヶ月真面目に勉強して行うよりも、Tableauのようなものを活用し1週間でできましたの方が圧倒的に良いと捉えています。
実務でChatGPTを禁止しますという場合は難しいですが、実務でChatGPTを使いアプリケーションを作成して良いというのであれば、その過程も含め、評価するのが良いのではないかと思っているので、ChatGPTを活用したテスト形式は有りだと思います。
あくまで採用の面接は、この人と一緒にうまく仕事できるか、パフォーマンスを発揮する人なのかということを、短い時間の中で情報をサンプリングしながら仮説を検証していくようなイメージに近いと思っています。そういう意味ではプロンプトエンジニアとして、ChatGPTを使ってでもいいからちゃんと問題を解けるのかを見ることも一つの方法ではありますよね。

85%の方が業務上でChatGPTを活用しているor試みている結果となりました

葛岡)コーディングテストでChatGPTを拒否するのではなくて、許可した上でその活用自体もスキルとして評価するのが良いということがアンケートから見ても言えることですね。ツールを使いながらどういうふうにアプリケーションを作りますか、ツールの活用も含めて技術力ですというような観点で判断するのが良いですね。ちなみに我々のサービスを活用してくださっている企業様は、テスト時にGoogle検索を許可している企業様のほうが多いです。加えて、コピペだけでは駄目です。きちんと説明ができるようにしてください、としている企業が多いと思います。自分で理解した上で回答を出す。ChatGPTは、誤った答えを返すこともあるため、そこに対して自分での検証が必要です。それも含めてのスキルだと思います。ChatGPTを業務上で活用することを良しとしている企業が多いからこそ、コーディングテストでの活用の仕方も企業側のポリシーによって変わってくるのかなと、アンケートの結果を見て思いました。

樽石)ChatGPTを使ってもらい、正しい答えを出すようにChatGPTを誘導していく。そういうアプローチも大事かもしれないですね。マネジメント能力みたいなものが近いのかもしれません。間違えてでてきたものに対して自分で直しちゃうところを、もう1回ChatGPTにコーチングして、きちんとしたものにするのかとか。ChatGPTで合ってるか間違ってるかわからないコードが出てきたときに、どう解釈しますかという質問ですね。

葛岡)企業さんの考え方によって結構二極化するところではあるので、コピー禁止される企業さんに関しては、我々のサービスとしては不正検知をだせるような機能を設ける予定です。(登壇時コメント※すでにリリース済み)どこをペーストしたのか、全部自動で出てきます。コピー禁止を推奨する企業さんであれば改めて自分の力で解いてくださいと運用できますし、ChatGPTを使ってOKという企業さんに関しては、ChatGPTを活用した過程も含めどういうプロンプトエンジニアリングをしたか確認できるようにツールとしてもなっていますし、評価者のスキルとしても向上すると思います。

自社コーディングテストを作成する上での重要な点


樽石)
Google時代コーディングテストは基本的に自分で作っていました。場所やチームによっても異なりますが、自分のチームではみんなが自分のテストを持っていました。

葛岡)
私もコーディングテストの問題はたくさん考えて作成していますが、非常に難しいですよね。特にアルゴリズムの問題やGoogle等で使われてるような問題は、とても難易度が高いですよね。テストは解けますが、テストは作れない人はとても多いと思います。

樽石)
問題の作り方は色々あると思っています。開発中の様々なエッセンスを問題に落とし込むアプローチやシャドーイングで他のメンバーがどういった問題を出しているのを見させてもらい自分なりにアレンジしていく。今まで自分でやってきた中での苦労や深く考えたことをコーディングテストというものに具体化していきます。
Googleでは最初に面接官をする場合必ずシャドーイングインタビューを設けていました。他のメンバーの面接に同席し面接を見学します。

葛岡)
ちなみにコーディングテストの内容が外部に漏れたことはありました?
決まったコーディングテストを活用していると、自社で作成したとしても外部で答えが出回るという話を聞いたことがありました。

樽石)
そこはあんまり気にしてなかったです。解答できたら合格ではなく、どういう思考で考えたか、思考プロセスを見ていたので解答自体はそこまで重要ではなかったのであまり意識していなかったですね。

葛岡)
今のお話を前提とすると、コーディングテストを作成する上での重要な点っていうのは、解答がだせたら合格ではなく、それをもとにディスカッションやフォローアップが出せるような問題というのが重要ですね。「それでもできるけど、こういう観点でこっちの方がいいよね」とかっていうのもあると思っています。自社で問題を作ったり、コーディングテストを導入したりする場合は、明確な正解があるよりも、そういった問題のほうが採用においては有効だなと思います。
現状、ほとんどの日本企業ではオンライン上で解いて終わりというコーディングテストを選択していますが、この人と一緒に仕事したいなと思える人かどうかわかる採用をするべきだと思っています。
ライブコーディングのように画面共有しながら、そこから話を膨らませるような問題を提供する。コミュニケーション能力とか思考プロセスにおいて、きちんと建設的な考えができているか、自分の意見主張ばかりではなく人の話も考慮できるなど、そういう部分が大事になってくる。そこをきちんと見れるテストが非常に重要と感じています。

樽石)
実装の選択肢が変わるパターンの問題が作れるといいなと思っています。答えがひとつではなくていろんなパターンがあり、何か答えが異なってくるような問題とか。

葛岡)
トライアル入社のようなスタイルを導入している企業さんもいる思います。実務している中での現実的な難しさをどう解いていくのか。まさに樽石さんが仰っているような複雑性の高い問題への思考力等は見れると思います。
一方で、トライアル入社を丸一日やってもらうのは、双方にとって一定の負荷がかかると思っています。
そのため、トライアル入社の場面を一部を切り出して、本当に一緒に実務で仕事してるみたいな感覚でコミュニケーションをとりながら進められるようなテストがあると一番いいんじゃないかと現状は思っています。

樽石)
最近の学校入試とかでも、今までマークシートだったのを、論文や論説文にしようという変化が起きてますね。エンジニアのコーディングテストもそういう流れになるかもしれないですね。

エンジニアに求められるスキルの変化

葛岡)
ChatGPTは人間のように振る舞う人工知能のモデルであって、我々人間が持っているような知能ではありません。そのため想像力等を必要とするところは、ChatGPTで全て解決できないと思っています。
いわゆるツールを作るエンジニアはこれからも、より一層価値が出てくるのかなと思います。一方でプロンプトエンジニアのような、今までコードを書けない人が、今までのエンジニアの人たちが出していた価値に近しいものを提供できる世界は間違いなく来るだろうなと考えています。
エクセルとかもそうでしたし、ノーコードローコードツールもそうだと思うんですよね。裏側ではSQLみたいなことが走ってるかもしれないすけど、その人は知識なしでドラッグ&ドロップできるみたいな。 同じような感じかなとは思っているので、明確に求められるスキルは変わっていくだろうなと思っています。

樽石)
今までもコピーできるコードや、Libraryを利用すればいろんなものを作れる世の中になって来てると思っています。ChatGPTもその延長だと感じます。わたしとしては、基本は大きく変化するイメージはなくて、まず第一にChatGPTを活用して、一つの物事を実現するそのスピード感がどんどんあがっていくことがあると思います。
一方で、急に何歩も進んだので我々がここにきちんと追いつかないといけないですね。あと単純にエンジニアとしてChatGPTもプログラミング言語の1つなんですという発想で考えるといろいろ面白いなと思います。

最近のプログラム言語の基本はどう動かすかみたいなものを、実現する・記述するということです。いわゆるHow言語ですね、関数の名前があってその中にやることが書いてあるというものです。
しかし、実はプログラム言語の歴史を見るといわゆるHowを記述するプログラミング言語じゃなくて、何をということを記述してどうやるかは考えてくれるようなwhat言語がありました。有名なものだとprologという言語ですね。人口知能のはしりのようなものです。それが何十年たって使えるものになったというような感じがあります。How言語と比べるとそのWhat言語に近いです。何をというところを書けば実装は考えてくれる。

同じようなスタンスのシンプルなツールだと例えばMakeに似てて、ゴールを書いて依存関係書いてあげると、それの実行順序はMakeが考えてくれるみたいな。そういう仕掛けの言語もあったのでChatGPTもよりパワーアップしたことを考えると、そういうWhat言語を一度見直して、それをどう活用するのかみたいなアプローチもあるのかなと思ってます。

テストドリブンデベロップメントと言われていましたが、それが発展した・・なんでしょう・・「コメントドリブンデベロップメント」のような世界ですね。クラスドキュメントはjavadocが解析して、ドキュメントが自動生成される、そこを最初に書くと、関数名も書かれるメソッド名でもきちんと考えるし、中の実装もきちんと書かれる。こんなイメージが近いですね。
ChatGPTの登場で何百歩も進んだ新しいプログラム言語が現れたっていうスタンスで僕は見ているところですね。

まずはこのスピード感についていくこと、そしてそれをツールとして活用して新しいことを生み出せる人がKeyになってくるのではないでしょうか。


イベント後記
まだまだ登場したばかりのChatGPT。これにより”採用の根本””採用プロセス”にも大きな影響がでてくると思います。コーディングテストと同様で、正解があるわけではありません。各自がChatGPTを”何”と捉え、どう活用していけば自社の理想とする形が実現できるか、その問いを常に持ち続けPoCしていくことが非常に重要だと感じました。
イベントにご参加頂いた皆様、noteをご覧頂いた皆様ありがとうございました。

Startup Tech Live
こちらのグループはVC「Globis Capital Partners」が主催するTechnologyにフォーカスしたcommunityになります。 スタートアップ×Engineeringに関する情報はもちろん、著名な方の登壇イベント等を発信していきます。

Globis Capital Partnersは日本初の本格的ハンズオン型ベンチャーキャピタルとして1996年に設立しました。 日々次世代のリーディングカンパニーを生み出すためにチーム一丸となり精進しております。

Twittter: https://twitter.com/gcp_byvc
connpass: https://gcp-tech.connpass.com/

この記事が気に入ったらサポートをしてみませんか?