はじめに:Snowflakeの中でデータアプリが動く時代へ
「Snowflakeのデータをチームに見せたいけど、毎回CSVに落としてExcelで送るのは面倒…」「BIツールを買うほどじゃないけど、ちょっとしたダッシュボードがほしい」——そんな悩みをまるっと解決してくれるのが Streamlit in Snowflake (SiS) です。
Streamlitは、Pythonコードを数十行書くだけでWebアプリが作れる人気のフレームワーク。それをSnowflakeの中で直接ホスティング・実行できるようにしたのが Streamlit in Snowflake です。データの取り出し・アプリの配置・権限管理まで、ぜんぶSnowflakeの中で完結します。

Streamlit in Snowflakeの基本概念
普通のStreamlitとどう違う?
通常のStreamlitは自分のPCやサーバーで動かして、そこからSnowflakeへ接続する必要があります。一方 SiS は、アプリ自体がSnowflakeのオブジェクトとして存在し、Snowflakeのコンピュート (ウェアハウス) の上で動きます。つまり、別途インフラを用意せずに済み、データはSnowflakeの外に出ません。
- セキュア:データがSnowflake外に出ない。RBACでアプリ単位に権限を付与可能
- 低レイテンシ:同じクラウド内でデータと計算が完結
- 運用ラク:デプロイやサーバー管理が不要
仕組みのイメージ
SiSアプリは「データベース.スキーマ.STREAMLIT」というオブジェクトとして登録されます。実行時はウェアハウスがPythonコードを動かし、内部から Snowpark Python 経由でデータを取得します。
作ってみよう:最短ルートでHello App
ステップ1: Snowsightでアプリを新規作成
左メニューの「Projects」→「Streamlit」を開いて「+ Streamlit App」をクリック。アプリ名・データベース・スキーマ・使用するウェアハウスを指定するだけで、サンプル付きのアプリが立ち上がります。

ステップ2: Pythonコードを書く
下のサンプルは、テーブルからデータを取得してテーブル表示・棒グラフ・フィルターを置いた最小アプリです。
import streamlit as st
from snowflake.snowpark.context import get_active_session
st.title("🍱 売上ダッシュボード")
session = get_active_session() # 今のSnowflakeセッションを取得
df = session.table("SALES.PUBLIC.ORDERS").to_pandas()
# サイドバーで地域を絞り込み
region = st.sidebar.selectbox("地域を選択", df["REGION"].unique())
filtered = df[df["REGION"] == region]
st.metric("売上合計", f"¥{filtered['AMOUNT'].sum():,.0f}")
st.bar_chart(filtered, x="CATEGORY", y="AMOUNT")
st.dataframe(filtered)
ポイントは get_active_session() です。アプリはすでにSnowflakeにログインしているので、接続情報を書く必要はありません。
ステップ3: SQLでアプリを管理する
SiSはSQLからも操作できます。CI/CDに組み込みたい場合に便利です。
-- アプリ一覧の確認
SHOW STREAMLITS IN SCHEMA SALES.PUBLIC;
-- 権限を付与(分析チームにだけ閲覧させる)
GRANT USAGE ON STREAMLIT SALES.PUBLIC.SALES_DASH
TO ROLE ANALYST;
よくあるユースケース
- 社内向けダッシュボード:KPIモニタリング、在庫確認
- データサイエンスのデモ:Snowparkで作ったMLモデルをUI付きで配布
- データ入力フォーム:営業がコメントを入力して書き戻す軽量アプリ
- Cortex AIのチャットUI:LLM機能を使った社内アシスタント
使うときの注意点
- アプリ起動・操作のたびにウェアハウスのクレジットを消費します。AUTO_SUSPENDを短めに設定して節約しましょう。
- 使えるPythonライブラリはAnacondaチャネル経由で提供されているものに限られます (任意のpip installは不可)。
- アプリのファイル容量や同時実行数には上限があるため、大規模なBI用途より「軽量な業務アプリ」に向いています。
まとめ
Streamlit in Snowflakeを使えば、サーバー不要・データ移動不要でPython製のデータアプリをサクッと公開できます。SQLだけだと共有しづらかった分析結果も、ボタンやスライダー付きの「触れるダッシュボード」にすれば、ビジネスメンバーがぐっと使いやすくなります。まずはサンプルアプリを開いて、st.dataframe や st.bar_chart を1行ずつ追加するところから始めてみてください。
参考リンク
関連記事
- Snowpark Python入門|DataFrameの作り方と操作をやさしく解説 – SiSアプリ内のデータ操作で使うDataFrame APIを詳しく解説
- Snowpark入門|PythonでSnowflakeのデータ処理を書こう – SiSと相性抜群のSnowpark Pythonの基本
- Snowflakeコネクタ Python入門|アプリから接続する方法をやさしく解説 – 通常のStreamlit (Snowflake外) から接続する場合の比較に
- Snowflake CLI入門|基本コマンドとプロジェクト管理をやさしく解説 – Streamlitアプリのデプロイ自動化に役立つCLI

