こんにちは、中村です。
みなさんは簡単にアプリをデプロイできるSquadbaseというサービスをご存じでしょうか?
個人的にはCloud runよりも使いやすかったので、今回は概要と使い方を紹介していきます。
目次
Squadbaseとは
Squadbase(スクワッドベース)は、社内向けのAIアプリケーションを安全かつ迅速にデプロイできるクラウドプラットフォームです。特に、StreamlitやNext.js、Dockerなどのフレームワークを利用したAIアプリの開発・運用に適しています。
主な特徴
- 簡単なデプロイとCI/CDの自動化
GitHubリポジトリと連携することで、コードをプッシュするだけでアプリが自動的にデプロイされます。これにより、開発者はコードの記述に集中でき、運用の手間を大幅に削減できます。 - セキュリティとアクセス制御
Squadbaseは、SAML/OIDC認証やロールベースアクセス制御(RBAC)を標準でサポートしており、アプリケーションへのアクセスをチームメンバーのみに制限できます。これにより、機密性の高いデータを扱う際にも安心です。 - ログ監視とユーザー分析
アプリケーションの実行ログやアクセスログを自動的に収集・分析し、ダッシュボードで可視化します。これにより、アプリの利用状況やパフォーマンスをリアルタイムで把握でき、改善点を迅速に特定できます。 - フィードバック機能
アプリケーションに組み込まれたコメント機能を通じて、ユーザーからのフィードバックを直接収集できます。これにより、ユーザーの声を迅速に反映させ、アプリの改善に役立てることができます。
簡単なアプリの作成はもちろん、StreamlitでBIを作成するのもよさそうですね!
使ってみた
準備
今回は以前書いたNotebookLMブログより、NotebookLMで作成したポッドキャストを聞きながらソースのPDFを閲覧できるアプリを作って動かしてみます。PDF/WAVファイルは後からロードできるようにします。
#構成
podcast_st/
├── data/ #アップロードした.PDF/WAVファイルを入れる空のフォルダ
├── app.py
├── requirements.txt
└── squadbase.yml
#app.py
import streamlit as st
import os
FILES_DIR = "data"
os.makedirs(FILES_DIR, exist_ok=True)
st.title("WAV再生 & PDFプレビューアプリ")
# アップロード機能(PDFとWAV)
uploaded_files = st.file_uploader(
"PDFまたはWAVファイルをアップロードしてください(複数可)",
type=["pdf", "wav"],
accept_multiple_files=True
)
if uploaded_files:
for uploaded_file in uploaded_files:
file_path = os.path.join(FILES_DIR, uploaded_file.name)
with open(file_path, "wb") as f:
f.write(uploaded_file.getbuffer())
st.success(f"{uploaded_file.name} をアップロードしました。")
st.divider()
# WAVファイル一覧取得
wav_files = [f for f in os.listdir(FILES_DIR) if f.endswith(".wav")]
if not wav_files:
st.warning("WAVファイルが見つかりません")
else:
selected_wav = st.selectbox("WAVファイルを選択してください", wav_files)
wav_path = os.path.join(FILES_DIR, selected_wav)
with open(wav_path, "rb") as audio_file:
st.audio(audio_file.read(), format="audio/wav")
# 同名のPDFがあるか確認
base_name = os.path.splitext(selected_wav)[0]
pdf_path = os.path.join(FILES_DIR, f"{base_name}.pdf")
if os.path.exists(pdf_path):
st.subheader("関連PDFプレビュー")
with open(pdf_path, "rb") as pdf_file:
st.download_button(
label="PDFを開く(別タブ)",
data=pdf_file,
file_name=os.path.basename(pdf_path),
mime="application/pdf"
)
st.info("PDFは別タブで表示されます。")
else:
st.info("関連するPDFファイルが見つかりません。")
#requirements.txt
streamlit
# squadbase.yml
version: '1'
build:
framework: streamlit
runtime: python3.12 # Supported: python3.9, python3.10, python3.11, python3.12, python3.13
package_manager: pip # Supported: pip, poetry, uv
entrypoint: app.py
作成できたらGitにpushする
Squadbaseでの設定

+Createをクリックして移動先のページでgithubアカウントを連携、先ほど作成したpodcast_stをimport

Domainなどの詳細設定をしたら設定はとりあえず完了です。
DeploymentタブからDeploymentが成功したか確認しましょう。

Readyが表示されていたら問題なくデプロイできています。
Projectタブに戻って、Openから実際に使ってみましょう!

すごくシンプルなアプリですが、ちゃんと動きました!

まとめ
今回はSquadbaseを紹介して実際にStreamlitのアプリを公開してみました。
簡単に自分が作ったアプリがデプロイできるのはすごくうれしいですね!
現在はまだ利用できませんが、今後ローカル LLM を選択可能な Ollama にも対応予定とのことで、非常に楽しみです!