Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Railsだからできる 例外業務に禍根を残さない 設定設計パターン

Avatar for えいえい えいえい
September 28, 2025

Railsだからできる 例外業務に禍根を残さない 設定設計パターン

2025/09/27のKaigi on Rails 2025(Day2)にて発表しました。

Avatar for えいえい

えいえい

September 28, 2025
Tweet

Other Decks in Programming

Transcript

  1. そもそも例外業務isなに? お客さま たくさんの 生産者さん 店舗で購入 飲食店でお食事 直接お届け 地域ごとに 集荷・発送 セットにしてお届け

    出荷漏れ 配送遅延 都会から遠い産地 台風・大雪 品質不具合 消化仕入れ FAX注文 出荷数調整 チェーン別 商品コード
  2. これまでの流れを乗り切るための数々の「工夫」があります。 ex) 曜日によって配送ルートが違うので、配送料を正しく計算してほしい。休市日も便が違う。 ex) キク科アレルギーのお客様には、野菜セットのレタスをジャガイモに入れ替える。 ex) そのお客様の前回お届け時に、ジャガイモが入っていたなら、さらに入れ替える。 ex) そもそも、前回の野菜がジャガイモ(デストロイヤー)だったら、同じ野菜とみなすのか? ex)

    収穫不良で欠品があったら、飲食店にはメールを送ってほしい。特定のお客様はFAXで。 ex) 1kgのじゃがいもを10袋分の袋詰をすると、在庫が10.5kg減る。 ex) 届いた万願寺とうがらしに日焼けがあったので、お客さまへのメッセージを変更したい。 → 坂ノ途中では上記の例外はすべて全て設定化されており、業務担当者が調整しています。 そもそも例外業務isなに?
  3. 変更頻度と、設定の複雑さで分析する 設定パターンの複雑さ 高い 変更の多さ 低い 少ない 多い 共通設定 テーブル 2

    コードに 直接書く 1 備考欄を 利用する 3 設定カラムの 追加 4 テーブル 設定化 6 構造体定義を 作成 5
  4. 変更頻度と、設定の複雑さで分析する 実装例のケース 設定パターンの複雑さ 高い 変更の多さ 共通設定 テーブル 低い 少ない 多い

    備考欄を 利用する テーブル 設定化 コードに 直接書く 設定カラムの 追加 構造体定義を 作成 2 1 3 4 6 5
  5. 実装方法を判断する経験則 共通設定 テーブル コードに 直接書く 備考欄を 利用する 設定カラム の追加 テーブル

    設定化 構造体定義を 作成 ユーザー 変更あり 2 1 3 4 6 5 設定の 変更頻度 が多い 連動する 項目が 複数 必須項目 にしたい いいえ はい はい いいえ はい いいえ はい いいえ いいえ はい 連動する 設定は 組み合わせ自由