Streamlit
Streamlitを使用してSquadbaseの機能を活用する方法を学びます。
Streamlitは、シンプルなPythonコードを使用して直感的なWebアプリケーションを迅速に開発できるオープンソースライブラリで、LLM APIとの統合により業務効率を高める社内AIアプリケーションに適しています。
SquadbaseはStreamlitアプリケーションのデリバリーにおいて、以下のような機能・運用を実現します。
- 招待制のクラウド環境へのデプロイ
- 組み込みのユーザー認証
- ユーザーアナリティクス
- ログモニタリング
- ユーザーからのフィードバック収集
サンプル
Streamlitを使用して構築されたアプリケーションをチェックしてみてください。Squadbaseを使えば、このようなアプリをセキュアなクラウド環境にデプロイし、組織の中で安全に運用することができます。
リソース
Streamlitでのアプリ開発に役立つリソースを紹介します
Streamlitアプリを新規に作成する
本項では、Squadbaseチームのおすすめとして、uvを用いてStreamlitアプリを新規に作成する方法を紹介します。
まず、プロジェクトを初期化して、依存パッケージをインストールします。
uv init my-streamlit-app
cd my-streamlit-app
uv add streamlit
続いて、Streamlitプロジェクトを作成します。
streamlit init
すると、以下のようなファイルが作成されます。
import streamlit as st
st.title("🎈 My new app")
st.write(
"Let's start building! For help and inspiration, head over to [docs.streamlit.io](https://docs.streamlit.io/)."
)
このStreamlitアプリを実行するには、以下のコマンドを実行します。
streamlit run streamlit_app.py
これで、Streamlitアプリを開発する準備が整いました!🎉
Streamlitアプリに関する詳しい情報は、Streamlit公式ドキュメント をご覧ください。
Github連携を用いてデプロイする
squadbase.ymlを作成する
プロジェクトのコードベースのルートに squadbase.yml を作成します。たとえば、app.pyとpy_project.tomlがある場合は、以下のようになります。
例として、最もシンプルな squadbase.yml の内容は以下の通りです。
# squadbase.yml
version: '1'
build:
framework: streamlit
runtime: python3.11 # Supported: python3.9, python3.10, python3.11, python3.12, python3.13
package_manager: uv # Supported: pip, poetry, uv
entrypoint: app.py
package_managerにpip
を設定する場合は、requirements.txtをプロジェクトルートに用意してください。
squadbase.ymlのカスタマイズについては、こちらをご覧ください。
OSレベルのパッケージのインストールなどデプロイ環境をカスタマイズしたい場合や、ビルドされるDockerfileを確認したい場合はこちらをご覧ください。
Streamlitの場合は、deployment.provider
の値には、gcp
のみが使用できます。
GithubリポジトリをSquadbaseにインポートする
Squadbaseのダッシュボードのホーム画面から、Githubリポジトリをインポートします。インポートが完了すると、自動的にデプロイが開始されます。
プッシュしてデプロイ
アプリに変更を加えて、Githubリポジトリにプッシュしてデプロイします。プッシュが完了すると、自動的に新しいバージョンのデプロイが開始されます。
Squadbaseの機能を活用する
Squadbaseはデプロイメントだけでなく、組織向けアプリの開発・運用に便利な機能を提供しています。
ユーザー認証とメンバー管理
Squadbaseにデプロイされたアプリに、Squadbase上のチームメンバーがアクセスすると自動的にユーザー認証が行われます。アプリの公開設定がパブリックでない場合、この認証を通過したユーザーのみがアプリにアクセスできます。また、アプリへのアクセスを持つユーザーには、「プロジェクトロール」という設定値を与えることができます。
StreamlitのPythonコードからも、プロジェクトロールを含むユーザー情報にアクセスすることができ、アプリの挙動をユーザーのロールに応じてカスタマイズすることができます。
Streamlit上からSquadbaseのユーザー情報を取得するには、以下のように実装してください。
# app.py
import streamlit as st
import squadbase.streamlit as sq
user_info = sq.auth.get_user(mock_data={})
st.write(f"Hello, {user_info['firstName']} {user_info['lastName']}")
ユーザー情報の取得は、Squadbaseにデプロイされた時のみ有効です。
そのため、ローカル環境では以下のようにモック情報を設定してください。
# app.py
import streamlit as st
import squadbase.streamlit as sq
mock_user_data = {
"username": "testuser",
"firstName": "Test",
"lastName": "User",
"iconUrl": None,
"email": "test@example.com",
"roles": ["admin"]
}
user_info = sq.auth.get_user(mock_data=mock_user_data)
st.write(f"Hello, {user_info['firstName']} {user_info['lastName']}")
if "admin" in user_info['roles']:
st.write("You are an admin")
else:
st.write("You are not an admin")
Streamlit上からSquadbaseのユーザー情報を取得するためには、squadbase-streamlitをインストールする必要があります。
ユーザーアナリティクス
Squadbaseは、ユーザーのアクセスログを収集し、ユーザーアナリティクスを提供します。SquadbaseにデプロイしたStreamlitアプリを、チームメンバーがどのくらい利用しているのかを把握することができます。
Squadbaseの組み込みのユーザーアナリティクスを利用するために、コードを追加する必要はありません。Streamlitアプリをデプロイし、ダッシュボードからすぐにアナリティクスを確認することができます。
ログモニタリング
Squadbaseは、デプロイされたアプリのログを収集し、ログモニタリングを提供します。ログモニタリングを利用することで、アプリのデプロイやデプロイのバージョンごとのログを確認することができます。
フィードバック
Squadbase上にデプロイされたアプリには、自動でフィードバック用のコメントボックスが追加されます。チームメンバーはこのコメントボックスから、アプリのフィードバックを送信することができます。