いろいろな領域のサーバーサイド・エンジニア

松野徳大氏(以下、松野):それではみなさん、よろしくお願いします。「サーバーサイドエンジニアの生態」ということで、サーバーサイドエンジニアのセッションを始めたいと思います。

本日、私がモデレーターを務めます。LINE株式会社のOfficial Account開発室で室長というポジションでやっています、松野徳大と申します。主にLINE公式アカウント開発のサーバーサイド領域を担当しています。よろしくお願いします。

本日のタイムスケジュールですが、サーバーサイドエンジニアの組織の全体像を簡単に紹介して、そのあとパネルディスカッションをしたいと思います。その後Q&A、という感じで一応流れを組んでいるのですが、Q&A、あまり質問が多いと答えきれない可能性もありますので、パネルの途中でも、質問が溜まってきたら随時答えていければと思います。

本日のパネリストの紹介ですが、佐藤さんから順番にお願いいたします。

佐藤春旗氏(以下、佐藤):私は、佐藤春旗といいます。ここに書いてある「LINE開発1室」に所属していますが、組織としては、みなさんが使っている「LINE」のサーバー側、もう少し具体的に言うと、私のチームは、例えばLINEスタンプや、そのLINEスタンプやゲーム内通貨などが買える「LINE STORE」というサービス、他にはLINEの中でも「ホームタブ」「ウォレットタブ」といった機能を担当しています。

隣のチームだと、みなさんが使っているメッセージのストレージ部分であるとか、本当にコアに関わる機能部分を担当していたり。またその隣のチームだと、BotやMessaging APIなど、みなさんやパートナーさんに使ってもらっている、メッセージの機能をさまざまなサービスへつなぐ部分を担当していたりしています。

いろいろ楽しいことやチャレンジングなこともありますが、多くの方に使っていただいていて、トラフィックが多いとか、そういったところが特徴かなと思います。

松野:では次、栗原さん、お願いします。

栗原由樹氏(以下、栗原):「開発Eチーム」で開発職のマネージャーをしている栗原と申します。担当しているサービスは「LINEギフト」というサービスなんですが、私の「開発Eチーム」は「開発3センター」というところに含まれていて、その「開発3センター」はいわゆるtoCのサービスを作っている開発部隊になります。

ですので、私は「LINEギフト」を担当していますが、隣のチームでは「LINE LIVE」であったり「LINE NEWS」などのサービスを開発している感じになります。よろしくお願いいたします。

松野:よろしくお願いします。続いて渡邉さん、お願いします。

渡邉直樹氏(以下、渡邉):「CRS Devチーム」のマネージャーをやっています渡邉と申します。私が所属している「CRS Devチーム」は「開発4センター」というところにあります。「開発4センター」は、主にBtoB向けのプロダクトや広告の開発などをやっています。

「BtoBってなんだ?」といいますと、LINEの公式アカウントというサービスを開発しています。みなさんが街に出たときに、お店とかに「LINEで友だちになってくれたら、クーポンなどのお得な情報をお届けします」みたいな広告を見たことあるかもしれませんが、そうしたサービスのバックグラウンドのシステム、サーバーサイドのシステムを主に開発しています。本日はよろしくお願いいたします。

松野:それでは、最後に奥田さん、お願いします。

奥田輔氏(以下、奥田):こんにちは。「Data Engineering1チーム」でマネージャーをやっています、奥田と申します。

「Data Engineering1」というのは、全社規模のData Platformチームですね。いわゆるHadoopやElasticsearch、Kafkaといった、そんなワードに馴染みのある方も多いかもしれませんが、我々の上でMachine LearningチームやData Scienceチーム、また広告だったり、また各種サービスの、エンジニアだけではなくてプランナー、いわゆる非エンジニアの方も使えるような全体のデータプラットフォームを設計したり、また、それをよりよくするための開発・運用をしたりしています。

関わっているユーザーは、本当にサービスとして言えば、ほぼすべてのサービス、弊社で運用しているサービス全部ですし、規模で言えば、またあとのパネルディスカッションでも言うかもしれませんが、ストレージで240ペタだったり、テーブルの数とかで言うと、1万5,000を超えるようなテーブルの数が、我々のプラットフォームの上で動いていたりします。

また詳細も、あとのパネルディスカッションでお話しできればと思いますので、本日はよろしくお願いいたします。

松野:よろしくお願いします。このようなかたちで、本日この5名でいろいろお話ししたいと思いますので、みなさんも、ぜひ質問などあれば(チャットに)書いてもらえればと思います。

サーバーサイドエンジニアの種類

松野:かなりいろいろな領域のサーバーサイドエンジニアが登壇しています。そもそもLINEでいろいろなサービスをやっている中で、「どういったかたちのサーバーサイドエンジニアが働けるような職種があるんだろう?」というところが、外から見ているとなかなかわかりづらいという話があって、今回のようなイベントを開催することになったというところでもあるかなと思います。

一応その大きな区分としては、サービス開発という部分と、あとデータ関連のサーバーサイドエンジニア。あとはインフラ系のサーバーサイドエンジニアですかね。そのような大きな区分けができるんじゃないかなと、我々は考えています。

一応人数的なところでいくと、やっぱりサービス開発に関わっている部分が一番多いんじゃないかなと思うのですが。LINEアプリの開発ですね。LINEアプリが利用しているサーバーのサーバーサイド部分ですね。このあたりの開発も、非常にたくさんのメンバーがいて、今日登壇している中で言うと、佐藤さんの部署がこのあたりに関わっている部分かなというところです。

あとはBtoCプロダクト。これは僕らはLINEのファミリーサービスと呼んでいるんですが、LINEの関連サービスというかたちで、「LINE MUSIC」「LINE NEWS」「LINE LIVE」「LINEショッピング」などのいろいろなサービスを展開しています。これらのサービスには、それぞれサーバーサイドのエンジニアがいますので、そこのあたりも、たくさんのエンジニアが関わっています。このあたりに関しては、本日、栗原さんが担当の部分なので、このあたりに興味がある方がいれば、質問など投げていただければと思います。

あとはAI関連のプラットフォーム、広告プラットフォームなどのエンジニアもいます。あとはBtoBプロダクトですね。LINE広告やLINE公式アカウントなどのバックエンドの開発を担当している部署があります。これは、本日の中では渡邉さんが担当している部分なので、このあたり、詳しく話が聞けるんじゃないかなと思います。

本日このセッションには登壇しませんが、「LINE Pay」や、Financial、ゲームサービスの基盤などにも、それぞれたくさんのサーバーサイドエンジニアが関わっています。このあたりのサービスに関しては、本日登壇はありませんので、興味ある方がいれば、別途カジュアル面談など、人事を通じて申し込んでもらえるといいんじゃないかなと思います。

データ周りに関しては、本日、奥田さんがこのデータプラットフォームで、データの収集・分析・活用のための基盤づくりを担当していますので、詳しく話が聞ければと思います。

MLの部分に関しては、別のセッションがあるのかな? ちょっとわからないですけど、機械学習系の担当のサーバーサイドエンジニアもたくさんいます。

あとインフラ系は、またぜんぜんちょっと毛色が違いますけれども、Engineering Infrastructureということで、LINE内外のサービス提供のためのインフラ構築・開発者支援で、LINEの場合は基本的にプライベートクラウドを使っていますので、プライベートクラウドの構築や、そういったところを含めてたくさんのエンジニアが関わっています。

渡邉:補足ですけど、FintechとMachine Learningは、このあとセッションがあるみたいですね。

松野:なるほど。なので、気になる方はそちらのほうを見ていただければと思います。

あと、その他の組織というところでは、京都、福岡と。これは単純にロケーションの違いですが、東京以外にも日本国内に複数の開発拠点があります。あとは「LINE Growth Technology」という、これはGrowth領域ということで若干領域が違う感じですけれども、基本的にやっていることはそんなに変わらないサーバーサイドエンジニアでもあります。

そういったかたちで、さまざまなサーバーサイドエンジニアの領域がありますが、本日参加しているみなさんが興味あるところでお話しできればなと思うところです。

といったところで、いったんスライドはここまでなのですが、それではパネルのほうに入っていきたいと思います。

生活の中のコミュニケーションがトラフィックに現れる

みなさん、それぞれさまざまな領域で担当していますが、サーバーサイドエンジニアは組織ごとに、役割ややりがいが若干違うかなと僕のほうでは感じていてですね、そのあたりについてお話をうかがえればなと思います。佐藤さん、どうでしょうか?

佐藤:そうですね。やはり担当しているプロダクトの部分が違うというのもありますし、その関わり方もけっこう組織やチームによっても違うのかなと思います。先ほど紹介のところでも、ちょっと言及したんですが、やっぱりユーザーの生活に密着し直結したサービスやトラフィックを扱っているのが特徴の1つかなと思っています。

一方で、今回参加している方々にも使ってもらっている、本当にいろいろなLINEのサービスがありますが、そういったもののベースになるプラットフォームを作っている、運用しているというのが、自分たちの中でも大事なことだと思ってやっています。

やりがい、おもしろい点といえば、お正月には、「あけましておめでとう」といった新年の挨拶であるとか、みなさんの生活の中にあるコミュニケーションが自分たちのトラフィックとして現れてくる。それに対して、準備を半年以上かけてやっていたりとか。

実際お正月に、私のチームが例えば「LINEスタンプ」を活用して大きなキャンペーンをやっていたり。でも、そのキャンペーンもいろいろな要素やいろいろなチームが関わって一緒にやっているので、そういった本当にユーザーの生活に関わっているサービスを運営していて、自分たちにその反響がまた跳ね返ってくるような開発をしているのは、おもしろい点かなと思っています。

松野:なるほど。やっぱりプラットフォームとしての開発の部分と、あとは大きいトラフィックというところですかね。

佐藤:はい。

松野:「LINEはお正月に一番トラフィックが多くなる」というのは、けっこう社外向けにもたくさん発信しているところかなと思いますが、プラットフォーム以外のところでも、お正月のトラフィックは気にしているのかなというのは気になるところですが、渡邉さんのところはいかがですか?

渡邉:僕らのところでは広告のシステムとか作っているので、同じようにトラフィックがドーンと増えるので、お正月に備えて、2ヶ月か3ヶ月ぐらい前からですかね、「今年のお正月どうする?」みたいな、「どうやってやる?」「サーバー増設する?」みたいなことをワイワイとやってますね。

松野:なるほど。そうですね。

Machine Learningを使ってデータから間接的にユーザーの行動を見ていく

松野:ちなみについでなので聞いちゃいますけど、渡邉さんのところの組織ごとの役割ややりがいはどういう感じになりますか?

渡邉:僕のところのチームは、BtoBのシステムの開発をしているんですけど、BtoBといっても、企業向けLINEとか作っているんじゃなくて、BtoBtoCなんですよね。

僕らが作っているLINE公式アカウントとかの機能を企業様が使ってエンドユーザー向けのサービスを提供しているので、僕らから見ると、ユーザーさんが2ステップ先にあるということになっていて、直接サービスを提供しているというよりは、いろいろなパーツや機能を作って、それを企業様に使ってもらって、便利な世界を作っていくみたいな、そんな感じのシステムになっています。

ほかにおもしろいところで言うと、直接サービスを提供できるわけじゃないので、どうしても「どういう機能を作ったらいいか?」というのが、僕らから見えづらくなっています。

そのあたりを、Machine Learningを使って、「エンドユーザーにどういうものを作ったら、よいものが出せるだろう?」みたいなことをコントロールしたり、最適なレコメンドを作っていくところもけっこう頻繁にやっています。サーバーサイドのエンジニアだけじゃなくて、Machine Learningのエンジニアの組織が僕らの会社にはあって、Machine Learningのエンジニアと協力して、サービスにつなぎ込んでいくこともやっています。

あと、これはLINE全体的にそうなんですが、データがものすごく多いです。特に広告系とかBtoBのシステムって、1個1個のリンクを踏んでくれたかとか、実際に企業様のページに行ったときに商品を購入してコンバージョンしてくれたかみたいな、あらゆるログをたくさん残しておかないと、何が起こっているか見えづらくなってしまうので、とにかくデータをたくさん取っておくと、自然とビッグデータみたいなものができあがってきます。

そのあたりをどうやって効率よくコントロールしていくかとか、たくさんあるデータを使ってどういうことが見えてくるか。このへんはMachine Learningともつながってくるんですが、それで間接的にデータからユーザーの行動を見ていくことをやっていくのがなかなかおもしろくて、やりがいがありますね。

海外ブランチも含めて開発環境も整えていく

松野:なるほど。ありがとうございます。そのビッグデータを実際に活用しやすいようなかたちにするのが、奥田さんの部署の仕事かなと思うんですが、奥田さんのほうではどういった仕事をしているのでしょうか?

奥田:私のチームはデータプラットフォームなので、全社的にいろいろなチームが使っています。今お話しした佐藤さんや渡邉さん、ほかの2名の方々も使ってもらっているという認識です。

その中で、やっぱり今までのフェーズとしては、けっこう各々サービスに「このサービスはこういうサービスだから、こういう独自のシステムや独自のデータを入れる方法をやったらいいよね」みたいな感じでやっていたんですが、もうこのぐらいの規模になってくると、なかなかそれぞれをメンテナンスするのが難しくなってきています。

最近のすごく大きなトピックは、それをどうやって各サービスに一般化して、我々の運用コストもなるべく低く抑えたまま、各サービスも満足いく開発体験ができるかというところを重視しています。

なので、それをこの会社全体、全体と言ってるのは日本のブランチだけじゃなくて、韓国、タイ、台湾、ベトナムも使っているので、そういった海外ブランチとともに、あんまり特殊なシステムじゃなく一般化して、それをどれぐらいスケールさせて、どれぐらい便利なシステムとして、ユーザー、各開発部署の非エンジニア、アナライザーとかプランナー、プロジェクト/プロダクトマネージャーみたいな人に届けていくかということが、すごく課題でもあるし、おもしろいところだなとも思っています。

今言ったとおり、海外ブランチも含めて、アカウントベースでは2,000〜3,000というユーザーが使っていますし、また、その中で、本当に2,000〜3,000というスケールのサーバを抱えていると、やっぱり目にしないバグだったりを体験するわけです。それはKubernetesのレイヤーでもHadoopのレイヤーでもElasticsearchのレイヤーでも起きます。

そういったところを、OSSのコミュニティと議論しながらコミットしていく。実際にHadoopレイヤーだったりSparkレイヤーのコミッターもいたりするので、そういった外部のコミュニティとの関わりも含めて、けっこうチャレンジな環境だなと思っていて。それがおもしろいと思っているエンジニアが、幸いなことに僕のチームにはたくさんいるので、そこがけっこうやりがいだったり役割だったりするのかなと思っています。

アクセスが多いサービスをどうやって捌くのかに楽しみがある

松野:なるほど、ありがとうございます。すごく楽しそうだなと思いました。それでは、栗原さんのところはどういったことをやっているのでしょうか?

栗原:私のところは、いわゆる参加されているみなさんもイメージしやすいような、一般的なWebサービスの開発をしている感じです。いろいろな規模のサービスを作っているので、今まで話したみなさんは、ビッグデータや、多くのアクセスを捌くみたいなところがあったりもするんですが、私のところでは、小さいものから大きいものまでいろいろあって。

例えば、関連する開発者の人数で言うと、小さいものだと4名ぐらいから、大きいものだと10何名ぐらいの開発者のチームがそれぞれいて。小さいものだと、あまりアクセスがなかったりというのもありますが、そういういろいろな規模のサービスを取り扱っています。

アクセスが多いサービスだと、どうやってそれを捌くのかをエンジニアが考えて対応したりもしますし、あとは、たまにサービスがテレビなどで取り上げられたりするんですが、そういうところで急にアクセスがバーストしてしまうところに、どうやって対応するのかというところも、おもしろみとしてはあったりしますね。

松野:なるほど。ちょっと今チームの規模みたいな話がありましたが、栗原さんが担当している「LINEギフト」みたいなファミリーサービスの場合だと、今回はサーバーサイドエンジニアのセッションですが、いわゆるフロントエンドエンジニアも同じチームにいるのでしょうか?

栗原:我々の組織はサーバーサイドを専門にやっていて、いわゆるフロントエンドエンジニアは別の組織にいまして、内部では「UITチーム」と呼んでいるんですけれども、そのチームと連携してサービスを作り上げていきます。

松野:ありがとうございます。そうですね。今は、フロントエンド開発を担当する部署が、フロントエンドを全部やっているような感じになっていると思います。

(後半につづく)