snaqme Engineers Blog

おやつ体験メーカー snaq.me エンジニアによる開発プロダクトブログ

ユーザーさんにおやつを届けるまでのアーキテクチャ

こんにちは スナックミー CTO の三好 (@miyoshihayato) です
登壇などでユーザーさんにおやつを届けるまでのアーキテクチャを紹介させてもらったことはありましたが、ここではなかったので改めて紹介させていただきます。 過去紹介しているものからいくつかアップデートもしているので、その辺りも一緒にご紹介させていただければと思います。

snaq.meとは

おいしいマルシェおやつとワクワクを詰め込んでハッピーな「おやつ体験」をお届けします

農家さんが大切に育てたこだわりの素材が、生産者さんの手で美味しいおやつに。全国の生産者さんとお客さまを繋げ、体と心に優しく美味しいおやつを、ワクワクと共に届けます。おやつの時間を価値あるものに、人々の心と暮らしを豊かにします。

ユーザーさんにおやつを届ける概要

アサイン : ユーザーさんに届けるおやつを決めること

ユーザーさんのアクション(評価やリクエスト、好き嫌いなど)から弊社の独自のアルゴリズムを用いてアサインをしています

・評価: 4段階 (苦手~大好き)
・リクエスト: 必ず入るとは限らないが「このおやつ食べたい!」という意思表示
・好き嫌い: 苦手な原料や好きなジャンルなど

f:id:snaqme-labs:20220201194831j:plain

アサインはサービス当初全て手作業で行っていました。評価は当初からできるようにしていたので、各々の評価データを1件ずつ確認しながらアサインをしていました。さらにアサインするためにどの商品がアサイン可能なのか、どういう組み合わせがいいのかは担当者に依存するため属人性の高い業務でした。そのため当初からアサインの自動化はサービス当初を急務として開発を進めサービス開始3ヶ月でβ版の導入しました。
(ユーザーが増えれば増えるほどアサイン業務に時間が埋め尽くされるため。
ex) 1人1分で100人行うには100分、500人もやろうと思えば8時間強の業務)

アサインを支えるアーキテクチャ

f:id:snaqme-labs:20220207164054p:plain

① : アサインするおやつの順番決め
② : アサイン実行環境
③ : ユーザー情報の格納

① : アサインするおやつの順番決め

ユーザーごとに好き嫌いが異なるので、アサインした方がいい順番も異なってきます。そのため、ユーザーとおやつに点数をつけていくところになります。点数が高ければ、好きな可能性が高く、低いと好きな可能性が低いという感じです。

② : アサイン実行環境

アサインを実行環境であり、基本的にここは2パターンで実行されます。

  • 基幹システムからの実行
  • 定刻での自動実行

ここの実行環境ではアサイン登録はされず実行と結果のファイルだけ出力される仕組みになってます。また、弊社の独自のアルゴリズムが存在し、ユーザーごとに8品の商品をアサインを可能にしています。アサインできる条件はいくつかあり、実際にアサインを実行する前にさまざまな前処理を行なっています。例えば、在庫がなく棚卸しさせるおやつや製造しアサイン可能であればロケーションidを採番したりなどです。

ロケーションid: おやつがどの場所に存在させるか振る作業
在庫があれば全てアサイン可能ではなく、限られたSKUのもアサインをしています
常時100種類ほど

③ : ユーザー情報の格納

ここに関しては以下をご覧ください

labs.snaq.me

アサインの種類

  • snaq.me の定期
  • スイッチボックス
  • 追いシリーズ (翌日配送のsnaq.meやotuma.me)
  • otuma.me 定期
  • その他 (臨時対応)

当初はsnaq.meだけのアサインでしたが、さまざまなアサインのタイプにも対応できる仕組みになっています。(条件も異なっています。)

まとめ

アサインのシステムはver.1 -> ver.2 -> ver.3 -> ...とアップデートしてきました。このアップデートはユーザーさんの声やデータから導かれた課題に対して向き合い取り組んできたところになります。しかし、課題は山積みです。製造や出荷効率を上げつつ、ユーザーさんの満足度をあげるこの両輪をうまく回転させることで事業を推進していけると思っています。

より詳しいこと聞きたい方は 以下のmeety or twitterから連絡お待ちしてます。

meety.net

twitter.com