エアークローゼット — 非エンジニアの内製化基盤(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 が無ければ flask と gunicorn を自動追加。Cloud Run で動く。
1-5. データベース:localStorage と Firestore の透過フォールバック¶
SandboxDB SDK が同一コードで両環境に対応:
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. 運用と将来展望¶
- OpenTelemetry + Grafana + Prometheus で可観測性を確保(→ エアークローゼット_46リポジトリ知識グラフとllm_observability_整理)。
- 会議データをプロジェクト単位で統合検索する構想、Slack メッセージとの横断検索、コードレビューへの活用(仕様チェック自動化)検討。
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