第1章 Snowflake AI Data Cloudの特徴とアーキテクチャ / 想定学習時間:30〜40分 / 最終確認:2026年8月

1-9. アプリケーション開発機能

🎯 この節の学習目標

1. Snowpark:使い慣れた言語で、処理はSnowflake側で

Snowpark は、Python・Java・Scala から Snowflake のデータを処理するための開発フレームワークで、中心となるのが DataFrame API です。SQL を文字列で組み立てる代わりに、プログラミング言語のメソッドチェーンでデータ操作を記述できます。

Snowpark の最大のポイントは、書いたコードの処理がSnowflake 側(仮想ウェアハウス)にプッシュダウンされて実行されることです。DataFrame への操作は Snowflake が実行できる形に変換され、データのある場所で処理されます。つまり、データをクライアント側に取り出して処理する必要がない(データ移動が不要)ということです。

💡 具体例:Snowpark(Python)のDataFrame操作

# Snowpark Python の例:処理は Snowflake 側で実行される
df = session.table("sales")
result = (
    df.filter(df["amount"] > 1000)
      .group_by("region")
      .agg({"amount": "sum"})
)
result.show()  # この時点で Snowflake 上でクエリが実行される

filter や group_by の各操作はすぐには実行されず、結果が必要になった時点でまとめて Snowflake 上のクエリとして実行されます。大量データをネットワーク越しにクライアントへ転送せずに済むのが利点です。

Snowpark では、後述の UDF やストアドプロシージャを Python などで記述することもでき、データエンジニアリングから機械学習の前処理まで、SQL 以外の言語スキルを Snowflake 上でそのまま活かせます。

📝 試験のポイント

Snowpark のキーワードは「Python / Java / Scala の DataFrame API」と「処理は Snowflake 側にプッシュダウンされ、データ移動が不要」の2つです。「データをローカルにダウンロードして処理するライブラリ」という趣旨の選択肢は誤りと判断しましょう。

2. UDFとストアドプロシージャ:拡張の2本柱

Snowflake の処理をコードで拡張する仕組みとして、UDF(ユーザー定義関数)ストアドプロシージャがあります。詳細は 4-7 で学ぶため、ここでは役割の違いを整理します。

UDF(ユーザー定義関数)ストアドプロシージャ
役割入力値から値を計算して返す(クエリの中で使う部品)一連の手続き処理(DDL/DML の実行、条件分岐、ループなど)を実行する
呼び出し方SELECT 文などの式の中で呼び出すCALL 文で実行する
種類スカラー UDF(1値を返す)/テーブル関数(UDTF)(行の集合を返す)
記述言語SQL / Python / Java / JavaScript などSQL(Snowflake Scripting)/ Python / Java / JavaScript など
実行権限owner's rights(所有者の権限)または caller's rights(呼び出し元の権限)を選べる

ざっくり言えば、「計算して値を返す」なら UDF、「処理の流れを実行する」ならストアドプロシージャです。ストアドプロシージャは owner's rights / caller's rights という実行権限の考え方を持つ点も、UDF との違いとして覚えておきましょう。

3. Streamlit in SnowflakeとSnowflake Notebooks

機能内容
Streamlit in SnowflakePython で対話的なデータアプリ(ダッシュボード・社内ツールなど)を作り、Snowflake の中にそのままホストできる。別途の Web サーバーやホスティング環境は不要
Snowflake NotebooksSnowsight 内のノートブック環境。SQL と Python をセルごとに混在させて、探索的な分析や開発を進められる

どちらも「開発したものを動かす場所が Snowflake の中にある」点が共通しています。アプリやノートブックがデータと同じガバナンスの下に置かれるため、データの持ち出しや別インフラの管理が不要になります。

4. Native App Framework:アプリとして配布する

Native App Framework は、Snowflake 上で動く機能一式(ストアドプロシージャ、UDF、Streamlit アプリなど)を1つの「アプリ」としてパッケージ化し、他の Snowflake アカウントに配布するための仕組みです。

5. 開発機能の使い分け

何を作りたいか?開発言語・用途から機能を選ぶ
Python / Java / Scala でデータ処理パイプライン → SnowparkDataFrame API・処理は Snowflake 側にプッシュダウン
Python で対話的なデータアプリを社内公開 → Streamlit in SnowflakeSnowflake 内にホスト
SQL / Python を混ぜて探索的に分析 → Snowflake NotebooksSnowsight 内のノートブック
機能をパッケージ化して他アカウントに配布 → Native App Frameworkリスティング経由で配布

図:開発言語・用途とアプリケーション開発機能の対応

📝 試験のポイント

「Python でデータアプリを作って Snowflake 内にホストする」→ Streamlit in Snowflake、「Snowsight 内で SQL と Python のノートブック」→ Snowflake Notebooks、「機能をアプリとしてパッケージ化し配布」→ Native App Framework、という機能名と用途のマッチングで答えられるようにしておきましょう。

✅ この節のまとめ

練習問題

問1. Snowpark の説明として正しいものはどれか。

  1. データをすべてクライアントマシンにダウンロードしてから、ローカルの CPU で処理するライブラリである
  2. Python・Java・Scala の DataFrame API を提供し、処理は Snowflake 側にプッシュダウンされて実行されるため、データ移動が不要である
  3. SQL 専用の機能であり、プログラミング言語からは利用できない
  4. Snowflake の外部に専用の Spark クラスタを構築して処理を実行する仕組みである
解答と解説を見る

正解:B

Snowpark は Python / Java / Scala 向けの DataFrame API で、操作は Snowflake 側で実行できる形に変換され、仮想ウェアハウス上で処理されます。Aは誤りで、データ移動が不要な点こそ Snowpark の利点です。Cは誤りで、Snowpark はまさにプログラミング言語から使うための機能です。Dは誤りで、外部クラスタは不要で Snowflake のコンピュートで実行されます。

問2. UDF とストアドプロシージャの違いに関する説明として正しいものはどれか。

  1. UDF は CALL 文で実行し、ストアドプロシージャは SELECT 文の式の中で呼び出す
  2. UDF は値を計算して返す関数としてクエリの中で使い、ストアドプロシージャは一連の手続き処理を CALL 文で実行する
  3. ストアドプロシージャは SQL でしか書けず、Python では記述できない
  4. UDF には owner's rights と caller's rights の選択があり、ストアドプロシージャにはない
解答と解説を見る

正解:B

UDF は「値を返す部品」としてクエリの式の中で使い、ストアドプロシージャは手続き処理を CALL で実行します。Aは呼び出し方の説明が逆です。Cは誤りで、ストアドプロシージャは Python や Java などでも記述できます。Dは誤りで、owner's rights / caller's rights の実行権限を選ぶのはストアドプロシージャの特徴です。

問3. 「Python で作った対話的なダッシュボードアプリを、別のインフラを用意せず Snowflake の中でホストして社内に公開したい」という要件に最も適した機能はどれか。

  1. external テーブル
  2. Streamlit in Snowflake
  3. Snowpipe
  4. SYSTEM$CLUSTERING_DEPTH
解答と解説を見る

正解:B

Streamlit in Snowflake を使うと、Python で書いたデータアプリを Snowflake 内にそのままホストでき、別途の Web サーバーやホスティング環境は不要です。Aはテーブルタイプの一種、Cは継続的なデータロードの機能、Dはクラスタリング状態を確認するシステム関数であり、いずれもアプリのホスティングとは無関係です。

問4. Snowflake のアプリケーション開発機能に関する説明として正しいものを2つ選べ。

  1. Snowflake Notebooks は Snowsight 内で SQL と Python を使えるノートブック環境である
  2. Native App Framework は、機能をアプリとしてパッケージ化し、リスティング経由で他の Snowflake アカウントに配布できる
  3. Snowflake Notebooks を使うには、ノートブックサーバーを顧客のクラウドアカウントに別途構築する必要がある
  4. Native App Framework では、アプリの利用者は自分のデータをすべてプロバイダーのアカウントへ転送してから処理する必要がある
解答と解説を見る

正解:A・B

Snowflake Notebooks は Snowsight に組み込まれたノートブック環境で、SQL と Python をセルごとに使い分けられます(A)。Native App Framework はアプリをパッケージ化してリスティング経由で配布する仕組みです(B)。Cは誤りで、別途のサーバー構築は不要です。Dは誤りで、アプリを利用者側のアカウントにインストールし、データのある場所で実行する(データを渡すのではなくロジックが届く)のが Native Apps の発想です。