Streamlitを使用してアプリにフロントエンドエクスペリエンスを追加する¶
このトピックでは、 Streamlit アプリを Snowflake Native App 内に含める方法について説明します。
Streamlitおよび Snowflake Native App Framework について¶
Streamlit はオープンソースのPythonライブラリで、機械学習やデータサイエンスのためのカスタムウェブアプリを簡単に作成・共有できます。Streamlitを使用することで、強力なデータアプリケーションを迅速に構築し、展開することができます。
オープンソースライブラリの詳細については、 Streamlitライブラリのドキュメント をご参照ください。
Snowflake Native App Framework 内では、Streamlitを使用して以下を実行できます。
自身の Snowflake Native App が提供するデータをコンシューマーが視覚化できるフロントエンドのウェブアプリを作成する。
コンシューマーが権限を付与し、 Snowflake Native App で使用されるコンシューマーのアカウント内でオブジェクトへの参照を作成するユーザーインターフェイスを作成する。
詳細については、 コンシューマーアカウントでオブジェクトへのアクセスをリクエストする をご参照ください。
注釈
サポートされていないStreamlit機能については、 サポートされていないStreamlit機能 をご参照ください。
サポートされているStreamlitライブラリのバージョン¶
Snowflake Native App Framework はStreamlitライブラリのv1.22.0をサポートしています。Streamlitライブラリの新しいバージョンのサポートは、リリースされ次第提供されます。
サポートされている外部パッケージ¶
デフォルトでは、 Snowflake Native App 内に含まれるStreamlitアプリに、 python
、 streamlit
、 snowflake-snowpark-python
パッケージがコンシューマー環境でプリインストールされています。コンシューマー環境には、これらのパッケージが必要とする依存関係に対するアクセス権もあります。
サポートされていないStreamlit機能¶
Snowflake Native App でStreamlitを使用する場合、以下のStreamlit機能は現在サポートされていません。
カスタムコンポーネントはサポートされていません。
AWS PrivateLink または Azure PrivateLink を使用してStreamlitアプリにアクセスすることはサポートされていません。
-
st.set_page_config コマンドの
page_title
とpage_icon
のプロパティはサポートされていません。 以下を含む カスタムコンポーネント。
以下の実験的機能:
unsafe_allow_html=True
を使用した安全ではない HTML は、 st.markdown ではサポートされていません。インターネット経由のネットワークアクセス
アンカーリンク
Streamlitアプリの作成とテストのワークフロー¶
次のワークフローでは、Streamlitアプリをアプリケーションパッケージに含めるための典型的なワークフローを説明します。使用するアプリの要件によっては、これが反復プロセスになる可能性があります。
ネイティブアプリを開発します。
これには、Streamlitを使用してコンシューマーにアクセスしてもらうデータコンテンツの追加も含まれます。詳細については、 Snowflake Native App Frameworkワークフロー をご参照ください。
Streamlitライブラリのサポートされるバージョンとサポートされない機能を理解するために、以下のセクションを確認してください。
Streamlitアプリを開発します。
Streamlitオープンソースライブラリの使用に関する情報については、 Streamlitライブラリドキュメント をご参照ください。
Streamlitアプリのローカルディレクトリ構造を作成します。
Streamlitファイルのアプリ構造内における整理方法の推奨事項については、 Streamlitアプリのディレクトリ構造例 をご参照ください。
manifest.yml
ファイルにStreamlitアプリのエントリを追加します。Streamlitアプリを含めるには、
manifest.yml
ファイルにデフォルトのStreamlitファイル名を含める必要があります。詳細については、 マニフェストファイルへのStreamlitアプリの追加 をご参照ください。セットアップスクリプトに CREATE STREAMLIT ステートメントを追加します。
CREATE APPLICATION コマンドを実行すると、セットアップスクリプトは CREATE STREAMLIT ステートメントを実行してStreamlitオブジェクトを作成します。このオブジェクトには、Streamlitアプリが必要とするスキーマとPythonファイルが含まれています。
environment.yml
ファイルを構成して、Streamlitアプリに追加ライブラリを含めます。詳細については、 Streamlitアプリに付加的パッケージを追加する をご参照ください。
Streamlitファイル、
environment.yml
ファイル、セットアップスクリプト、manifest.yml
ファイルを名前付きステージにアップロードします。Streamlitコードファイルをアプリケーションパッケージに含めるには、そのファイルを名前付きステージにアップロードする必要があります。アプリケーションパッケージをテストします。
アプリケーションパッケージとStreamlitアプリで必要なファイルを作成した後、セットアップスクリプトと
manifest.yml
ファイルをテストするアプリケーションオブジェクトを作成します。詳細については、 Streamlitアプリを含んでいるアプリケーションパッケージをテストする をご参照ください。
Snowsight でStreamlitアプリを表示します。
Streamlitアプリをテストするには、アプリを Snowsight で表示します。 SnowsightでStreamlitアプリをテストする をご参照ください。
Streamlitアプリのディレクトリ構造例¶
他のPythonモジュールと同様に、Streamlitアプリをアプリケーションパッケージに追加するには、Streamlitのコードファイルを名前付きステージにアップロードする必要があります。ステージにファイルをアップロードする方法については、 PUT をご参照ください。
Snowflake Native App の複数のバージョンに対応するため、以下のようなディレクトリ構造を使用して、Streamlitアプリや関連するアプリケーションファイルを管理することを検討してください。
@test.schema1.stage1:
└── /
├── manifest.yml
├── readme.md
├── scripts/setup_script.sql
└── code_artifacts/
└── streamlit/
└── environment.yml
└── streamlit_app.py
作成するディレクトリ構造は、アプリと開発環境の要件に依存することに注意してください。
注釈
environment.yml
ファイルはStreamlitアプリのメインファイルと同じレベルにある必要があります。
相対パスに関する詳細については、 外部コードファイルの参照 をご参照ください
マニフェストファイルへのStreamlitアプリの追加¶
アプリケーションパッケージにStreamlitファイルを含めるには、 manifest.yml
ファイルに以下のエントリを追加します。
artifacts:
...
extension_code: true
default_streamlit: app_schema.streamlit_app_na
...
extension_code: true
エントリは、アプリの拡張コードを有効にするために必要です。
default_streamlit: app_schema.streamlit_app_na
エントリは、Streamlitアプリを含むスキーマの場所を指定します。
セットアップスクリプトでStreamlitオブジェクトを作成します。¶
次の例では、アプリのセットアップスクリプト内で CREATE STREAMLIT を使用する方法を示します。
CREATE OR REPLACE STREAMLIT app_schema.my_test_app_na
FROM '/code_artifacts/streamlit'
MAIN_FILE = '/streamlit_app.py';
GRANT USAGE ON SCHEMA APP_SCHEMA TO APPLICATION ROLE app_public;
GRANT USAGE ON STREAMLIT APP_SCHEMA.MY_TEST_APP_NA TO APPLICATION ROLE app_public;
この例では、 app_schema
という名前のスキーマ内にStreamlitオブジェクトを作成します。 CREATE STREAMLIT コマンドは、 MAIN_FILE 句で指定されたStreamlitアプリを使用します。ディレクトリの場所は FROM 句の値で指定されます。
アプリケーションパッケージ内でStreamlitアプリのディレクトリ構造を作成する方法については、 Streamlitアプリのディレクトリ構造例 をご参照ください。
この例では、スキーマとStreamlitオブジェクトに対して必要な権限をアプリケーションロールに付与しています。
Streamlitアプリに付加的パッケージを追加する¶
StreamlitアプリにPythonの付加的パッケージを追加するには、 environment.yml
ファイルを使用します。たとえば、 scikit-learn
ライブラリをStreamlitアプリに追加するには、 environment.yml
ファイルに以下を追加します。
name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
name
と channels
プロパティの両方が必要です。
また、 channels
プロパティでは、 - snowflake
キーが必要です。これは Snowflake Anaconda Channel 示します。
注釈
Snowflake Anacondaチャネル に記載されているパッケージのみをインストールできます。SnowflakeのStreamlitは、外部Anacondaチャネルをサポートしていません。
Streamlitアプリを含んでいるアプリケーションパッケージをテストする¶
Streamlitアプリを含んでいるアプリケーションパッケージをテストするには、次の例のように CREATE APPLICATION を実行することにより、名前付きステージ上のファイルを使用してアプリケーションオブジェクトを作成します。
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING '@hello_snowflake_code.core.hello_snowflake_stage';
テストする内容によっては、他の形式の CREATE APPLICATION を使用してアプリケーションオブジェクトを作成することもできます。たとえば、バージョンアップやアップグレードの一環としてStreamlitアプリをテストしたい場合があります。 アプリケーションオブジェクトを作成します。 をご参照ください。
SnowsightでStreamlitアプリをテストする¶
Streamlitアプリをテストするには、 Snowsight で以下を実行してアプリを表示します。
Snowsight にサインインします。
左側のナビゲーションバーで、 Streamlit を選択します
表示したいStreamlitアプリを選択します。
Snowsight でメインのStreamlitアプリを開きます。
オプション: 複数ページのStreamlitアプリを表示する場合は、タブを選択して追加ページを表示します。
Snowflake Native App Framework でStreamlitアプリをトラブルシューティングする¶
アプリが不明なエラーを表示する場合は、次のセクションで説明する解決策を確実に試してください。
利用規約を確認する¶
SnowflakeでAnacondaが提供するStreamlitとパッケージを使用するには、 外部製品規約 を確認する必要があります。詳細については、 Anacondaのサードパーティパッケージの使用 をご参照ください。
ファイアウォール許可リスト¶
各Streamlitアプリは、固有のサブドメインを使用します。厳格なファイアウォールを使用している場合は、ファイアウォール許可リストに *.snowflake.app を追加します。このエントリを許可リストに追加すると、アプリは何の制限もなくSnowflakeサーバーと通信できるようになります。