「出前館」のクライアントサイドとサーバーサイド

田中優之氏(以下、田中):それでは、京都の田中と東山から「出前館」についてお話できればと思います。よろしくお願いします。

東山昌彦氏(以下、東山):お願いします。

田中:今日、こういったかたちで、クライアント側とサーバーサイド側についてお話しします。まず自己紹介すると、田中優之といいます。京都でアプリチームのマネージャーをしています。今までアプリの開発やゲームも作ってきましたし、カーナビアプリや地図のアプリでもいろいろやってきました。

あとは、最近特にコロナ禍で、おいしいごはんが食べたいなというところで、結果的にどうするかとなったとき、自分で作るしかなかったので、料理をがんばっているのが最近の趣味です。よろしくお願いします。それでは東山さん、お願いします。

東山:自分は「出前館」でサーバーサイドの開発をやっています。東山です。京都開発室のサーバー開発チームのほうに所属していまして。これまでの経験としては、検索サービスやメールサービスの構築や運用だったりとか分析基盤の構築だったりとか、あとはレコメンドやメールシステムの構築だったりとかっていうことで、サーバーサイドど真ん中かというと若干違うところを歩んできたかなというところがあったりするんですけど、やっぱり大規模のサービスのサーバーサイドのほうを主に担当したかなというふうに思っています。

趣味は、こちらに書いていありますが、コロナ禍で実際は行けていないところが多くて、ワクチンが実際に普及してコロナが明けたら、またいろいろ博物館だったり美術館だったり神社仏閣に行けたらなと思ったりはしています。

デリバリーの日常化に向けて

田中:それでは中身に入っていきますが、まず「出前館」の紹介をしたいと思います。「出前館」は、今我々が取り組んでいる事業なのですが、京都でも今だと6人が開発に入っていっています。

目指しているところとしては、デリバリー日常化に向けてというところで、平たく言うと、毎日使ってもらえるようなサービスにしていくということです。

では、それをシステムメンバーとしてどうやっていくかですが、1つのキーワードとして「モダンなシステムへ」ということで、今までいくつかずっと使い続けてきたシステムを今もかなり多くの方に使っていただいているので、そこにも耐えられるようにモダンに変えていくというところであったり。あとは、サービス体験の向上をどういった技術でやっていくかを日々取り組んでいます。

そして、「出前館」で持っているシステムを大きくB2B・B2Cの視点で分けているのですが、一番みなさんと近いのは、エンドユーザーに注文していただくWebのサイト、SP・PC、スマートフォン向けとPC向けと、あとはアプリを提供しています。

実はそれだけではなくて、こちらもけっこう大きい規模のシステムがあるのですが、その注文をいただいたあとに、加盟店の飲食店の方々に、どうやってその情報をお伝えして作っていただくかを知らせるアプリなどをいくつも提供しています。

そして、我々で提供しているサービスは実は、ユーザーのみなさまに使っていただくものだけではなく、加盟店様向けのサービス(受注管理システム)、ドライバー向けのサービスがあり、ここもかなり大規模なものになっています。ですので、大きくこういった視点で分かれています。

B2C向け・B2B向けのアプリ

それではもう少し具体的に、クライアント側でまずどういったことをやっているのかをお話ししていければと思います。

クライアント側ですが、アプリに関して、先ほどお話ししたB2C向け・B2B向けで、B2C向けに関してはイメージどおり「出前館」のアプリをiOS・Androidそれぞれ出していますというところなのですが、B2B向けのアプリは全体で見るとアプリの数がなかなか多くて、運用していくだけでもなかなかハードだなというところが、現状の「出前館」の開発状況になっています。

使っている技術に関しては、現在はReact Nativeを使っているのと、あとはフルネイティブでSwiftやKotlinで書いているアプリがあり、分かれています。

具体的に言うと、B2C向けの「出前館」アプリに関しては、React Nativeという技術を使って開発をしています。我々もReact Nativeは比較的初めての技術で、そこを日々学習しながら今開発しているというような状況ですが、なかなかおもしろい技術で、ネイティブエンジニアとしてもやりがいのある技術でいいかなと思って、今は取り組んでいます。

あとは「地図関連技術」と書いたのですが、先ほどお話ししたように、ドライバーやお店の方、エンドユーザーにも地図を見せることがよくあるので、そういった技術も重要になってきています。

では、サーバーサイド周りの話について東山からお話しします。

サービスの急拡大に伴うサーバーサイドの課題

東山:サーバーサイドですが、「出前館」というサービスは今すごく急拡大しているサービスでして、もちろんこのコロナの状況もあり、実際にお客さまというのはたくさん増えています。そうなってくると、やはりシステムパフォーマンスが問題になってくるなというところがありまして、そのシステムパフォーマンスの改善が、今一番重要な事項だったりはしています。

ただ、それと合わせて、やはり今までオンプレでサーバーを構築していたりしているので、これから新しいモダンなシステムにしていこうというところが、もう1つの目的となっていますので、そちらのほうも合わせて行っています。ちょっといろいろな仕事がたくさんありすぎて、もうなんか本当に手がつけられないぐらい大変なのですが、それを全部ちゃんとやっていこうというかたちで進めているのが、「出前館」のサーバー開発業務だったりしています。それに合わせて、やはりユーザー体験も向上していこうというところで、機能追加や改善も、もちろん実施していっている状態です。

Java、Spring Boot、Kotlin

利用技術は、Java、Spring Bootがやはり多く使われています。ただ、ここでJavaって書いていますが、最近はKotlinも使っています。そういったモダンな言語を普通に使っていきましょうと進めています。

それから先ほど「Verda」という話があったと思いますが、LINEの社内ではかなりプライベートなクラウドサービスを構築して使っていこうというところもあり、「出前館」もLINE社内の「Verda」を使うことはできなくはないのですが、AWSも積極的に使っていきましょうとなっていまして。AWSのマネージドサービス、例えばAuroraであったり、Amazon ECSやAmazon CloudFront、WAFなどのAWSの便利なサービスとを存分に使っていって、それでサービスを構築していくことを進めていたりします。

そちらのAWSサービスを構築するために使っているのがTerraformといった、Infrastructure as a Codeを実現するツールを使っています。

SMS認証基盤などの開発業務

じゃあ具体的にどういう開発業務をしているという話を進めると、具体的にはソーシャルID連携、まぁLINE連携はもちろんそうですし、ほかにもAmazonの連携だったり、ドコモのd払いとの連携だったりといった、決済サービスの連携も合わせて行っているというのがサーバーサイド業務の1つです。

それから認証基盤であったりとかっていうところも、SMS認証を追加したりとか、そういった認証基盤の刷新、それからパフォーマンス改善、レコメンドだったりとか、そういったユーザー体験を向上させるようなサービス改善をやっているというのが、サーバーサイドの開発業務になります。

出前館の開発組織

田中:ありがとうございます。そうしましたら、次に今開発組織としてどういったかたちでやっているのか、取り組んでいるのかというお話をしていきます。今「出前館」は、今日は京都からお話ししていますが、京都にサーバーのメンバーもアプリのメンバーもいます。

あとは、今は本社は東京に移っているのですが、「出前館」がもともと大阪が本社だったということもあって、大阪にもともとの「出前館」社員のエンジニアのもいて、一緒に開発をしています。あとはQAチームがいたり、もちろん東京にもメンバーが大勢いるところで開発をしています。

そしてこれはすごくLINEっぽいのですが、韓国のチームと一緒に開発をしていて、先ほどお話ししたB2B向けのシステムですね、配送周りのシステムは特に韓国のメンバーがすごく取り組んでくれていて、一緒にやっているという状況になっています。こういったかたちで開発を今進めています。

ちょっと時間がなくなってきたのですが、こういったかたちで、今私たちはデリバリーの日常化に向けて、「モダンなシステムへ」と、「サービス体験の向上」を目指して、今取り組んでいます。

以上になります。