PyCon JP 2025

Streamlit は社内ツールだけじゃない!PoCの速さで実現する"商用品質"の分析SaaSアーキテクチャ
2025/09/27 , ダリア1

データアナリティクス機能を "Python" で “外のお客様” に届けたい開発者へ。
本発表では、社内ツールで終わりがちな Streamlit アプリを“商用品質”に引き上げ、わずか2週間で EC 事業者向け SaaS としてリリースした実体験を共有します。
EC事業者の売上向上を支援する中で「どの商品が返品を生むか」「メール施策は機能しているか」といったデータ活用ニーズが高まりました。PoCは瞬時に作れるStreamlitですが、本番SaaSにはセキュリティ・性能・品質保証という壁が立ちはだかります。

私たちは「PoCの速さ」と「SaaSの品質」を両立させるため、以下のPythonエコシステムのピースを戦略的に組み合わせました。
* 堅牢性:Streamlitの独自例外をDecoratorで捕捉し、ユーザーフレンドリーな通知と情報漏洩を防止
* 分析基盤:S3/Kinesis Firehose/Athena/awswranglerによるETL不要のサーバーレス構成
* パフォーマンス:効率的なSession StateキャッシュでAthenaコスト削減、レスポンスを高速化
* 認証:WebSocketのCookie問題をJWT検証Decoratorで解決
* 品質保証:mypy/pyrightによる型安全担保/Streamlit Testing APIを用いたヘッドレステストをCIに統合

リリース初日から顧客10社が利用開始し、インシデントゼロで安定稼働しています。
「あつまれ Python のピース」に沿い、多様なピースを束ねてビジネス価値を最大化する方法を紹介します。
参加者は「迅速さ」と「高品質」を両立させる具体的なレシピを持ち帰れます。


  • イントロダクション

    • 自己紹介
    • 顧客の強いデータ活用ニーズと「2 週間リリース」の背景
    • Streamlit の爆速 PoC を 商用品質 に高めるミッション
  • 堅牢性 & セキュリティ

    • 例外握りつぶし問題:Decorator で捕捉し安全なエラー表示
    • WebSocket × Cookie の罠:認証 Decorator で毎リクエスト再チェック
  • 分析基盤 & パフォーマンス

    • S3 + Athena + awswrangler
    • st.session_state/st.session_cache による Athena コスト削減
  • 品質保証 & CI/CD

    • 型安全ファースト:mypy/pyright と Result 型でバグ未然防止
    • Streamlit Testing API を用いたヘッドレステストを自動化
  • まとめ

    • PoC の速さ × SaaS の品質 を両立する設計Tips
    • 公開初日で顧客 10 社 が即利用、データドリブン施策が加速

この題材を選んだ理由やきっかけ:
  • StreamlitはPoCまで”という通説への挑戦
    きっかけは私たちの主力製品をご利用のお客様から、「蓄積データを返品率改善などに活かしたい」という要望が多数寄せられていました。通常のWebフレームワークでは顧客のニーズに素早く答えることが難しい状況の中、圧倒的な生産性を持つStreamlitに白羽の矢を立てました。しかしチーム内でも「本当に本番で使えるのか?」という当然の懸念が噴出しました。私たちはこの通説を覆すこと自体に価値があると考え、Pythonエコシステムの力を信じて「速度」と「品質」の両立に挑みました。

  • PoCツールを商用品質に引き上げる挑戦
    課題は、あくまでPoC向けと見られがちなStreamlitで、既存SaaSと同等のUX・セキュリティ・パフォーマンスをいかに担保するか。この実践的な挑戦の結果として想像以上の拡張性と運用実績を得られたため、その手法を共有したいと考えました。

  • Python のピースが噛み合えば中小規模サービスでも十分戦える
    大規模な DWH やダッシュボード SaaS がなくても、Python エコシステムの小さな部品を組み合わせれば商用品質を実現できる。
    この成功体験をコミュニティへ還元したいという想いがあります。

オーディエンスが持って帰れる具体的な知識やノウハウ:
  1. 例外/認証を Decorator で横断的に制御するパターン
  2. S3+Athena+awswrangler で作る ETL 不要の分析基盤
  3. SessionState キャッシュで従量課金を削減&安全にレスポンスを高速化する方法
  4. mypy/pyright, Result型 と Streamlit Testing API を組み合わせた UI 含む CI パイプライン
オーディエンスに求める前提知識:
  • Python の基本文法
  • Web アプリ開発またはデータ可視化の基礎知識(Flask / FastAPI / Streamlit いずれかの経験があれば尚可)
オーディエンスの経験レベル:

Intermediate

発表の言語:

日本語

発表資料の言語:

日本語

See also: 発表資料

Recustomer 株式会社の Platform Team に所属し、主に認証・認可等の共通モジュール化、デプロイメントの自動化、開発環境の標準化などの抽象基盤の開発に従事しています。