天才プログラマー2人が語る、高度IT人材の採用のポイントとは?
2020/01/21
時価総額10億ドルを超える未上場のベンチャー「ユニコーン企業」。日本に数社しかありませんが、そのうちの一社がPreferred Networksです。同社は、約280人の社員のうち8割がエンジニア・リサーチャー。それも世界レベルのトッププログラマーが多数在籍するという異色企業です。
今回は、競技プログラミングコンテストを開催するAtCoder代表・高橋直大氏とPreferred Networksの執行役員・秋葉拓哉氏との対談が実現。高度IT人材の採用事情や、人材育成のために必要なことについて語っていただきます。88年生まれの同い年で、ともにプログラミング少年だったお二人の対談は大いに盛り上がりました。
最も競争の熾烈なAIの分野で能力を発揮し、社会課題解決に貢献したい
高橋:僕は学生時代に競技プログラミングに熱中し、その後AtCoderを立ち上げました。秋葉さんはどのようにしてPreferred Networks(以下、PFN)に行き着いたのでしょう。
秋葉:中3か高1からプログラミングコンテストに参加しはじめ、高橋さんと同じように競技プログラミングに熱中していたのですが、やがてアルゴリズム自体に面白さを感じるようになりました。大学から博士課程までアルゴリズムの研究に没頭し、そのままアルゴリズムの専門家になろうと思って国立情報学研究所(※1)でアルゴリズムの研究を続けることにしました。しかし研究を続けるうちに、自分が培ってきた技術を使って、社会的な課題解決や価値創出に生かしたいと思うようになったのです。
自分の技術力を生かして勝負できる分野はどこかと考えてみたとき、AIの領域がいいと思いました。AIは最も競争の激しい分野で、グーグルなど世界を代表する企業と熾烈な開発競争を繰り広げていますし、深層学習(※2)の技術も日々進化しています。この世界で自分の技術力をフルに発揮できれば、社会課題の解決に貢献することにもつながると思い、PFNに入社しました。
※1=国立情報学研究所
日本唯一の情報学の学術総合研究所。ネットワーク、ソフトウェア、コンテンツなど情報関連分野の総合的な研究開発を推進するとともに、全国の大学や研究機関、民間企業などと連携し、最先端学術情報基盤 CSIの構築や提供などの事業を行なう。
※2=深層学習(ディープラーニング)
機械が大量のデータから特徴や法則性を自動で抽出する技術。特に深層学習は画像認識・音声認識などの特定タスクにおいて飛躍的に精度を高め、AI関連技術の急速な進化の原動力となっている。
高橋:僕の場合、競技プログラミングの世界で競争する楽しさを味わっていますが、秋葉さんは実業の中で競争に励んでいる。フィールドは違うけれど、根っこは似ているのかもしれませんね。
秋葉:おっしゃるとおりです。入社後も、競争に勝つことで価値を生み出すプロジェクトに積極的に取り組んでいます。例えば深層学習の学習速度において、世界最速記録を樹立してニュースになったり、画像認識のコンテストで世界2位になったりという、実績も出しています。会社にとって価値ある技術をつくりつつ、世界に対して勝負を挑み続けているんです。
高橋:PFN の社内にもAtCoderのユーザーは多いですよね。
秋葉:PFNは、社員280名のうち約8割がエンジニアとリサーチャーです。AtCoderを含む競技プログラミングの経験者も20人以上いると思います。参加を公言せずに、勉強のため、ひそかに参加している人もいるのではないでしょうか。当社社長の西川徹も、ICPC(国際大学対抗プログラミングコンテスト)の世界大会経験者です。僕がPFNを選ぶ時も、プログラミング能力が世界トップレベルの人と一緒に働けるということは大きかったです。
高橋:PFNのエンジニアは、どのような分野で活躍されている方が多いのでしょうか。
秋葉:PFNは、最先端技術を実用化し、現実世界のさまざまな分野でイノベーションを実現させることを目指しています。その領域は、自動運転、ロボット、バイオ、ケミカル、工場最適化など多岐にわたりますが、軸となっているのは深層学習です。深層学習の基礎技術やモデル開発を行うエンジニアもいれば、ロボットエンジニア、製品化・サービス化を行うエンジニアもいます。
客観的指標を用いて、人材採用のミスマッチを防ぐ
高橋:非IT企業では、エンジニアの採用がなかなかうまくいかないと耳にします。人事担当にプログラミングの知識がない、スキルを可視化しづらいという意見もよく聞きますよね。PFNでは僕らが作問したコーディングテスト(出題された課題に対し、実際にプログラムを書くテスト)をエンジニアの採用試験に採り入れていただいていますが、どのような形で活用しているのでしょうか。
秋葉:面接前にコーディングテストの問題を解いていただき、その結果をもとに面接を行います。その後は他社と同じように、数回の面接を経て、経営陣の面接にあがっていきます。
高橋:面接では、どんなことを聞くんですか?
秋葉:コーディングテストで書いてもらったコードを題材にしながら対話をするのですが、このとき必ずしも「正解できたかどうか」だけを見るわけではありません。ある課題に対してプログラミングする時、さまざまな選択肢がありますよね。「ここはなぜこう書いたんだろう」という箇所があったら、その人はきちんと検討した上でそう書いたのか、単に他に思いつかなかっただけなのか。そういう「意図」を面接時に掘り下げると、考え方や知識の深さが分るので、スキルを測るうえで大きなポイントになります。
高橋:チェックするのは「実装力」と「アルゴリズムの能力」、どちらの比重が高いのでしょうか。
秋葉:どちらかというより、もっと基本的なプログラミング能力を見ていますね。テストでは短めのルーチンだけど込みいった処理を正しく書けるかという能力を見ています。
もちろんアルゴリズムの能力も見ていますが、「難問を解けるか」ということよりも、どちらかと言うと「普通の問題におけるアルゴリズムの設計力」を見ています。例えば計算量(※3)をしっかり意識しているかどうかという点ですね。
※3=計算量
アルゴリズムの性能を評価するための指標。アルゴリズムが問題を解くまでに必要とする処理ステップ数(時間計算量)と、アルゴリズムを動かすために必要となるコンピューターの記憶容量(空間計算量)の2つの指標がある。計算量が小さいほど性能がいいアルゴリズムと評価される。
高橋:AtCoderではPFN以外の企業にもプログラミングの試験問題を提供していますが、実は相手企業によって内容を変えています。PFNのようにエンジニアがコードまでチェックして面接の材料にする企業では、不正解の場合でもコードをしっかり見てくれるので「ひっかけ問題」も入れられますが、コードが分からない人事担当者が点数だけで評価する企業に対しては、できるだけ実力が素直に表れるような問題をつくっています。
いずれにせよ「AtCoderのテストはアルゴリズムの設計能力、実装能力を問うもの」という根本的な思想は変わりません。ただ、アルゴリズムの設計能力を問う際に、計算量の改善を主軸に置くのですが、あまりに数学的過ぎる問題など、実務で要求されるプログラムの実装能力から遠い問題を作成してしまうと、企業が求める人材からズレることがあるので、なるべく実装能力がわかるように意識して作問することが多いですね。
秋葉:もちろんコーディングテストで分かるのは、あくまでも能力の一側面にすぎません。点数が高いのに採用されない方もいれば、逆もまたしかりです。それでも、プログラミングコンテストなどのレーティングは非常に客観的な指標ですよね。アルゴリズムの能力、短いルーチンの実装能力が、正確に表れていると思います。
高橋:AtCoderでは、2019年12月から「アルゴリズム実技検定」をスタートさせました。先ほどの話にも挙がったように、エンジニアの採用に当たってコードの意図まで見る企業はごくわずか。多くの企業ではプログラミングスキルを把握する方法がなく、採用のミスマッチ問題も発生しています。そこで、実践を想定したプログラミング能力を問うスキル認定サービスとして、アルゴリズム実技検定を始めたんです。秋葉さんは、この検定についてどう思いますか?
秋葉:多くの企業にとって有用な、素晴らしい取り組みだと思います。これまでのAtCoderのレーティング同様、客観的な指標になるのではないかと期待しています。
高橋:ありがとうございます。この検定だけで実業に必要な能力をすべて測れるわけではありませんが、相関は十分あると考えています。
僕もNASAのプログラミングコンテストで上位5人に入り、アルゴリズムがスペースシャトルの技術に使われたことがありました。プログラミングコンテストが実業につながるケースは少なくありませんし、AtCoderでも実業の課題を解決するコンテストを複数開催しています。競技プログラミングと実業にはギャップがありますが、だからといって両者はかけ離れているとも言えませんよね。
秋葉:競技プログラミングで培った能力は、実業でも大いに発揮されると思いますよ。その最たる能力が、実装が早くて正確であること。ディープラーニングは実装して終わりではなく、試行錯誤の連続です。論文を読んで実装して…を何度も行うんですね。そのサイクルを素早く正確に回せれば、それだけ結果的に優れたモデルにたどりつける。そういう意味では、競技プログラミングのスキルはあらゆるケースで役立つでしょう。
プログラミング教育のカギは“競争”にあり
高橋:2020年度から小学校でプログラミング教育が必修化されます。僕の場合、ひたすらプログラミングコンテストに出場し続けることでスキルを磨いていきましたが、周囲に優秀な仲間がいたことが、とても良かったと思います。秋葉さんはどのようにプログラミングスキルを磨いてきましたか?
秋葉:プログラミングを始めた中高生の頃は、独学しか選択肢がありませんでした。運よく先輩に教えてもらえる部活に入り、そこからは本を読んだりゲームを自作したりしていましたね。でも最初はそこまで深く学べず、夢中になれませんでした。その後、コンテストで優秀な方々を見たり、ライバルに出会ったりして一気に能力が伸びたという実感があります。
高橋:やっぱり競争、協力関係にある人と一緒に学ぶ環境だと、能力も伸びるんですよね。そう考えると、学校教育の場でも、プログラミングスキルで競争させるのはアリだと思います。
秋葉:僕は東大でプログラミングの授業を受け持ったことがありますが、高橋さんもプログラミングを教える機会がありますよね。どういう教え方をしていますか?
高橋:多人数相手にプログラミングを教える時は、教科書は事前に全部読んでいる前提で、教えるときはいきなり実践問題を解いてもらいます。本は自分ひとりで読めるのだから、僕が教科書の内容を順に教えてもしょうがない。そのほうが、教えるべきポイントを絞れるので効率が良いです。
秋葉:結構スパルタですね。でも、僕も近いものがあります(笑)。僕が教えるときに目指したのは、「全員に理解してもらう」ことではなく、「本気で夢中になってくれる人をひとりでも増やす」こと。競技プログラミングの問題を紹介したり、「良いコードとは何か」を話したり、高度な話題を交えつつ、面白いと感じてもらえそうなポイントを授業にちりばめたんです。
というのも、僕自身も「夢中になれるもの」を発見できた時にいちばん伸びたから。プログラミングは経験が重要な分野で、夢中になってひたすら経験を積むことが最も成長につながると思います。
高橋:そういう意味では、興味を持てない生徒が授業についていくのは難しいかもしれませんね。
秋葉:そうですね。なので、これから授業が始まる小学校などでは、興味を持ってもらえるように先生方に頑張ってもらえるとうれしいなと思います。最近はビジュアルプログラミング言語(※4)も進歩し、プログラミングを学ぶには良い環境だと思います。僕らの頃は学ぶ環境が整っていなかったので、今の小学生がうらやましいです。
※4=ビジュアルプログラミング言語
プログラムをテキストで記述するのではなく、プログラムに必要な要素をグラフィカルなパーツにし、ドラック&ドロップなどの操作でプログラミングできるようにしたもの。MITメディアラボが開発した「Scratch」、文部科学省が開発した「プログラミン」などがある。
高橋:ただ、僕らの時代も良いところはありましたよね。昔は市販のゲームもそこまでクオリティが高くなかったので、自分でも市販品と比べて引けを取らないレベルのゲームを作ることができたんです。でも、今は絶対に無理ですよね。つまり、良いものを作るハードルは下がっているけれど、ひとりでものづくりをして世の中に発信して反響を得るのは難しい時代になっていると思います。「ものづくり」をモチベーションにプログラミングのスキルを磨くのは難しいかもしれません。
だからこそ、「競争」をモチベーションにするのは良いと思うんです。それこそ僕の母校のパソコン研究会のメンバーは、全員競技プログラミングをやっているそうです。
秋葉:情報オリンピックにせよ、アルゴリズム実技検定にせよ、目標ができるとみんなで一緒に頑張ろうという流れができ、プログラミング人口も増えますよね。そういう機会が増えることを願っています。競技の成績だけがすべてではありませんが、コンテストに夢中になることはその後のキャリア、人生にとってプラスになると思います。
高橋:そうやって高度IT人材が増えたとして、彼らの活躍の場を増やすために何が必要だと思いますか?
秋葉:企業の経営層に、技術への理解を深めていただくことでしょうか。
高橋:確かにそうですよね。高度IT人材はまだまだ人手不足で、需要が高まっているのにもかかわらず、報酬を上げている企業は一部ですよね。エンジニアを求める企業は多いのに、総合職の枠で募集をかけている企業もあったり、採用の仕方にも課題が残りますし、いざ入社しても技術職の部署がなかったりすることも。我々が高度IT人材を増やす活動を行うことも大事ですが、それと同時に企業が優秀なエンジニアを受け入れ、活用する体制を整えないと活躍の場は増えていかないと思います。
秋葉:おっしゃるとおりです。高橋さんの意見に付け加えるとしたら、エンジニアが面白いと思える仕事を企業が提供できるかどうかも重要だと思います。それは僕がPFNに入社を決めた理由の一つでもあります。「ここには面白い仕事がある」「技術的にチャレンジングで、新たな価値を創出できそうだ」「この技術を突き詰めれば、社会的課題を解決できるかもしれない」と思わせてくれる企業は、エンジニアにとっても魅力的ですから。