Bmob バックエンドクラウド — 統合エントリ
Bmob は BaaS(Backend as a Service)プラットフォームで、NoSQL データベース、ユーザーシステム、ファイルストレージ、クラウド関数、プッシュ通知、SMS、支払い、IM、AI などすぐに使えるバックエンド機能を提供します。クライアントは JavaScript / Android / iOS / Swift / Flutter / HarmonyOS / ミニプログラム / Python / Go / PHP / C#、および言語非依存の REST API と MCP Server をカバーします。
ルーティング順序:まず下の 入口決定木 → 次に ルーティング決定表(サブスキルを選択)→ 具体的な操作は shared/operation-routing.md(MCP / curl / SDK・REST の3チャネル対応表)を参照。
基本原則
1. コードを書く前に必ずプラットフォームを確認すること。 Bmob 各プラットフォームの SDK API は大きく異なります(JS は Bmob.Query、Android は extends BmobObject、旧 iOS は BmobObject objectWithClassName、純粋な Swift は try await BmobObject.save()、REST は HTTP /1/classes/<name>)。JS のコードを Android スキルの回答に含めないでください。まずユーザーが使用しているプラットフォーム/フレームワークを確認し、対応するサブスキルを読んでください。
2. フロントエンドで Master Key を漏洩しないこと。 Bmob コンソール → アプリケーションキーには4つの値があります。
| キー | セキュリティレベル | 使用シナリオ |
|---|---|---|
| Application ID | 公開 | 全エンド |
| REST API Key | 準公開 | ブラウザ / ミニプログラム / モバイル / サーバー |
| Secret Key | 中 | 暗号化認証シナリオのクライアント、SecurityCode と併用 |
| Master Key | 最高 | サーバー/バックグラウンドスクリプトのみ、フロントエンドバンドルには絶対に含めない |
3. コードを書く前に changelog を確認すること。 SDK は進化しており、メソッドシグネチャが変わることがあります。タスクを開始する前に、生の URL で対象プラットフォームの update_log.md(パスはサブスキルの metadata.docs_raw に記載)をフェッチし、破壊的変更がないことを確認してください。
4. エラー時にループリトライしないこと。 2〜3回同じ試行が失敗したら停止し、再評価してください。
- HTTP 4xx:まずレスポンスボディの
codeをbmob-error-codesで確認。 - 権限/ACL エラー(9015、9016 など):下記 P1 一時パス または将来の
bmob-acl-and-rolesを参照。 - 「メソッドが見つからない」:SDK バージョンが古いか、ドキュメントと使用中のバージョンが一致していない可能性があります。リポジトリのリリースページで比較してください。
入口決定木(まずここを通過)
flowchart TD
Start([ユーザーが Bmob と言及]) --> Err{レスポンスにエラー code がある?}
Err -->|はい| EC[bmob-error-codes]
Err -->|いいえ| Ship{コードをアプリに組み込んでリリースする?}
Ship -->|いいえ| McpCfg{IDE に Bmob MCP が設定されている?}
McpCfg -->|はい| MCP[bmob-mcp<br/>9 つの呼び出し可能ツール]
McpCfg -->|いいえ| RestOnly[bmob-database-restful<br/>または generate_code に MCP が必要]
Ship -->|はい| Plat{プラットフォーム / 言語?}
Plat -->|JS Web Node ミニプログラム Cocos JS など| JS[bmob-database-javascript]
Plat -->|Android Kotlin Java| AND[bmob-database-android]
Plat -->|Pure Swift BmobSwiftSDK async/await| SWIFT[bmob-database-swift]
Plat -->|Legacy iOS ObjC Swift Bridging Header| IOS[bmob-database-ios]
Plat -->|Flutter Dart| FLUT[bmob-database-flutter]
Plat -->|curl Python Go PHP バックエンドなど| REST[bmob-database-restful]
Plat -->|RN Uni-app JS ブリッジ| JS
JS --> Schema{実際のテーブルフィールド名が必要?}
AND --> Schema
SWIFT --> Schema
IOS --> Schema
FLUT --> Schema
REST --> Schema
Schema -->|はい、かつ MCP 設定済み| MCP
Schema -->|いいえ| Done([対応するサブスキルを読んでコードを書く])
MCP --> OpTable[[shared/operation-routing.md<br/>操作レベル3チャネル表]]
ルーティング決定表(該当したらすぐに対応するサブスキルを読む)
| ユーザーの意図 | プラットフォームの手がかり | ルーティング先 |
|---|---|---|
| テーブル構造の新規作成/表示、テストデータ追加、curl サンプル生成、データベース操作の実践 | — | bmob-mcp(前提:ユーザーが MCP を設定済み) |
| 静的サイトのワンクリックデプロイ(HTML や dist を CDN へ) | — | bmob-mcp → deploy_static_site(または generate_code で curl のみ生成) |
| NoSQL の CRUD、条件クエリ | JS / TS / Web / Node / 微信/支付宝/字节/QQ/百度ミニプログラム / クイックアプリ / Cocos Creator JS / Electron / Tauri / ハイブリッドアプリ | bmob-database-javascript |
| NoSQL の CRUD | Android / Kotlin / Java | bmob-database-android |
| NoSQL の CRUD | Pure Swift SDK / BmobSwiftSDK / SPM / import BmobSDK / async/await | bmob-database-swift |
| NoSQL の CRUD | 旧 iOS SDK / Objective-C / Swift Bridging Header / BmobSDK.xcframework / saveInBackground | bmob-database-ios |
| NoSQL の CRUD | Flutter / Dart(bmob_plugin) | bmob-database-flutter |
| NoSQL の CRUD / SDK のない任意の言語 | curl / Python / Go / PHP / C# / Rust / Ruby / Java バックエンド | bmob-database-restful |
| React Native / Uni-app(JS レイヤーで Bmob に接続) | — | bmob-database-javascript または REST |
| HarmonyOS ArkTS | — | bmob-database-restful + BmobDocs |
| ユーザー登録 / ログイン / SMS 認証 / サードパーティログイン / メール認証 | 各エンド | bmob-auth-{platform}(P1、下表参照) |
| ファイルアップロード/ダウンロード / CDN | 各エンド | bmob-storage-{platform}(P1、下表参照) |
| クラウド関数呼び出し | 各エンド | bmob-cloud-function-{platform}(P1、下表参照) |
| Bmob サーバー上で動作するクラウド関数コードの作成 | — | bmob-cloud-function-development |
| ACL / ロール / 権限 / 行レベルセキュリティ | — | bmob-acl-and-roles(P1、下表参照) |
| BQL クエリ(SQL ライクな構文) | 任意 | bmob-bql(P1、下表参照) |
| エラーコード 9015 / 101 / 105 などの調査 | — | bmob-error-codes |
| プッシュ / SMS / 支払い | 各エンド | bmob-push-* / bmob-sms-* / bmob-pay-*(P2) |
具体的な操作(CRUD、ログイン、アップロード、デプロイ)にどのチャネルを使うかは、shared/operation-routing.md を参照。
P1 / P2 未公開時の一時パス
専用サブスキルがインストールされていない場合、待たずに以下の表で代替手段を使用してください。
| ユーザーの意図 | 対象スキル(未公開) | 現在利用可能な代替手段 |
|---|---|---|
| 登録 / ログイン / SMS 認証コード | bmob-auth-* | REST:bmob-database-restful/references/users.md;MCP 設定済み:generate_code(登録 / ユーザー名パスワードログイン / 電話番号認証コードログイン など) |
| ファイルアップロード / CDN URL | bmob-storage-* | REST:references/files.md;MCP:generate_code → ファイルアップロード |
| 既存クラウド関数の呼び出し | bmob-mcp → invoke_cloud_function(実行);generate_code → クラウド関数呼び出し(curl) | REST /1/functions/<name>;各エンド SDK |
| クラウド関数ソースの作成とデプロイ | bmob-cloud-function-development | MCP 設定済み:deploy_cloud_function → invoke_cloud_function;MCP 未設定:BmobDocs + コンソール |
| ACL / 行レベルの権限 / 9015·9016 | bmob-acl-and-roles | REST 作成/更新ボディに "ACL":{...};bmob-error-codes |
| BQL / テーブル間集計 | bmob-bql | REST GET /1/cloudQuery;bmob-database-restful |
| プッシュ / SMS / 支払い | P2 スキル | REST 対応モジュール + BmobDocs mds ディレクトリツリー |
汎用セキュリティチェックリスト(全サブスキルで include される)
- 書き込み操作の対象テーブルには ACL を設定すること。設定しないと任意のユーザーが任意の行を変更可能(P1 一時パスの ACL 行を参照)。
- ブラウザ / ミニプログラム / モバイル端末では REST API Key(簡易認証 / SDK 方式 B) か Secret Key + セキュリティコード(暗号化認証 / SDK 方式 A) を使用し、Master Key は絶対に使用しない。
- 暗号化認証シナリオの
SecurityCodeはネットワークを介して送信しない;フロントエンドバンドルにハードコードせず、環境変数で注入するか BFF に配置する。 - batch / 全テーブルスキャン / テーブル間クエリは、SDK のループ呼び出しではなく優先的に BQL を使用する。
- エラー発生時は、レスポンスボディの
codeフィールドを見てbmob-error-codesを参照し、推測で対応しない。 - ユーザーパスワードフィールド(
password)は Bmob のみが書き込み可能。update は不可。パスワード変更は/1/updateUserPassword/<objectId>を経由すること。
FAQ とアンチパターン
- クロスプラットフォームのよくある質問(ルーティング、キー、MCP、データ形式):
shared/faq.md - 典型的なアンチパターン(ACL、Master Key、9015 の誤用など):
shared/anti-patterns.md - 英語エラーメッセージから数値コードを逆引き:
bmob-error-codes上部の「現象から逆引き」表
アプリケーションシナリオレシピ
エンドツーエンドのシナリオ(テーブル設計 + ACL + フロー)は、各プラットフォームスキルでコードを書く前に参照:
| シナリオ | レシピ |
|---|---|
| ブログ / CMS(Article + Author) | shared/recipes/blog-cms.md |
| ユーザー所有の Todo(行レベル ACL) | shared/recipes/user-owned-todos.md |
| 微信ミニプログラムログイン | shared/recipes/mini-program-login.md |
| アバターアップロード | shared/recipes/avatar-upload.md |
| サーバーサイド一括移行 | shared/recipes/server-migration.md |
| 静的サイト MCP デプロイ | shared/recipes/static-site-deploy.md |
ドキュメント検索方法
各サブスキルの references/snippets/(BmobDocs から同期)と手書きの references/*.md で大半の API をカバーしています。それでも不足する場合は、上流ドキュメントを取得してください。
-
ファイル名で特定:上流ドキュメントツリーは github.com/bmob/BmobDocs/tree/master/mds、
<feature>/<platform>/で構成。 -
エージェントが直接 fetch(GitHub レンダリング層をスキップ):
https://raw.githubusercontent.com/bmob/BmobDocs/master/mds/<feature>/<platform>/<filename>.mdWebFetch ツールで純粋なマークダウンとして直接取得可能。
-
ディレクトリ一覧(ファイル名不明時):
https://api.github.com/repos/bmob/BmobDocs/contents/mds/<feature>/<platform> -
それでも見つからない場合:https://www.bmobapp.com/docs/ を参照。
MCP との連携(重要)
ユーザーが IDE で Bmob MCP Server を設定している場合(shared/mcp-install-snippets.md 参照)、「実際のテーブル構造を読む / テストデータを書き込む / スキーマを設計する / サンプル curl を生成する / 静的サイトをワンクリックデプロイする」といったタスクは 優先的に MCP を使用し、推測でフィールド名を書かないこと。
tools/listは合計10ツール;エージェントは そのうち9つを呼び出す(get_project_tables、create_table、add_single_data、update_single_data、delete_single_data、generate_code、deploy_cloud_function、invoke_cloud_function、deploy_static_site)。mcp_endpoint_mcp_postはサーバー内部のループバック用なので、呼び出さないこと。- ツールパラメータと会話テンプレートの対応は
bmob-mcp;操作レベル3チャネル表はshared/operation-routing.md。
flowchart LR
User[User prompt mentioning Bmob] --> Root[bmob root SKILL.md]
Root --> OpRoute[shared/operation-routing.md]
Root -->|"schema / live CRUD / deploy"| McpSkill[bmob-mcp]
Root -->|JS / Web / Mini Program| JsDb[bmob-database-javascript]
Root -->|Android / Kotlin| AndDb[bmob-database-android]
Root -->|Pure Swift SDK| SwiftDb[bmob-database-swift]
Root -->|Legacy iOS / ObjC| IosDb[bmob-database-ios]
Root -->|Flutter / Dart| FlutDb[bmob-database-flutter]
Root -->|curl / Python / Go| RestDb[bmob-database-restful]
Root -->|error code| Err[bmob-error-codes]
McpSkill -.get_project_tables.-> JsDb
McpSkill -.get_project_tables.-> AndDb
McpSkill -.get_project_tables.-> SwiftDb
McpSkill -.get_project_tables.-> IosDb
McpSkill -.get_project_tables.-> FlutDb
McpSkill -.get_project_tables.-> RestDb
一言でまとめ
ユーザーが Bmob と言及 → 本スキルの 入口決定木 → ルーティング決定表 でサブスキル選択 →
shared/operation-routing.mdで MCP / curl / SDK・REST 選択;エンド固有のコードはサブスキルのreferences/と SKILL.md に記載。