PyCon JP 2025

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

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

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

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


  • イントロダクション

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

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

    • S3 → Firehose → Athena → awswrangler
    • SessionState キャッシュによる Athena コスト削減
    • Altair による宣言的・美しいインタラクティブグラフ
  • 品質保証 & CI/CD

    • 型安全ファースト:mypy/pyright と Result 型でバグ未然防止
    • Streamlit Testing API を用いたヘッドレステストを自動化(pytest-xdist 併用)
    • Jsonnet + GitHub Actions → ECS Fargate:環境差分のないワンコマンドデプロイ
  • ビジネスインパクト & 学び

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

    • 発表内容のサマリー(持ち帰ってほしいこと)
    • 質疑応答

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

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

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

Knowledges and know-how the audience can get from your talk:
  1. 例外/認証を Decorator で横断的に制御するパターン
  2. S3+Firehose+Athena+awswrangler で作る ETL 不要の分析基盤
  3. SessionState キャッシュで従量課金を削減&レスポンスを高速化する方法
  4. mypy・pyright と Streamlit Testing API を組み合わせた UI 含む CI パイプライン
  5. Jsonnet+GitHub Actions→ECS Fargate で “環境差分ゼロ” デプロイを実現する手順
Prior knowledges speakers assume the audience to have:
  • Python の基本文法
  • Web アプリ開発またはデータ可視化の基礎知識(Flask / FastAPI / Streamlit いずれかの経験があれば尚可)
Audience experiment:

Intermediate

Language of presentation:

日本語

Language of presentation material:

日本語