Kon's DX Lab - Case Study

Day 43|【Streamlit × 業務改善】特典配布の偏り問題を可視化&自動化してみた実験記録

Published on 2025-05-14

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、こんです🦊

今日は100日チャレンジ Day 43。
今回は、Streamlitを使って受注データの加工・特典配布処理を自動化するアプリを作ってみました。


🧩 実験のきっかけ:Excelでの限界を感じて

以前、同じような特典配布作業をExcelで手作業&VBAでやっていたのですが、

  • 配布の順番によって特典の在庫が偏ってしまう

  • 配布数のバランスを調整する余裕がない

  • ロジックの検証・修正も面倒

といった課題がありました。

今回はこれらの課題をクリアすべく、Python × Streamlitで挑戦しました!


🛠 作ってみたもの(Streamlitアプリ)

🎯 目的

CSVで受け取った受注データをもとに、在庫を考慮しながら特典を自動で配布し、最終的にLogilessインポート用のCSVに仕上げること。

🔧 主な機能

  • 受注データ(特典対象/非対象)をアップロード

  • 特典の初期在庫をユーザーが入力可能

  • 商品名から特典対象データを抽出

  • 顧客単位での購入数を集計

  • 配布ルール(セット+バラ)に基づいて在庫から配布

  • 特典配布ログや在庫残数、偏りをUI上で可視化


🔍 工夫したロジック

1. セット配布とバラ配布の分離

購入数をセット構成特典数で割り、商を"セット配布"、余りを"バラ配布"として処理。
セットは1種類ずつ配るため、特典すべてに在庫が必要。

2. バラ配布は"配布数が少ない特典を優先"

バラはどの特典を配ってもOKなので、
その時点で一番配られていない特典から順に割り当て。
(ただし、完全な均等化は想定以上に難しかった…!)

3. 割当結果の可視化(Streamlit)

  • セット配布とバラ配布の件数を特典ごとに集計

  • 配布前/後の在庫数を棒グラフで表示

  • 割り当てログはCSVでダウンロード可能

UIがあるとその場で反映&検証できるので、調整がとにかくラクでした。


✨ やってみてよかったこと

  • Excelでは気づけなかった配布バランスを、Streamlitで即チェックできた

  • 割り当て方のロジックを何度も変えて試行錯誤できた

  • コードの見直しもしやすく、ChatGPTと対話しながら安心して開発できた


📝 まとめ

今回のStreamlitアプリは、単純な"自動化"というよりも、
"ロジックの見える化と改善サイクルの加速"が本質だったように思います。

在庫や優先度のような業務ロジックも、
UIで確認しながら設計できると、納得感を持って調整できるし、
なにより疲れにくい。

"ちょっとした仕組み"で、作業も思考も軽くなる。
そんな体験ができた一日でした!


次回は、特典ごとに重み付け(優先度)を加えた配布ロジックにチャレンジしてみる予定です🧪

#業務改善 #Streamlit #業務ロジック設計 #100日チャレンジ #Python