Squadbase

SquadbaseとStreamlitでお手軽アプリ開発

こんにちは、中村です。

みなさんは簡単にアプリをデプロイできるSquadbaseというサービスをご存じでしょうか?

個人的にはCloud runよりも使いやすかったので、今回は概要と使い方を紹介していきます。

目次

Squadbaseとは

Squadbase(スクワッドベース)は、社内向けのAIアプリケーションを安全かつ迅速にデプロイできるクラウドプラットフォームです。特に、StreamlitやNext.js、Dockerなどのフレームワークを利用したAIアプリの開発・運用に適しています。

主な特徴

  1. 簡単なデプロイとCI/CDの自動化
    GitHubリポジトリと連携することで、コードをプッシュするだけでアプリが自動的にデプロイされます。これにより、開発者はコードの記述に集中でき、運用の手間を大幅に削減できます。
  2. セキュリティとアクセス制御
    Squadbaseは、SAML/OIDC認証やロールベースアクセス制御(RBAC)を標準でサポートしており、アプリケーションへのアクセスをチームメンバーのみに制限できます。これにより、機密性の高いデータを扱う際にも安心です。
  3. ログ監視とユーザー分析
    アプリケーションの実行ログやアクセスログを自動的に収集・分析し、ダッシュボードで可視化します。これにより、アプリの利用状況やパフォーマンスをリアルタイムで把握でき、改善点を迅速に特定できます。
  4. フィードバック機能
    アプリケーションに組み込まれたコメント機能を通じて、ユーザーからのフィードバックを直接収集できます。これにより、ユーザーの声を迅速に反映させ、アプリの改善に役立てることができます。

簡単なアプリの作成はもちろん、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 にも対応予定とのことで、非常に楽しみです!

[Snowflake Summit 2025] Snowflake Postgres の続報と考察前のページ

Manusを使ってみたうえでManusに感想ブログを書かせてみた次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Python

    Streamlit in Snowflakeによるダッシュボード作成

    こんにちは、エクスチュアの石原です。前回に引き続き、Stre…

  2. Python

    Streamlitを使った簡単なデータアプリケーション作成ガイド

    はじめにこんにちは、エクスチュアの石原です。データサ…

  3. Python

    Streamlit in SnowflakeによるStreamlitアプリケーション作成

    こんにちは、エクスチュアの石原です。前回に引き続き、Pyth…

  4. Generative AI

    AIを使ったマーケティングゲームを作ってみた

    こんにちは、石原です。私の所属しているエクスチュア株式会社で…

カテゴリ
最近の記事
  1. dbt Projects on Snowflake使ってみた…
  2. Cortex Analystを使ってみた
  3. SnowflakeのAI_SQLと再帰CTEで遊ぶ(Snow…
  4. dbt Fusion使ってみた
  5. Manusを使ってみたうえでManusに感想ブログを書かせて…
  1. Firebase Analytics

    Firebase AnalyticsのデータをフラットなCSVに変換するETL処…
  2. IT用語集

    コロケーション(Collocation)って何?
  3. Python

    わかりやすいPyTorch入門①(学習と評価)
  4. Google Apps Script(GAS)

    GASを利用してWebスクレイピングをやってみよう
  5. Adobe Analytics

    次のページとは-Adobe Analyticsの指標説明
PAGE TOP