LINE初のエンジニアフェロー並川淳さんは、どんな仕事をしているのか。マシンラーニングエンジニアが求められるスキルとは。

LINEで働くエンジニアtokuhiromが、同じくLINEで働くエンジニアにいろいろと話を聞いていく連載「LINE Engineer Insights」。第10弾は2019年1月にLINE初のエンジニアの最高役職、フェローに就任した並川淳さん(ML基盤開発担当)にインタビューを行いました。フェローとはどういう役職で、並川さんが所属する「LINE Data Labs」というチームではどんな役割があるのか、マシンラーニングエンジニアとして活躍できる人材について、話を聞いてみました。

ざっくりまとめると

  • フェローの仕事はコードを書いたり、アルゴリズムを考えること
  • マシンラーニングエンジニアが活躍するためには、数学や物理の知識と、エンジニアリングスキルが必要
  • 一緒に働きたい人は、ゴリゴリに数学や物理を極めてきた人

 

 

エンジニアの最高役職、フェローの仕事とは?

── tokuhirom:今年1月に新設されたフェローは、執行役員と同等レベルの役職ですよね。ずばり、フェローになって報酬は上がったのですか?

── 並川:元の給与もそれなりにもらっていたので、そんなに上がったというほどではないですけど、上がりました(笑)

── tokuhirom:フェローとしてどういう仕事をしているのでしょうか。

 

── 並川:フェローになってから、マシンラーニングエンジニアを増やすという方針があったので、1~2月は採用をメインにやっていました。

 

 

── tokuhirom:採用以外にはどのような仕事をしていらっしゃるのですか?


── 並川:マシンラーニングに関連するシステムのプログラムを書くことが仕事です。

 

── tokuhirom:実用的なことをやるということですね。

 

── 並川:1月、2月はできませんでしたが、3月に入ってからは、「コードを書く」ことを周りに宣言しました。最近は開発をしたり、その手前のアルゴリズムを考えたりしています。以前から、どうしても開発に集中したいときは会議にも参加もせず、LINEもすべて未読にしてコードしか書かない時期を作るようにしてます。周りの皆はちょっと困ってると思うんですけど(笑)

 

── tokuhirom:チームのマネジメントのロールはないのでしょうか?

 

── 並川:今はそういうロールはまったくありません。「こういうものを作った方がいいのではないか」と、チーム全体の方針を決めることはやりますけど。

 

 

LINE初のマシンラーニングエンジニアとして入社

── tokuhirom:この連載を読む人に向けて、並川さんのこれまでの経歴を教えてください。

 

── 並川:僕はマシンラーニングのエンジニアです。北陸先端科学技術大学院大学で、力学系という時系列を扱う学問を研究していました。2005年に理化学研究所に入所した後は、時系列つながりということでリカレントニューラルネットワークによる時系列学習の研究に従事していました。

ニューラルネットワークは当時は今のような人気はなく、どちらかというとマニアックな研究だった印象です。2012年に理研を退所し、民間企業で働き、2014年にLINEに入社しました。そろそろ5年になります。

 

── tokuhirom:入社された時は、Data Labsというチームもありませんでしたね。マシンラーニングエンジニアとしても第1号ですか?

 

── 並川:そうです。LINEに入社した時は、マシンラーニングエンジニアというポジションもなかったので、僕がマシンラーニングのエンジニアの第1号です。

現在は、マシンラーニングとデータサイエンティストは異なるポジションとなっていますが、当時は分かれていなかったので、入社して1年ぐらいは分析もマシンラーニングも両方やっていました。人が増えたところで、ロールを分けました。

 

 

── tokuhirom:マシンラーニングエンジニアというポジションがない中で仕事をしてきてどうでした?

 

── 並川:ポジションだけではなく、機械学習で何かをするという文化もなかったですからね。でも上から何も言われることなく、作りたいモノを作っていたので、楽しかったです。例えばクリエイターズスタンプが導入され、スタンプが急増したことをきっかけに作ったスタンプのレコメンデーションシステムはその一つ。

そのとき作ったレコメンデーションシステムやターゲティングシステムを、LINE MUSICなど、さまざまなサービスに入れていくことをしていました。その後、tokuhiromさんの広告配信の最適化の仕事に巻き込まれたんです(笑)

 

LINEのいいところはマネージャーからエンジニアに戻れるところ

── tokuhirom:一昨年は1年ぐらい一緒に仕事をしていましたね。DSPのCTRの最適化とかを主にやっていただきました。

 

── 並川:その時は、マシンラーニングのエンジニアというよりは、Wikiを書くおじさんと認識されていたような気がします(笑) Wikiに数式を書くと、それがコードとしてデプロイされるという。Wikiに数式が書きにくいとLINEで愚痴ったら、その日のうちにTeXプラグインが導入されたのは良い思い出です。

これはシステムをゼロから作りかえるのではなくて、既にあるシステムの制約の中で、実装可能な最適化を適用してどれだけ収益化できるようにするかというようなことをやっていました。

 

── tokuhirom:結果的にそのプロジェクトは売上が倍ぐらいになって、インパクトは大きかったですね。当時はエンジニアではなく、マネージャーでしたよね。

 

── 並川:そうです。仕事的にはさっきも言ったとおり、Wikiを書くおじさん。本来やらなければならないこととやっていることが違っていた。だから会社は売上が上がっているのに、僕の評価は低かったんです。でもしょうがないですよね。マネージャーなのにマネジメントしていなかったので。で、それもありつつやっぱりエンジニアに戻りたいと申し出て、2回ぐらいマネージャーになったり、エンジニアに戻ったりしています。

この会社のいいところはマネージャーからエンジニアに戻れるところです。エンジニアのキャリアパスもちゃんとあって、マネージャーにならなくてもエンジニアのままで評価されます。フェローってポジションもその一例ですよね。それに、過去にマネージャーを経験しておくと、マネジメント視点を持ったエンジニアとしてプラスの評価をしてもらえるので、いろいろなポジションを経験することが無駄になりません。


── tokuhirom:なるほど。ところで、どうすればフェローになれるんでしょう。

 

── 並川:それはわからないです。ただ、マシンラーニングエンジニアは当社の中では比較的特殊な職種だと思います。数学が分かっている必要があり、エンジニアリング能力はそこまで高いレベルは要求されませんがそこそこプログラムは書かないといけない。

そして、売上に貢献しやすいポジションなので、数字で評価されやすい。逆に言うと、数字で評価されてしまうポジションなんです。エンジニアの場合、システムが落ちなければ、たとえサービスがだめでも評価は下がらないじゃないですか。ですが、マシンラーニングエンジニアはサービスがクローズすると、その責任の一端を担うことになる。そういう意味では評価もされやすいのですが、シビアな面もあります。

 

 

── tokuhirom:今、マシンラーニングエンジニアと呼ばれる人たちは何人ぐらいいるんですか?

 

── 並川:全社的にマシンラーニングの部署があるので、全部合わせると結構いるんですが、僕らのチームData labsで純粋にマシンラーニングだけをやっている人は10人ぐらいですね。

 

── tokuhirom:その10人がさまざまな案件に携わって、サービスの最適化に取り組んでいるんですよね。

 

── 並川:各サービスに特化した部分をチューニングしている人と、基盤のアルゴリズムを作っている人に分かれているのですが、両方、担当している人もいます。

 

 

最近のホットな案件は「スマートチャネル」

── tokuhirom:最近のホットな案件について教えてください。

 

── 並川:個人的にはスマートチャネルですね。ユーザに合った多種多様なコンテンツを表示するために、様々なレコメンデーションシステムが裏側で繋がっているのですが、そのため弊社の各チームのMLエンジニアが大集合する感じになっていて、大変に良いと思ってます。

 

── tokuhirom:スマートチャネルはLINEのトーク画面の最上部に表示される、ユーザー属性や「LINE」アプリ上での行動履歴に基づいてパーソナライズされた情報を表示するコンテンツですね。

広告配信の最適化の実装を担当していた人が、そのままスライドしてスマートチャネルのレコメンデーションの実装を担当しているんですよ。スマートチャネルはずっと表示される仕様にはなっていないんですよね。

 

※トーク一覧の上部に表示されている「スマートチャネル」


── 並川:ずっと出すという選択肢もありました。僕自身はずっと出てほしい派なので、ユーザーにとって有用な形を模索しながらいずれどこかのタイミングでの実現も検討しています。

 

── tokuhirom:僕もスマートチャネルの最終的なゴールは、そこだと思います。話は変わりますが、海外拠点にもマシンラーニングエンジニアはいるのでしょうか?

 

── 並川:マシンラーニングをやっている海外チームは、日本以外だと韓国と中国・大連だけですね。

 

── tokuhirom:例えば、台湾で開発しているニュースサービスとして「LINE TODAY」があります。ユーザーに最適化するには、アルゴリズムが大事になると思うんですけど、なぜ各国にマシンラーニングエンジニアがいないのでしょう。

 

 

── 並川:本当は、レコメンデーションシステムなどは現地のことが分かる人が作った方が良いと思っているのですが、現時点ではまだ現地でMLエンジニアの採用が進んでないためですね。一時期、LINE TODAYのレコメンデーションシステムを作っていたこともあります。依頼をされたら、基本、断らない主義なので(笑)

 

── tokuhirom:だから、LINEでは広告システムを任せられても断らなかったんですね。広告をやるのが嫌でLINEに来たのに。

 

── 並川:そうかもしれません(笑) 最初の挨拶で「広告が嫌でここに来ました」と言ったのにもかかわらずにですからね。広告は今でも好きではないんですけど(笑)

 

人の役に立つ仕事がしたい

── tokuhirom:それでも結果を出せるのはすごいです。では、一番テンションの上がる仕事は何ですか?

 

── 並川:人の役に立ちたいと思って、民間の企業に勤めることにしたんです。研究だと「いつか人の役に立てばいい」というスタンスで、研究のタイミングでは面白ければ良いという場合もあります。人の役に立つことには、社内の人の役に立つこと、ユーザーの役に立つことの2種類があります。

そういう意味では、広告やってたときは社内の人はすごい喜んでくれましたね。ユーザーとしても興味のある広告が出たほうがいいので、そういう意味で最適化はユーザーにとってもプラスだと考えてやってきました。今後も人の役に立つことをやりたいですね。それがテンションの上がる仕事です。

 

── tokuhirom:最先端に携われるかどうかは、テンションには関係ないんですか。

 

── 並川:研究マインドでは、誰もやっていないことをやることに価値があると考えます。だから最先端を追う。ですが、僕は年を取ってきたこともあるのか、そこではなくて、求められている場所で一番役に立つことをやることに価値を感じているんです。それがいいかどうはわからないですが、それが僕の生き方なので。だから、たとえほかの人がやっていることでも、自分がやっていないことであれば知的好奇心も満たせるし、社内にないものなので作ったら役に立つ。

そういう割り切りを持って仕事をしています。最先端でなくても、十分モチベーションは満たせるかなと思っています。

 

── tokuhirom:マネジメントというロールはないという話でしたが、最近、エンジニアリングマネージャーという仕事にも注目が集まっています。そういう役割も期待される面はなかったのでしょうか。

 

── 並川:マネジメントは向き・不向きがあると思うんです。僕は向いていないんです。以前にマネージャーを務めた時のマネジメント手法は、ざっくり期限を決めるだけで、もし間に合わなそうなだと思ったら、自分で手を動かして作ってました(笑)

 

── tokuhirom:マネージャーとしては良くないですね。

 

── 並川:そう。だから自分はマネジメント能力ではなく、エンジニアリング能力でカバーしているだけだと思いました。メンバーに「こういうモノを作って」と頼むと、無理なことでもやってくれるんですよ。これは信頼貯金が溜まっているからなんですけど、その貯金はエンジニアとして稼いだもの。このままマネジメントを続けてこういう無理を続けると、いつかはその貯金は尽きてしまう。

マネジメント能力がなさ過ぎるので、マネジメントで信頼貯金を稼ぐのは無理。短期的にマネージャーはできても、長期はできないんです。だからそこは専門の人に任せるようにしてます。tokuhiromさんは室長としてマネジメントを担当していますが、コードをつい書いてしまうことありませんか。

 

── tokuhirom:僕はメンバーを信頼して、自分でコードを書かないようにしています。そもそも、マシンラーニングとサーバサイドエンジニアは違いますからね。

サーバサイドエンジニアは仕事の早い遅いはあるけど、順番に実装していけば、機能要件はいつか満たされる。マネージャーはどの人がどのくらいの速度で実装できるかを把握していれば、問題ありません。ですが、マシンラーニングの方がマネジメントは難しいと思います。

 

── 並川:ゼロからイチにする案件では、できない人は無限に時間をかけてもできないこともあります。できても性能が出ないこともありますからね。間に合わないときでも、本当に書かないんですか?

 

── tokuhirom:書かないです。

 

── 並川:間に合わなかったらどうするんですか?

 

── tokuhirom:本当に間に合わないとなったら、締め切りに間に合わせるように機能を削るなどの調整をしますね。

 

マシンラーニングエンジニアに求められるスキルとは

── tokuhirom:LINEのマシンラーニングエンジニアだから求められる特有のスキルがありますか?

 

── 並川:あります。LINEはデータ量が大きいので、何も考えずに作っていると、いくらサーバリソースが潤沢にあっても足りないんです。サーバリソースとデータ量の比率でいうと、競合他社よりもサーバリソースが小さい傾向があると思います。だから、LINEのマシンラーニングエンジニアには、計算量に対するセンスが求められます。そこがLINEでマシンラーニングに携わる面白さでもあるんですけど。

 

── tokuhirom:会社によっては物理で殴っているパターンもあるということですね。

 

── 並川:マシンラーニングはアルゴリズムの作りによっては、サーバを横に並べるだけではスケールさせることができないものもあるんです。

そういう場合は、分散処理のアルゴリズムを考えないといけません。必要があればゼロからライブラリを自作したりもします。そこも面白いところかもしれません。

 

── tokuhirom:物理サーバーを利用して問題を解決する、というようなアプローチはとらないのでしょうか?

 

── 並川:ここ1~2年は、物理で殴ることもやってます。ハイスペックな物理サーバを大量に並べたりとか、ちょっと豪華な構成のGPUサーバを手に入れたりとか。物理で殴れないと計算量的に選択の余地がなくて、意外と誰が作っても同じようなものになりがちです。既存のライブラリでは上手く動かなくて、自分でコードを書く必要はあるかもしれませんが、正解はコレ、と一つに決まりやすい。

一方、物理で殴れるときは、計算量にそれほど縛られずに、より凝ったモデルを採用して高い予測精度を求めたり、コードのメンテナンス性を追求したりなど、いろんな選択肢の中から状況に応じて選ぶ余裕が出てきます。計算量的にシビアな仕事とそうでない仕事、両方できると良いと思ってます。

 

── tokuhirom:採用もやっているという話でしたが、マシンラーニングエンジニアとしてLINEで働いてみたいという人も読者の中にはいると思います。どういう人と一緒に働きたいですか。

 

── 並川:Data Labsにはデータサイエンティストのチームとマシンラーニングのチームがあるのですが、マシンラーニングチームの仕事はエンジニア寄りです。なぜかというと、どちらのチームもマシンラーニングの技術そのものは使っているのですが、チームごとにゴールが違っています。データサイエンスチームのゴールが分析した結果にもとづいてサービス等を改善することだとすると、マシンラーニングチームのゴールはシステムを作ってサービス改善をすることです。

マシンラーニングのチームで活躍したい人は、エンジニアとして就職しても通用するぐらいのレベルが欲しいですね。

 

── tokuhirom:それはかなり敷居が高いですね。

 

── 並川:あくまでLINEでマシンラーニングエンジニアとして、活躍するための条件です。僕が一緒に働きたいのは、学生時代に数学や物理の勉強をしてきたバックグラウンドのある人。エンジニアリング能力がある人と、真逆の人たちが好きです。僕自身、20代はそういう勉強してきました。そして、私がそういう人たちを好きっていうだけではなく、数学や物理の知識は意外と仕事で役立つと感じています。だからそういう人と一緒に働きたい。

これは打率の問題ですが、作ったモノが3割当たればいいのであれば、自分の得意な仕事を待っていればいい。得意な勉強をやっていればいいんですけど、いろいろな依頼をそこそこのアタリで返すためには、できることの幅が広くなければなりません。

つまり、そのためにも数学や物理の知識があることが必要なのです。特に物理の手法は、初期の機械学習に採用されているところもあるので、物理や数学の知識がある方が、いろいろできるようになる感じはします。

 

── tokuhirom:並川さんは数学や物理をゴリゴリにやってきた人が好きということですね。

 

── 並川:そういう人の方が、仕事ができるようになる気がしています。会社で働きながら、数学や物理の勉強をするのは難しいですからね。

 

── tokuhirom:数学や物理の知識のある人でも、会社に入ってからエンジニアリング能力を身につけることもできるような気がするんですけど。

 

── 並川:素養があれば、エンジニアリング能力を高められる環境は当社にはあるので、仕事をしているだけでエンジニアリング能力は伸ばすことはできると思います。

 

── tokuhirom:ということは、ゴリゴリに数学や物理をやってきたエンジニアリング経験がゼロの人でも、素養さえあればLINEで活躍することができるということですね。

 

 

── 並川:ありだと思いますけど、ただ、素養があるかどうかは採用時にはわからないので、ギャンブルですよね。ただ、先にも話したように、当社にはデータサイエンティストのポジションがあるので、高度な数理的知識がある人はそこで活躍することができます。それに先ほど言ったように、エンジニアリング能力を高められる環境が当社にはあるので、そちらの能力を高めた後でマシンラーニングエンジニアに移行することもできます。

もう一つ考えられるのは、エンジニアとしてすごくスキルの高い人で、マシンラーニングに興味のあるという人。こちらのパターンの方が、安定的にマシンラーニングエンジニアに転身できそうな気がします。

 

── tokuhirom:実際にデータサイエンティストで経験を積んで、マシンラーニングエンジニアに移行した人はいるんですか?

 

── 並川:移行しそうな人が何人かいます。学生時代は物理を専攻していて準新卒で入社してきた若手です。データサイエンティストで入ったのですが、今はマシンラーニングのシステムを書いたりしています。

 

 

信頼を得るには「売上を上げる」という打率が重要になる

── tokuhirom:さすがフェロー。打率とか、良い話がたくさん出てきますね。

 

── 並川:マシンラーニングチームを率いている者として、打率はすごく大事なんです。マシンラーニングチームは単体では生きていけない組織です。サービスと組んで何かやるのが基本のスタイルなので、他のチームのエンジニアとの信頼関係が大事になります。

エンジニアはエンジニアリング能力の高い人を評価し、信頼をします。しかし僕たちは、エンジニアとしてはスペシャルではない。作ったシステムがちゃんと役に立って売上が上がったことでしか信頼は獲得できない。エンジニアの信頼を得るためにも打率は重要なんです。マシンラーニングのコードはエンジニアから見れば謎の数式を書き起こしているだけですからね。

 

 

── tokuhirom:読む気はあるのですが、僕も数式は見ていないです。Pythonのコードを読んでいることは多いです。それで挙動はわかるので。

並川さんと一緒にやっていた広告の最適化案件では、並川さんはNumPyでコードまで起こしてくれましたよね。そして僕らのチームがそのNumPyのコードを、Perlで書くという。

 

── 並川:大変でしたね(笑)

 

── tokuhirom:(笑) Perlは行列演算のライブラリがないので、行列の内積などを全部for文に起こすんですよ。それがすごくしんどくて。

社内はJava案件が多いです。Javaも行列演算のライブラリはいいものがないので、行列演算のライブラリはC++で書かれたものをラッピングしたものがほとんど。セグメンテーションフォルトする可能性が否定できないのが辛い。

また、メモリの使用量が読めないので、オンラインでやると結構しんどい。スマートチャネルの案件の時は、Data Labsの人たちに、Pythonのコードを動かすところまでやってもらったと聞きました。

 

── 並川:スマートチャネルの案件では、マシンラーニングの学習の部分と、学習した結果を使って予測するモジュールが分かれていて。学習のパートは僕がPythonで書いたコードが動いていて、学習したパラメータをRedisに入れるところまでやってます。予測のところはJavaで書かれていて、Redisから取ったパラメータを使って計算してます。

予測のところは学習よりは計算が簡単な代わりに絶対の安定性が求められるので、そこは弊社で実績のあるJavaで書いて、学習部分はPythonで書くという役割分担は悪くなかったと思いますね。

 

── tokuhirom:実際動かしてみたときに、どういう挙動になるか、ある程度把握していないとつらいんですよね。だから並川さんが書いてくれたWikiを、みんなで読んでいます。並川さんは何をしたいのかを丁寧に書いてくれるので、とても助かります。

 

── 並川:モチベーションにつながるところはきちんと、書いています。

 

── tokuhirom:モチベーションと期待される結果についてまとまっているので、勉強はしやすいと思います。実際どういう結果になるのかがわかっていないと、QA(Quality Assurance)もできませんからね。

並川さんは、LINE社内でこういう話を聞きたい人いますか?

 

── 並川:昨年末に韓国のセキュリティ企業「GrayHash」を買収したと思うのですが、セキュリティエンジニアの皆さんに話を聞いてみたいです。

 

── tokuhirom:それは面白そうですね。次回を楽しみにしていてください。ありがとうございました!

 

 

Related Post