情報データ科学の「いま」がかわる!!プロのコトバ ~INTERVIEW~

LINEの機械学習部隊を率いる総大将

菊地 悠(キクチ ハルカ)さん

【会社名】 LINE株式会社
【所属部署名・役職】 Data Scienceセンター Machine Learning室 室長
【入社年】 2017年
【略歴】

学生時代は精密機械工学部に所属し、複数台の腕型ロボットが分散協調して稼働するシステムの研究を行う。

大学院修士課程を修了後、大手通信会社に就職。また入社3年目にアメリカ勤務となり4年間、JavaScriptのセキュリティ関連の研究開発などに従事。帰国後、ユーザインターフェース、位置情報やソーシャルメディアのデータ分析など、幅広い分野の研究および開発に携わる。

特にデータ分析関連の研究開発では、位置情報解析と自然言語解析を活用し、場所と場所に付随する情報を紐づける技術により、付加価値の高いデータを様々なサービスに応用することに貢献。

2017年よりLINE株式会社に入社。現在はData Scienceセンター Machine Learning室の室長としてエンジニアの統括を行う。

インタビュー
自社開発の魅力や若手エンジニアのキャリアについて

現在の仕事について

LINE株式会社の紹介

LINE株式会社は、コミュニケーションアプリ「LINE」を各国で展開しており、日本・タイ・台湾・インドネシアの主要4カ国で、1.7億を超える月間アクティブユーザがいます。LINEアプリによるコミュニケーションサービスを中心とし、スタンプ・ニュース・マンガ・ミュージック・ゲームなど、様々な事業・サービスを展開しています。

また一般ユーザー向けのサービスだけでなく、店舗のショップカードやクーポンなど、事業者向けにLINE公式アカウントとして提供し、LINEアプリを通じた顧客とのコミュニケーションを提供することでビジネスの支援も行っています。

近年では、コミュニケーションサービスを超えて、決済・証券・ブロックチェーン・AIなどの領域にも力をいれている会社です。

LINEに入社した理由

一般的なソフトウェアやシステムの開発では、こういうものが作りたいと仕様を決めて外注先に開発してもらう場合が多いですが、LINEの場合は社内にソフトウェアエンジニアを抱えていて基本的に自社で開発を行っています。内製化されているので、柔軟に、かつ、企画から開発まで一気通貫でスピードを持ちサービス提供できるのが魅力です。

社会人になって以降、特定の専門分野で技術を積み上げるというより、いくつかの領域の仕事をしてきたので、強い専門性を持ったエンジニアが数多く在籍するLINEにおいて、そうした人たちを繋ぐ役割が果たせるのではないかと考えました。

ちなみにLINEが多くの開発を内製化している理由は2つあって、
ひとつに、自社のサービスとかなり深く密接に関わるデータを扱う仕事であり、自社ビジネスや既存のシステム構成なども理解していないと仕事にならない。よって、データ分析にかかわらず、基本的に全て内製で行うことが一番効率的かつスピーディに仕事ができるため。

そしてもうひとつ、人と人とのコミュニケーションに付随する情報というのは、法的・倫理的にも厳格なルールに基づいて扱わないといけないものであり、このようなデータは社外に持ち出すことができないためです。

現在の仕事と役割

▼ 仕事

私の所属する組織(ML室)は、LINEの多様なサービスに対して機械学習の技術(例えば推薦エンジンなど)を適用したり、機械学習に関する、社内の共通基盤を開発・運用したりすることをミッションとしています。

具体的な事例は、LINEアプリ上でのスタンプのレコメンド機能や、マンガなどユーザーへのおすすめコンテンツを表示させるエンジンの開発です。

これらの機能に必要な、ユーザーに最適なものを推薦するエンジンの元になるモデルを作るには、昔はナイーブベイズを使っていましたが、最近だとディープラーニングを適用することが多くなっています。

ただしディープラーニングを使った推薦エンジンもロジックが、色々あります。基本的にはABテストを行い、新規のロジックを一部のユーザーに露出させ、既存のものと比較してどちらがパフォーマンスが良いのか検証し、日々アップデートしています。

もう少し具体的に、皆さんに馴染みのあるLINEスタンプを例にあげます。

おすすめのスタンプを推薦するエンジンを作るためには、過去にユーザーがどのスタンプを購入したか、しなかったかを基本的な正解データとして用いるわけですが、エンジンは、このユーザーがまだ購入したことがない、購入してくれると思われるスタンプを予測しなければなりません。
そのためには、オーソドックスではありますが、他のユーザのデータもさらに活用し、購買傾向などの特徴が類似するユーザの購買傾向も参考にするなどの仕組みをとっています。

さらに、予測精度を高めるために、もっと色々な情報を付加して学習させていて、スタンプはどの作者が作ったかという情報もさらに加え、このスタンプの購入者はどういう年代、性別が多いかなどの情報も付加します。

こうした情報をグラフ構造で表現し、グラフデータに対するディープラーニングの手法を適用する、といったモデルを、最近は多く開発しています。

▼ 役割(プロマネから見た若手のキャリアプラン)

ML室には、MLのモデルを構築するMLエンジニア、機械学習基盤の開発運用を行うサーバサイドエンジニアなどが多く在籍していますが、私個人は、組織運営や、開発プロダクトの企画や開発管理などをしています。

参考 https://linecorp.com/ja/career/lp/media/machine-learning

せっかくなので、学生の皆さんに近い、若手 ML エンジニアの仕事や、キャリアについて説明していきます。

ちなみにML室では2年前から新卒エンジニアの採用をスタートしました。
新卒採用の人も、採用プロセスのなかでプログラミングのテストを受けて入ってくるので、基本的にコードが書けるメンバーが揃っています。MLエンジニアに限らないですが、各々に求められる基礎的な知識やスキルをもとに様々な経験を積み、将来自分たちでサービスが作れるようになりたいという高い志をもったメンバーが多くいる印象です。

MLエンジニアの仕事内容は主に以下のようなものがあります。

まず、サービスで必要とされる各種エンジンのためのモデルの構築があります。

これは、新しいサービスや機能を実現するためにイチから新たなモデルを作ることもあれば、既存のシステムで使われているモデルをチューニングしたり、別のものに作り直したりすることもあります。
経験も浅いのにいきなり「新たなモデルを作れ」と言われることはないのでご安心ください。先輩たちによる様々なモデル開発事例がソースコードを含めて残っていますので、初めはそういうものを参考にしたり、アドバイスを受けたりしながら業務にあたることになるでしょう。

また、ただモデル単体を作るだけが仕事ではありません。最終的にサービスを提供できるシステムを作るためには、モデルはあくまでイチ構成要素であり、モデルを連携する機能へ繋ぎこむための開発も、MLエンジニアの仕事です。

さらに、習熟度の高いエンジニアになってくると、機械学習に用いる自社独自のライブラリを作るという仕事もあります。Scikit-learnなど、広く一般的に利用されているライブラリをご存知だと思いますが、こういう一般的なものでは性能などの面で足りないことがあり、そういうときはライブラリ自体を自社開発することもあります。例えば、非常に大量のデータを扱うエンジンが多いので、もっと高速な処理を実現させるために独自開発したライブラリを使用するなどしています。

ML室の若手エンジニアが描く将来のキャリアプランは、
・機械学習スキルをさらに高めたい人
・機械学習以外のシステム開発のスキルを磨き、エンジニアとしての幅を広げたい人
・技術者の素養を磨いた上で、サービスの企画にもチャレンジしたい人
など、人によって様々です。

エンジニアリングという切り口で見た場合、機械学習だけでなく、分散処理、データベース、ネットワーク、身につけるべき知識やスキルは山ほどあります。
また、技術者としての素養をベースにするからこそ、新しいサービスを企画することもできるかもしれません。
人によって将来へのステップは様々ですが、みんな、世に出るサービスに自分が関われることにやりがいを感じています。
そこが大学でのものづくりと大きな違いであり、魅力的な点だと思います。

▼ 仕事に必要な知識・スキル

機械学習に携わるエンジニアは、機械学習のアルゴリズムや手法を理解し、論文等に記載されたロジックを実装したり、自社のデータ上で性能を検証したりする技術が求められます。
アルゴリズムによっては、データの量の増加に対し計算量が加速度的に増加する場合もあるため、数理的なバックグラウンドが必要になります

さらに、扱うデータの規模が大きくなると、複数マシン間で協調して動作させる必要も出てきます。こうした領域では、コンピュータサイエンス全般の知識や応用力が必要になります。

システムの構築には、外部のオープンソース実装を利用するケースも多いです。使い倒そうとすると、意図しない挙動やバグに遭遇することは多く、内部実装を読み解いて修正したり、適当なものが見つからない場合は、独自に実装を行ったりするケースもあります。

こうした開発は個人で実現できるものではないため、他のエンジニアとチームを組んで、協業しながら開発することになります。

チーム開発には様々な方法論(たとえばスクラム開発など)が存在していますが、技術的な専門性やバックグラウンドの異なる関係者同士でコミュニケーションを取る必要があるため、専門分野の人同士、および、異なる専門性を持つ人とのコミュニケーションが適切に取れることが重要です。

LINEには外国籍の方も多く、日本語が堪能な方もたくさんいますが、文化的なバックグラウンドが異なるので、わかりやすく、率直に伝える、といったことも必要になります。

▼ 仕事に対する考え(想いやこだわり)

仕事を進めていると、特に分業化が進んだ領域では「これ誰がやる仕事だっけ?」ということが必ず出てきます。
こうした業務を拾うことで、プロジェクトが前に進むことは多いため、できる範囲で受け止めるようにしています。

ちなみに一言でマネージャーと言っても、色々な種類があります。
いわゆる管理職的なものはピープルマネージメント、製品やサービスの価値を高め維持するためのビジネスの戦略を練ったりするプロダクトマネージメント、いつまでに開発するか期日を決め進めていくプロジェクトマネージメントなど、色々な役割のマネージメントがあるのです。
また、技術的に高い専門性を持つエンジニアに囲まれて仕事をしているので、「ちんぷんかんぷんな技術や分野」ができないよう、さほど深くなくても良いので、広い範囲の知識を、必要になったタイミングで収集するよう心がけています。

私個人は裏方になることが多いですが、大きな仕事が形になって出ていく過程に関与できることは、大きなやりがいになります。実際に開発しているエンジニアの人たちは、知り合いに「これ、俺 / 私が作ったんだよ」みたいに言えることが嬉しいみたいですね。

情報データ科学部生にオススメする学びとは?

私はエンジニアリング領域で専門性を追求できなかった人間ですが、もし機械学習エンジニアとして仕事をしていく場合には、基礎に関わる技術領域について、基礎数学・情報学基盤の分野は押さえておいた上で、統計学計科目、AI系科目を学ばれると良いと思います。

プログラミングなどの情報系実践科目などは、社会人になってから、実務により近い内容を学ぶことができるかもしれませんが、技術の進歩も早いため、10年単位のスパンでは陳腐化したり、トレンドが変わったりしていることも多いです。(例えば、10年前にPythonは今ほど使われていなかった、など)

一方で新しい技術は、必ずある種の基礎の上に積み上げられたものです。

基礎を押さえておくと、新しいものを理解することが容易になります。基礎と実践の中間に位置するのは、AI系科目・統計学系科目でしょうか。ご自身の興味で領域を選ばれれば良いと思います。

LINEにおける技術的な取り組みは、技術カンファレンス「LINE DEVELOPER DAY」などで発表をしています。エンジニアと協働する、エンジニア以外の発表もありますので、是非参考にしてみてください。
https://linedevday.linecorp.com/2021/ja/

また、私が所属するMachine Learning室の取り組みは、下記で参照いただけます。
https://linecorp.com/ja/career/lp/media/machine-learning

LINEの新卒採用は、下記のページで案内しています。ご興味があれば、こちらもぜひ見てみてください。
https://linecorp.com/ja/career/newgrads/

(インタビュー日:2021年12月3日)