アプリケーションパッケージへのStreamlitアプリの追加

このトピックでは、 Streamlit アプリをアプリケーションパッケージに追加する方法について説明します。

アプリケーションでのStreamlitの使用について

Streamlit は、データサイエンスと機械学習アプリケーションを開発するためのオープンソースのPythonフレームワークです。 Snowflake Native App Framework を使用すると、 Snowflake Native App にStreamlitアプリを組み込んで、ユーザーとのインタラクションやデータ可視化を提供することができます。

注釈

サポートされていないStreamlit機能については、 サポートされていないStreamlit機能 および Native App Frameworkで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
Copy

ただし、どのようなディレクトリ構造を使用するかは、使用する環境によって異なることに注意してください。

注釈

environment.yml ファイルはStreamlitアプリのメインファイルと同じレベルにある必要があります。

相対パスに関する詳細については、 外部コードファイルの参照 をご参照ください

マニフェストファイルへのStreamlitアプリの追加

アプリケーションパッケージにStreamlitファイルを含めるには、 manifest.yml ファイルに以下のエントリを追加します。

artifacts:
  ...
  extension_code: true
  ...
Copy

extension_code: true エントリは、アプリの拡張コードを有効にするために必要です。

configuration:
  ...
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

default_streamlit: app_schema.streamlit_app_na エントリは、Streamlitアプリを含むスキーマの場所を指定します。

セットアップスクリプトへのStreamlitアプリの追加

次の例では、セットアップスクリプト内で CREATE STREAMLIT を使用する方法を示します。

CREATE STREAMLIT app_schema.my_test_app_na
     FROM '/code_artifacts/streamlit'
     MAIN_FILE = '/streamlit_app.py';

GRANT USAGE ON SCHEMA APP_SCHEMA TO DATABASE ROLE app_public;
GRANT USAGE ON STREAMLIT APP_SCHEMA.MY_TEST_APP_NA TO DATABASE ROLE app_public;
Copy

この例では、 app_schema という名前のスキーマ内にStreamlitオブジェクトを作成します。 CREATE STREAMLIT コマンドは、 FROM 句で指定されたディレクトリ内で、 MAIN_FILE 句にある指定されたStreamlitアプリを使用します。

サポートされていないStreamlit機能

以下のStreamlit機能は現在サポートされていません。

Native App FrameworkでStreamlitを使用する際の制限事項

このセクションでは、 Snowflake Native App Framework でStreamlitを使用する際の制限について説明します。

カスタムコンポーネントは非対応

カスタムコンポーネントはサポートされていません。

統合バージョン管理または CI/CD システムは非対応

Streamlitアプリはバージョン管理システムと統合されていません。アプリ履歴やコード変更は永続的であり、ロールバックすることはできません。

GitHub、 GitLab、その他のバージョン管理ベンダーとの統合はありません。

アプリの編集はアプリの閲覧者により表示可能

開発者が編集中にアプリを実行すると、アプリの閲覧者に変更が即座に反映されます。

SeabornおよびMatlibplotライブラリのサポートなし

SeabornおよびMatlibplotライブラリはサポートされていません。どちらも、現在サポートされていないst.image()関数に依存しています。

Streamlitのトラブルシューティング

アプリが不明なエラーを表示する場合は、次のセクションで説明する解決策を確実に試してください。

利用規約の確認

SnowflakeでAnacondaが提供するStreamlitとパッケージを使用するには、 Snowflakeサードパーティ規約 に同意する必要があります。詳細については、 Anacondaのサードパーティパッケージの使用 をご参照ください。

ファイアウォール許可リスト

各Streamlitアプリは、固有のサブドメインを使用します。厳格なファイアウォールを使用している場合は、ファイアウォール許可リストに *.snowflake.app を追加します。このエントリをallowlistに追加すると、アプリは何の制限もなくSnowflakeサーバーと通信できるようになります。