ショーケース: Streamlit BI ダッシュボード(Google Analytics & EC)– ビジネスインテリジェンスの民主化

三橋 啓多
Co-founder, COO
データ主導の意思決定が当たり前になった今、誰でも扱える強力でスマートな分析ツールが求められています。ここでは Streamlit の手軽さと BigQuery のスケール、そして最新 AI を組み合わせたオープンソースの BI ダッシュボードをご紹介します。




つくってみたい方へ このリポジトリはスターターパックです。社内向けに専用ダッシュボードを用意したい、AI 分析を試したい、最新のデータエンジニアリングを学びたい――そんな方に最適なコードベースになっています。
ダッシュボードの全体像
- 
GA4 分析 - トラフィック状況、ユーザー行動、CV パターンを詳細に可視化
 
- 
Eコマース分析 - 売上・在庫・顧客指標まで、オンライン小売の BI を網羅
 
さらに、自然言語で質問できる AI データエージェント を搭載。Google の Gemini モデルと LangGraph が裏側で動き、SQL を自動生成してインサイトを返します。
技術スタック
# フレームワーク
streamlit = "^1.45.1"
uv        = "超高速パッケージマネージャ"
# データレイヤー
google-cloud-bigquery = "^3.34.0"
pandas  = "^2.2.3"
polars  = "^1.30.0"   # 大規模データに強い
# AI / LLM
langgraph             = "^0.4.8"
langchain-google-genai= "^2.1.5"
google-genai          = "^1.19.0"
# 可視化
plotly     = "^6.1.2"
pygwalker  = "^0.4.9.15"   # ドラッグ&ドロップで EDAモジュラー構成
components/
├─ ga4/   … GA4 専用の分析パーツ
└─ ec/    … Eコマース専用パーツ
    └─ data_agent/  … AI エージェント実装各パーツは独立モジュール なので、
- 保守がラク(壊れにくい)
- 再利用しやすい(別ダッシュボードにも転用可)
- テストしやすい(単体検証OK)
- 拡張もしやすい(新モジュールを追加するだけ)
スマートキャッシュ
@st.cache_data(show_spinner="日次売上を集計中…")
def q_daily_sales(start: date, end: date) -> pd.DataFrame:
    ...重いクエリもキャッシュで高速レスポンス。 重複アクセスを抑え、BigQuery のコストも節約できます。
AI データエージェント ― 自然言語 → SQL → インサイト
「今月の売上トップ5商品は?」
        ↓
Gemini が意図を解析
        ↓
BigQuery SQL を自動生成・実行
        ↓
グラフと解説を表示エージェントは対話履歴を保持するので、 「じゃあ先月は?」などのフォローアップも自然に続けられます。
ユースケース
GA4 ダッシュボード
- トラフィック:セッション/PV/直帰率
- ユーザー行動:新規 vs リピーター、導線分析
- 異常検知:移動平均で急増減をアラート
- アトリビューション:チャネル別 CV
- 地域分析:国・都市別パフォーマンス
Eコマースダッシュボード
- 経営サマリ:売上推移・主要 KPI
- 商品パフォーマンス:売れ筋・死に筋
- 顧客分析:RFM、LTV、属性
- オペレーション:在庫・配送・地域別需要
- 利益分析:粗利率・カテゴリ別貢献度
はじめ方
git clone https://github.com/squadbase/streamlit-business-intelligence
cd streamlit-business-intelligence
uv sync            # 依存関係を一撃インストール
cp .env.example .env   # API キーを設定
streamlit run Home.py  # 起動!必要な環境変数
SERVICE_ACCOUNT_JSON_BASE64=(BigQuery サービスアカウント) GOOGLE_API_KEY=(Gemini) E2B_API_KEY=(コード実行用)
カスタマイズ/拡張
新しい分析モジュールを追加する
# components/your_domain/new_analysis.py
...
def new_analysis_component():
    st.subheader("新しい分析")
    ...AI エージェントに独自ツールを追加
@tool
def your_custom_tool(query: str) -> str:
    ...
all_tools = [execute_bigquery_sql, execute_python_code, your_custom_tool]デプロイ ― Squadbase でワンクリック
git push origin main   # プッシュするだけで自動デプロイ- メンバー限定アクセス:権限も数分で設定
- 自動 SSL & セキュアホスティング
- 利用分析 & フィードバック機構
- Git ベース CI/CD でバージョン管理も安心


