
SquadbaseはPythonでフルスタックなWebアプリを開発することができるフレームワークであるStreamlitをサポートしています。本記事では、Streamlitを使用してSquadbaseの機能を活用する方法を学びます。
Streamlitとは
Streamlitは、シンプルなPythonコードを使用して直感的なWebアプリケーションを迅速に開発できるオープンソースライブラリで、LLM APIとの統合により業務効率を高める社内AIアプリケーションに適しています。LLMを用いた業務アプリのニーズが高まる中、Streamlitの人気も高まり続けています。Streamlitを使うことで、OpenAIやAnthropicなどのLLM APIを用いたAIアプリを迅速に構築することができます。
Streamlitを用いてどんなことができるのか、詳しく知るために以下の記事も参考にしてください!
- Streamlitでユーザー認証を実現する方法4選
- Streamlitでダッシュボードを作る方法
- StreamlitでGoodleDriveとSharepointと接続したリアルタイムRAGを作る方法
- Streamlitで複数のLLMと接続したチャットボットを作る方法
なぜStreamlitとSquadbaseがベストフィットなのか
Streamlitのアーキテクチャは実装のシンプルさや高速なUI更新を実現する一方で、デプロイメントや本番運用にはまだまだ課題があります。実際に運用に耐えるインフラを構成しようとすると、AWSやGCPのサービスを10や20も組み合わせる必要があり、非常に骨の折れる作業が開発チームにのしかかり続けます。Squadbaseでは、本番運用のためのベストプラクティスを備えたインフラを1クリックで立ち上げることができます。
スケーラビリティ
Streamlitのアーキテクチャは実装のシンプルさや高速なUI更新を実現する一方で、各接続ごとにPythonスレッドとUIのオブジェクトを保持する必要があります。この構成は、同時接続数が多くなるとRAMの消費が直線増することに繋がります。更にサーバーをスケールした場合にも、ロードバランサー層で同じクライアントのリクエストを必ず同じサーバーに転送する設定を行う必要があるため、スケールアウト時にインフラの構成が複雑化します。
このように、Streamlitアプリをスケールしようとした時に発生する複雑なインフラ構成を、Squadbaseでは1クリックで実現できます。
ユーザー認証とアクセスコントロール
実際にStreamlitアプリを運用しようとなると、必ず認証やRBACの対応が必要になります。Streamlit公式でもOpenID Connectでの認証を提供していますが、外部のIDプロバイダーを構成し接続する必要があります。特に複数アプリを運用する必要があり、さまざまなパターンのロール管理を実現しようとすると、IDプロバイダーの構成は複雑化し、ユーザー管理のデータベースを構築することも避けられません。
Squadbaseを使えば、ユーザー認証をコードの追加なしに実現することができ、アプリごとのユーザーロール管理もダッシュボードから簡単に行うことができます。
運用支援機能
業務アプリの運用においては、アクセスログやランタイムログの収集とモニタリングや、ユーザーからのレポートラインの構築は不可欠です。Squadbaseでは、業務アプリを運用する際に必ず必要になるこれらの機能をプラットフォームとして提供しています。
Squadbaseの機能をStreamlitで使う
ユーザー認証
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']}")
if "admin" in user_info['roles']:
st.write("You are an admin")
else:
st.write("You are not an admin")
ロールによるアクセスコントロール
Squadbaseのチームに追加されたメンバーの一人一人に、それぞれのアプリでのみ有効な「プロジェクトロール」を付与することができます。プロジェクトロールは自由な文字列を設定できるので、あなたのニーズに合わせて柔軟なロール管理を実現できます。
設定されたロールは、上記のコード例のようにStreamlitのコードからアクセスすることができます。
利用分析
Squadbaseは、ユーザーのアクセスログを収集し、ユーザーアナリティクスを提供します。SquadbaseにデプロイしたStreamlitアプリを、チームメンバーがどのくらい利用しているのかを把握することができます。
Squadbaseの組み込みのユーザーアナリティクスを利用するために、コードを追加する必要はありません。Streamlitアプリをデプロイし、ダッシュボードからすぐにアナリティクスを確認することができます。
ログモニタリング
Squadbaseは、デプロイされたアプリのログを収集し、ログモニタリングを提供します。ログモニタリングを利用することで、アプリのデプロイやデプロイのバージョンごとのログを確認することができます。
フィードバック
Squadbase上にデプロイされたアプリには、自動でフィードバック用のコメントボックスが追加されます。チームメンバーはこのコメントボックスから、アプリのフィードバックを送信することができます。
SquadbaseにStreamlitをデプロイする
StreamlitをSquadbaseにデプロイするのはとても簡単です!次の3ステップで、継続的デプロイメントを構築することができます。
- プロジェクトに
squadbase.yml
を追加する - SquadbaseのダッシュボードからGithubリポジトリをインポートする
- コードをプッシュする
詳しくは、ドキュメントを参照してください!
まとめ
いかがでしたでしょうか!SquadbaseはStreamlitアプリをプロトタイプから本番運用へとシームレスに移行し、スケーラビリティと安定した運用体制、そしてアプリの改善による組織の進化をサポートします。
SquadbaseへのStreamlitアプリのデプロイはたった数分で完了します。ぜひサインアップして試してみてください!