Interview/

Kikuchi Haruka

ーー自己紹介をお願いします。
前職は通信キャリアの研究所に勤めていて、LINEには2017年に入社しました。Machine Learningチームのマネージャーをしています。私自身はマネージャーをやりつつ、PMとして業務を行っていて、エンジニアとしての業務をやっているわけではないのですが、今回募集している機械学習エンジニアについて包括的に紹介させていただきます。

ちなみに入社してから私がやってきたこととしては、様々なサービスへのレコメンドエンジンの提供や、機械学習を活用したソリューションの導入などが多いです。企画に近い段階から提案を行い、開発に持ち込むケースもあります。
ーー機械学習エンジニアの組織や役割を教えて下さい。
先に説明しておくと、LINEにはデータ分析や機械学習の活用によってLINEが提供するサービスの価値向上を目指すData Labsという専門組織があります。その下にデータサイエンティストが所属するチームと、Machine Learningチームがあります。

Machine Learningチームは、機械学習のエンジニアとサーバーサイドやインフラのようなことをやるエンジニア、そしてPMが所属しています。そして事業部に対して、機械学習のソリューションを提供しています。多くの場合、絶えず流れてくるデータに対して何らかの処理をして結果を返すシステムの開発や、その継続的な運用や改善が発生します。
このような開発プロセスの中で、機械学習エンジニアは、データの基礎分析、機械学習手法の選定、オフライン評価を行い、最終的なMLエンジンの開発とデプロイまでを担当します。

実サービス向けに動かすものなので、MLのエンジンだけではだめで、APIのサーバーや監視系の用意とか、処理できるデータ量等のパフォーマンス評価なども発生しますが、これらをサポートするのがサーバサイドのエンジニアです。機械学習を回すための下回りのインフラ管理等もやってくれています。PMの役割としては、うちのチームのエンジニアと他の組織の橋渡しをするような役割になります。

Data Labsのような個々の事業部から独立した組織がある意義は、共通部品を作ることで効率化が図れることと、Smart Channelのような事業横断的なデータ活用ができること。例えば、レコメンドがほしいという要望は、社内の多くの事業部から相談が上がってくるので、このようなモノづくりは仕組みだったりアルゴリズムだったり、使い回しができる部分もそれなりにあります。

もちろん扱うデータの種類はログ・テキスト・画像など様々なのですが、ある案件で得られた知見を他のサービスにも活かせますし、手を広げていく過程で様々なサービスのデータが集まり、横断的活用も進めやすくなるという側面もあります。
ーー具体的な業務内容を教えてください。
プロジェクトの形態には大きく2つのパターンがあって、簡単に言うと個別の事業向けに対応するものと、もう少し広く、全体に関わるものとがあります。

一つめの個別に発生するものは、各部門やサービスがレコメンドエンジンや関連機能などを作りたい、導入したいという相談・要望に応えて何らかのシステムを開発するイメージです。基本的にはPMとエンジニアが一緒になって話を聞き、要件を落とし込んでいく作業が発生します。どのデータを見るとか、ここに表示が出るならこの情報は出したくないとか、ユーザーにどういう行動を取らせたいとか。そこまで落とし込めると具体的にデータをどう加工して、どういうレコメンドにすれば良いかが見えてきて、そこから先はエンジニアの仕事になります。

全体に関わるものというのは、いわゆるプラットフォーム的なものを開発するケースです。先ほども、ノウハウや知見の共有といった話をしましたが、エンジニアリングにおいても作ったものを部品として再利用できるようにしたり、その発展形としてプラットフォーム的なものを作ることもあります。

新卒で入社した場合は、全体的な仕事の進め方を覚えてもらうという意味もあって、まずは個別案件の開発を担当してもらうことになると思います。全体に関わるもの作りに携わるには、MLエンジンの開発だけでなく、周辺システムを含めて見通せるようになることも必要です。
ーー機械学習エンジニアに必要な素養やスキル、志向性などはありますか?
志向性として持ったほうが良いのは、課題解決志向。実業務では機械学習自体の課題に加えて、開発時間の制約やデータの規模など様々な制約条件があります。課題も制約条件もケースバイケースなので、使う技術にこだわり過ぎず、様々な解決方法を選択肢として用意できるようになると色々な種類の仕事ができると思います。

技術の変化が早く、新しい手法がどんどん出てくるので、常にアンテナ張って引き出しは増やしておかないといけないですね。基礎が一番大事ですが、新しい技術や手法にもポジティブに興味を持ち続けられる方が良いです。仕事の合間に使える環境やデータを利用し、色んなモデルを試しに作ってみるといったことをやってもらうのも良いと思います。
ーーLINEで機械学習エンジニアとして働くやりがいは何でしょうか。
機械学習エンジニアという仕事自体、確立されたばかりです。LINEという会社の中でも、機械学習の活用は良くも悪くも未開拓な状況です。まだ成熟していないので、ビジネス活用していく上での課題定義がスムーズには進まない場合もあります。ただ、逆に自由に取り組める部分もあるし、適用できる機会はまだまだ残っています。そういったところに魅力を感じられる人にはやりがいのある環境だと思います。

また、何よりLINEという会社には、機械学習の適用先となるサービスがたくさんあります。メッセンジャー、マンガや音楽などのコンテンツ、決済や証券などの金融系サービス、O2Oや法人向けの広告事業など、すでに歴史も長くユーザー規模も大きいサービスもあれば、今後生まれてくる新しいサービスもあります。そういったものに機械学習を入れていくチャンスはたくさんあります。これは会社が色んな事業を持っているからこその環境ですね。もちろんそれらのサービスから集まるデータは膨大で多様ですし、それらをどう正しく活用してビジネス課題をクリアにしていくかはおもしろいチャレンジだと思っています。逆に言うと、ユーザーもサービスも機能もコンテンツもたくさんあるからこそ、データによる最適化が必要だと思っています。

フラットな会社なので自分から色んな事業にアプローチしたり、やるべきことやりたいことはどんどん提案していける、自分で自分の仕事を作れる人は活躍できると思います。マネージャーとしても楽ですね(笑)。

あとは、社内に学びとなるエンジニアも多いと思います。特に機械学習領域には、開発職で最高位であるフェローの並川さんという方がいます。「LINE DEVELOPER DAY」という毎年開催している技術カンファレンスがあって、2015年に彼がそのイベントでLINEスタンプのレコメンドについて話をしています。当時想定していた事業環境と今の現状は大きく違って、例えば推薦対象となるLINEスタンプの数は数十倍になってたりするんですが、割とベースの部分は変わらずに使えるように作られていたりします。他にもそういうものが色々あります。2019年のLINE DEVDELOPER DAYでも登壇するようなので、興味のある学生さんは、ぜひこのセッションだけでも参加いただきたいですね。
ーー活躍している若手、伸びる人の特徴はありますか?
まず短期的に見た場合だと、素早く小さな失敗を積み重ねていける人です。機械学習の領域はトライアンドエラーすることが仕事ですし、LINEという会社自体も成功に向けた失敗にはポジティブな会社です。わざと失敗する必要はないですが、小さな失敗を気にせずにどんどんアクションが取れる人のほうが初速が出やすいと思います。

逆に数年スパンで捉えた場合だと、コアとなる知識や技術ををしっかり持っている人。仕事のステージが上がっていくに従って、扱うデータの規模やシステムに関わる知識も求められるようになっていくのですが、その時に大事になるのが基礎の部分や機械学習以外の知識です。学生の間に、数学や物理など理論寄りの分野でしっかり勉強してきている人は伸びしろが大きいと言う人もいますし、コンピュータ科学などの分野も知っていると役立つことは多々あると思います。

先ほど技術の変化が激しいと言いましたが、たとえ表面的な変化が激しくても、アルゴリズムとかOSとかベースとなる部分はそんなに変わらない場合が多いように思います。ベースを押さえておくと、表層の変化が激しい部分にも応用が利きます。たぶんですが、他の技術職も含めて基礎を大事にしない仕事はないと思います。
ーー最後に学生の皆さんにメッセージを。
私の立場から、新卒で入られる方に期待したいものは、社会に染まっていないがゆえに本質的な問題提起をしてくれること、若いがゆえに失敗を恐れずまずやってみること、若い世代の代表として、LINEがどういうサービスを提供すべきか提案すること、などです。ぜひ機械学習の領域で、みなさんが持ちうる強みを活かして一緒に仕事ができたらと思います。
また、学生の間にできることをぜひ色々経験しておいてください。