Insights」をスタートいたします。迎え、エンジニア同士でざっくばらんにお話を伺っていきます。LINEのエンジニアは一体どんな人達なのか、その内面に迫っていきたいと思います。BOTのバックエンドの話などを聞いてきました。tokuhirom今日は宜しくお願いします。Blog向けということで気持ちも新たに色々と聞かせてください。最初に、入社されたのっていつ頃ですか?また、入社したきっかけなどあれば教えてください。入った当時はネイバージャパンでしたが、2011年の1月1日入社で今は7年目です。転職しようと思っていたタイミングでちょうどネイバージャパンが募集をしていて、知り合いとかもいなかったので普通に応募しました。BOT関連をやっているチームです。開発1センターはLINE本体の開発をしている部署で、チーム名はおそらく「BOT」のBなんだと思います。噂では違う由来もあると聞きましたが。熊井チームの名前についてはどうなんでしょう。気にしたことがないですが、わかればいいかなと...。Partでは、今はBOTおじさんなのでBOTの面倒をずっと見ています。Message配信や、ユーザーから受信するところの処理をやったりするサーバサイドを担当しています。tokuhirom今回、インタビュー企画をスタートするにあたって「誰が初回に向いているかな?」と企画の人が社内のエンジニアたちにヒアリングしてきたらしいんですけど、熊井さんが圧倒的に1位だったそうです。熊井なぜそんなに私が注目されているのかはわからないですが。LINEをリリースしてからはBOTの開発にすぐ着手して、翻訳BOTや天気BOTなど一方的に送るようなシンプルなものをLINE本体のリリースから数ヶ月で公開しました。翻訳BOTは社内のニーズが高かったので日韓の翻訳をしてくれるものは早めに出しました。tokuhiromLINEリリース時はまだ私は関わっていなかったので知らないんですが、LINEの最初のリリースはどういう開発陣で作られたんでしょうか?インターネットの記事で見かけたのですがもう少し詳しく教えてください。アメリカという多国籍なチームでしたね。サーバサイドは、ソクホさん(※編集部注:現在は上級執行役員の梁ソクホ)がメインで10名くらいのチームでやっていて、韓国からもサーバサイドやその他の機能担当がそれぞれ来て担当していたので、プロジェクトメンバーは多かったと思います。記事なんかも出ているのでわりと有名だと思いますけど、かなり短期間で開発をしました。今思えばいい思い出だけど、かなりキツかったですね。熊井いえ、他のプロジェクトは一切やらずに新規でLINEを作るだけでした。それまでiOSの開発をほとんどしたことがなかったし、思いがけない障壁というか困ったことがあったんですが、当時はMacをさわったことがなくて苦労しました。コピペ」で検索しましたね。Ctrl+Cでコピーできねーな?って...。Macを操作するのもままならない状態で開発を始めたというのは本邦初公開かもしれませんね(笑)それまではサーバサイド開発のキャリアが長かったので「たまにはクライアントもやってみたいな」と思って、LINEの企画が立ち上がる少し前に別のプロジェクトがあって「iOS開発やりたい人ー」と募集があったので手を上げて、それをやろうと思ったらLINEの開発に投入されたという経緯です。熊井2ヶ月か、それくらいだった気がしますね、今となってはわからないですが...。最初はユーザー数も「100万ユーザーくらいいけばいいね」と開発チームでは言っていたんですが、1000万ユーザーになり1億ユーザーになり、そんなに使ってくれるようになるとは思ってなかったです。tokuhiromなるほど。ここからは具体的に技術っぽい話を聞いていこうと思います。同僚のほとんどがそうなんですが、ある一定のことは出来る人が多くて、それは結構強いかなと思っていて。それぞれ専門はあるんだけど、技術的なコミュニケーションが早くできることで開発などの対応の早さにもつながっていると思います。あとは、LINEのように大きいトラフィックがある規模感でやっているところはなかなか無いので、経験を持った優秀な人達がこういう環境を得てやっているのが強みかなと思いますね。tokuhiromLINEを今まで育ててきて、どうですか?プロダクトへの思いであるとか。熊井LINEもそうですけど、BOTのシステムは最初から面倒をみているので愛着はありますよね、やっぱり。BOTはもう6年くらいやっているので、要件とか環境が変わったりとか色んなシステムの構成もそうだし、すごく変わってきてるのを自分でみてメンテナンスしてきてるので面白いというか、だいぶ変わったなあと思いますね。最初はBOTに関していうと、翻訳BOTのような自社でやっている特殊なケースだけだったのでそれ専用に全て処理を書いてたんですね。これをビジネス的にお客さんに提供することになって、もっと汎用的になっていかないといけなくなったんですね。APIを公開するとそれがメインストリームになったりもしていきます。その後はシステム面の変更があったり、社外に提供しているものなのでビジネスの都合でどんどん変わっていっています。tokuhiromBOTの要件の変遷におけるシステム変更、規模感が変わっていったと。最初は、BOTのサーバはバックアップ含めて4台で動かしていたんですよ。翻訳BOTなどのエンジンは別サーバですけど。BOTそのものは2台で動いていて、2台がバックアップ。それが今は、周辺にあるものも入れると数百台規模くらいになっているのでだいぶ増えました。BOTはシステム的には何回か作り直しているんですね。BOTがユーザーからメッセージを受信して処理をするところは最初のものがv1だとすると、今はv3なので2回作り直してます。理由としては、用途が特化したものだったんですけど汎用的なものにしていくとか、スケールが大きくなってくるとか、そういう理由で処理する量が増えると。そこにビジネス的な要件が入ってきて、そろそろ作り直したほうがいいんじゃないかということでv2に作り直したと。今となっては境目が薄くなって来ているんですが当時は企業向けのオフィシャルアカウントというものと、小規模の店舗や個人が使えるLINE@というものがあって、最初はハッキリと要件が分かれていたんですね。それが段々と混ざってきて、LINE@だけどものすごく人気があって友達数が多いとか、オフィシャルアカウントなんだけど小規模だったりとか。今はインドネシアとかだとイベントの懸賞などで使われることも多くて、システムが壊れるんじゃないかってくらい皆が一気にメッセージを送ったりとかされても大丈夫になっています。tokuhirom最近はメッセージタイプも増えたし色々出来ることが増えていますよね。テレビ番組とタイアップで「番組中に応募してね!」みたいな取り組みもよくありますし。いう大掛かりな規模だと多少トラブルになったりもするんだけど、トラブルを経て徐々に強くなっていっています。昔は無かったけど今はある機能として、メッセージがアカウントに集中した時に自動でうまく処理する仕組みがあるんですね。全体に影響が出ないように一部だけをブレーカーが落ちるみたいにプチンと落とすみたいなのが実装されていて「おお、ちゃんと動いているな」と作っておいてなんですが感心します。熊井うーん、そうですね。何年か前ですけど、BOTのメッセージをBOT同士でループさせちゃってLINEのストレージが危険な状態になったことがあって、やらかしてしまったなと...。普通のサービスには影響がなかったんですが、社内で色々と監視をしているのでアラートが出ていて。ストレージ側で対応をいくらしてもどんどん止まらないというか。それを隣で見ていたので「大変そうだな」と思って眺めていたら、やらかしてたの自分だったという。申し訳ありませんでしたという。tokuhiromいまは基本的にBOT同士のメッセージのやり取りは行われないですよね。熊井そうですね、そういうトラウマがあるので絶対駄目だと言ってます。出た時とかに少しやらかしたことがあります。APIがやっと終わったのでさーて手をつけるかと思ったら、障害になっちゃったことがありました。LINEのような大きな規模になると、やばいなと思っていたところは予め対処しておかないと、ちょっと流行るアカウントがポッと1つ出ただけでそこから障害になるみたいな、そういうことがあります。その時は、テレビでBOTがテーマになった番組があって、2時間くらいの放映だったんですけどその間ずっと大量にメッセージが届き続けて。間ならもちろん問題ないんですけど、何時間に渡ってというのは今までになかったのでトラブルになってしまったという。問題を修正したコードはbeta環境まで適用されていて、来週リリースしようと思っていたらその前に障害になってしまったという。熊井そうです、連絡が来なくて。LINEは早めに作ってリリースして、後からどんどんケアしていくというスタイルでもあるので。システムのメトリクスやアラートを見ながら、ここおかしいなと思ったところを潰していく地味な作業の時期が長いですね。今の仕事の半分くらいはそうなんで。熊井そうですね、たまにしか来なくてサービス全体には影響がないんだけどこれはなぜだろう?みたいなアラートを調べたりというのはちょこちょこやったりしますね。熊井ものによりますけど、やばい系はほとんど無いです。来るのは毎日来ますね。原因は様々なんですけど、そういう毎日アラートが来続ける中で「あれ?なんかこれ様子がおかしいな」みたいなのを自分の中で感じることはあります。いつもはもっと違うかんじのメールが来るんだけど、この時間帯でとか、この間隔で、とか。おかしいと気づくことはありますよね。最近困ってることですか...うーん。順風満帆ではないですけど、そんなに大きいものはないですね。全体としてはエンジニアが足りてないとか、そういうのはありますけど。一人で見てるものも多いですし、BOTはチームの変遷もあった関係で、当時のチームが別になってしまったんで「色んな自分の子供たちを連れて別の家に来た」みたいな状態で。一人しか見れないってのもよくないので、最近はまわりの人にもレビューをしてもらって、少しずつ見てもらうようにしてますね。tokuhirom社内はレビューをかなり綿密にやっているかんじですよね。熊井レビューの文化はいいと思いますね。見てもらうきっかけとして。楽しいところはですね、なにかな...。今もLINEのなかでBOT用の処理ってあるんですけど、基本的には1LINEユーザーとして動いているんですよ。それがBOTかという区別はつけられるんだけど、基本的な仕組みは普通のユーザーと変わらないんですね。基本的にLINEのコアな部分は一般ユーザーに特化しているんですけど、BOTの場合はメッセージのパターンが真逆なんです。一人のユーザーが沢山の人からものすごい大量のメッセージを一気にもらうことはまずないけど、BOTの場合はあるんですよね。いう、メッセンジャーサービスなんだけどメッセンジャーっぽくないというか。いう技術的な要件を求められるのが面白いですね。メッセージングなんでメッセージの順番を担保する工夫をしているところではあります。熊井1プロセス1スレッドで処理すればメッセージの順序は守れるんですけど、とてもスループットが低すぎるのでそれをどうやって並列化していくかっていうところですね。実際にこう、例えばAさんとBさんがメッセージをくれていて、Aさんが先にメッセージを送ってきていてもBさんのを先に処理したとしてもAさんにはわからないっていう。いう並列化はしていますね。一部並列化しているんですけど並列化出来ていない部分もまだあって、そこは今年の課題ですね。昔の話ですけど、最初に出した翻訳BOTのバージョンがあったんですけど、メッセージの処理が変わっちゃって翻訳の意味がわからなくなるってことがあったんですね。文脈がおかしいみたいな。順番は守らないといけないですね。順番を厳密に守らなくていいようなメッセージ、たとえば懸賞の応募とかですね。いう、守らなくてもいいものと守らなきゃいけないものの兼ね合いがありますね。tokuhirom守らないほうがスケールはしますよね。そのほうが楽で、それがいらなければあのサーバもあのサーバもいらないみたいなのは結構ありますね。tokuhirom要件がどんどん違うBOTが出て来るみたいな。熊井そうですね、そしてそれを併存させないといけない。メッセージの順番を守らないといけないBOTと、守らなくていいBOTと。スケールさせてくれ、とか。まとめて面倒みないといけないのが厄介なところだし、面白みなのかもれしれないですけど。APIを公開してトラフィックがほぼないみたいなのも増えたじゃないですか。関していうと、問題はこっちから社外のサーバを呼び出している中でのレイテンシですよね。処理が遅い場合も多いです。それをどうしていくかが問題ですね。結局、向こうの応答を待っているとこっちのリソースを消費するので、そこでどうするか。それは今もどんどん対策をしていくところではあるんですけど。今は、ある程度待ちますけどそれ以上は待ちませんという形でやってます。いえ、あまりにも待たなすぎるのも問題があるので、少し待っている間にバッファを作ってちょこちょこためてあげる。そこも溢れたら捨てるしかないんですけど。BOTのシステムはメッセージキューを使ったバッファがとにかく色んなところにあるんですよ。tokuhirom今はメッセージキューは何を使っているんですか?複数あれば使い分けをとうしてるかとか。今後入ってくるかなというところです。いいんじゃない?使ってみようか」と。