お問い合わせ
5 分で読むことができます

【Snowflake】新機能「Streamlit in Snowflake」とは何者か!?

執筆者 uta 更新日時 2023年9月21日

【Snowflake】新機能「Streamlit in Snowflake」とは何者か!?

目次

こんにちは、utaです。
8月末に初めてコロナにかかってしまい後遺症の影響で参加したかったSnowflakeイベント「Data Cloud World Tour」に参加できず、ひたすら咳をする生活が続いています。。

そんな落ち込んだ暗い気持ちを吹き飛ばすほどのインパクトのあるSnowflake新機能が使えるようになったようなので紹介したいと思います!

はじめに

ついに、Snowflake上でアプリ開発ができる機能「Streamlit in Snowflake」がパブリックプレビューになりました!!🎉

この機能の登場で、データ活用を目的としたアプリケーション開発をSnowflakeのプラットフォーム上で行うことができます。

迅速なアプリ開発も魅力ですが、外部との連携を必要とせず、Snowflakeのセキュリティガバナンスの効いたデータクラウド上で安心安全にアプリ構築が行えることが最大の魅力だと思っています。

今年2月に行われた「SNOWDAY JAPAN 2023」にて、Christian Kleinerman氏から紹介のあった「Snowflakeは2014年アナリティクスの改革2018年コラボレーションの改革が行われた。2023年(現在)にはアプリ開発の改革が行われる※」という言葉通り、今まさにアプリ開発の改革が始まっています。

※SNOWDAY JAPAN 2023の「分析・コラボレーション・アプリケーション開発に革命を起こすSnowflakeの最新技術アップデート」セクションより

 

Streamlitとは

Streamlitは、機械学習とデータ サイエンス用のカスタム Web アプリを簡単に作成して共有できるオープンソースの Python ライブラリです。Streamlit を使用すると、強力なデータ アプリケーションを迅速に構築して展開できます。

https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit#label-streamlit-about

一般的にアプリ開発は、フロントエンド側はHTML/CSSやJavaScriptといったマークアップ言語とプログラミング言語、バックエンド側はPHPやPythonなどのプログラミング言語で行われています。

Streamlitは、純粋なPythonのみでデータアプリ開発が行えるPythonフレームワークです。フレームワークは他にもDjangoやFlaskなどがありますが、コード修正が即座にアプリ側に反映されるなど手軽に開発できることから、データサイエンスに領域でのデータアプリ開発で活用されています。

 

Streamlit in Snowflake

Streamlitのドキュメントを元に、「Streamlit in Snowflake」に関する情報をまとめてみました。


料金

Streamlit in Snowflakeで発生する料金はこれまでと同様に、ウェアハウスが稼働した時間によるクレジット請求です。ウェアハウスが稼働するタイミングはアプリ実行アプリから発行されるクエリ実行の2種類のようです。

注意する点として、ドキュメントに以下の記載があります。

This warehouse remains active while the app’s web-socket connection is active. The web-socket connection expires approximately 15 minutes after its last use.

Streamlit in Snowflakeで作成したアプリは、接続がアクティブである間はウェアハウスもアクティブのままになります。ウェアハウスが稼働した時間でクレジット加算されていくので、使い終わったらアプリ一覧の画面に戻るブラウザを閉じるかしておきましょう。
https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit#billing-considerations-for-sis

スクリーンショット 2023-09-20 190602

↑アプリが開いている間、Streamlitを実行するクエリは実行中になっています。

オブジェクトタイプ

構築するアプリはSnowflakeでは「Streamlit」というオブジェクトで管理されます。また、Streamlitのオブジェクトタイプは「スキーマオブジェクト」にあたるので、テーブルやビューと同様にロールによるセキュリティ保護が可能になります。

セキュリティ保護が可能なオブジェクトなので、アプリの作成・編集・操作をユーザごとに各権限を与えたロールを付与して、アプリを管理することができます。

スクリーンショット 2023-09-20 102317
https://docs.snowflake.com/ja/user-guide/security-access-control-overview#securable-objects

 

権限

Streamlitはスキーマオブジェクトのため、作成・編集にはDATABASEとSCHEMAUSAGE権限、あわせてスキーマ上でのSTREAMLITとSTAGECREATE権限が付与されたロールが必要なようです。

  • GRANT USAGE ON SCHEMA mydb.myschema TO ROLE myrole;
  • GRANT USAGE ON DATABASE mydb TO ROLE myrole;
  • GRANT CREATE STREAMLIT ON SCHEMA mydb.myschema TO ROLE myrole;
  • GRANT CREATE STAGE ON SCHEMA mydb.myschema TO ROLE myrole;

https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit#privileges-required-to-create-a-streamlit-app

 

始め方

前提として、Streamlit in Snowflakeでのアプリ開発にあたり、あらかじめ必要な権限が付与されているロールに切り替えておく必要があります。

Snowflakeにログインし、左のサイドメニューから「Streamlit」をクリック。
スクリーンショット 2023-09-20 095709

右上の「+ Streamlitアプリ」をクリック。以下の情報を入力し「作成」をクリック。スクリーンショット 2023-09-20 104638


すると、左にエディタ画面、右にアプリ画面が表示されます。
スクリーンショット 2023-09-20 105311

サンプルで作成されているアプリはスライダーを動かすことでQ3の値が変更される内容になっています。

▼ 変更前(60)
スクリーンショット 2023-09-20 105731

▼ 変更後(60→10)
スクリーンショット 2023-09-20 105708

 

試しに末尾にst.snow()を追記して実行すると、なんと雪が降ってきました!!
スクリーンショット 2023-09-20 110055

 

おわりに

本記事では、Snowflake上でアプリ開発が行える新機能「Streamlit in Snowflake」を紹介しました。

Snowflake上でアプリを構築できるようになったことで、データ活用を目的とするアプリ開発が迅速に行えるようになっただけでなく、アプリにSnowflakeの強固なセキュリティガバナンスを効かせることができるようになります。余計な作業に時間を割くこともなくなりデータ活用に注力できるようになるので、さらなるデータ活用の促進が期待されます。

SNOWDAY JAPAN 2023でのMike Scarpelli氏の「仕事の上にデータがくるわけではない、データの上に仕事がくるのである」という発言がずっと心に残っていました。

その言葉通り、Snowflakeでアプリ開発が行えるようになったことで、企業内のデータアプリエンジニアやAIエンジニアまでもがSnowflake上に集まる環境になることでしょう。Snowflakeにある企業のデータを用いた新たなデータ活用の道が今まさに開かれようとしています。

 

Snowflakeを体験してみませんか?

INSIGHT LABではSnowflake紹介セミナーを定期開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただけます。

詳細はこちら

uta

執筆者 uta

野良猫を見かけると追わずにはいられません。

4 分で読むことができます。
Snowflakeの料金体系|クレジットと費用最適化のポイントをご紹介
5 分で読むことができます。
【禁断の比較?】SnowflakeとTreasure Dataを比べてみました
1 分で読むことができます。
誤ってupdateしてしまったレコードをtime travelで復元する
3 分で読むことができます。
AWS Lambdaを使ってSnowflakeとSFTPサーバーを連携してみた
6 分で読むことができます。
【Snowflake】初めてStreamを使ったデータパイプライン構築をした話