# マージルール

マージルールを使うと、変更リクエストをマージする前に満たす必要のある要件を定義できます。たとえば、特定のユーザーによるレビューが必要であったり、変更リクエストに件名や説明が必要であったりします。

これらのルールはコンテンツの品質を維持し、ドキュメントワークフロー全体で適切なレビュー գործընթացを確保するのに役立ちます。

マージルールを設定している場合、変更リクエストはマージされる前に自動的に評価されます。ルールが満たされない場合、要件が満たされるまでマージはブロックされます。

これにより、チームのコラボレーションとレビュー基準を強制する自動化された方法が提供されます。

## マージルールの使用

チームのワークフローに合わせて、さまざまなレベルでマージルールを設定できます。

### 組織レベルの設定

組織は、すべてのスペースが継承するデフォルトのマージルールを設定できます。これにより、複数のスペースで一貫性を保ちながら、必要に応じて各スペースが独自のルールをカスタマイズできます。

組織のマージルールを設定するには、サイドバー上部の組織メニューを開き、 **設定** <picture><source srcset="/files/CG9bVSmdbJnQxrYiNbRI" media="(prefers-color-scheme: dark)"><img src="/files/477fc6b8be7ea4395872753916f62023abc28604" alt=""></picture> を選択します。設定画面で、サイドバーの **マージルール** の下にある **組織** セクションを選択します。ここで、組織全体のマージルールを指定できます。

制限なしのマージを選ぶか、プリセット一覧から選択して、組織全体の変更リクエストに適用できます。

### スペースレベルの設定

組織全体のマージルールを有効にしているかどうかにかかわらず、各スペースはそのコンテンツやチーム構成に合わせた独自のマージ要件を持つことができます。

これにより、重要なドキュメントにはより厳しいルールを、下書きコンテンツにはより緩やかなルールを適用できます。

スペースのマージルールを設定するときは、次のいずれかを選べます。

* **継承する** 組織のマージルールを
* **カスタムルールを定義する** そのスペース専用の
* **マージルールを無効にする** 完全に

{% hint style="info" %}
組織のルールを継承すると、組織のマージルールへの変更は自動的にそのスペースに適用されます。
{% endhint %}

組織のマージルールを設定するには、 **アクションメニュー** <i class="fa-ellipsis">:ellipsis:</i> をエディタ左上で開き、次に **マージルール**を選択します。ここで、組織のマージルールを継承するか、そのスペース専用の新しいルールを設定するかを指定できます。

## ルールの評価

### ルールの仕組み

誰かが変更リクエストをマージしようとすると、GitBook は設定されたすべてのルールを順番に評価します。

* マージを許可するには、設定内のすべてのルールに合格する必要があります
* ルールは設定に表示されている順序で評価されます
* いずれかのルールが失敗すると、適切なエラーメッセージとともにマージがブロックされます
* バイパス機能を持つルールは、以前の失敗を上書きできます

### バイパスルール

一部のルールにはバイパス機能があります（たとえば **指定されたアクターに要件をバイパスすることを許可する**）。これらの特別なルールは他のルールの失敗を上書きできます。バイパスルールが true と評価された場合、他のルールが失敗していてもマージは許可されます。

## ベストプラクティス

マージルールを設定するときは、次の推奨事項を検討してください。

* **シンプルに始める**：まずは、少なくとも1件のレビューを必須にするなどの基本ルールから始めます。
* **段階的に拡大する**：チームが成長し、ワークフローが成熟するにつれて、より具体的な要件を追加します。
* **バイパスは慎重に使う**：信頼できる管理者にのみバイパス権限を付与します。
* **定期的に見直す**：チームの実際のワークフローパターンに基づいてルールを調整します。
* **まずテストする**：可能であれば、本番スペースに適用する前にテストスペースでルール変更を試します。

## 利用可能なルールの種類

### レビュー要件

<table><thead><tr><th width="279.703125">ルール</th><th>説明</th></tr></thead><tbody><tr><td><strong>少なくとも1件のレビューを必須にする</strong></td><td>マージされる前に、少なくとも1人のチームメンバーが変更リクエストをレビューしていることを保証します。</td></tr><tr><td><strong>すべてのレビューの承認を必須にする</strong></td><td>すべての <strong>完了した</strong> （要求されていない）レビューは承認でなければなりません。いずれかのレビュアーが変更を要求したり、変更リクエストを却下した場合、マージはブロックされます。</td></tr><tr><td><strong>指定されたアクターによるレビューを必須にする</strong></td><td>指定したすべてのユーザーからの承認が必要です。マージされる前に変更リクエストをレビューして承認しなければならない特定のチームメンバーを選択できます。</td></tr><tr><td><strong>指定されたアクターのいずれかによるレビューを必須にする</strong></td><td>指定したユーザーのうち少なくとも1人からの承認が必要です。複数の適格なレビュアーがいるが、グループから1件の承認だけでよい場合に便利です。</td></tr><tr><td><strong>Docs Agent のレビューを必須にする（近日公開）</strong></td><td>GitBook の AI エージェントによるレビューが必要です。これにより、マージ前にコンテンツ変更に対する自動品質チェックが行われます。</td></tr></tbody></table>

### 変更リクエストの要件

<table><thead><tr><th width="279.703125">ルール</th><th>説明</th></tr></thead><tbody><tr><td><strong>最新の変更リクエストを必須にする</strong></td><td>変更リクエストは、メインのコンテンツブランチと同期している必要があります。変更リクエストの作成後にメインコンテンツが更新された場合、マージ前にリベースまたは更新する必要があります。</td></tr><tr><td><strong>件名を必須にする</strong></td><td>変更リクエストには、説明的な件名/タイトルが必要です。件名が空の場合、マージはブロックされます。</td></tr><tr><td><strong>説明を必須にする</strong></td><td>変更リクエストには、どのような変更を行い、なぜ行ったのかを説明する内容が含まれている必要があります。</td></tr></tbody></table>

### 高度なオプション

<table><thead><tr><th width="279.703125">ルール</th><th>説明</th></tr></thead><tbody><tr><td><strong>指定されたアクターに要件をバイパスすることを許可する</strong></td><td>他のすべてのマージルール要件をバイパスできる特定のユーザーを指定できます。これは、管理者や、ルールを上書きする必要がある緊急時に便利です。</td></tr><tr><td><strong>カスタム式</strong></td><td>カスタム JavaScript 式を使って、高度なマージルールを作成できます。これにより、変更リクエスト、レビュー、マージしようとしているユーザーのプロパティにアクセスしながら、評価コンテキストに基づく複雑なロジックを定義できます。</td></tr></tbody></table>

#### カスタム式

カスタム式を作成すると、誰かが変更リクエストをマージしようとするたびに評価されます。式が `true`を返す場合、マージは許可されます。 `false`を返す場合、マージはブロックされます。

{% hint style="info" %}
カスタム式は標準の JavaScript 構文（ES2022）をサポートしており、最大長は1024文字です。
{% endhint %}

**使用可能なコンテキスト変数：**

* `changeRequest.subject` - 変更リクエストの件名/タイトル
* `changeRequest.description` - 変更リクエストの説明
* `changeRequest.outdated` - 変更リクエストが古くなっているかどうか（ブール値）
* `changeRequest.createdBy.id` - 変更リクエストを作成したユーザーのID
* `reviews` - レビューオブジェクトの配列。各オブジェクトには次が含まれます：
  * `reviews[].status` - レビューステータス（`"approved"` または `"changes_requested"`)
  * `reviews[].reviewer.id` - レビュアーのID
* `actor.id` - マージしようとしているユーザーのID

**一般的な式の例：**

{% code title="複数の承認済みレビューを必須にする" %}

```javascript
reviews.filter(r => r.status === "approved").length >= 2
```

{% endcode %}

{% code title="特定ユーザーの承認を必須にする" %}

```javascript
reviews.some(r => r.reviewer.id === "harry" && r.status === "approved")
```

{% endcode %}

{% code title="緊急変更には説明を必須にする" %}

```javascript
!changeRequest.subject.includes("[URGENT]") || !!changeRequest.description
```

{% endcode %}

{% code title="軽微な変更のみセルフマージを許可する" %}

```javascript
changeRequest.createdBy.id === actor.id ? changeRequest.subject.startsWith("[minor]") : true
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.com/docs/documentation/ja-gitbook-documentation/collaboration/merge-rules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
