LINEが出前館の開発を担当している理由

吉川英興氏:出前館のサーバーサイド開発について紹介いたします。私は吉川英興と申します。2010年に入社して、2020年から出前館のプロダクト開発を担当しています。

まず出前館について、ご存知の方も多いと思いますが、簡単に説明いたします。2000年、20年くらい前にフードデリバリーサイトとしてオープンしました。

4年前の2017年から、出前の受注だけではなく、飲食店様の代わりに商品をお届けするシェアリングデリバリーのサービスも開始しました。現在、加盟店は70,000店舗となり、シェアリングデリバリーもエリアを拡大しており全国に進出しています。

私たちLINEのエンジニアが、なぜ出前館の紹介をしているのか、あるいは出前館の開発をしているのかを簡単に説明いたします。

2017年に「LINEデリマ」という、出前館のOEMのようなサービスをLINEのアプリ内で開始しました。LINEデリマで注文すると、出前館に注文が連携され食事が届くというサービスでした。そこから業務を一緒にやっていく、事業を連携していくという関係がありました。

2020年の3月に資本業務提携して今まで以上に関係を強めて、一緒に事業をする発表を行い、実際に20年6月くらいから一緒に開発も共同で行っています。

「LINEデリマ」については、出前館とLINEアカウントの連携をできるようにしてブランドを統合し、2020年の12月をもってクローズしました。

「エンドユーザー」「加盟店」「配達員」のためのアプリ

出前館で私たちがどんなものを作っているかというと、主に3つのユーザー向けにプロダクトを開発しています。1つは一番左側。これが一番出前館と言って思い浮かべてくれるところだと思いますが。近くの飲食店を選んで、メニューから商品を選んで注文するという、エンドユーザー向けのサイト。

真ん中は加盟店向けのタブレットアプリの画面ですが、加盟店に注文が入った時に、どんな注文が入ったのかなどを表示するものです。このタブレットアプリ以外にも、加盟店の持っているPOSに連携したり、FAXに注文を送信したりする仕組みもあります。

一番右側は配達員向けのドライバーアプリと言われているもので、最近見かけた方もいると思いますが、出前館の自転車やバイクに乗っている方が注文情報を見て、どのお店に商品を取りに行ってどこに届けるということを行うためのアプリになります。これらを管理する画面がそれぞれあって、そういったものを開発しています。

どんな特徴があるか、出前館のプロダクトはおおざっぱに言うと、ECサイトと配送システムという2つをくっつけたようなシステムになっています。

ただ一般的なECサイトとは特性が違いまして。ECサイトというと、例えば北海道で頼んでも九州で頼んでも、どこで注文しても同じサービスを提供できますよというのが、ECサイトの強みだったりするのが普通なのですが、出前館は基本的に食事を届けるという特性上、お店と頼む人がすごく近いところにいるので、エリアの情報などを活用しながらやっていくサービスになっています。

これも食事というところですごく特徴的なんですが、頼んでから20分以内、15分以内で食品を運びたいというところを目指してやっています。

あともう1つあるのが、食事はなかなか欠かすことはできません。今日は出かけたくないなとか、買い物行きたくないなとか、雨が降っているとか、ちょっと外食も嫌だなっていう場合でも、食事はみなさんするので、そういった時にサービスを使ってくれる傾向があります。

出前館で使われている技術スタックと開発体制

出前館で使われている技術スタックですが、これはわりとLINEのほかのサービスと近い技術を使っていて、あまりLINEで使っていないものだと、データベースがOracleだったり、一部のシステムがPHPで動いていたりするところかなと思います。

データセンターは、出前館がもともとオンプレのデータセンターを使っていて、これもあとで説明しますが、少しそこから抜けようというか、脱却しようということで、AWSと、あとLINEのプライベートクラウドのVerdaと2つのサービスを使って、3つのデータセンターを今使っているという状況になります。

開発体制は、2020年私たちが一緒に共同開発を始めてから、かなり多くのエンジニアが出前館の開発に参加しています。それぞれ拠点が分かれていたり、出前館がもともと大阪で創業したというのもあって、出前館の開発も東京と大阪に分かれています。

LINEからは、LINE KYOTOの開発メンバーであったり、LINE FukuokaのQA、品質保証のチームであったり、あと最近では韓国の開発チームも入って、かなり多拠点で開発しています。

出前館のプロダクトの課題

出前館のプロダクトの課題について、一部は解消しつつありますが、今こういった問題を抱えています。

サービス開始してから20年経っていて、10年くらい前に大規模なリニューアルをした関係で、設計や実装が古くなってきています。全部ではないのですが、Java8やSeesaa2みたいな、サポートの切れたものが少し残ってしまっているのが現状です。

また、シェアリングデリバリーという配送機能が後付けで入り、ニーズに合わせてどんどん建て増ししてきたということもあって、設計が古くなっていたり、それぞれのシステムの依存が複雑になっているなどの問題を抱えています。

あとはデータセンターですね。これもずっと使っているデータセンターなので、新たにサーバーを足すのが難しかったり、そもそもデータセンターの持っているコアスイッチの帯域が厳しくなっているなどの問題があって。こういったところは少しずつ今解消しているというところです。

「参照APIプロジェクト」と「レコメンドシステム」

まだ私たちは、開発を一緒に始めて1年くらいしか経っていないんですけれども、これまで一緒にやってきたところをいくつか紹介したいなと思っています。この中から今日は2つ、一番上の「参照APIプロジェクト」と「レコメンドシステム」を詳しく説明しようかなと思います。

まず「参照APIプロジェクト」が立ち上がった一番の理由は、課題を解決するというところ。この図で言うBeforeのところですね。フロントエンドのアプリやWebの受け口のところがAWS上にあるのですが、APIがオンプレのデータセンターにあって、その先のOracleが、かなり負荷が高くてなっていました。

負荷が高い原因もいろいろあったのですが、すごく複雑なクエリがたくさん走っている状態で。これを解消しようということで、いったんOracleにクエリがいかないように、AWS上にあるフロントエンドの近いところにOracleの読み込み専用のリードレプリカをPostgreSQLで構築しました。

そのAPIも参照用に新たに再実装して、それをエンドポイントごとにロードバランサーで分けていくかたちでAPIを一つひとつ移行していきました。今はもう参照系はほぼ下の経路を通るようになっていて、これからトランザクションのある書き込み系もどうやって移していこうかを検討しているところになります。

あともう1つの事例として「レコメンデーション」を紹介したいと思います。これはどちらかと言うと技術的な課題をクリアするというよりは、ユーザーに新しい価値を提供していこうというところで始めました。

出前館では収集したデータをあまり活用できていなかったのですが、LINEのデータ分析環境にデータを送って、ユーザーにおすすめの商品とか店舗を表示するものです。

今日はいろいろ都合があって、スクリーンショットみたいなものは出せませんが、アプリとか見ていただくと、店舗一覧の近くに「あなたへのオススメ」というのが出ていると思います。

出前館の場合は地域ごとに頼めるものが違うというのもあって、地域ごとであったり、そのエリアで人気のお店であったり、またユーザーの属性や購買情報から、「このお客さんは今までこの店舗を使ったことがないけど、こういうお店も使ってくれるんじゃないのかな」みたいなのを機械学習で抽出し、それを表示することを始めています。

もう1つやっているのが、いわゆる商品を買ったら、サイドメニューなどのよく一緒に買われているものを提案するというのをやっています。

現状の出前館だと、最低注文金額というのがあって、ある程度金額がないと注文ができないこともあるので、そのためにユーザーさんは追加の商品を探すので。そこでよく買われているものを提案しています。

出前館のサーバーサイドエンジニアが今後取り組みたいこと

今までやってきたことを紹介しました。最後に、今まさにやっていることであったり、今後こういうことに取り組んでいくことを紹介いたします。

まず一番上の基盤の刷新では、先ほど話したインフラや、古いフレームワークが残っているところを解消しようということで、アーキテクチャを全体的に見直したり、オンプレのデータセンターからクラウドに進めていったりと、いくつかサブプロジェクトに分けて対策をしています。

あと3つは、それぞれユーザー向けのプロジェクトです。エンドユーザー向けには、やっぱり良い体験をする、おいしいものを選ぶことが一番ユーザーが求めているものだと思います。

そのために自分に合った商品であったりとか、ほかの人がどういう評価だったのか、といったお店だけじゃなくて商品でもレビューできるようにしたりなど、そういったところに取り組んでいます。

加盟店向けに関しては、自分のお店でどういったものが売れているのかといったレポート機能のところを改善して行こうと思っています。

また現状の管理画面は決して使いやすいものではないので、そういったところも改善して、出前館を通して、より自分のお店を盛り上げるようなことをしてほしいなと思っています。

3つ目は配達員のところです。出前館は人が物を運ぶというところで、配達員はいっぱいいるんですが、誰に何を運んでもらうかを効率よくやっていくことで、お届け時間を短くしたり、配達件数を増やしていったりするために、こういったものを作ろうとしています。

出前館の開発で求める人物像

出前館の開発を一緒にしていただける方を募集しています。本当に今フードデリバリーサービスはすごく盛り上がっていて。競合もたくさんいますが(笑)。市場も急成長しているので、そういった環境にあるサービスの開発をやってみたいという方に入ってほしいですね。

あと出前館と一言で言っても、機械学習であったり、インフラ面であったり、位置情報であったりと、いろいろな技術を使って構築しています。あとはBtoBtoCなのでビジネス向け業務システムであったり、エンドユーザー向けのシステムであったりなど、いろいろなものを作っています。

いろいろな技術領域に触れる機会があると思います。こういったところをやってみたい方は、ぜひ応募してもらえればと思います。あとの3つはこんな感じですかね。本日はありがとうございました。

※シェアリングデリバリーは株式会社出前館の商標です。