コンテンツにスキップ

エアークローゼット — 非エンジニアの内製化基盤(Sandbox MCP と AI議事録RAG)

作成日: 2026-07-07 出典 / きっかけ: 辻亮佑(エアークローゼットCTO)Zenn より2本 - 「非エンジニアの『作りたい』と『安全に公開したい』を両立するSandbox MCPを作った」(2026-04-28) - 「AI議事録では物足りない ── ナレッジの民主化・RAG検索まで全自動化した話」(2026-04-13) 関連: エアークローゼット_cortex_aiハーネス6部作_整理 / エアークローゼット_agentic_graph_rag_と社内mcp基盤_整理 / エアークローゼット_46リポジトリ知識グラフとllm_observability_整理 / 社内mcp共通基盤_認証認可ログ_整理 / ミラティブ_ashura_分析民主化aiエージェント基盤_整理


0. 要点(3行)

  • Sandbox MCP は「作る(Claude Code で誰でも作れる)」と「安全に公開する(ドメイン・SSL・認証・DB設計が壁)」の間に立つプラットフォーム。ワンコマンドで社内SSO付きの本番URLが2〜5分で生える。AIの実装の正しさに依存せず、4つの独立ゲートでセキュリティを担保する。
  • AI議事録RAG は Google Meet の録画・文字起こしを Slack へ自動共有し、過去会議を自然言語で検索できる仕組み。Meet標準 + Gemini文字起こし + Gemini Vision(画面共有) の3ソースを BigQuery Vector Search で横断検索する。
  • 両者に共通する設計思想は 「人間に使いやすい」から「AIに正しく使われる」設計へのシフト。ツールの description に AI向け runbook を埋め、非エンジニアの「作りたい」をビジネス価値に変える(cortex の民主化=エアークローゼット_cortex_aiハーネス6部作_整理 Part 5 と地続き)。

1. Sandbox MCP — 「作る」と「公開する」の間に立つ

1-1. 背景:作るのは簡単になったが、公開は難しいまま

Claude Code 等で非エンジニアもアプリを作れるようになった。だが「作る」→「安全に公開する」の段で壁が立つ:デプロイ先の決定、ドメイン取得、SSL証明書、認証実装、DB設計。ここをAIに任せるとセキュリティリスクが上がる。UIの一貫性やデータ混在の問題も生じる。

1-2. できること

非エンジニアが Claude Code で作ったアプリを「ワンコマンドで社内に安全に公開できる」プラットフォーム。

  • UI Kit による統一デザイン
  • ローカルで動作確認可能
  • ワンコマンドデプロイhttps://sbx-{nickname}--{app-name}.example.com/
  • Cloudflare Worker 上の自前 OAuth で社内SSOを強制
  • データは Firestore の専用DBに分離
  • 対応ランタイム:Python(Flask + gunicorn)/ Node.js / 静的HTML・SPA / カスタムDockerfile、Web・API・DB・定期実行まで

1-3. フロントエンド:sandbox-ui-kit で統一デザイン

sandbox-ui-kit リポジトリが sandbox-ui.css(デザイントークン)/ sandbox-ui.js(汎用JS)/ sandbox-db.js(SDK)/ 全コンポーネントのカタログを提供。MCPツールの説明文に「UI Kit の README を読む指示」を埋め込み、AIが自然に標準デザインを使うよう誘導する。

1-4. バックエンド:自動 Dockerfile 生成 → Cloud Run

ソースファイルの種類を自動判定して Dockerfile を生成。例:Python で requirements.txt が無ければ flaskgunicorn を自動追加。Cloud Run で動く。

1-5. データベース:localStorage と Firestore の透過フォールバック

SandboxDB SDK が同一コードで両環境に対応:

localhost   → localStorage(容量上限は数MB程度)
本番環境    → Firestore(名前空間分離)

1-6. インフラ:Wildcard DNS + Cloudflare Worker + 自前 Git Server

  • URL の決まり方sbx-{nickname}--{app-name}.example.com。DNS はワイルドカード*.example.com)、Universal SSL(ACM 不要)。
  • 即時公開:Cloudflare Worker が全トラフィックを受け、KV に登録されたルーティング情報で転送。
  • 自前 Git Server(GCE 上):GitHub 契約コスト削減、Google OAuth 認証を流用、Smart HTTP Protocol 対応、プッシュでデプロイ自動化。大規模アプリもプッシュ可能。
  • 利用フロー:①AIが sandbox_init_repo で Git リポジトリ初期化 → ②ローカルで git push(AIが自動実行)→ ③sandbox_publish でデプロイ → ④2〜5分でURL公開

1-7. セキュリティ:4つの独立したゲート

「AIの実装の正しさに依存しない」ために、独立した4ゲートで守る。

ゲート 内容
① 公開画面 Cloudflare Worker の自前 OAuth。@air-closet.com 以外は画面にアクセス不可
② デプロイ操作 MCP OAuth。nicknameサーバー側で強制注入し、他人のアプリ操作を防止
③ データ 名前空間分離。データパス sandbox_data/{nickname}--{app}/{collection}/{docId} で厳密に分離
④ 実行権限 Cloud Run IAM。専用SA(sandbox-run)に最小権限、sandbox という独立 Firestore DB のみアクセス可
  • ログ:Cloud Run ログを Logging Sink で BigQuery sandbox_logs データセットへ転送。アプリ自身がアクセスログを BQ で集計できる。
  • 補足:Cloudflare ZeroTrust の Free 枠は50ユーザー。超過時に自前 OAuth へ移行する判断。

1-8. ツール設計:説明文に AI向け runbook を書く

10個のツールsandbox_publish / status / schedule 等)。description には機能説明だけでなく AI向けの runbook を埋める。例:sandbox_publish の説明に「対応ランタイム・起動コマンド・ファイル送信方法・SandboxDB の使い方・UI Kit 活用法」を全部書く。→ Runbook パターンは エアークローゼット_agentic_graph_rag_と社内mcp基盤_整理 と同じ思想。

1-9. まとめの一言

「人間に使いやすい」から「AIに正しく使われる」設計へ。非エンジニアの成果物例:新規プロジェクトのモックアップ、インタラクティブレポート、KPIダッシュボード、業務効率化ツール。


2. AI議事録RAG — 会議データを知識基盤に変える

2-1. 課題と作ったもの

対面コミュニケーションの価値は高いが、コンテキストが失われる。そこで Google Meet の録画・文字起こしを Slack に自動共有し、過去会議を自然言語で検索する仕組みを構築。

使い方の流れ(4ステップ):①Chrome拡張で Google Calendar からワンクリック Meet 作成(約10秒) → ②会議終了時に自動で Slack 通知 → 数分後に録画・文字起こしリンク配信 → ③チャネルメンバー・参加者・Calendar招待者に自動権限付与 → ④Slack Bot で「文字起こし&画面共有内容の RAG 検索」。

2-2. 技術スタック

技術
フロントエンド Chrome Extension(Manifest V3)
API基盤 Cloud Run(Hono
イベント駆動 Cloud Pub/Sub → Cloud Run
Google Workspace 連携 Meet REST API / Drive API / Workspace Events API / Calendar API
AI/ML Vertex AI Embeddings(gemini-embedding-001)/ Gemini 3 Flash
データストア Firestore / BigQuery / Cloud Storage / Upstash Redis
インフラ Pulumi(TypeScript)

2-3. Deep Dive(9つの技術詳解)

① LIFO キャッシュ(Meet Space の事前プール) Meet 作成 API のレスポンスを 「1〜2秒 → 100ms 以下」 に短縮。Redis の ZSET でタイムスタンプをスコア管理。TTL 24時間、ターゲットサイズ3、最大サイズ5。あらかじめ Space をプールしておき、要求時は取り出すだけ。

② Chrome Extension 設計 初版の Slack /meet コマンドは利用率が低かった。Google Calendar の予定編集画面に配置して採用率が上がった。チャンネル選択は「個人選択履歴(Redis)→ 活発度スコア」で順序付け。

③ Domain-Wide Delegation(DWD) Workspace 管理者アカウントがサービスアカウントを通じて振る舞う。Meet Space と録画・文字起こしファイルを「共通アカウント」に集約。Calendar 検索は主催者→参加者と順次、DWD で全ユーザーのカレンダーにアクセス。

④ Workspace Events API + 日次バッチ Pub/Sub で「会議終了」「録画完了」「文字起こし完了」イベントを取得。Subscription の有効期限は7日の制約に対し、日次バッチで「Phase 1:30日以上前の無効化 → Phase 2:6日以上前の更新」を実行。

⑤ イベント処理パイプライン 冪等性確保のため 「権限付与 → フラグ設定」の順序(リトライ時にスキップされない)。3ハンドラ(会議終了 → 録画完了 → 文字起こし完了)。両アーティファクトが揃ったら Calendar に添付。

⑥ 3層権限付与モデル Layer 1:Slackチャンネルメンバー全員に閲覧権 / Layer 2:会議参加者(チャネル外ゲスト対応)/ Layer 3:Calendar 招待者。ドメインフィルタ(@air-closet.com)、冪等な権限付与、通知抑制。

⑦ RAG 検索パイプライン 3つのコンテンツソースを持つのが特徴: - ① Google Meet 標準文字起こし - ② Gemini による文字起こし - ③ Gemini Vision による画面共有分析

チャンク分割は「日本語(。!?)+英語(.!?)」の文境界検出、オーバーラップ100文字。Gemini 3 Flash は入力トークン最適化のため fps: 0.1(文字起こし)と fps: 0.2(画面共有) を使い分け。BigQuery Vector Search をチャンネルごとのテーブル分割でアクセス制御。

⑧ GCS 操作 Drive → GCS をストリーム処理でメモリ圧迫回避。SDK のマルチパートバグ回避のため REST API を直接呼ぶ。ファイル構造 gs://bucket/meet/{channelId}/{spaceId}/、90日でライフサイクル削除。

⑨ Slack 通知 2段階通知(「会議終了直後」→「アーティファクト完了時にスレッド返信」)。メッセージのタイムスタンプを Firestore に保存してスレッド連結。

2-4. 運用と将来展望


3. 2本を貫く設計思想

  • 「作れる」の次の壁は「安全に公開・共有する」。そこを AI の正しさに依存せず、独立したゲート(Sandbox の4ゲート)や権限モデル(議事録の3層)で機械的に担保する。
  • ツールの description は AI向け runbook。UI Kit を読ませる、ランタイム別の起動コマンドを書く等、AIが「正しく使う」ための手順書にする。
  • 非技術者の成果物をビジネス価値に接続する:Sandbox は KPIダッシュボード等の内製、議事録RAGは失われる会議コンテキストの資産化。どちらも「翻訳レイヤー(エンジニア依頼)」を減らす方向。
  • 既存の重い道具の弱点を実装で回避:Meet API の遅さ→LIFOプール、SDK バグ→REST 直叩き、Subscription 7日制約→日次バッチ。泥臭い実務判断が随所にある。

4. まとめ — いつ効くか(早見表)

状況 打ち手
非エンジニアが作ったアプリを安全に社内公開したい Sandbox MCP:ワンコマンド→SSO付き本番URL、4ゲートで担保
AIの実装ミスでも情報漏洩させたくない 独立ゲート(画面OAuth / デプロイ時nickname強制 / 名前空間分離 / IAM最小権限)
ローカルと本番でDBコードを分けたくない 透過フォールバック(localhost→localStorage / 本番→Firestore)
GitHub コスト・レート制限を避けたい 自前 Git Server(Google OAuth 流用・push でデプロイ)
会議の文脈が消えていく 録画・文字起こしを自動共有 + RAG検索(Meet標準+Gemini+Vision の3ソース)
会議作成 API が遅い LIFO 事前プール(1〜2秒→100ms以下)
画面共有の内容も検索したい Gemini Vision で画面分析し、文字起こしと同じベクトル空間へ

一言でいえば、cortex の「非エンジニアPR民主化」(エアークローゼット_cortex_aiハーネス6部作_整理 Part 5)をアプリ公開会議知識の側面から支える2つの基盤。共通するのは「AIに正しく使われるように設計し、安全は人間が敷いたレールで機械的に守る」という姿勢。


参考リンク

  • 非エンジニアの「作りたい」と「安全に公開したい」を両立するSandbox MCP: https://zenn.dev/aircloset/articles/65efe9614f8e73
  • AI議事録では物足りない ── ナレッジの民主化・RAG検索まで全自動化: https://zenn.dev/aircloset/articles/a820ce302ec5e9
  • Google Meet REST API(公式)
  • Vertex AI Embeddings(公式)

作成: 2026-07-07 / 最終更新: 2026-07-07