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

# 多対多リレーションを作成する

> ジャンクションオブジェクトを使うことで、両側の多数のレコード同士をリンクできます。

多対多リレーションでは、両側で複数のレコードを相互に接続できます。 例えば、多数の連絡先が多数のプロジェクトで作業でき、各プロジェクトには多数の連絡先が紐づきます。

<Warning>
  **ベータ機能**: ジャンクションリレーションは現在ベータ版です。 このガイドに進む前に、**Settings → Community → Features** で有効にしてください。
</Warning>

<Note>
  この機能を使うには **Advanced mode** も有効にする必要があります（Settings の左下にあるトグルで切り替え）。
</Note>

## 多対多を使うタイミング

関係の両側が複数の接続を持ちうる場合に、多対多を使用します。

| 関係           | 例                                                  |
| ------------ | -------------------------------------------------- |
| 連絡先 ↔ プロジェクト | 1 人の連絡先は複数のプロジェクトで作業でき、1 つのプロジェクトには複数のチームメンバーがいます。 |
| 会社 ↔ タグ      | 1 社には複数のタグを付与でき、1 つのタグは複数の会社に適用できます。               |
| 商品 ↔ 注文      | 1 つの商品は複数の注文に含まれ、1 件の注文には複数の商品が含まれます。              |

## 仕組み

Twenty は多対多リレーションに **ジャンクションオブジェクト** パターンを使用します。 ジャンクションオブジェクトは 2 つのオブジェクトの間に位置し、接続を保持します。

```
People ←→ Project Assignments ←→ Projects
```

**Project Assignments** オブジェクト（ジャンクション）には次があります。

* People へのリレーション（多対1）
* Projects へのリレーション（多対1）

ジャンクションリレーションのトグルを有効にすると、Twenty は中間のジャンクションレコードを表示せず、リンクされたレコードを直接表示します。

## 前提条件

1. **ベータ機能で Junction Relations を有効化**: **Settings → Community → Features** に移動し、**Junction Relations** を有効にします
2. **Advanced mode を有効化**: 設定サイドバーの左下にある **Advanced mode** のトグルをオンにします
3. データモデルを計画する:
   * どの 2 つのオブジェクトを接続しますか？
   * ジャンクションオブジェクトの名称は何にしますか？

## ステップ 1: ジャンクションオブジェクトを作成する

まず、接続を保持する中間オブジェクトを作成します。

1. **設定 → データモデル** に移動します
2. **+ New object** をクリック
3. わかりやすい名前を付けます（例: "Project Assignment"、"Team Member"、"Product Order"）
4. "Name フィールドの作成をスキップ" をオンに切り替えます

<img src="https://mintcdn.com/twenty/GU5XQ-HzuEqBuBcI/images/user-guide/fields/new-pivot-object.png?fit=max&auto=format&n=GU5XQ-HzuEqBuBcI&q=85&s=1ba6cea5c035e5d3f6d2523d01dfd0af" alt="新規ピボットオブジェクト" width="561" height="648" data-path="images/user-guide/fields/new-pivot-object.png" />

5. **保存**をクリック

<Tip>
  **命名規則**: "Project Assignment" や "Team Membership" のように、関係を表す名前を使用してください。 これにより、データモデルが理解しやすくなります。
</Tip>

## 手順 2: オブジェクトとジャンクションの間にリレーションを作成する

2 つのオブジェクトそれぞれに、ジャンクションオブジェクトへのリレーションフィールドを追加します。

### 最初のリレーション（オブジェクト A → ジャンクション）

1. **Settings → Data Model** で最初のオブジェクトを選択します
2. **+ Add Relation** をクリック
3. ジャンクションオブジェクトを選択します（例: "Project Assignments"）
4. リレーションタイプを **One-To-Many** に設定します（1 人の連絡先は複数の割り当てにリンクできます）
5. フィールドに名前を付けます:
   * People 側のフィールド: 例: "Project Assignments"
   * ジャンクション側のフィールド: 例: "Person"
6. **保存**をクリック

### 2 番目のリレーション（オブジェクト B → ジャンクション）

1. **Settings → Data Model** で 2 番目のオブジェクトを選択します
2. **+ Add Relation** をクリック
3. ジャンクションオブジェクトを選択します（例: "Project Assignments"）
4. リレーションタイプを **1対多** に設定します（1 つのプロジェクトは複数の割り当てにリンクできます）
5. **"これはジャンクションオブジェクトへのリレーションです"** を有効にします

<img src="https://mintcdn.com/twenty/GU5XQ-HzuEqBuBcI/images/user-guide/fields/junction-relation-toggle.png?fit=max&auto=format&n=GU5XQ-HzuEqBuBcI&q=85&s=4881a71f610aeb67fb8002e87d738695" style={{width:'100%'}} width="516" height="72" data-path="images/user-guide/fields/junction-relation-toggle.png" />

6. フィールドに名前を付けます:
   * ジャンクション側のフィールド: 例: "Project"
   * Projects 側のフィールド: 例: "Team Members"
7. **保存**をクリック

## ステップ 3: ジャンクションリレーションの表示を設定する

次に、中間のジャンクションオブジェクトを介さずにリンクされたレコードを直接表示するよう、元のオブジェクトを設定します。

1. **設定 → データモデル** に移動します
2. 最初のオブジェクトを選択します（例: "People"）
3. ジャンクションオブジェクトを指すリレーションフィールド（例: "Project Assignments"）を見つけます
4. クリックしてフィールドを編集します
5. **"これはジャンクションオブジェクトへのリレーションです"** を有効にします
6. **Target relation** を選択します（例: "Project" — 反対側を指すジャンクション上のフィールド）
7. **保存**をクリック

## 結果

設定後:

* **Person** レコードでは、"Project Assignments" フィールドに **Projects** が直接表示されます（割り当てレコードではありません）
* **Project** レコードでは、"Team Members" フィールドに **People** が直接表示されます

ジャンクションオブジェクト自体は存在し接続を保存しますが、UI ではよりすっきりした多対多ビューとして表示されます。

## 例: People ↔ Projects

完全な手順は以下のとおりです:

### ジャンクションオブジェクトを作成する

* 名前: **Project Assignment**
* 説明: "人と、その人が携わっているプロジェクトを関連付けます"

### リレーションを追加する

1. **People → Project Assignment**
   * タイプ: 1対多
   * People 側のフィールド: "Project Assignments"
   * Assignment 側のフィールド: "Person"

2. **Projects → Project Assignment**
   * タイプ: 1対多
   * Projects 側のフィールド: "Team Members"
   * Assignment 側のフィールド: "Project"

### ジャンクションの表示を設定する

1. **People** オブジェクトで:
   * "Project Assignments" フィールドを編集
   * ジャンクションのトグルを有効にする
   * 対象: "Project"

2. **Projects** オブジェクトで:
   * "Team Members" フィールドを編集
   * ジャンクションのトグルを有効にする
   * 対象: "Person"

### 使ってみる

* Person レコードを開く → 紐づく Projects を直接表示
* Project レコードを開く → チームメンバーを直接表示
* どちら側からでも新しい接続を作成できます

## 接続に追加データを持たせる

ジャンクションオブジェクトは実体のあるオブジェクトなので、関係に関する情報を保存するためのカスタムフィールドを追加できます。

* **役割**: "Developer"、"Designer"、"Manager"
* **開始日**: プロジェクトに参加した日
* **割り当て時間**: 当該プロジェクトの週あたりの時間

このデータにアクセスするには、ジャンクションオブジェクトに直接移動するか、API 経由でクエリします。

## 制限事項

* **CSV インポート/エクスポート**: 多対多リレーションの直接インポートには対応していません。 代わりに、ジャンクションオブジェクトにレコードをインポートしてください。
* **フィルター**: 多対多リレーションでのフィルタリングには制限がある場合があります。

## 関連

* [リレーションフィールド](/l/ja/user-guide/data-model/capabilities/relation-fields) — リレーションタイプの解説
* [カスタムオブジェクトの作成](/l/ja/user-guide/data-model/how-tos/create-custom-objects) — オブジェクトの作成方法
* [リレーションフィールドを作成](/l/ja/user-guide/data-model/how-tos/create-relation-fields) — 基本的なリレーションの設定
