Snowflake

Snowflake Native Apps完全解説|Application Package・Marketplace配布

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Snowflake Native Appsは、Snowflake上でアプリケーションを構築・パッケージ化し、Marketplace経由で他のSnowflakeアカウントに配布するフレームワークです。従来のSecure Data Sharingでは実現できなかった「データ+コード+UI」の統合配布を可能にします。

この記事では、Application Packageの構成・Provider/Consumerのロールモデル・Streamlit UI統合・セキュリティモデル・Marketplace配布の流れを体系的に解説します。

Native Appsとは?

Snowflake Native Apps Frameworkは、ProviderがSnowflake上で開発したアプリケーションをApplication Packageとしてパッケージ化し、Marketplaceまたは直接共有でConsumerアカウントに配布する基盤です。最大の特徴はデータの移動なしにアプリケーションがConsumerのアカウント内で動作する点です。

Native Appsに含められるオブジェクトは以下の通りです。

  • Stored Procedure / UDF(Python・Java・Scala・JavaScript・SQL)
  • Streamlit UI(インタラクティブなWebインターフェース)
  • テーブル・ビュー・マテリアライズドビュー
  • タスク・ストリーム・Snowpipe
  • 外部関数・API統合
  • 共有データ(Provider側データをRead-onlyで参照)

ProviderとConsumerの関係

Provider(提供者)

Providerはアプリケーションの開発者で、Application Packageを作成してコード・データ・権限設定を定義します。

-- Application Packageの作成
CREATE APPLICATION PACKAGE my_analytics_app;

-- ステージにファイルをアップロード
PUT file://manifest.yml @my_analytics_app.stage_content;
PUT file://setup.sql @my_analytics_app.stage_content;
PUT file://streamlit_app.py @my_analytics_app.stage_content;

-- バージョンの追加
ALTER APPLICATION PACKAGE my_analytics_app
  ADD VERSION v1_0
  USING '@my_analytics_app.stage_content';

Consumer(利用者)

ConsumerはNative Appをインストールして利用する側です。アプリケーションはConsumerのアカウント内のApplication Objectとして動作し、ConsumerのWarehouseでコードが実行されます。

-- Marketplaceまたは直接共有からインストール
CREATE APPLICATION my_installed_app
  FROM APPLICATION PACKAGE my_analytics_app
  USING VERSION v1_0;

-- アプリが要求する権限をGRANT
GRANT USAGE ON DATABASE my_data TO APPLICATION my_installed_app;
GRANT USAGE ON SCHEMA my_data.public TO APPLICATION my_installed_app;
GRANT SELECT ON ALL TABLES IN SCHEMA my_data.public TO APPLICATION my_installed_app;

Application Packageの3大構成要素

構成要素ファイル役割
マニフェストmanifest.ymlアプリのメタデータ・必要権限(Privileges)・セットアップスクリプトのパスを宣言
セットアップスクリプトsetup.sqlインストール時に自動実行されるSQL。スキーマ・SP・UDF・Streamlit UIを作成
アプリケーションファイルNamed Stage内Pythonスクリプト・Streamlitアプリ・設定ファイル等の非SQLリソース

manifest.yml の構造

manifest_version: 1
artifacts:
  setup_script: setup.sql
  default_streamlit: app_schema.my_streamlit_app

privileges:
  - CREATE DATABASE:
      description: "分析結果を格納するDBを作成"
  - IMPORTED PRIVILEGES ON SNOWFLAKE DB:
      description: "ACCOUNT_USAGE参照"

setup.sql の構造

-- アプリケーション内スキーマの作成
CREATE SCHEMA IF NOT EXISTS app_schema;

-- Application Roleの定義
CREATE APPLICATION ROLE app_user;
CREATE APPLICATION ROLE app_admin;

-- Streamlit UIの作成
CREATE STREAMLIT app_schema.my_streamlit_app
  FROM '/streamlit'
  MAIN_FILE = 'app.py';

-- Application Roleへの権限付与
GRANT USAGE ON SCHEMA app_schema TO APPLICATION ROLE app_user;
GRANT USAGE ON STREAMLIT app_schema.my_streamlit_app TO APPLICATION ROLE app_user;

Streamlit UI統合

Native AppsにはStreamlitによるインタラクティブなWebインターフェースを組み込めます。ConsumerはSnowsightからStreamlit UIにアクセスし、Snowflakeの認証・ロールベースのアクセス制御が自動的に適用されます。Streamlitアプリ内からSnowflakeのSQL実行・テーブル読み書き・グラフ描画をPythonコードで制御できます。

セキュリティモデル

Native Appsは最小権限の原則に基づく設計になっています。 アプリケーションはデフォルトではConsumerのデータにアクセスできず、Consumerが GRANT USAGEやREFERENCE_USAGEを明示的に許可した場合のみアクセスが可能になります。

アプリケーション内ではApplication Roleを使用します。 ProviderがsetRup.sql内でApplication Roleを定義し、ConsumerはインストールしたApplication ObjectのApplication Roleを自身のアカウントロールにGRANTします。

Marketplace配布と課金モデル

配布形態課金特徴
Free Listing無料誰でもインストール可能。リード獲得向き
Paid ListingUsage-based / Monthly従量課金または月額サブスクリプション
Personalized Listingカスタム特定のConsumerに限定配布

Data Sharing連携

Native AppsはSecure Data Sharingの仕組みを内部的に活用しています。Provider側のデータベースをApplication PackageのContent Schemaとして設定すると、ConsumerのアプリケーションからProvider側のデータをRead-onlyで参照できます。データの物理コピーは作成されず、ストレージコストはProvider側のみに発生します。

開発・デプロイフロー

  1. ローカル開発 — Snowflake CLIまたはSnowsightでPython/SQLコードを開発
  2. Application Packageの作成 — CREATE APPLICATION PACKAGEでコンテナを作成
  3. ファイルのアップロード — Named Stageにsetup.sql・manifest.yml・Pythonファイルを配置
  4. バージョンの追加 — ALTER APPLICATION PACKAGE ADD VERSIONでリリースバージョンを定義
  5. ローカルテスト — CREATE APPLICATION FROM PACKAGEで自アカウントにインストール・検証
  6. Marketplace公開 — Provider StudioでListingを作成し公開

問題例

Native Apps - セキュリティ

問題 1

Snowflake Native Appがインストール後にConsumerのテーブルにアクセスする仕組みとして正しいものはどれですか?

  1. アプリケーションはデフォルトでConsumerアカウント内の全テーブルにアクセスできる
  2. Provider側がsetup.sqlでConsumerのテーブル名を直接指定してアクセスする
  3. ConsumerがGRANT文でアプリケーションに対して特定のデータベース・スキーマへのアクセスを明示的に許可する
  4. manifest.ymlに記載した権限はインストール時に自動的にGRANTされる

正解: C

Native Appsは最小権限の原則に基づき、デフォルトではConsumerのデータにアクセスする権限を持ちません。ConsumerがGRANT USAGE ON DATABASE / SCHEMAやGRANT SELECTを明示的に実行して初めてアクセスが可能になります。manifest.ymlで必要権限を宣言できますが、Consumer側にGRANTの操作が必要で自動付与はされません。Provider側のsetup.sqlにはConsumer固有のオブジェクト名は含められないため、REFERENCEやConfiguration経由でConsumerがマッピングを設定する設計になっています。

Native Appsの問題を解いてみよう

日本語問題集でSnowPro試験対策ができます

無料で問題を解く

よくある質問(FAQ)

Native AppとSecure Data Sharingの違いは何ですか?

Secure Data Sharingはデータのみを読み取り専用で共有する仕組みで、ProviderのテーブルやビューをConsumerアカウントから参照できます。一方、Native Appsはデータに加えてビジネスロジック(Stored Procedure・UDF)やStreamlit UIもパッケージ化して配布できます。つまりNative Appsは「データ+コード+UI」を一体で提供するアプリケーション配布プラットフォームです。Consumerはアプリをインストールするだけで、Provider提供のロジックとUIをそのまま利用できます。Data SharingではConsumer側でロジックを別途構築する必要があります。

Application PackageのSetup ScriptとManifestの役割は?

manifest.ymlはアプリケーションのメタデータを定義するファイルで、バージョン情報・セットアップスクリプトのパス・必要なPrivileges(IMPORTED PRIVILEGES、CREATE DATABASE等)を宣言します。Consumerはインストール時にmanifestで宣言された権限をGRANTするかを判断します。setup.sqlはインストール時に自動実行されるSQLスクリプトで、アプリ内のスキーマ・テーブル・ビュー・Stored Procedure・UDF・Streamlit UIを作成します。Application Roleの定義もsetup.sql内で行い、Consumer側のロールにマッピングされます。

Native Appのコンピュートコストは誰が負担しますか?

Native AppはConsumerのアカウント内にインストールされ、Consumerのvirtual warehouseでコードが実行されるため、コンピュートコストはConsumerが負担します。Providerは開発・テスト環境でのコストを負担しますが、Consumer向けの実行コストは発生しません。Paid Listing(有料配布)の場合、Provider はアプリケーション利用料をMarketplace経由で課金できます。Provider側のデータはSecure Data Sharingの仕組みでコピーなしに共有されるため、データ転送コスト(同一リージョンの場合)も最小限です。

Native Apps 関連記事

Snowflake認定資格一覧

全Snowflake認定資格の概要・費用・難易度を比較

SnowPro Core試験完全解説

Snowflake資格の登竜門の攻略ガイド

Reader Accountsとは?

データ共有先のアカウント管理を解説

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (103件)
© 2026 NicheeLab All rights reserved.