世界をリードする半導体企業に今の学生がやれることをインタビュー!(ソリューションアーキテクト〜NVIDIA〜)
今回は半導体企業であるNVIDIAさんにインタビューをしてきました。NVIDIAさんは、GPUを世界で初めて開発し、その優れた演算能力は、グラフィックス、科学技術計算、AIに広く活用されています。また、統合開発プラットフォームも提供することで輸送、ヘルスケア、製造などの産業におけるコンピューティングの課題解決を加速させています。下の画像をクリックするとNVIDIAさんのホームページに飛べます。是非ご覧ください。
今回はNVIDIAのエンジニアである山崎和博さんにインタビューを受けていただきました。

山崎さんはディープラーニング(深層学習)系のエンジニアであり、ソリューションアーキテクトという、お客様の依頼に対して事業変革から実行まで様々なことを行う仕事をしています。そんな山崎さんに、今の学生のあるあるな悩みをインタビューしました!

学生時代について
ー学校で学んだことが仕事で活かされたと思う時はありますか?
大学院で機械学習を学んでいたので、割とダイレクトに繋がっているなと思います。学部(大学時代)の時はサークルにのめり込んでいて、色々あって理論系の研究室に行ったのですが、逆にそれもプラスになっている気がします。というのも、私は大学時代数学が苦手だったのですが、理論系になると数学は必須ですので、真剣に取り組まないといけませんでした。最近論文を読むことが多いのですが、スラスラ読めたりすると、そうした学校で色々勉強していたことが役に立っているかなと思います。それでももう少し勉強しておいた方が良かったかなとは思いますが(笑)。
ー仕事を始めてから学生時代にやっておきたかったことはありますか?
結局勉強をやっておけば良かったなと(笑)。学生時代は、適当に時間を使いがちだったのでもう少し頑張れたのではないかと思いますが、当時のできる範囲でやっていたのでしょうがないところもあります。ただ、まとまった時間をとって勉強するのは、働き始めるとなかなか簡単ではないので、勉強するなら学生の間に、と。当時はあまりお金に余裕がなく、旅行などは十分に楽しめなかったのですが、今は色々なところにそれなりに行けますので、そういう意味では学生時代に勉強をきちんとやることで、後から選択肢が増えていくようにできると良いのではないでしょうか。
ーそうなんですね。社会に出てテクニカルな仕事をこなしていく時に、こんなことをやるんだ、こんな力や勉強分野が必要なんだと思ったことはありますか?
そうですね…思ったよりは英語を使うと思いましたね。日本企業だとしても、情報系だと一次情報が英語なので、英語のドキュメントを読むことが苦もなくできると良いと思います。最近のトレンドかもしれませんが、YouTubeなどで英語で解説をする方が増えていますので、短期で身に付かないリスニングは地道に鍛えておいた方が良いと思います。予想外のことをやらされることはそれほど多くはなく、一通り大学で受講した講義の延長で対応できると思います。加えて、製品などに関わっていくと幅広く様々な技術を使う可能性がありますので、引き出しを増やしておくことは大事だと思います。例えば、数学的な基礎となる微分積分や線形代数、機械学習であれば確率統計なども重要です。もちろん、流行りは流行りとして一通り抑えておくことも重要なのですが、一方で残念ながら、流行の技術というのは10年後には消えていたり、大きく変化していたりします。ですので、技術そのものの表面的な内容だけではなく、それらの背景にある概念や技術体系を把握することが重要だと考えています。実際、流行の技術も裏では昔から存在する概念がベースになっていたりするので、基礎を幅広く把握しておくことで、多少の移り変わりがあってもすぐ追いつけるようにしておくと、後々良いことがあるのではないでしょうか。とはいえ、最近なにかないの?と思われそうですので、強いて挙げるとすると、個人的には「数理最適化」が注目かなという気がしています。あと、チーム開発は大学ではなかなか経験しきれないものですが、その面についてはIT系のアルバイトの経験が活きています。

仕事について
ー優秀だと思った同業者やエンジニアの特徴はありますか?
優秀さというのは、文脈によって変わると思います。前の会社でも博士をとって勉強面で優秀な人が会社にうまく馴染めなくて成果が出ないということがありましたが、そういうことはよくあって、特定のスキルがあるからいつでもどこでも優秀と判断されるかというと、それは少し違うかなと思います。NVIDIAでは、自分が知らないことを質問するとすぐに返してくれる方がいて、そういう人を見るとすごいなと思います。また、仕事柄プログラムを書くことが多いのですが、「そんなスピードで修正案出てきますか?」ぐらいの早さで仕事をされる方はいるので、そういう人を見るとこれまたすごいなと思います。
ー文脈や環境によって優秀さは違うんですね。つまり、聞いて答えが返ってくる速さが大事なのでしょうか。
そうですね。私の今の立場的に、早いというのは非常にありがたいです。現在の業務では、お客様から質問を受けて、さらにそれを別の人に聞いてという感じで仕事を進めていくことがあるため、お客様になるべく早く回答するという点でもスピードはやはり重要です。もちろん早いだけで的外れなのはよくありませんが、一定以上のクオリティでレスポンスの早い方はありがたいですね。
ーその速度というのは、日頃から鍛えたりすることはできますか?
どうですかね…私も知りたいぐらいですね(笑)。質問に対して回答が早いのはどれだけ知識が豊富かにも依存すると思いますので、シンプルに勉強することが近道かなと思います。例えば、プログラムのニッチな問題に関して、知っていれば一瞬で答えることができたりしますので、知ってるかどうか、またそれを把握するにはプログラミングを練習するしかないので色々な問題を解くなど、手を動かすことは大事だと思います。最近は色々なAtcoderやTopcoderなど、様々なオンラインのプログラミングコンテストなどがありますので、やってみると良いと思います。
ープログラミングのニッチな知識は大学ではあまり習わないと思うのですが、山崎さんはどこで習いましたか?
実ははっきり習った記憶はないです。実習や発展的な講義を除いて、大学の授業は学術体系としての基礎を教えるものが多いので、計算機ってこういうものだよね、プログラミングってこういうものだよねというお話がメインになってくると思います。実際の実装は別の話になってしまうこともあるので、身に付けるには実践が必要ということで自分でやるしかなかったです。実践にあたっての原理は授業で全部やっていますが、この実装はこういう考えた方を基にできているんだなということを自分で見つける必要がある点が大変な部分だったと思います。私も学生時代はこうした基本的な部分と実践があまり繋がっておらず、手探りでやって、仕事を始めてからまた追加で勉強をして覚えていきました。
ー学生時代に実装したものについて教えて下さい。
大学院の授業で本当にごく初歩的な株取引エージェントのようなものを実装したり、研究で画像処理や機械学習のアルゴリズムを実装した以外に、アルバイトで少し開発のような事をしていました。いわゆるガラケー上で3D描画するライブラリを開発している会社とご縁があり、当時は3D描画のサンプルとしての簡単なゲームを実装したり、上司にあたる方が先進的だったこともあり、人工知能関連の機能を先行評価するようなプロトタイプ作成にトライしたりしていました。

最後に
ー今やるべきことや学ぶべきことがわからない学生に向けて、アドバイス・やった方が良いことがあれば教えてください。
何をやって良いかわからない方は、興味を持てそうなことから始めるのが良いのではないでしょうか。正直、興味のないことは一生懸命やっても中々身にならないと思うので、少しでも面白そうだなと思うことから深掘りしていくのが良いかなと思います。大学のカリキュラムはよくできていますので、その中で面白そうなものを探してみるのも良いですね。技術系の場合、講義で話される内容はどこかで応用されているケースも多いと思うので、その観点で調べてみるのもオススメです。また、大学の先生方は、質問はウェルカムではないかと思うので、実際にどう応用されているかを聞いてみて興味の取っ掛かりを見つけるのも一つのやり方かもしれません。うまくハマればその先生の研究室へ行くことになるでしょうし、そうでなくても方向性を見つけるのには良いと思います。

まとめ
いかがでしたか?大学で習った内容は無駄になっていないことが分かったと思います!私は半導体会社は設計がメインになると思ったのですが、他の知識も必要なのが分かりました。後、仕事を始めてから役に立った知識で最初に英語が出てきたのも自分としては意外でしたね。気になる業界や職種があったら、気軽にコメントで教えてください!