Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
水産業ドメイン可視化と実装のコツ 〜釣って捌いて食べてみる〜 株式会社ウーオ PM 三京俊雄
Slide 2
Slide 2 text
自己紹介 三京俊雄(さんきょう としお)/ 3to_day 2020年にウーオに2人目のエンジニアとして入社 現在はPM兼エンジニア (PM:8割, エンジニアリング:2割) UUUOで魚の捌き方習得中 最近はサワラにハマっている
Slide 3
Slide 3 text
本日お話しすること 水産業の流通を変えるスタートアップとして、 未知の業務(ドメイン)を理解し、一つの共通理解として抽象化したモデルを作 り、プロダクト内に実装し、運用してきました。 その中で見えてきたコツ、考え方を共有できればと思います。
Slide 4
Slide 4 text
アジェンダ ● UUUOとは(何をしているか) ● UUUOのプロダクトチームの特徴 ● 水産業ドメインの一例 ● ドメイン可視化と実装のコツ 1. ドメインをモデルにするときのポイント(釣りにでかける) 2. モデルを実装にするポイント(さばく) 3. 作ったモデルをワークさせる(食べてみる) ● まとめとこれから
Slide 5
Slide 5 text
UUUOとは(何をしているか)
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
UUUOプロダクトチームの特徴
Slide 13
Slide 13 text
● バックエンド、フロントエンド、インフラの境界が薄い ○ インフラはほぼバックエンドで兼任 ● ユーザーヒアリングを重視して検証サイクルを素早く回す ● 施策ごとにオーナーを立てて推進 UUUOプロダクトチームの特徴 FrontEnd BackEnd UUUO Infra atohama 海外 飲食店 買付依頼 決済 全体最適 ログイン 産地
Slide 14
Slide 14 text
● バックエンド ○ Ruby on Rails ○ Heroku ○ Postgres ○ Firebase ○ GCP ○ Sentry ○ Terraform ● フロントエンド ○ Flutter Mobile ○ Flutter Web ○ React 環境周りなど
Slide 15
Slide 15 text
水産業のドメインの一例 水産物流の例
Slide 16
Slide 16 text
A: 市場間を定期で運行している市場便で輸送され、その後スーパーに配送されます ○ 卸売市場間をつなぐ物流網のこと ○ 大ロット一括輸送のためコストが抑えられる ○ 穴あき発泡(氷が溶けて水びだしにならないよう)を積載可能 水産業のドメインの一例 水産物流の例 Q: 産地から食卓に並ぶまでどうやって輸送されている?
Slide 17
Slide 17 text
一般的な個人配送型物流の場合 水産業のドメインの一例 水産物流の例 1000円 A地点 B地点 配送センター 運送会社は同じ
Slide 18
Slide 18 text
市場便の場合 水産業のドメインの一例 水産物流の例 380円 産地 宇都宮市場 豊洲市場 350円 A運送会社 B or C or D運送会社 宛先市場によっては運送会社が 変わる 豊洲の中では3社 => ウーオで請求と管理を巻き取りたい 足立市場 大宮市場
Slide 19
Slide 19 text
Before 産地-取引先間で送料を持つ ● 取引先増えるごとに送料設定をする 必要があり手間 ● 産地、取引先増えるたびにレコード爆増 ● 宛先データを送料内で管理 ● 一方、物流のステータスは個別で管理する 必要もあり、小回りは効く 水産業のドメインの一例 水産物流の例 送料データ
Slide 20
Slide 20 text
After 産地-市場間で送料を持つ + 組織間物流関係の定義 ● 取引先が増えるごとに送料設定をする 必要がなくなる ● 組織間物流関係でブラックリスト方式 ホワイトリスト方式を実現 ● 宛先データの自動作成 水産業のドメインの一例 水産物流の例 ホワイトリスト&ブラックリストの管理
Slide 21
Slide 21 text
ドメイン可視化と実装のコツ
Slide 22
Slide 22 text
ドメイン可視化と実装のコツ〜釣って捌いて食べてみる〜 1. ドメインを理解する (釣りにでかける)
Slide 23
Slide 23 text
● ドメインエキスパートを見つける。(社内にいる) ○ スプレッドシートで管理されていることが多い ● 解像度をあげる/絵を描けるぐらいになる 1. ドメインを理解する (釣りにでかける)
Slide 24
Slide 24 text
ドメインエキスパートを見つける。(社内にいると良い。いるはず) ● スプレッドシートで管理されていることが多い ● ひたすらヒアリングして、管理されている内容を叩き込む ● 場合によってはスプレッドシートの運用のままの方が、いいこともある ○ 変更頻度が多い、ルールが定まっていないケースなど 1. ドメインを理解する (釣りにでかける)
Slide 25
Slide 25 text
解像度をあげる ● 現地に行く(or 行ってもらって話を聞く) 1. ドメインを理解する (釣りにでかける)
Slide 26
Slide 26 text
絵を描けるぐらいになる ● 関係者とタイムスケジュールまで イメージを持てるように 理解する 1. ドメインを理解する (釣りにでかける)
Slide 27
Slide 27 text
ドメイン可視化と実装のコツ 2. ドメインをモデル&実装にする (さばく)
Slide 28
Slide 28 text
● 言語化していく(ユビキタス言語) ● 既存の運用を考慮して落とし所を探る 2. ドメインをモデルに落とし込む (さばく)
Slide 29
Slide 29 text
言語化していく(ユビキタス言語) 2. ドメインをモデルに落とし込む (さばく) 380円 産地 宇都宮市場 豊洲市場 350円 A運送 B or C or D運送会社 直便 中継便 気付会社
Slide 30
Slide 30 text
言語化していく(ユビキタス言語) ● 「〇〇が ~~を△△する」という定義を作って、ドメインエキスパート、関係者に合意をとる ● 例外パターンが結構出てくるので、実際の事例を交えてイレギュラーケースがないかをしっかり確認 ○ リアルな名称で聞くことが大事 2. ドメインをモデルに落とし込む (さばく) モデルとして定義できそうなものを抽出
Slide 31
Slide 31 text
言語化していく(ユビキタス言語化) ● ja.ymlにユビキタス言語を定義(rspecで必須化して定義漏れ防止) 2. ドメインをモデルに落とし込む (さばく)
Slide 32
Slide 32 text
既存の運用を考慮して落とし所を探る ● セールス/CSのリソースを考慮する ○ 一括移行できるのか、少しずつ移行するのか ● 無理ない設計にして最初から作りすぎない ● UXも考慮する ○ 継続的に管理できるように 2. ドメインをモデルに落とし込む (さばく) デザイナー/CSと話して管理画面の運用を決める
Slide 33
Slide 33 text
ドメイン可視化と実装のコツ 3. 実際に運用して改善する(食べてみる)
Slide 34
Slide 34 text
3. 実際に運用して改善する(食べてみる) ● 本当にやりたかったことができているかを確認 ● 入力されたデータを活用していくことを考慮していく ● UXをヒアリングし、改善する(味付けを改善) 定義されたモデルを活用していく (宛先印刷の例) Before After
Slide 35
Slide 35 text
まとめとこれから
Slide 36
Slide 36 text
ドメイン可視化と実装のコツ ● ドメインを理解する(釣りにでかける) ○ ドメインエキスパートを見つける。(社内にいる) ○ 解像度をあげる/絵を描く ● ドメインをモデルに落とし込む(さばく) ○ 言語化していく(ユビキタス言語) ○ 既存の運用を考慮して落とし所を探る ● 実際に運用して改善する(食べてみる) ○ 本当にやりたかったことができているかを確認 まとめとこれから
Slide 37
Slide 37 text
課題 ● Active Recordにドメインロジック書きがち ● Fat Modelになりがち ありがち? まずはPORO(Plain Old Ruby Object)で切り出していきたい まとめとこれから 購入 出品 価格計算 ロジック 価格計算 ロジック 類似ロジック
Slide 38
Slide 38 text
ギョ清聴ありがとうございました!! 水産業の裏側をともにハックしていきたい メンバーを募集しております!