アルゴリズムの改善だけではない。爆速で改善が回るチームの「現場力」
毎日でも使いたい、国内発の新しいフードデリバリーサービス Chompy(チョンピー)。Chompyにはエンジニアという枠を越えて、事業の成長のためにコミットするメンバーがいます。
今回のインタビューでは、Chompyを運営する株式会社シンのエンジニア zaq1tomoさん・morikuniさんを相手に、アルゴリズムの改善フローとそれを支えるチームや働き方を深堀ります。
(前編はこちら)
Chompy: https://chompy.jp/
監視とシミュレーションがアルゴリズム改善の肝
-- 現在動いているアルゴリズムは、どんなフローで改善していくんですか?
zaq1tomoさん: 配達状況をシミュレーションできる仕組みを作って、分析しつつ、アルゴリズムの改善を行っています。フードデリバリーは密度が肝で、注文するお客さまとお店の密度が高くなれば、コストが下がっていくのが面白いんですよね。
過去のデータから未来の注文状況を予想し、現状から注文数がN倍になったら配達効率がどう変わるか、お店の分布的にどこに中継地点を置いたら効率が良くなるか、制約条件を変えたら状況は変わるのか、みたいなことをシミュレーターを回して理想状態から逆算しつつ、改善方針を見定めています。
大きな方針が決まったら、お客さまのUXとしてどう表現するかをデザイナーと相談します。クルーさんやパートナーさんのUXにも大きな影響が出る場合は、更に多くのメンバーを巻き込み、トレードオフを整理して、最終的な落とし所を決め、実際に実装して、効果を確認して、次のアクションにつなげる・・・ざっくりとそんなサイクルを回しています。
-- morikuniさんはどうでしょうか?
morikuniさん: アサインの改善だと、配達が遅れた注文を分析して、毎週振り返りを行っています。何が原因で遅れたのかを見て、アサインが遅かったのか?移動距離が長かったのか?など、原因を調べたうえで、アサイン側の問題であった場合はアルゴリズムやパラメーターを修正します。例えば、近くのクルーさんにアサインされるべきところが、なぜか遠くのクルーさんにアサインされてしまった。という問題があったとすると、もうちょっと近いクルーさんにアサインされるような調整をします。
サービスの運用面だと、Sentryでエラーの監視をしてなおすべき箇所があれば直しています。OpenCensusを使ってトレーシングをして、パフォーマンス低下やエラーの原因を見つけやすくしているので、原因が分かり次第直していますね。
-- アルゴリズムのテストはどうしているんですか?
morikuniさん: アサインでは、Unit TestとE2Eテストはそれなりに充実させていて、例えばこういう注文が入って、クルーさんが何人か配置されていた場合に、どのクルーさんにアサインされるか?というパターンをいくつか用意してテストしています。
新しく機能を追加したときも、今まではこっちのクルーにアサインされていたけど、次はこっちのクルーにアサインされるようになったねというのを、テストレベルで確認してリリースしていますね。
zaq1tomoさん: らくとく便では、自動テストみたいなことはやっていないのですが、過去の注文データをそのまま突っ込んでみてどう動くかの確認はやっていますね。結果を可視化して、問題なさそうかをテストしています。
越境を是とするチームで、オーナーシップを持って働く
-- アルゴリズムを専任でやっている印象がありましたが、お話を聞いている感じ、そうではなさそうですね。
morikuniさん: そうですね。Chompyには結構なんでもやる人が多いですね。僕はGCPとGoがメインなんですが、アサインのアルゴリズムを2021年3月に刷新したときは、ユースケースの洗い出しや新機能の企画、インフラ構築、APIの設計、実装、テスト。一通りやりました。
zaq1tomoさん: 僕はらくとく便全般をなんとかするということに責任を負っているので、ロードマップの定義や各種施策の仕様策定といったPdM的な動きもしています。それが終わったら、Goでサーバー、Flutterでクライアントを書くところから、リリース時のプロジェクトマネジメントまでまるっとやっています。
morikuniさん: 開発に閉じないところでいうと、社内向けのイベント含め企画もやっていますね。
-- 社内イベントはどんなことやっているんですか?
zaq1tomoさん: 全社でのKPTがクオーターごとにあるんですが、KPTで上がってきたTryごとにそれぞれ担当者を設けています。最近だと、僕は社内コミュニケーション改善を担当していたので、それらを推進したりとか。
morikuniさん: 技術的負債も含め、やりたいけどなかなか時間が取れないものがあるんですよね。まとめてやりましょうな「改善ウィーク」を企画しています。
社内外問わず "頼る" ことが事業成長への近道
-- アルゴリズムの改善方針はどのようにアタリをつけてるんですか?
zaq1tomoさん: らくとく便は外部のOR(オペレーションズリサーチ)系の研究をされてる方にお願いして、定期的にディスカッションする場を設けています。僕は専門家ではないので、専門家の方に最適化の基本を聞きつつ、定期的に話すタイミングを設けて一緒に考えてもらっています。
-- 社外の方に相談しようといった動きは、どのような感じで始まったんです?
zaq1tomoさん: 創業前に、海外のフードデリバリー系企業の先行事例を調べていて、各社、機械学習や最適化に多くの研究開発リソースを投下していることが分かっていたんですよね。会社ができた当時からそこらへんの知見は深めていかなきゃねということで、創業期からいろいろな方とお話させていただいていました。
-- アルゴリズムの改善方針はどのように決めているんですか?
morikuniさん: アサインのアルゴリズムは、初期メンバーでロジックを考えていた人がいて、その人から引き継ぐ形でメインの開発をしています。引き継いだ時点ででベースのアイデアをもらい、どういう機能を盛り込んでいけるかどうかをリストアップしました。そのリストをベースに、CTOと僕とベースのアイデアを出してくれた人の3人で揉んで、アクションに落とし込みました。細かい部分は、僕が決めて実装しています。
-- アルゴリズムの改善で失敗したことはありますか?
zaq1tomoさん: らくとく便では、お店から中継地点までのクルーさんと中継地点からお客さままでのクルーさんをつなぐ、仕分け作業を中継地点で人が行っているんですよね。
らくとく便のキャンペーンをやったときに注文数が爆増して、中継地点に通常より多くのクルーさんが集まることになってしまった結果、仕分けオペレーションがパンクして、大遅延を発生させてしまったんですよ。リアルオペレーションの難しさを感じました。
-- パフォーマンスのために工夫してることあってありますか?
zaq1tomoさん: 技術的に工夫した部分だと、途中からGoogleが公開している数理最適化ツール OR-Tools を採用したことですね。初期はお手製のシンプルなPythonスクリプトで書かれた山登り法的アプローチで解いていたのですが、当時の方法では計算に数分かかっていて。OR-Toolsだと一瞬で解いてくれます。
-- morikuniさんはどうですか?
morikuniさん: マイクロサービスへの切り替え前は、どれぐらいサービスが伸びても大丈夫かベンチマークは取っていて、10倍ぐらいであれば余裕そう、100倍ぐらいだとどうなるかなーといった感じでやっていました。日常的にパフォーマンス監視はやってないですね。
「泥臭さ」を忘れない。フットワーク軽く、現場を楽しむ。
-- 社内向け含めて何種類のアプリを運用されてるんですか?
zaq1tomoさん: モバイルアプリは4種類あって、ユーザーさん(注文するお客さま)向け、クルーさん向け、パートナーさん(加盟飲食店さま)向けのキッチンで使用する受発注アプリと、パートナーさんがCRMを行うためのアプリがあります。Webアプリが3種類あって、パートナーさん向けの管理画面、CSが問い合わせ対応などを行ったりするための社内向けの管理画面、お客さんが見るChompy全体のウェブページ、合計7つのクライアントがありますね。現在はフルタイム8人に加えて、数名の副業の方に協力いただいて開発しています。1人1アプリぐらいのノリです。
-- 実際に1人1アプリで担当してるんですか?
zaq1tomoさん: チーム体制的にはそうでもなくて、コマースチームとロジオペチームという2チーム体制で動いています。コマースチームはCEOがリード、ロジオペチームはCTOがリードしていて、僕もmorikuniさんもロジオペチームの所属です。アルゴリズム担当みたいなメンバーがいるわけではなく、各自状況に応じて流動的に色々なものを触る感じで進めていますね。
-- どんな人と働いてみたいですか?
morikuniさん: 明確に強みを持ってる人だといいですね。いろんな話を聞けるので、単純に自分の知らない知識に触れられて面白いみたいなところがありますね。あと、自分で課題を見つけて解決しようというマインドがある人と働きたいですね。スタートアップだと人が少なく、問題があっても誰も気付いていなかった・・・という事態になりがちで。そういうときに、自ら怪しいところを見つけながら、改善していけるような人だと嬉しいですね。
zaq1tomoさん: 人物像的なところでいうと、ステークホルダーが多様だったり、課題が現場にあったりすることが多く、それぞれ深ぼっていかなきゃいけないケースが多いので、ファクトを元に理想像を描き、複数のステークホルダーを巻き込んで課題解決していける人と働きたいですね。実際に飲食店の現場を見に行くとか、実際にクルーさんとして稼働してみるとか、現場力みたいなものも大事だなと感じています。
morikuniさん: 僕も配達とかやってみたりするんですけど、やってみないと分からないことが多いんですよね。例えば中目黒から渋谷までの坂が辛いとか(笑)そういう発見ができるという意味でも、フットワークの軽さは大事ですね。
-- 技術力的な側面よりもマインドやスタンスを重視されていそうですね。
zaq1tomoさん: どういうバックグラウンドや興味関心でもいいんですが、各種ステークホルダーに対して情熱注げて、足を動かして、泥臭いことができる方、そういうスタンスの方と働けると嬉しいです。
今いるメンバーだと、もともとシェフだったり、実家が飲食業をやっていたりするメンバーもいるので、そういう人に熱量負けしない何かを持ってる方だと、一緒に働いて楽しいと思いますね。
取材後記
今回はフードデリバリーサービス Chompy のエンジニア zaq1tomoさん・morikuniさんのお二人に取材をしました。普段使っているサービスの裏側に触れる機会は少ないですが、リアルタイム性も高く、エンジニアリング的な面白さが詰まった事業だと感じました。
エンジニアという役割に囚われず動けるメンバーが多く、今回取材だけでも良いチーム感を感じることができました。良いチームと良いプロダクトを作りたい方にはぜひおすすめしたいチームです。