見出し画像

【HAIT Lab生のその後】コンテナ技術の最先端で精力的な活動を行う大学生の原点とは?

世界に通用するデジタル人材を育成するHAIT Lab。今回はHAIT Labの出身生をご紹介します。


MLエンジニアとしてキャリアをスタートさせ、Gunosyをはじめとした企業で活躍。その後サーバーサイド・インフラエンジニアに転身し、リクルートテクノロジーズやCyberAgentでの開発やBASEでの金融事業立ち上げに従事。現在はgVisorやFirecrackerをはじめとした大規模なOSSへのコントリビュートに加え、CloudNative系の国内カンファレンスへの登壇に、コンテナ関連の電子書籍の出版を予定するなど、精力的な活動を魅せる池田森人氏の行動力の原点に迫ります。

スクリーンショット 2020-08-25 午後0.10.01

池田森人氏

―HAIT Labでどんなことを学びましたか。

学んだことは大きく分けて3つあります。

1つ目は、機械学習に必要な数理的知識を学べたことです。自分は物理系なので、学部ではやらない数理統計や機械学習の踏み込んだ分野まで学べて良かったと感じています。

2つ目は、一緒に走ってくれる仲間ができたことです。HAITに入った当時はプログラミング歴1年程度でした。エンジニアを始めたばかりの人にとっては丁度挫折しやすいタイミングだったと思うので、優秀なHAIT Labの学生にはとても刺激を受け、より上を目指していこう頑張ることができました。中には、kaggleのランカーの方や、アメリカでコンピュータサイエンスを専攻しているような凄い方もいたんです。GoogleやSalesforceといった外資系で働いている仲間とは今でも連絡を取り合っていて、刺激をもらっています。

3つ目は、HAIT Lab自体で企業との関わりがあり、その方々と繋がる機会があったことです。具体的には、機械学習の領域の第一線で活躍する方々と交流する機会があり、大きなモチベーションになりました。

―HAIT Labに入ってから、変わったことはありましたか?

個人として勉強するだけでなく、Labの運営もお手伝いしていました。

運営側に立って感じたことは、行動している人の周りに情報や人脈が集まる傾向があるなということです。運営をやってみて、単に個人として勉強・開発しているだけでは出会えない人と会えたり、様々なチャンスをいただけたり、優秀な仲間とよく話せるようになったりしました。このことに気付いてからは、仕事でもプライベートでも、なるべく自分から情報発信をしたり行動を起こしたりするようになりました。

それ以前はどこかのコミュニティに参加する側で、人を巻き込んで行動を起こすことのインパクトや重要性を実感したことは無かったので、この価値観の変化はHAIT Labがきっかけでした。

―現在は機械学習ではなく、サーバーサイドやインフラの方面に従事されていますよね。興味が移り変わっていった過程を教えてください。

一貫してユーザーに役立つものを作りたいという想いがあり、それに当たってプログラミングや機械学習を始めました。

実際、Gunosyでは機械学習を用いた記事の自動分類のモデルを作成するなど、機械学習に関する複数のインターンに参加していました。しかし実際に企業で働く中で、機械学習が使われるのは主に既存のサービスの精度を高めるというようなグロースフェーズにおいてであり、0から1を生み出し、直接的にユーザーに貢献できるのはむしろフロントエンドやバックエンドの方ではないかと気が付きました。

その後、機械学習系のスタートアップに従事した際にサーバーサイドやインフラも任せてもらえる事になり、学部3年になる頃からこれらの勉強を本格的に始めることになります。サーバー・インフラを選んだ理由は、単に機能開発のコードを書くだけではなく、ネットワークやデータベースの知識といった低いレイヤーのコンピュータサイエンスの知識が必要になる部分も多く、やりがいを感じたからです。

―今熱中している事は何ですか?

大きく分けて2つあります。1つ目は、Dockerなどコンテナ技術の中核にあたる「Container Runtime」という仕組みです。具体的には、gVisorやFirecrackerなどコンテナをよりセキュアにしていくようなOSSの開発に参加しています。

従来のコンテナ技術は、あるプロセスに対してホストOSのカーネルリソースや物理リソース、ファイルシステムなどを隔離しながら"ホストの直接上"で動かすものです。しかしコンテナとホストOSが近接している関係上、外部から侵入を受けたとき、簡単にホストの権限まで奪取されてしまうような危険性があります。対してgVisorは、ホストとコンテナの間に軽量なユーザースペースカーネルを挟むことで、ホストとプロセスを分離し、悪意のある命令などをフィルタリングする機能を備えています。

2つ目は「ServiceMesh」という技術です。これは主にKubernetesというコンテナオーケストレーションのシステム上で動くマイクロサービス間の通信で使われるものです。Applicationコンテナのすぐ横にネットワークや認証周りの処理を引き受けるコンテナ(サイドカー)を立てることで、大量のコンテナ間の通信・認証周りの関心事を吸収してくれます。これによりユーザーはサービス周りのロジックに集中して開発できるようになります。

これらの技術はいまだデファクトスタンダードが定まっていない状況で、これからどんどん発展していく分野ですので、良い狙い目だと思っています。

―今後はどんなことをしていきたいですか?

最近はDeveloper向けのサービスを作りたいと思っています。事業のプロダクト周りで仕事をしていると、ビジネス的な要件で技術自体を深掘ることはどうしても限定されてしまうので、ここ2~3年は自分にとってより技術を深堀る時期と捉えて、社内の技術基盤やミドルウェアの作成などをしていきたいと考えています。将来的には、海外でDeveloper向けのソフトウェアを作っている企業などで働いてみたいです。

他には、技術系の商業誌(紙)を出版することが目標です。こうした大きな目標に対しては、小さな目標に分割して実行するようにしています。例えば、まずベストセラー本を書いた方に連絡をとりました。この本に凄く影響を受けたという熱い気持ちと、自分が出版したい本の原案を長文でDMしたところ、フリーの編集者の方を紹介してくださいました。その際は出版にまでは至りませんでしたが、他の所に企画を持ち込んで電子書籍を出版することができました。
こうしてスモールステップを積んでいくことで信頼も蓄積され、また次のチャンスに巡り合う機会も増えると思っています。

―大学低学年のうちにどのようなことをしておくと成長できると思いますか?

まずは自分の興味がどこに向いているのかを見極めることだと思います。どっちつかずになるのは良くないので、何事もやるなら徹底的にすべきです。

当時、自分は機械学習エンジニアとして独学や企業のインターンだけで頑張ろうとしていたのですが、それだけでは足りなかったです。機械学習に触れるのであれば、アカデミックな実績も大事なので、はやいうちから研究室にアポを取って研究を始めれば良かったと思っています。

また多くのユーザーに使われるようなプロダクトを作りたいという目標がある場合は、toC向けのプロダクトが強い企業でインターンしてみたり、自分でサービスを作って運用・マネタイズしてみたりするといいと思います。

この時、伸びる企業を見極めることも重要です。見極めるコツは人の流れを見ることです。例えば今のメルカリで言うと、一番いい時期を作ってきたメンバーが抜けて、自分の新しいことを始めてるというフェーズなので、ここ2~3年で次のメルカリになるような人が集まる場所が出てきます。それを早めにサーチして見極めるというような感じです。

もちろん、コミュニケーション能力、人を巻き込む力などのソフトなスキルもあった方がいいと思います。そういう意味では、勉強だけじゃなくてちゃんと遊ぶことも大切です。


こちらの記事もおすすめ!


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