> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Base44 Coder

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

<Warning>
  このページは AI コーディングエージェントスキルの一部で、人間ではなくエージェント向けに書かれています。人間向けの Base44 ドキュメントは [デベロッパードキュメント](/developers) を参照してください。
</Warning>

# 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 create`、`npx base44 deploy`、`npx 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** を使用 (プロジェクトが存在、機能を構築)

## クイックスタート

```javascript theme={null}
// 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();
```

```javascript theme={null}
// 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](https://docs.base44.com/developers/skills/base44-sdk/references/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()` (リスナーなし、必要時に呼び出し)           |
| `currentUser`                           | `await 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](https://docs.base44.com/developers/skills/base44-sdk/references/entities.md)           |
| `auth`                     | ログイン、登録、ユーザー管理                  | [auth.md](https://docs.base44.com/developers/skills/base44-sdk/references/auth.md)                   |
| `agents`                   | AI 会話とメッセージ                     | [base44-agents.md](https://docs.base44.com/developers/skills/base44-sdk/references/base44-agents.md) |
| `functions`                | バックエンド関数の呼び出し                   | [functions.md](https://docs.base44.com/developers/skills/base44-sdk/references/functions.md)         |
| `integrations`             | AI、メール、ファイルアップロード、カスタム API      | [integrations.md](https://docs.base44.com/developers/skills/base44-sdk/references/integrations.md)   |
| `analytics`                | カスタムイベントとユーザーアクティビティのトラッキング     | [analytics.md](https://docs.base44.com/developers/skills/base44-sdk/references/analytics.md)         |
| `appLogs`                  | アプリ内のユーザーアクティビティのログ             | [app-logs.md](https://docs.base44.com/developers/skills/base44-sdk/references/app-logs.md)           |
| `users`                    | アプリへのユーザー招待                     | [users.md](https://docs.base44.com/developers/skills/base44-sdk/references/users.md)                 |
| `asServiceRole.connectors` | アプリスコープの OAuth トークン (サービスロールのみ) | [connectors.md](https://docs.base44.com/developers/skills/base44-sdk/references/connectors.md)       |
| `asServiceRole.sso`        | SSO トークン生成 (サービスロールのみ)          | [sso.md](https://docs.base44.com/developers/skills/base44-sdk/references/sso.md)                     |

クライアントのセットアップと認証モードについては、[client.md](https://docs.base44.com/developers/skills/base44-sdk/references/client.md) を参照してください。

### TypeScript と型レジストリ

各リファレンスファイルには、モジュールのメソッド、パラメーター、戻り値の TypeScript インターフェースと型を含む「Type Definitions」セクションが含まれます。

**型付きエンティティ、関数、エージェントの取得:** Base44 CLI はプロジェクトリソース (エンティティ、関数、エージェント) から型を生成し、`EntityTypeRegistry`、`FunctionNameRegistry`、`AgentNameRegistry` への拡張を含め、手動セットアップなしにオートコンプリートと型チェックを取得できるようにプロジェクトに配線します。型の生成方法については、**base44-cli** スキルを使用してください。

**手動での拡張:** 代わりに `.d.ts` ファイルでレジストリを自分で拡張できます。[entities.md](https://docs.base44.com/developers/skills/base44-sdk/references/entities.md)、[functions.md](https://docs.base44.com/developers/skills/base44-sdk/references/functions.md)、[base44-agents.md](https://docs.base44.com/developers/skills/base44-sdk/references/base44-agents.md) の Type Definitions セクションを参照してください。

## インストール

Base44 SDK をインストールします:

```bash theme={null}
npm install @base44/sdk
```

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

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

外部アプリでクライアントを作成する際は、**必ずパラメーター名として `appId` を使用してください**:

```javascript theme={null}
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) - グローバルエラーハンドラー

**エラーハンドラー付きの例:**

```javascript theme={null}
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()`

## 一般的なパターン

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

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

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

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

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

```javascript theme={null}
// 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` を使用します:

```javascript theme={null}
// 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)` を使用して、正しく認証されたクライアントを取得します。

<Note>このページは AI を使用して翻訳されました。最も正確で最新の情報については、[英語版](/) を参照してください。 </Note>
