LINEのサービス開発体制

長井綾子氏:LINE株式会社エンジニア採用チームの長井と申します。よろしくお願いいたします。こちらのセッションは、LINEのサービス開発エンジニアたちがサービスごとのエンジニアの役割や働き方について紹介するセッションとなっています。

最初にLINEのサービス開発の体制について、サービス開発室室長の大澤より、簡単に紹介いたします。

その次に、テクニカルPMの石塚より、テクニカルPMから見たLINEのサービス開発についてお話しして、その後「LINEのサービス開発エンジニアはコードを書く以外に何をしているのか」というテーマで、4名のエンジニアたちがパネルディスカッション形式でお話しいたします。そして最後に、みなさんからの質問にお答えして、このセッションを終了といたします。

それではさっそくですが、セッションを始めます。大澤さんよろしくお願いします。

大澤和宏氏(以下、大澤):よろしくお願いします。LINEのサービス開発体制について、簡単なお話を開発3センターのサービス開発1室の室長をやっている大澤が説明します。5分くらいしかないので、開発3センターでサービスをどういう感じで開発しているのかという、体制の部分を簡単に紹介します。

実際どういうかたちで働いているのかという話については、次の石塚やそのあとのパネルディスカッションでざっくばらんに話す予定になっていますので、そちらをお聞きください。

簡単に、開発3センターの主な組織というと、ざっと(スライドで)挙げている組織がありまして。LINEモバイルやLINEマンガは、そのままわかりやすいモバイル開発室とかマンガサービス開発室とかになっているんですけれども。

ちょっとわかりづらい上のほうから簡単に説明しますと、基本的に開発3センターはLINE LIVEやLINE NEWS、LINEバイト、LINEギフト、最近だと出前館といった、みなさんがよくLINEのメッセンジャー以外の部分で使われているようなサービスの開発を主に担当しています。

そのサービス開発には、サーバーサイドとクライアントサイド、あとはQAなどのエンジニアがいるわけですが、その中でもサーバーサイドとクライアントサイドのエンジニアが所属している部署が、サービス開発の1室、2室、3室というふうに分かれています。ちょっと人数が多いので、部署もざっくりと、ある一定のチーム単位で分けています。

また、主にプロジェクトマネジメントを専門にして、このあと出てくる開発に必要な各種部署と我々開発エンジニアの間を受けもって、プロジェクト開発を円滑に進めていくために仕事をしているチームとしてテクニカルPMチームがあります。テクニカルPMについては、このあと石塚がどういった仕事をしているのかの話をすると思います。

あと開発支援室というのは、具体的にはサービスに関わるコードにはコミットせず、開発環境をよりよくしていくための開発をしたり、それに関わる支援をするチームです。あとはサービスQA室ですね。こちらは俗に言うQAに関わっているメンバーがいる室になります。

iOSはほとんどSwift、AndroidはKotlin

次は、主に我々開発3センターで利用しているテックスタックですが、クライアントサイドは、普通にiOSですとほとんどSwiftなんですけれども、一部古いサービスでObjective-Cが残っていたりとかしますね。

Androidも、最近はKotlinで開発することが多くなっていますが、ちょっと古いコードだとJavaがあったりして、徐々にKotlinに置き換えているチームが多いです。あと、一部のサービスだとFlutterを使って開発していますね。

サーバーサイドになると、基本的に最近はJavaがほとんどです。最近新しく始めていくサービスとかだとKotlinを使っているところもあり、こちらもやっぱりサーバーサイドKotlinに徐々に置き換えていこうみたいな話をしているプロジェクトもあります。

あと、基本的にみんなフレームワークはSpring Bootを使っている感じですね。一部サーバーサイドレンダリングとかをやりたくて、Node.jsを採用しているプロダクトとか、ライブドア時代のサービスも一部担当しているチームもいますので、そのあたりでPerlを利用していたりもしています。

インフラ面については、基本的には全部自社でインフラを構築していて、プライベートクラウドというものを作っています。Verdaという名前で作られています。IaaSでいうところのOpenStackを使って、仮想サーバーをボタンをポチポチするだけで立ち上げてすぐにデプロイできるような環境を提供していたり。最近だとKubernetesも使えるようになっています。

あとは、MySQLやRedis、ElasticsearchもけっこうVerdaのコンソールを使ってサーバーを立ち上げられる環境ができています。最近だと、Function as a Serviceみたいなところもあったりします。

あとほかにも、でかいオブジェクトをアップロードして、それをCDN経由でユーザーのみなさんに提供するための「OBS」と呼ばれるObject Strageとか。あとライブサービスだと、エンコーダー専用のサーバーみたいなものもインフラとして用意されています。

基本のコミュニケーション言語は日本語

関わる開発拠点としては、福岡や京都の開発組織のメンバーと協業したりとか。あとは韓国、ベトナムにもエンジニア組織がいるので、そちらのメンバーと協業して我々と一緒に同じサービスを作っていくこともあります。

あと、一部台湾のエンジニアとか、国内で業務委託の方々と一緒に、我々の業務の一部を依頼して、一緒に開発サービスを作っていくこともあります。

いろいろな国があると思うんですけれども、基本的にコミュニケーションする言語としては日本語を使っていて。会議だと通訳さんが入っていたり、チャットやメールとかで必要になってくるときは、専用の翻訳botや翻訳ツールが充実しているので、わりと日本語以外は苦手だなみたいな方でも、コミュニケーションはちゃんと取れるかなと思います。

ただいろいろな国の拠点と一緒に1つの開発チームとなってサービスを作っていこうとなると、だんだん面倒くさくなって英語を使い出す人が多いかなという印象ですね。

ほかにも国内外問わず開発組織以外、我々の部署以外で関わるところとしては、けっこう社内でも複数の開発部署があるので、例えばWebのマークアップ言語やJavaScriptのフロントエンドの開発をする専門チームがいまして。我々はUITと呼んでいるんですけれども、そういったチームのメンバーがいたり。

あとはLINEのbotの開発とかも必要になってくるので、Messaging APIを作っている部署などと連携があります。あとは決済周りの処理とかだとBillingの開発チームがあったり。あとDBAやインフラ、セキュリティのチームなどと連携があります。

もちろん、サービスをリリースする前にはQAが必要なので、QAのチームとコミュニケーションがあります。サービスを作る前には企画が下りてくるので、事業部側の企画とかの関わりもあります。

あとは、デザイナーとか、個人情報を扱うときには情報セキュリティなどにも相談します。

開発フローに関しては、この後話が出ると思いますが、基本的にはそれぞれのサービスのチームごとでけっこう好き勝手にフローを自分たちで考えて作って、それを運用していますね。

ということで、私からの全体的な3センターの開発体制についての説明は以上になります。ありがとうございました。では、石塚さんよろしくお願いします。

テクニカルPMというポジション

石塚剛氏(以下、石塚):ありがとうございます。LINEの石塚と申します。よろしくお願いします。時間もないので、さっそく始めたいと思いますます。軽く自己紹介します。開発3センターのテクニカルPMチームに所属しています。LINEに入社してからは2年半くらい経ちました。

担当しているサービスは、LINEバイトとLINEキャリアです。前職時代は受託開発のエンジニアやプロジェクトマネージャー、そういった仕事をしておりました。

先ほど大澤からも簡単に説明があったのですが、テクニカルPMというポジションについて軽く説明しておきます。施策の企画フェーズで、企画のメンバーの方々と施策のブラッシュアップであったりとか、仕様を詰めたりですとか、そういうことを一緒にやらせていただいています。

開発中はプロジェクト管理ですね。進捗管理や、リリースタイミングの調整ですとか、そういったことをやっています。全体を通じて、事業全体がうまく円滑に進むように課題発見やら、解決やら、いろいろなことを拾って事業が円滑に進むようなお手伝いをしています。

「LINEバイト」開発チームの働き方

私の担当している「LINEバイト」の開発チームの働き方について、簡単にこの場でお話ししたいと思います。体制ですが、ほとんどのメンバーが東京の拠点にいますが、一部福岡にメンバーがいたり、業務委託の方も数名いたりします。だいたい各担当の人数構成としては、サーバーサイドが5名、フロントエンド4名、QA3名といった感じのチームで開発をしています。

作業場所なんですが、このご時世ですので、在宅も可能になっていますし、今は在宅、出社両方選択できるようになっています。実際はほとんどのメンバーが在宅で作業をしていまして、出社する人はかなり少ない状態になっていますね。

実は夏に新しいオフィスができたんですが、こういう状態なのでけっこう行く人は少ない感じになっていますね。ですが、新しいオフィスは快適なので、出社した人からは「行ってみると快適でいいオフィスだね」という声もけっこう聞かれるかなと思っています。

また一部の部署と書いてありますが、私の所属している部署もそうなんですが、フリーアドレスの運用のトライアルが始まっていまして新しい働き方に向けて試行錯誤しています。

コミュニケーションなんですが、SlackでのチャットとZoomでのオンラインミーティングがメインになっています。だいたい週次で定例ミーティングがあって、KPIの確認などをしたり、企画から新しい施策が出てきたときの仕様のレビューなどは、随時招集して開催しています。

それから、進捗管理などは月水金の週3日夕会を実施しまして、Jiraのカンバンを用いて進捗確認などをしている感じになっています。こちらは企画と開発合同で実施しています。

みなさん、在宅ワークメインでコミュニケーションが少なくなってしまっているのでちょっと活性化したいなという思いで複数の取り組みをしています。1つはSlackの雑談スレッドですね。毎日決まった時間にリマインダでスレッドを立てて、今日の気分とか軽い時事ネタだったりとか、出社する人は少ないですけどオフィスの近くのランチの話だったりとか、けっこうゆるい感じで支障の出ない範囲で盛り上がっています。

あとはオンライン飲み会なんかも不定期で開催しています。こちらも最近費用を会社から補助するような制度もできましたので、今後活用していきたいなと考えているところです。

ちょっと短いですが、以上となります。このあとはパネルディスカッションのコーナーになりますので、栗原さんよろしくお願いします。

LINEのサービス開発エンジニア・パネルディスカッション

栗原由樹氏(以下、栗原):ありがとうございます。ではここからは、「LINEのサービス開発エンジニアはコードを書く以外にどんなことをしているの?」ということについて、実際に弊社のエンジニアがコードを書く以外の時間にどんなことを行なっているのかとか、サービスを作るうえで職種であったり、東京以外の他の地域や国のメンバーとどんなことをしながらサービスを作り上げているのかということを、パネルディスカッション形式で紹介していこうと思います。

今回パネルディスカッションに登壇するメンバーは私も所属している開発3センターでサービス開発に従事しているエンジニアになります。参加しているみなさんには、このメンバーの話を通じて、LINEのサービス開発をしているエンジニアが普段どんな日々を送っているのかを少しでも感じてもらえればと思っています。

それでは最初に各メンバーの自己紹介をしたいと思います。まずは私から。私は開発3センターの開発2室というところに所属している栗原と申します。担当は……ここの(背景の)画面に書いてあるんですけれども、LINEギフトでして。そこの開発職のマネージャーをしています。よろしくお願いいたします。

続きまして、原さんお願いできますでしょうか?

原和寛氏(以下、原):LINEの開発3センターから出前館の開発に参画してテクニカルPMを担当しています。原と申します。今日はよろしくお願いします。

栗原:次、新保さんお願いします。

新保翔陽氏(以下、新保):LINEバイトでサーバーサイド開発を担当している新保です。所属は栗原さんと同じく、開発3センターの開発2室になります。本日はよろしくお願いします。

栗原:次に野川さん、お願いします。

野川賢二郎氏(以下、野川):開発3センターの開発1室というところでLINE LIVEとLINE MUSICのサーバーサイド開発を担当している野川です。よろしくお願いします。

栗原:ありがとうございます。今回はこの4人で進めたいと思います。では最初に、それぞれが担当しているサービスに関わる人の人数とかチーム体制がどんなものかを聞きたいと思っています。まずは出前館の原さんからお願いできますでしょうか?

:出前館では、主にユーザー向けの出前館のサイトや、基幹開発と言われるドライバーアプリ、オーダー管理などの店舗専用のアプリなどを管理していく部門と、あとは営業向けの開発を行なっている部門。あとはフロント周りの開発を行なっている部門と、運用グループの主な5つの組織で構成されています。

出前館は東京のほかに大阪にもオフィスがあり、だいたいその2つの拠点で開発をしています。各チーム、ベンダーにも協力してもらいながら、主に開発をしてもらっています。

今の開発だと、わりと新機能の開発とシステムの改善的な負荷対策の開発といった、だいたい2つの開発が走っていて。特にインフラ周りのところでは、オンプレとAWSだったりとかクラウドを使ったハイブリッド構成のシステムの構築を今進めています。

栗原:ありがとうございます。大阪にも拠点があって一緒にやっているという感じですかね?

:そうです。

栗原:では続いて、新保さんのLINEバイトについてお願いできますでしょうか?

新保:LINEバイトでは、現在業務委託の方を含めてサーバーサイド5人、フロントエンド4人で開発を行なっています。開発者はすべて東京オフィス勤務なんですけど、最近は開発を在宅で行うことが多くて、ほとんどのメンバーが在宅勤務で行っています。

サービスとしては、LINEバイトは2019年11月にリニューアルして、システムを刷新しています。最近だとサービスの開発の速度も速くなっていて、大きめの新機能だったりなどが複数同時に並行して走るようになっています。

機能開発に加えて、ほかにはアプリケーションの実行環境をKubernetesへ移行したり。運用面のプロファイリング、トレーシングなど、監視運用とかの環境整備を行っています。LINEバイトについては以上です。

栗原:ありがとうございます。基本的にはみなさん東京にいて開発を行なっているっていう感じですかね?

新保:そうですね。半年くらい前までは福岡とやっていたんですけど、メンバーの入れ替わりもあったりして、現在は全員東京勤務です。

栗原:なるほど。ありがとうございます。では次に、野川さんのLINE LIVEとLINE MUSICをお願いします。

野川:まずLINE LIVEは、現在サーバーサイドは兼務を含めて7人で、iOSとAndroidが3人ずつといった感じになっています。開発者はすべて四谷オフィスで勤務していて、基本的にはみなさん在宅勤務で働いています。

LINE LIVEでは、最近だとLINE LIVE-VIEWINGといったチケット制の有料オンラインライブ配信機能などの新機能の開発であったり。あとは負荷対策などを重点的に行っています。LINE MUSICは自分たちのチームは現在3人で、LINE MUSIC関連のサービスの開発の設計や開発をしています。

栗原:ありがとうございます。LINE LIVEとMUSICの本体としてはそのくらいの人数だけれども、特殊なエンジンなどは別のチームで作っている感じですかね?

野川:そうですね。LINE LIVEだとストリーミングを専門に扱うチームが韓国にあって、そのあたりの配信の機能は韓国のチームと協力して開発したりしています。

ふだんコーディング以外にどんなことをしているのか

栗原:それぞれチーム構成とか規模がなんとなくわかったかなと思うのですが、実際に3人がふだんコーディング以外どんなことをしているのかを聞いてみたいと思って。原さんはどんなことをしているのでしょうか?

:出前館だと、主に企画チームから要件が上がってくることが多いので、そこから上がってくる機能の洗い出しだったり、要件ヒアリングしたうえでどんな開発項目が必要なのかを精査したりしています。

それ以外で言うと、自分たちの開発環境をよくするためという意味で、CI/CD周りの整備を常日頃からやっています。さっきハイブリッドの構成とお伝えしたんですけど、AWS関連の技術習得などはチームみんなで勉強を日々しています。

あと既存システムの改善点は、常に洗い出してイシューとしてあげておいて、時間のあるときに改善をどんどん進めていくこともやっていますし。チームで動いている以上、設計やコードレビューをお互いにし合うこともやっています。

それ以外で言うと、ミーティングですね。開発全体のミーティングだったり、プロジェクトごとのミーティング、あとは企画と合同のミーティング。主にその3つが大きなミーティングで走っていて、それ以外だと朝会と、あとはチームの週1の振り返り。KPTとかをやっています。

栗原:ミーティングってどのくらいの頻度でやったりするんですか?

:大きなミーティングは今お伝えした3つですね。あとは個人によっては企画から呼ばれるレビューとかのミーティングに参加したりするので、週3つから5つというかたちになっています。

栗原:なるほど。ありがとうございます。LINEバイトはどうですか? 新保さん。

新保:コードを書く以外だと、まず機能開発関連で言うと、企画から新機能の原案が上がってくるので、その機能のレビュー。またその機能を実際に実装することになった場合の設計だったり技術選定などを行なって、開発のレビューなどを行なっていきます。開発は、基本的に1人が1つの機能を担当してやっていますね。それが機能関連で。

あと運用周りとかだと、モニタリングだったりアラートの対応を開発者が行なっています。あと、技術共有だったり相談の時間が週に1度設けられているので、そこでメンバーが気になった技術とか導入したい技術とかを話し合ったり、発表したりしています。

最近だとKubernetesを利用することに関しては、社内のプライベートクラウドの運用をするVerdaというチームと、ミーティングだったり問い合わせを行ったりして、けっこうコミュニケーションを取ったりすることが多かったですね。以上です。

栗原:なるほど。案件ごとに担当者が1人開発者で、っていうことなんですけれども、アサインというんですか、誰がどれを担当するみたいなのって、どういうふうに決まるんですか?

新保:ある程度はやりたい案件かどうかという希望もあると思うんですけど、一番は、並行していろいろな機能の開発が進んでいるので、そのタイミングで手が空いてきた人とか、リリースが終わったタイミングとかでアサインされることが多いかなと思います。

栗原:自分からもやりたいものに「やりたい」って手を上げることもできたりもするんですか?

新保:そうですね。CMSを作ったりするのが多い人とか、Kafkaのコンシューマーとか、そこらへんをよく触っている人とかは、そこをやりがちとか。それぞれメンバーに個性があって、アサインされていると思います。

栗原:なるほど、なるほど。ありがとうございます。LINE LIVEとかはどうでしょうか? 野川さん。

野川:LINE LIVEも、LINEバイトなどと同じように企画レビューであったり。あとLINE LIVEだとけっこう突発的に負荷が上がったりすることがあるので、負荷のモニタリングをやったり負荷テストっていうのを重視して回したりしていますね。

あとは開発環境の改善などもけっこう自発的にやったりして。新しい技術の勉強なども業務時間内にやることもありますね。ミーティングで言うと、自分は兼務している関係で週に4回くらいっていう感じで。まあでもたぶん、これはかなり多いほうで、兼務していない人だともっと少ないと思いますね。

栗原:先ほどとちょっと似た質問になるんですけど、コードの改善とかリファクタリングというのもやりつつ、新規機能の開発もやりつつ、っていう感じだと思うんですけど。その割合ってどのくらいでやっているんですか?

野川:けっこう時期によっても異なるんですけど。新規開発にがっつり取り組んでいる時は、それに注力しているときはずっとコーディングしているときもありますし。逆にそこまでじゃないときはわりと新規開発のコーディングは2、3割で、それ以外の改善とかを考えたりしているのが7割みたいな時期もありますね。

栗原:なるほど。ありがとうございます。

(次回につづく)