Skip to main content
このページは AI コーディングエージェントスキルの一部で、人間ではなくエージェント向けに書かれています。人間向けの Base44 ドキュメントは デベロッパードキュメント を参照してください。

Base44 Coder

Base44 JavaScript SDK を使用して Base44 プラットフォーム上でアプリを構築します。

⚡ 即時アクション必須 - まずこれを読む

このスキルは “base44” への言及があった場合、または base44/ フォルダーが存在する場合に有効化されます。行動する前にドキュメントファイルを読んだり Web を検索したりしないでください。 最初のアクションは必ず以下のとおりです:
  1. カレントディレクトリに base44/config.jsonc が存在するか確認する
  2. 存在する 場合 (既存プロジェクトのシナリオ):
    • このスキル (base44-sdk) がリクエストを処理します
    • Base44 SDK を使用して機能を実装します
    • ユーザーが明示的に CLI コマンドを要求しない限り base44-cli は使用しません
  3. 存在しない 場合 (新規プロジェクトシナリオ):
    • プロジェクトの初期化のために base44-cli スキルに引き継ぎます
    • プロジェクトが初期化されるまで、このスキルは支援できません

このスキルと base44-cli の使い分け

base44-sdk を使う場合:
  • 既存の Base44 プロジェクトで機能を構築する
  • プロジェクトに base44/config.jsonc がすでに存在する
  • Base44 SDK のインポート (@base44/sdk) が存在する
  • Base44 SDK モジュールを使用して JavaScript/TypeScript コードを書く
  • 機能、コンポーネント、フィーチャーを実装する
  • ユーザーの発言: 「実装する」「機能を構築する」「機能を追加する」「〜のコードを書く」
  • ユーザーが「[タイプ] アプリを作成」と言い、かつ Base44 プロジェクトがすでに存在する
base44-sdk を使用しない場合:
  • ❌ 新規 Base44 プロジェクトの初期化 (代わりに base44-cli を使用)
  • ❌ Base44 構成のない空のディレクトリ
  • ❌ ユーザーが「新しい Base44 プロジェクト/アプリ/サイトを作成」と言い、プロジェクトが存在しない場合
  • npx base44 createnpx base44 deploynpx base44 login などの CLI コマンド (base44-cli を使用)
スキルの依存関係:
  • base44-sdk は Base44 プロジェクトが すでに初期化されている ことを前提とします
  • base44-cli は新規プロジェクトにおける base44-sdk前提条件 です
  • ユーザーが「アプリを作成」したく、Base44 プロジェクトが存在しない場合は、まず base44-cli を使用します
状態チェックのロジック: このスキルを選択する前に確認します:
  • IF (ユーザーが「アプリを作成/構築」または「プロジェクトを作る」と発言):
    • IF (ディレクトリが空、または base44/config.jsonc が存在しない): → base44-cli を使用 (プロジェクト初期化が必要)
    • ELSE: → base44-sdk を使用 (プロジェクトが存在、機能を構築)

クイックスタート

// In Base44-generated apps, base44 client is pre-configured and available

// CRUD operations
const task = await base44.entities.Task.create({ title: "New task", status: "pending" });
const tasks = await base44.entities.Task.list();
await base44.entities.Task.update(task.id, { status: "done" });

// Get current user
const user = await base44.auth.me();
// External apps
import { createClient } from "@base44/sdk";

// IMPORTANT: Use 'appId' (NOT 'clientId' or 'id')
const base44 = createClient({ appId: "your-app-id" });
await base44.auth.loginViaEmailPassword("user@example.com", "password");

⚠️ 重要: API をハルシネートしない

Base44 コードを書く前に、このテーブルまたは QUICK_REFERENCE.md と照合してメソッド名を検証してください。 Base44 SDK には独自のメソッド名があります。Firebase、Supabase、または他の SDK のパターンを想定しないでください。

認証 - 誤 vs 正

❌ 誤 (ハルシネート)✅ 正
signInWithGoogle()loginWithProvider('google')
signInWithProvider('google')loginWithProvider('google')
auth.google()loginWithProvider('google')
signInWithEmailAndPassword(email, pw)loginViaEmailPassword(email, pw)
signIn(email, pw)loginViaEmailPassword(email, pw)
createUser() / signUp()register({email, password})
onAuthStateChanged()me() (リスナーなし、必要時に呼び出し)
currentUserawait auth.me()

関数 - 誤 vs 正

❌ 誤 (ハルシネート)✅ 正
functions.call('name', data)functions.invoke('name', data)
functions.run('name', data)functions.invoke('name', data)
callFunction('name', data)functions.invoke('name', data)
httpsCallable('name')(data)functions.invoke('name', data)

インテグレーション - 誤 vs 正

❌ 誤 (ハルシネート)✅ 正
ai.generate(prompt)integrations.Core.InvokeLLM({prompt})
openai.chat(prompt)integrations.Core.InvokeLLM({prompt})
llm(prompt)integrations.Core.InvokeLLM({prompt})
sendEmail(to, subject, body)integrations.Core.SendEmail({to, subject, body})
email.send()integrations.Core.SendEmail({to, subject, body})
uploadFile(file)integrations.Core.UploadFile({file})
storage.upload(file)integrations.Core.UploadFile({file})

エンティティ - 誤 vs 正

❌ 誤 (ハルシネート)✅ 正
entities.Task.find({...})entities.Task.filter({...})
entities.Task.findOne(id)entities.Task.get(id)
entities.Task.insert(data)entities.Task.create(data)
entities.Task.remove(id)entities.Task.delete(id)
entities.Task.onChange(cb)entities.Task.subscribe(cb)

SDK モジュール

モジュール目的リファレンス
entitiesデータモデルの CRUD 操作entities.md
authログイン、登録、ユーザー管理auth.md
agentsAI 会話とメッセージbase44-agents.md
functionsバックエンド関数の呼び出しfunctions.md
integrationsAI、メール、ファイルアップロード、カスタム APIintegrations.md
analyticsカスタムイベントとユーザーアクティビティのトラッキングanalytics.md
appLogsアプリ内のユーザーアクティビティのログapp-logs.md
usersアプリへのユーザー招待users.md
asServiceRole.connectorsアプリスコープの OAuth トークン (サービスロールのみ)connectors.md
asServiceRole.ssoSSO トークン生成 (サービスロールのみ)sso.md
クライアントのセットアップと認証モードについては、client.md を参照してください。

TypeScript と型レジストリ

各リファレンスファイルには、モジュールのメソッド、パラメーター、戻り値の TypeScript インターフェースと型を含む「Type Definitions」セクションが含まれます。 型付きエンティティ、関数、エージェントの取得: Base44 CLI はプロジェクトリソース (エンティティ、関数、エージェント) から型を生成し、EntityTypeRegistryFunctionNameRegistryAgentNameRegistry への拡張を含め、手動セットアップなしにオートコンプリートと型チェックを取得できるようにプロジェクトに配線します。型の生成方法については、base44-cli スキルを使用してください。 手動での拡張: 代わりに .d.ts ファイルでレジストリを自分で拡張できます。entities.mdfunctions.mdbase44-agents.md の Type Definitions セクションを参照してください。

インストール

Base44 SDK をインストールします:
npm install @base44/sdk
重要: @base44/sdk パッケージのバージョンを推測またはハードコードしないでください。最新版を取得するために、バージョン指定子なしで常にインストールしてください。

クライアントの作成 (外部アプリ)

外部アプリでクライアントを作成する際は、必ずパラメーター名として appId を使用してください:
import { createClient } from "@base44/sdk";

// ✅ CORRECT
const base44 = createClient({ appId: "your-app-id" });

// ❌ WRONG - Do NOT use these:
// const base44 = createClient({ clientId: "your-app-id" });  // WRONG
// const base44 = createClient({ id: "your-app-id" });        // WRONG
必須パラメーター: appId (string) - Base44 アプリケーション ID オプションパラメーター:
  • token (string) - 事前認証されたユーザートークン
  • options (object) - 構成オプション
    • options.onError (function) - グローバルエラーハンドラー
エラーハンドラー付きの例:
const base44 = createClient({
  appId: "your-app-id",
  options: {
    onError: (error) => {
      console.error("Base44 error:", error);
    }
  }
});

モジュール選択

アプリデータを扱いますか?
  • レコードの作成/読み取り/更新/削除 → entities
  • ファイルからデータをインポート → entities.importEntities()
  • リアルタイム更新 → entities.EntityName.subscribe()
ユーザー管理?
  • ログイン/登録/ログアウト → auth
  • 現在のユーザーを取得 → auth.me()
  • ユーザープロフィールを更新 → auth.updateMe()
  • ユーザーを招待 → users.inviteUser()
AI 機能?
  • AI エージェントとチャット → agents (ログイン済みユーザー必須)
  • 新しい会話を作成 → agents.createConversation()
  • 会話を管理 → agents.getConversations()
  • AI でテキスト/JSON を生成 → integrations.Core.InvokeLLM()
  • 画像を生成 → integrations.Core.GenerateImage()
カスタムバックエンドロジック?
  • サーバー側コードを実行 → functions.invoke()
  • 管理者アクセスが必要 → base44.asServiceRole.functions.invoke()
外部サービス?
  • メール送信 → integrations.Core.SendEmail()
  • ファイルアップロード → integrations.Core.UploadFile()
  • カスタム API → integrations.custom.call()
  • アプリスコープの OAuth (アプリビルダーのアカウント) → asServiceRole.connectors.getConnection() (バックエンドのみ)
トラッキングと分析?
  • カスタムイベントをトラッキング → analytics.track()
  • ページビュー/アクティビティをログ → appLogs.logUserInApp()

一般的なパターン

データのフィルタリングとソート

const pendingTasks = await base44.entities.Task.filter(
  { status: "pending", assignedTo: userId },  // query
  "-created_date",                             // sort (descending)
  10,                                          // limit
  0                                            // skip
);

保護されたルート (認証チェック)

const user = await base44.auth.me();
if (!user) {
  // Navigate to your custom login page
  navigate('/login', { state: { returnTo: window.location.pathname } });
  return;
}

バックエンド関数の呼び出し

// Frontend
// ⚠️ invoke() returns the RAW axios response — your function's JSON is on `.data`,
//    NOT the top-level object. It also THROWS on non-2xx (error body at err.response.data).
const res = await base44.functions.invoke("processOrder", {
  orderId: "123",
  action: "ship"
});
const result = res.data; // ✅ e.g. res.data.success  (res itself is { data, status, headers, … })

// Backend function (Deno)
import { createClientFromRequest } from "npm:@base44/sdk";

Deno.serve(async (req) => {
  const base44 = createClientFromRequest(req);
  const { orderId, action } = await req.json();
  // Process with service role for admin access
  const order = await base44.asServiceRole.entities.Orders.get(orderId);
  return Response.json({ success: true });
});

サービスロールアクセス

バックエンド関数で管理者レベルの操作には asServiceRole を使用します:
// User mode - respects permissions
const myTasks = await base44.entities.Task.list();

// Service role - full access (backend only)
const allTasks = await base44.asServiceRole.entities.Task.list();
const token = await base44.asServiceRole.connectors.getAccessToken("slack");

フロントエンド vs バックエンド

機能フロントエンドバックエンド
entities (ユーザーのデータ)はいはい
authはいはい
agentsはいはい
functions.invoke()はいはい
functions.fetch()はいはい
integrationsはいはい
analyticsはいはい
appLogsはいはい
usersはいはい
asServiceRole.*いいえはい
asServiceRole.connectors (アプリ OAuth)いいえはい
asServiceRole.ssoいいえはい
バックエンド関数は Deno.serve()createClientFromRequest(req) を使用して、正しく認証されたクライアントを取得します。
このページは AI を使用して翻訳されました。最も正確で最新の情報については、英語版 を参照してください。