> ## 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.

# エンティティスキーマ

> 検証ルールとフィールドタイプを持つ JSON スキーマを使用してカスタムデータ構造を定義します

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      開発者向けドキュメントを表示しています
    </div>

    <div className="dev-docs-banner-text">
      このドキュメントは、Base44 開発者プラットフォームで作業する開発者向けです。アプリエディタを使用したアプリデータの管理については、<a href="/Building-your-app/Managing-your-app-data">アプリデータの管理</a>を参照してください。
    </div>
  </div>
</div>

エンティティは、データ構造と検証ルールを記述する JSON スキーマを使用して定義されます。

## 基本のスキーマ構造

エンティティスキーマは、プロジェクトの entities ディレクトリ内の JSON ファイルで定義されます。デフォルトでは `base44/entities/` ですが、[プロジェクト構成](/developers/backend/overview/project-structure#config-jsonc)でパスをカスタマイズできます。ファイル名がエンティティ名を決定します。例えば、`Task.json` は `Task` エンティティを作成します。

エンティティスキーマのテンプレート:

```json theme={null}
{
  "name": "my_entity",
  "type": "object",
  "title": "My Entity",
  "description": "Description of what this entity represents",
  "properties": {
    "<field_name>": {
      "type": "<field_type>",
      "<option>": "<value>"
    }
  },
  "required": ["<field_name>"]
}
```

## 組み込みフィールド

すべてのエンティティレコードには、次のフィールドが自動的に含まれます。スキーマでこれらの名前のフィールドを定義しないでください。

| フィールド                     | 型        | 説明                |
| ------------------------- | -------- | ----------------- |
| `id`                      | string   | レコードの一意識別子        |
| `created_date`            | datetime | レコードが作成された日時      |
| `updated_date`            | datetime | レコードが最後に更新された日時   |
| `created_by`              | string   | レコードを作成したユーザーのメール |
| `created_by_id`           | string   | レコードを作成したユーザーの ID |
| `is_deleted` (internal)   | boolean  | ソフト削除フラグ          |
| `deleted_date` (internal) | datetime | レコードが削除された日時      |
| `is_sample` (internal)    | boolean  | レコードがサンプルデータかどうか  |
| `entity_name` (internal)  | string   | エンティティタイプの名前      |
| `app_id` (internal)       | string   | アプリ ID            |
| `environment` (internal)  | string   | `prod` または `dev`  |

内部フィールドは API レスポンスで返されませんが、[セキュリティルール](/developers/backend/resources/entities/security)で参照できます。

## スキーマフィールド

<ResponseField name="name" type="string">
  エンティティの文字列識別子。
</ResponseField>

<ResponseField name="type" type="string" required>
  `"object"` である必要があります。
</ResponseField>

<ResponseField name="title" type="string">
  ユーザーフレンドリーな表示名。
</ResponseField>

<ResponseField name="description" type="string">
  エンティティが表すものの説明。
</ResponseField>

<ResponseField name="properties" type="object" required>
  フィールド定義を含むオブジェクト。各フィールドには `type` とオプションの検証ルールがあります。
</ResponseField>

## フィールドタイプ

エンティティは、保存できる異なる種類のデータを定義するさまざまなフィールドタイプをサポートしています: `string`、`integer`、`number`、`boolean`、`array`、`object`。
`properties` 内の各フィールドには `type` が必要です。型に基づいて、検証オプションを追加できます。

### String フィールド

String フィールドは次のオプションをサポートします:

* **`minLength`** / **`maxLength`**: 最小および最大文字数を制御します。
* **`pattern`**: カスタム検証用の正規表現。
* **`format`**: 事前定義された形式。サポートされる値:
  * `"date"`
  * `"date-time"`
  * `"time"`
  * `"email"`
  * `"uri"`
  * `"hostname"`
  * `"ipv4"`
  * `"ipv6"`
  * `"uuid"`
* **`enum`**: 特定の許可された値に制限します。配列として定義: `["value1", "value2", "value3"]`。
* **`default`**: 提供されない場合のデフォルト値。

### Integer フィールド

Integer フィールドは次のオプションをサポートします:

* **`minimum`** / **`maximum`**: 包含的な下限/上限を設定します。
* **`default`**: 提供されない場合のデフォルト値。

### Number フィールド

Number フィールドは次のオプションをサポートします:

* **`minimum`** / **`maximum`**: 包含的な下限/上限を設定します。
* **`default`**: 提供されない場合のデフォルト値。

### Boolean フィールド

Boolean フィールドは次のオプションをサポートします:

* **`default`**: 提供されない場合のデフォルト値。

### Array フィールド

Array フィールドは次のオプションをサポートします:

* **`items`**: 配列要素のタイプ/スキーマを定義します。
* **`default`**: 提供されない場合のデフォルト配列値。

### Object フィールド

Object フィールドは次のオプションをサポートします:

* **`properties`**: オブジェクト内のフィールドを定義します。
* **`required`**: 必須プロパティ名のリスト。

## 必須フィールド

提供する必要があるフィールドを指定します:

```json theme={null}
{
  "required": ["title", "email"]
}
```

## 完全な例

完全なエンティティスキーマ:

```json theme={null}
{
  "name": "Task",
  "type": "object",
  "title": "Task",
  "description": "A task item with priority, due date, and completion status",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "priority": {
      "type": "string",
      "enum": ["low", "medium", "high"],
      "default": "medium"
    },
    "completed": {
      "type": "boolean",
      "default": false
    },
    "due_date": {
      "type": "string",
      "format": "date"
    },
    "tags": {
      "type": "array",
      "items": { "type": "string" }
    },
    "internal_notes": {
      "type": "string",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  },
  "required": ["title"],
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"created_by": "{{user.email}}"}
  }
}
```

## エンティティのデプロイ

エンティティスキーマを定義した後、[`entities push`](/developers/references/cli/commands/entities-push) を使用して Base44 にデプロイします。プロジェクト全体をデプロイするために [`deploy`](/developers/references/cli/commands/deploy) コマンドを実行すると、エンティティも自動的にデプロイされます。

デプロイ後、[SDK の `entities` モジュール](/developers/references/sdk/docs/type-aliases/entities)を使用してエンティティと対話できます。スキーマ内のエンティティ名は、大文字小文字を含めて、SDK でアクセスする方法と正確に一致する必要があります。例えば、スキーマに `"name": "Task"` がある場合、`base44.entities.Task.list()` としてアクセスする必要があります。

デプロイされたエンティティスキーマは、ダッシュボードの **Data** セクションで表示できます。

## 関連項目

* [User Schema](/developers/backend/resources/entities/user-schema): ユーザー認証のための特別な組み込みエンティティ
* [Security](/developers/backend/resources/entities/security): エンティティ用の行レベルセキュリティルールを構成
* [Project Structure](/developers/backend/overview/project-structure): エンティティスキーマがプロジェクトにどう適合するか

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