$30 off During Our Annual Pro Sale. View Details »

水産業の辛いポイント、Railsがいてくれたから乗り越えられた

 水産業の辛いポイント、Railsがいてくれたから乗り越えられた

普段何気なく食べている魚の裏側の流通の難しさと
そこに入り込みモデル構築していったプロセスでの気づき、
学びをお話しします

2022/08/25 開催 【Railsエンジニア集合!】身近だけど知らないtoBサービスの裏側をのぞく
https://estie.connpass.com/event/255928/

Sankyo Toshio

August 26, 2022
Tweet

More Decks by Sankyo Toshio

Other Decks in Business

Transcript

  1. 水産業の辛いポイント、
    Railsがいてくれたから乗り越えられた
    株式会社ウーオ PM 三京俊雄

    View Slide

  2. 自己紹介
    三京俊雄(さんきょう としお)
    @3to_day
    2020年にウーオに2人目のエンジニアとして入社
    現在はPM兼エンジニア
    元々はPythonを使った組み込み開発や、
    サーバレスでの開発が中心
    RailsはUUUOで初めて触る
    UUUOで魚の捌き方習得中
    好きな魚はイサキ

    View Slide

  3. 本日お話しすること
    普段何気なく食べている魚の裏側の流通の難しさと
    そこに入り込みモデル構築していったプロセスでの気づき、
    学びをお話しします!

    View Slide

  4. 水産業の辛いポイント
    資料:農林水産省「漁業センサス」(平成15(2003)年、20(2008)年及び25(2013)年)及び「漁業就業動向調査」(平成26(2014)~29(2017)年)
    注:
    「漁業就業者」とは、満15歳以上で過去1年間に漁業の海上作業に30日以上従事した者。
    平成20(2008)年以降は、雇い主である漁業経営体の側から調査を行ったため、これまでは含まれなかった非沿海市町村に居住している者を含んでおり、平成15(2003)年とは連続しない。
    https://www.jfa.maff.go.jp/j/kikaku/wpaper/h30_h/trend/1/t1_2_2_1.html
    漁業就業者数の推移

    View Slide

  5. ● 圧倒的な人手不足・リテラシーの壁
    ○ ありきたりだがやはり辛い
    ● 商品化〜販売するまでのリードタイムが短い
    ● 産地固有の名称・規格。定型などない
    ● 在庫リスク問題
    ● 買い手ごとに変わる送料・手数料
    ● 不確実な情報のやりとり
    ○ 読めない相場
    ○ 読めない水揚げ量
    ○ 水揚げはあってもその規格があるかは不明
    ● 品質の期待値調整
    ○ 全く同じ商品は一つとしてない
    ● 不透明な市場間物流
    ○ 本当に明日届くのか?
    ○ 市場外物流の難しさ
    ● 消費者の魚離れ
    ● 需要予測の難しさ
    ● 飲食店、個人向けのロット感の問題
    ● 共有されない技術・経験・データ
    ● 新規参入の難しさ
    ● 産地の販売タイミングと消費地の購入タイミングの違い
    ● 売り方に経験・技術が必要
    ● ・・・
    水産業の辛いポイント

    View Slide

  6. ● 圧倒的な人手不足・リテラシーの壁
    ○ ありきたりだがやはり辛い
    ● 商品化〜販売するまでのリードタイムが短い
    ● 産地固有の名称・規格。定型などない
    ● 在庫リスク問題
    ● 買い手ごとに変わる送料・手数料
    ● 不確実な情報のやりとり
    ○ 読めない相場
    ○ 読めない水揚げ量
    ○ 水揚げはあってもその規格があるかは不明
    ● 品質の期待値調整
    ○ 全く同じ商品は一つとしてない
    ● 不透明な市場間物流
    ○ 本当に明日届くのか?
    ○ 市場外物流の難しさ
    ● 消費者の魚離れ
    ● 需要予測の難しさ
    ● 飲食店、個人向けのロット感の問題
    ● 共有されない技術・経験・データ
    ● 新規参入の難しさ
    ● 産地の販売タイミングと消費地の購入タイミングの違い
    ● 売り方に経験・技術が必要
    ● ・・・
    水産業の辛いポイント

    View Slide

  7. 水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  8. 一般的な水産物の売買フロー
    (前日〜当日)水揚げ情報が一次情報として流される
    漁師 漁協
    仲買
    荷受 仲卸
    荷受
    産地 消費地
    報告
    集計
    報告
    共有
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  9. 水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    漁師 漁協
    仲買
    荷受 仲卸
    荷受
    産地 消費地
    集計
    報告
    報告
    鳥取赤ガレイ 4番サイズ
    100kg(あれば)
    注文
    注文
    鳥取赤ガレイ 4番サイズ
    100kg(あれば)
    報告
    一般的な水産物の売買フロー
    (前日〜当日) バイヤーは水揚げ情報に対して、規格を予測し、値段を指値してセリ前注文する

    View Slide

  10. 漁獲報告をアプリで代替して発注をもらえるのでは?
    (ウーオの初期の仮説)
    漁師 漁協
    仲買

    荷受
 仲卸

    荷受

    産地
 消費地

    集計
    報告

    報告

    鳥取赤ガレイ 4番サイズ
    100kg(あれば)
    注文
    注文

    赤ガレイ 4番サイズ 

    20ケース

    報告
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  11. 定置網 イサキ 20ケース
    漁法
    前日〜当日の水揚げ情報
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    魚種

    View Slide

  12. 定置網 イサキ 20ケース
    大きさ、規格は?
    刺身いける?
    箱の目方(大きさ)は?
    切り身で何パック取れる?
    前日〜当日の水揚げ情報
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    漁法 魚種

    View Slide

  13. 前日のアバウトな水揚
    げ情報からは発注しづ
    らい

    水産業の辛いポイント

    商品化〜販売するまでのリードタイムが短い 


    View Slide

  14. 実際にバイヤーが購入できる情報
    (商品としての鮮魚の情報)
    はいつ手に入る?
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  15. 当日の朝、セリ場に並んで

    はじめてわかる

    水産業の辛いポイント

    商品化〜販売するまでのリードタイムが短い 


    View Slide

  16. 前日 当日朝
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  17. fishing_method(漁法)

    定置網

    container(規格) 

    中サイズ 5kg

    fish_type(魚種)

    アジ

    killing_method(締め方)

    氷締め

    商品として販売できる状態
    刺身○

    規格は水揚げ日、産地によって、
    5kg〜10kgぐらいで変化する
    商品情報はタイムリーに変化する
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  18. セリ(商品化)
    〜出荷(販売)
    までのリードタイム3時間
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い

    View Slide

  19. (産地) セリ前注文が欲しい
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    セリ(商品化)
    〜出荷(販売)
    までのリードタイム3時間
    (消費地) 仕立てられた確定情報が欲しい

    View Slide

  20. 水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    前日18:00

    当日9:00

    水揚げ情報配信

    時間

    セリ前発注 

    前日20:00

    当日6:00

    セリ

    結果確定/出荷 

    ・指値を考える
    ・規格を予測(難易度高)
    ・結果確定まで仕入れの予測
    が立たない
    産地は在庫リスクがないので
    ありがたい
    セリ前発注
    リードタイム長い

    View Slide

  21. 実際にバイヤーが購入できる
    情報はいつ手に入る?

    ボタンを押せば確実に届くという世界が

    水産業ではとても難しかった


    View Slide

  22. ・規格を選んで、数量を決めるだけ
    ・売り方を考えられる
    ・モノが確実に届く
    水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    前日18:00

    当日9:00

    時間

    当日6:00

    セリ

    出荷

    発注/結果確定 

    当日7:00

    産地は在庫リスクが大
    確定発注
    リードタイム短い

    View Slide

  23. 水産業の辛いポイント
    商品化〜販売するまでのリードタイムが短い
    産地は在庫リスクが大
    確定発注
    リードタイムを長くするより、
    発注体験をよりわかりやすくしていく
    方針に転換
    前日18:00

    当日9:00

    時間

    当日6:00

    セリ

    出荷

    発注/結果確定 

    当日7:00

    ・規格を選んで、数量を決めるだけ
    ・ウーオが選んだ規格だけでなく、産地
    が出品したものすべて買える

    View Slide

  24. How To セリ前発注 => 確定発注

    View Slide

  25. How To セリ前発注 => 確定発注
    container_groups(魚種グループ)
    containers (規格)
    market_trends (市況)
    selling_container_groups
    (漁獲量)
    buy_orders (発注)
    ユメカサゴ 小〜中 2100円1ケース
    containers
    セリ前発注
    セリ前発注のモデル

    View Slide

  26. How To セリ前発注 => 確定発注
    container_groups(魚種グループ)
    containers (規格)
    market_trends (市況)
    selling_container_groups
    (漁獲量)
    buy_orders (発注)
    ユメカサゴ 小〜中 2100円1ケース
    containers
    セリ前発注
    セリ前発注のモデル
    すべてUUUOが管理画面から手動で作成
    毎日配信
    毎日配信

    View Slide

  27. How To セリ前発注 => 確定発注
    containers(規格)
    commerce_containers(販売規格)
    commerce_items(販売商品)
    確定発注のモデル
    確定発注
    purchases (発注)
    ユメカサゴ 小〜中 2100円 1ケース
    new

    new

    new
    commerce_containers
    産地のユーザーが自由に作成
    commerce_times(注文受付期間)
    new

    既存


    View Slide

  28. How To セリ前発注 => 確定発注
    containers (規格)
    ユメカサゴ 小サイズ(1番) 100g/尾 5kg ケース 鳥取
    ユメカサゴ 中サイズ(2番) 150g/尾 5kg ケース 鳥取
    小

    中

    大

    ユメカサゴ 大サイズ(3番) 200g/尾 5kg ケース 鳥取
    ● セリ前発注をとるためには、ある程度規格を網羅しておく必要がある
    ● よく水揚げされる規格をウーオで独自に判断し配置
    => ウーオで規格マスタを管理し、提供したいという目論見
    どのような規格であれば確定発注できるのか
    規格という概念について

    View Slide

  29. How To セリ前発注 => 確定発注
    ユメカサゴ 小サイズ(1番) 100g/尾 5kg ケース 鳥取
    ユメカサゴ 中サイズ(2番) 150g/尾 5kg ケース 鳥取
    小

    中

    大

    ユメカサゴ 大サイズ(3番) 200g/尾 5kg ケース 鳥取
    鳥取ユメカサゴの小サイズ = 長崎ユメカサゴの小サイズ とは限らない
    ユメカサゴ 300g/尾 5kg ケース 鳥取 <= 水揚げがあってもデータがないので発注できない
    どのような規格であれば確定発注できるのか
    規格という概念について
    containers (規格)

    View Slide

  30. How To セリ前発注 => 確定発注
    containers (規格)
    ユメカサゴ 小サイズ(1番) 100g/尾 5kg ケース 鳥取

    ユメカサゴ 中サイズ(2番) 150g/尾 5kg ケース 鳥取
    小

    中

    大

    ユメカサゴ 大サイズ(3番) 200g/尾 5kg ケース 鳥取
    鳥取ユメカサゴの小サイズ = 長崎ユメカサゴの小サイズ とは限らない
    ユメカサゴ 300g/尾 5kg ケース 鳥取
    どのような規格であれば確定発注できるのか
    <= 水揚げがあってもデータがないので発注できない
    規格という概念について
    産地ごとに規格の定義が異なっている

    View Slide

  31. How To セリ前発注 => 確定発注
    産地ごとの規格の違い 同じ赤ガレイ4番サイズ
    赤ガレイ(底曳)4番 20入6.5kg0.3kg/尾
    赤ガレイ(底曳)4番 18入7kg0.4kg/尾
    鳥取 津居山(京都)
    どのような規格であれば確定発注できるのか

    View Slide

  32. How To セリ前発注 => 確定発注
    産地ごとの規格の違い 同じ赤ガレイ4番サイズ
    赤ガレイ(底曳)4番 20入6.5kg0.3kg/尾
    赤ガレイ(底曳)4番 18入7kg0.4kg/尾
    鳥取

    津居山(京都)

    赤ガレイ(底曳)4番 18入7.5kg
    赤ガレイ(底曳)4番 18入6.5kg
    船や時期によっても変わる
    どのような規格であれば確定発注できるのか

    View Slide

  33. How To セリ前発注 => 確定発注
    全国の荷主が産地の規格に縛られずに出品でき、
    全国のバイヤーが理解して購入するためには
    赤ガレイ(底曳)4番 18入7kg0.4kg/尾
    入数とケースの重さが重要
    ケースの重さ / 入数 = 1尾の重さ(大きさ)
    どのような規格であれば確定発注できるのか
    4番 / 中サイズ
    産地の規格
 誰でもわかる規格


    View Slide

  34. How To セリ前発注 => 確定発注
    全国の荷主が産地の規格に縛られずに出品でき、
    全国のバイヤーが理解して購入できるためには
    ● ケースの重さ= 必須
    ● 入数は全部数えるのが難しいこともあるので任意
    ● 1尾目方も入力可能に
    containers(規格)
    どのような規格であれば確定発注できるのか

    View Slide

  35. How To セリ前発注 => 確定発注
    containers(規格)
    commerce_containers(販売規格)
    現状のcontainerという
    概念を維持しながら構築
    どのような規格であれば確定発注できるのか
    全国の荷主が産地の規格に縛られずに出品でき、
    全国のバイヤーが理解して購入できるためには

    View Slide

  36. How To セリ前発注 => 確定発注
    規格ごとに出品すると、規格が多い魚種だと画面を占有してしまう問題が発生
    どのような規格であれば確定発注できるのか

    View Slide

  37. How To セリ前発注 => 確定発注
    規格ごとに出品すると、規格が多い魚種だと画面を占有してしまう問題が発生
    複数規格をまとめて出品できるように
    containers(規格)
    commerce_containers(販売規格)
    commerce_items(販売商品)
    どのような規格であれば確定発注できるのか
    必要情報をマイグレーション
    new


    View Slide

  38. How To セリ前発注 => 確定発注
    container_groups
    (魚種グループ)
    containers (規格)
    market_trends (市況)
    selling_container_groups
    (漁獲量)
    buy_orders (発注)
    ユメカサゴ 小〜中 2100円1ケース
    containers
    セリ前発注
    モデルの変遷
    すべてUUUOが管理画面から手動で作成
    (データ作成のオーバーヘッドになる)

    View Slide

  39. How To セリ前発注 => 確定発注
    containers(規格)
    commerce_containers(販売規格)
    commerce_items(販売商品)
    モデルの変遷
    確定発注
    purchases (発注)
    ユメカサゴ 小〜中 2100円 1ケース
    new
    new
    new
    commerce_containers
    産地のユーザーが自由に作成
    commerce_times(注文受付期間)
    new
    既存

    View Slide

  40. ● 深く入り込んでいたからこそドメインの深い理解が役立つ
    規格 = 全国基準 ではなく、各産地ごとの規格基準があった
    ● 固有の概念はできる限り排除し、普遍的な概念をデータとしていく
    ケースという単位だけではアバウト。そのケースの重さ(kg)という単位を一つの基準とする
    ● 現状の蓄積を捨てる勇気を持つ
    ドメイン理解が進めばモデルの構造も変わる
    ● プラットフォーマーがデータ作成のオーバーヘッドとならない構成にする
    毎日同じ写真、内容ではなく、日々変わる臨場感あるデータを作成可能にする
    ● UXとセットで考える
    How To セリ前発注 => 確定発注
    まとめ
    ビジネスの変遷に伴う新しいドメイン作成において学んだこと

    View Slide

  41. 蓄積されつつある売買データ/ 在庫データ を水産業界に還元していきます
    今後の展開

    View Slide

  42. ご清聴ありがとうございました。

    View Slide