Slide 1

Slide 1 text

生鮮食品をユーザーに届ける 流通の仕組みと技術 長 俊祐 買物プロダクト開発部 流通基盤アプリケーション開発グループ 1

Slide 2

Slide 2 text

自己紹介 ● 長 俊祐 / OSA Shunsuke ● @s_osa_ ● クックパッドマートの流通をつくっているサーバーサイドエンジニア ● ソフトウェアと現実世界にまたがる問題解決が好物 ● 先日、趣味でフォークリフトの免許を取りました 2

Slide 3

Slide 3 text

今日話すこと ● クックパッドマートが流通をつくる理由 ● これまでにつくってきたもの ● これからつくっていくもの 3

Slide 4

Slide 4 text

4 クックパッドマートが流通をつくる理由

Slide 5

Slide 5 text

5 世の中には料理が楽しくなるような 魅力的な食材がある

Slide 6

Slide 6 text

6 農家直送の新鮮な野菜

Slide 7

Slide 7 text

7 塩をして焼くだけで 主菜にもつまみにもなる マグロのテール

Slide 8

Slide 8 text

8 もちもちでおいしい 包むのがいつもより上手くなる 餃子の皮

Slide 9

Slide 9 text

9 魅力的な食材に出会えていますか?

Slide 10

Slide 10 text

10 今ある仕組みでは届いていない 魅力的な食材を届けるための流通をつくる

Slide 11

Slide 11 text

11 これまでにつくってきたもの ステーション配送 配送オペレーション 配送計画

Slide 12

Slide 12 text

12 ステーション配送

Slide 13

Slide 13 text

毎日の料理に使いやすい食材配送 ● 宅配の受け取りのための在宅は結構大変 ● 生鮮食品には消費期限が短くて再配達が適切ではない食材も多い ● 日々の食材を買うときに送料は大きな負担になる 13

Slide 14

Slide 14 text

14 ● 冷蔵庫への置き配モデル ● 好きなタイミングで受け取り ● 在宅や再配達が不要 ● まとめて配送することで1品か ら送料無料を実現 ステーション配送

Slide 15

Slide 15 text

QRコードによる冷蔵庫解錠 ● アプリに表示されるQRコードで解錠 ● 受け取りがある人だけが開けられる 15 (1) QRコード読み取り (2) QRコードの中身(JSON Web Token)を POST リクエストで送信 (3) 署名と内容の検証 (4) 解錠 QRコード スキャナ サーバー (Ruby/Sinatra) 施錠解錠機構 QRコード スキャナ サーバー (Ruby/Sinatra) 施錠解錠機構

Slide 16

Slide 16 text

16 配送オペレーション

Slide 17

Slide 17 text

大量の商品を正確に運ぶ ● 様々な事業者からバラバラの荷姿で出荷 される ● 複数の事業者から一見似たような商品が 出荷されることもある ● 多種多様かつ大量の商品を正確に届ける 必要がある 17

Slide 18

Slide 18 text

18 ● 目の前のモノの識別 ○ どういった商品か ○ 誰の注文の商品なのか ● 作業指示 ○ どこに届けるのか ○ どのように仕分けするのか ラベル

Slide 19

Slide 19 text

安全かつ高速にラベルを改善する ● ラベルは作業性に大きく影響するため、試行錯誤のために頻繁に変更 したい ● ラベル印刷が止まったり、情報が正確でなくなると流通が止まってし まうため、ラベルまわりの変更はリスクが大きい ● 高速に改善したいのに速度が出せない ● 読み書きしやすく、テストしやすく、安全かつ高速に変更を入れてい くために、データ生成用の仕組みを整備 19

Slide 20

Slide 20 text

使用 20 Label::Element 各種表現を生成 #to_binary #to_html #to_plain_text Label::Builder Label::Template ● ラベル要素(Label::Element)を木構造のオ ブジェクトとして生成、必要に応じて各種 表現に変換 ● 個々のラベルに加えてラベル生成の仕組み 自体もテストされ、プレビューなどの仕組 みも用意することで、安全かつ高速に変更 を入れていけるように ● 印刷 ● テスト ● プレビュー ● ログ ● dry run 生成 生成 ラベル テキスト フォントサイズ変更 テキスト テキスト 中央寄せ

Slide 21

Slide 21 text

21 ● 俯瞰的な情報の提供 ○ 配送ルート情報の閲覧 ○ 温度情報の表示・警告 ○ 作業マニュアルの閲覧 ● インタラクティブな操作 ○ 各ドライバーへのルートの アサイン ○ ラベル印刷 ○ 作業経過の報告 配送アプリケーション

Slide 22

Slide 22 text

オペレーション改善を駆動する配送アプリケーション ● 配送オペレーションは頻繁に試行錯誤・改善していきたい ● 元々は Android/iOS アプリだったが、チーム体制なども踏まえた開発 速度を考慮して Web に移行 ○ サーバーサイドの施策が続く時期があるなど、モバイル開発が常 に必要なわけではないので、専属の開発者を抱えるのが難しい ○ QRコード読み取りなど Web でも出来ることが増えてきた ● 主な使用技術 ○ TypeScript, React (Next.js), GraphQL, MUI, OpenID Connect (Azure AD B2B) 22

Slide 23

Slide 23 text

23 配送計画

Slide 24

Slide 24 text

実行可能かつ効率的な配送計画 ● オペレーション実行のためには計画が必要 ● 所定時刻までの配送完了など、いくつかの満たすべき制約がある ● 配送にかかるコストは極力小さくする必要がある 24

Slide 25

Slide 25 text

25 ● 各ステーションに配送するため のルートを組む ● 種々の制約を考慮する ○ 配送所要時間 ○ 積載量 ○ ステーションの営業時間 ● 制約を満たした上で、できるだ け少ない車両で配送したい ルート生成

Slide 26

Slide 26 text

ルート生成を支える技術 ● OSRM (Open Source Routing Machine) ○ 道路を考慮して、2点間の移動時間を計算してくれる ● OR Tools ○ 数理最適化ライブラリ ○ Ruby 版の or-tools gem を使って、配送計画問題(VRP)の近似解 を求めている ○ 2点間の移動時間の集合や積載量制約などの条件に基づいて、ルー トを組んでくれる ● 上記の2つを軸に、自分たちのサービスが求める制約を満たすための 各種条件や前処理・後処理を追加して実装している 26

Slide 27

Slide 27 text

27 これからつくっていくもの

Slide 28

Slide 28 text

28 ● 増え続ける物量を常に届け続け る ● たとえば ○ 作業効率や倉庫の空間効率 を高めるオペレーションの 設計 ○ オペレーションを実現する ソフトウェアの開発 ○ オペレーションの自動化 スケーラブルな流通

Slide 29

Slide 29 text

29 ● 人間が作業しているため、どう してもミスがある ● ミスを限りなくゼロに近づけて いく ● たとえば ○ ハンディスキャナの導入に よる作業支援 ○ 商品追跡ログの取得による 原因究明と継続的改善 正確・確実に届く流通

Slide 30

Slide 30 text

30 ● まだまだ届けられていない商品 がある ● もっと便利にしたい ● たとえば ○ 大きい商品や長尺の商品を 運ぶ仕組み ○ 冷凍食材の取り扱い ○ もっと早く届く仕組み 柔軟で便利な流通

Slide 31

Slide 31 text

31 おわりに

Slide 32

Slide 32 text

まとめ ● クックパッドマートでは魅力的な生鮮食品をユーザーに届けるため に、流通構造やオペレーションの設計からソフトウェア開発まで、流 通の仕組みづくりに総合的に取り組んでいます ● 物理世界特有の課題などもあって決して簡単ではないけど、挑戦しが いがあって非常に楽しいです ● ここで紹介できたのはごく一部なので、興味をもっていただけた方は ぜひお気軽にお声がけください 32

Slide 33

Slide 33 text

関連資料 ● 『クックパッド生鮮 EC お届けの裏側 2022 年版』 ○ https://techlife.cookpad.com/entry/cookpad-mart-distribution-2022 ● 『クックパッドマートにおける宣言的ラベル生成』 ○ https://techlife.cookpad.com/entry/2021/08/18/100000 ● 『クックパッドマートのドライバー向けWebアプリケーション』 ○ https://techlife.cookpad.com/entry/driver-web-app-in-cookpad-mart-2022 ● 『クックパッドマートの配送ルートを自動生成している仕組み』 ○ https://techlife.cookpad.com/entry/cookpad-mart-routing-2022 33

Slide 34

Slide 34 text

34 Thank you for listening!