# 第 4 章：フォームと詳細 — 入力・表示を一気に完成

前の章ではチケット一覧を構築し、簡易フォームでテストデータを入力しました。この章では**フォーム体験を改善**します。[フォームブロック](/interface-builder/blocks/data-blocks/form)のフィールドレイアウトの最適化、[詳細ブロック](/interface-builder/blocks/data-blocks/details)の追加、[連動ルール](../../interface-builder/linkage-rule.md)の設定を行い、さらに[変更履歴](https://docs.nocobase.com/cn/record-history/)でチケットの変更を追跡できるようにします。

:::tip
本章 4.4 節「[変更履歴](https://docs.nocobase.com/cn/record-history/)」機能は[プロフェッショナル版](https://www.nocobase.com/cn/commercial)に含まれています。この節をスキップしても、後続の章の学習には影響しません。
:::

## 4.1 新規チケットフォームの改善

前の章で簡単に使える新規フォームを作成しました。ここではそれを改善します。フィールドの順序を調整し、デフォルト値を設定し、レイアウトを最適化します。前の章のクイックフォーム部分をスキップした方でも大丈夫です。ここではフォームをゼロから作成する手順も含めて説明します。

### 「新規作成」アクションボタンの追加

1. UI エディターモードになっていることを確認します（右上のスイッチをオン）。
2. 「チケット一覧」ページに入り、テーブルブロック上部の **「[アクション](/interface-builder/actions)（Actions）」** をクリックします。
3. **「追加」** アクションボタンにチェックを入れます。
4. テーブル上部に「追加」ボタンが表示されます。クリックすると[ポップアップ](../../interface-builder/actions/types/pop-up.md)が開きます。

![04-forms-and-details-2026-03-13-09-43-54](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-09-43-54.png)

### ポップアップ内のフォーム設定

1. 「追加」ボタンをクリックしてポップアップを開きます。
2. ポップアップ内で **「[ブロック](/interface-builder/blocks)を作成（Add block）」→ データブロック → フォーム（追加）** をクリックします。
3. **「現在の[データテーブル](/data-sources/data-modeling/collection)（Current collection）」** を選択します。ポップアップは対応するデータテーブルのコンテキストに紐づいているため、手動で指定する必要はありません。

   ![04-forms-and-details-2026-03-13-09-44-50](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-09-44-50.png)
4. フォーム内で **「[フィールド](/data-sources/data-modeling/collection-fields)（Fields）」** をクリックし、以下のフィールドにチェックを入れます。

| フィールド | 設定のポイント |
|------|---------|
| タイトル | 必須（グローバル設定に従う） |
| 説明 | 大きなテキスト入力 |
| ステータス | ドロップダウン選択（後で連動ルールでデフォルト値を設定） |
| 優先度 | ドロップダウン選択 |
| 分類 | リレーションフィールド、自動的にドロップダウン選択として表示 |
| 提出者 | リレーションフィールド（後で連動ルールでデフォルト値を設定） |
| 担当者 | リレーションフィールド |

![04-forms-and-details-2026-03-13-12-44-49](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-12-44-49.png)

「タイトル」フィールドの横に赤いアスタリスク `*` が自動的に表示されていることに気づくでしょう。第 2 章でフィールド作成時に必須を設定したため、フォームはデータテーブルレベルの必須ルールを自動的に継承します。個別に設定する必要はありません。

![04-forms-and-details-2026-03-13-12-46-34](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-12-46-34.png)

> **ヒント**：あるフィールドがデータテーブルレベルで必須に設定されていなくても、現在のフォームで必須にしたい場合は、フィールドの設定項目で個別に設定できます。
> 
![04-forms-and-details-2026-03-13-12-47-26](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-12-47-26.png)

### 送信ボタンの追加

1. フォームブロックの下部で **「アクション（Actions）」** をクリックします。
2. **「送信」** ボタンにチェックを入れます。

![04-forms-and-details-2026-03-13-16-30-06](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-16-30-06.png)

3. ユーザーがフォームに入力して送信をクリックすると、新しいチケットが作成されます。

![04-forms-and-details-2026-03-13-16-32-19](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-16-32-19.gif)

## 4.2 連動ルール：デフォルト値とフィールド連動

一部のフィールドは自動的に入力してほしい（例：ステータスのデフォルト値を「未対応」にする）、また一部のフィールドは条件に応じて動的に変化してほしい（例：緊急チケットでは説明を必須にする）という場合があります。現在 2.0 のデフォルト値機能はまだ進化の途中のため、本チュートリアルでは統一して**連動ルール**を使ってデフォルト値とフィールド連動を設定します。

1. フォームブロック右上の **ブロック設定**（三本線アイコン）をクリックします。
2. **「連動ルール（Linkage rules）」** を見つけてクリックすると、サイドバーに設定パネルが開きます。

![04-forms-and-details-2026-03-13-16-43-35](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-16-43-35.png)

### デフォルト値の設定

まず「ステータス」と「提出者」のデフォルト値を設定します。

1. **「連動ルールを追加」** をクリックします。
2. **条件は設定しません**（空のままで OK）。条件なしの連動ルールはフォーム読み込み時に即座に実行されます。

![04-forms-and-details-2026-03-13-16-47-34](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-16-47-34.png)

3. アクション（Actions）を設定します：
   - ステータスフィールド → **デフォルト値を設定** → 未対応
   - 提出者フィールド → **デフォルト値を設定** → 現在のユーザー

> **注意：フィールド値の選択について**：値を設定するときは、まず **「現在のフォーム」** をデータソースとして選択してください。リレーションフィールド（分類、提出者、担当者などの多対一フィールド）の場合は、展開後のサブフィールドではなく、オブジェクトの属性自体を選択する必要があります。
>
> 変数（「現在のユーザー」など）を選択するときは、まず**シングルクリック**で変数を選択し、次に**ダブルクリック**で選択欄に入力してください。

![04-forms-and-details-2026-03-13-17-01-06](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-01-06.png)

![04-forms-and-details-2026-03-13-17-02-20](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-02-20.png)


![04-forms-and-details-2026-03-13-17-03-41](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-03-41.png)


特定のフィールド（例：ステータス）を変更不可にしたい場合は、フィールドの設定項目で **「表示モード（Display mode）」** を **「読み取り専用（Readonly）」** に設定できます。

![04-forms-and-details-2026-03-13-17-22-15](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-22-15.png)

> **3 つの表示モード**：編集可能（Editable）、読み取り専用（Readonly、編集不可だがフィールドの見た目は維持）、閲覧モード（Easy-reading、テキストのみ表示）。

![04-forms-and-details-2026-03-13-12-54-53](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-12-54-53.png)

### 緊急チケットの場合に説明を必須にする

次に、条件付きの連動ルールを追加します。ユーザーが優先度「緊急」を選択した場合、説明フィールドを**必須**にして、状況を詳しく書くよう促します。

1. **「連動ルールを追加」** をクリックします。

![04-forms-and-details-2026-03-13-17-07-34](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-07-34.png)

2. ルールを設定します：
   - **条件（Condition）**：現在のフォーム / 優先度 **等しい** 緊急
   - **アクション（Actions）**：説明フィールド → **必須** に設定

![04-forms-and-details-2026-03-13-17-08-46](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-08-46.png)

![04-forms-and-details-2026-03-13-17-18-16](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-18-16.png)

3. ルールを保存します。

テストしてみましょう。優先度を「緊急」に選択すると、説明フィールドの横に赤いアスタリスク `*` が表示され、必須であることを示します。他の優先度に変更すると必須でなくなります。

![04-forms-and-details-2026-03-13-17-20-18](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-20-18.gif)

学んだことを活かして、レイアウトを簡単に調整しましょう。
![04-forms-and-details-2026-03-13-17-25-55](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-25-55.png)

> **連動ルールで他に何ができますか？** デフォルト値の設定と必須制御の他に、フィールドの表示/非表示の制御や動的な値設定もできます。たとえば、ステータスが「クローズ」のとき担当者フィールドを非表示にするなど。後の章で出てきたときに詳しく説明します。

## 4.3 [詳細ブロック](/interface-builder/blocks/data-blocks/details)

前の章でテーブル行に「閲覧」ボタンを追加し、クリックするとドロワーが開くようにしました。ここでドロワー内のコンテンツを設定します。

1. テーブル内のある行の **「閲覧」** ボタンをクリックしてドロワーを開きます。
2. ドロワー内で **「ブロックを作成（Add block）」→ データブロック → 詳細** をクリックします。
3. **「現在のデータテーブル（Current collection）」** を選択します。

![04-forms-and-details-2026-03-13-17-27-02](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-27-02.png)

4. 詳細ブロック内で **「フィールド（Fields）」** を設定し、以下のレイアウトにします。


| エリア | フィールド |
|------|------|
| 上部 | タイトル、ステータス（タグスタイル） |
| メイン | 説明（大きなテキストエリア） |
| サイド情報 | 分類名、優先度、提出者、担当者、作成日時 |

大きなタイトルを配置するにはどうすればよいでしょうか？
フィールド > markdown > 編集 > 編集エリアで変数を選択 > 現在のレコード > タイトル
これでレコードのタイトルが markdown ブロックに動的に挿入されます。
デフォルトテキストを削除し、markdown 記法で見出し 2 のスタイルにします（先頭に `## ` を追加するだけです）。

![04-forms-and-details-2026-03-13-17-36-26](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-36-26.png)

![04-forms-and-details-2026-03-13-17-39-51](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-39-51.png)

ページ内の元のタイトルフィールドは削除しても構いません。詳細フォームのレイアウトを調整しましょう。

![04-forms-and-details-2026-03-13-17-43-36](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-43-36.png)


> **ヒント**：複数のフィールドをドラッグ＆ドロップで同じ行に並べると、レイアウトがよりコンパクトで美しくなります。


1. 詳細ブロックの **「アクション（Actions）」** で **「編集」** ボタンにチェックを入れると、詳細から直接編集モードに入れるようになります。

![04-forms-and-details-2026-03-13-17-45-15](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-45-15.png)

### 編集フォームの設定

「編集」ボタンをクリックすると新しいポップアップが開き、中に編集フォームを配置する必要があります。編集フォームのフィールドは新規作成フォームとほぼ同じですが、もう一度ゼロから選択し直す必要があるのでしょうか？

いいえ。新規作成フォームを覚えていますか？まずそれを**テンプレートとして保存**し、編集フォームから直接参照すれば OK です。

**ステップ 1：新規作成フォームに戻り、テンプレートとして保存**

1. 現在のポップアップを閉じ、チケット一覧に戻り、「追加」ボタンをクリックして新規作成フォームを開きます。
2. フォームブロック右上の **ブロック設定**（三本線アイコン）をクリックし、**「テンプレートとして保存（Save as template）」** を見つけます。

![04-forms-and-details-2026-03-13-17-47-21](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-47-21.png)

3. 保存をクリックするだけで完了です。デフォルトは **「参照（Reference）」** モードです。このテンプレートを参照するすべてのフォームが同じ設定を共有し、1 箇所を変更するとすべてに同期されます。

![04-forms-and-details-2026-03-13-17-47-44](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-47-44.png)


![04-forms-and-details-2026-03-13-18-39-05](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-39-05.png)

> 今回のチケットフォームはシンプルなので、「参照」で統一管理するのがより手軽です。「コピー」を選択すると、各フォームが独立したコピーを取得し、それぞれ個別に変更しても影響し合いません。

**ステップ 2：編集ポップアップでテンプレートを参照**

1. 詳細ドロワーまたはテーブルの操作列に戻り、「編集」ボタンをクリックして編集ポップアップを開きます。

**「ブロックを作成 → その他のブロック → ブロックテンプレート」** から直接作成すればよいのでは？と思うかもしれません。試してみると、この方法で作成されるのは**追加フォーム**であり、フィールドに自動的にデータが入力されないことがわかります。これはよくあるハマりポイントです。

![04-forms-and-details-2026-03-13-17-59-36](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-17-59-36.png)

正しい方法は以下の通りです。

2. ポップアップ内で **「ブロックを作成（Add block）」→ データブロック → フォーム（編集）** をクリックし、まず通常通り編集フォームブロックを作成します。
3. 編集フォーム内で **「フィールド（Fields）」→「フィールドテンプレート（Field templates）」** をクリックし、先ほど保存したテンプレートを選択します。
4. フィールドがワンクリックですべて入力され、新規作成フォームと完全に同じになります。
5. アクションボタン「送信」も忘れずに追加し、変更後に保存できるようにしましょう。

![04-forms-and-details-2026-03-13-18-05-13](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-05-13.png)

![04-forms-and-details-2026-03-13-18-15-11](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-15-11.gif)

今後フィールドを追加したくなったら？テンプレートを 1 箇所変更するだけで、新規作成フォームと編集フォームの両方に同期されます。

### クイック編集：ポップアップを開かずにデータを変更

ポップアップ編集の他に、NocoBase はテーブル内で直接**クイック編集**する機能もサポートしています。ポップアップを一切開かずに、マウスを合わせるだけで変更できます。

有効化の方法は 2 箇所あります。

- **テーブルブロックレベル**：テーブルブロックの **ブロック設定**（三本線アイコン）をクリックし、**「クイック編集（Quick editing）」** を見つけてオンにすると、テーブル全体のフィールドでクイック編集が有効になります。
- **個別フィールドレベル**：特定の列のフィールド設定項目をクリックし、**「クイック編集」** で個々のフィールドごとに有効/無効を制御できます。

![04-forms-and-details-2026-03-13-18-20-07](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-20-07.png)

有効化後、テーブルのセルにマウスを合わせると小さな鉛筆アイコンが表示されます。クリックするとそのフィールドの編集コンポーネントが表示され、変更すると自動保存されます。

![04-forms-and-details-2026-03-13-18-21-09](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-21-09.gif)

> **どのような場面に適していますか？** クイック編集はステータスや担当者などのフィールドを一括変更する場面に最適です。たとえば管理者がチケット一覧を閲覧しながら、「ステータス」列を直接クリックしてチケットを「未対応」から「対応中」にすばやく変更でき、1 件ずつ編集画面を開く必要がありません。

## 4.4 変更履歴の有効化

:::info 商用プラグイン
「[変更履歴](https://docs.nocobase.com/cn/record-history/)」は NocoBase [プロフェッショナル版](https://www.nocobase.com/cn/commercial)のプラグインで、商用版のライセンスが必要です。コミュニティ版をお使いの場合は、この節をスキップしても後続の章には影響しません。
:::

チケットシステムで最も重要なことの 1 つは、**誰がいつ何を変更したかの追跡が可能であること**です。NocoBase の「変更履歴」プラグインがデータの変更を自動的に記録してくれます。

### 変更履歴の設定

1. **設定 → プラグイン管理** に入り、「変更履歴」（Record History）プラグインが有効になっていることを確認します。

![04-forms-and-details-2026-03-13-18-22-44](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-22-44.png)

2. プラグインの設定ページに入り、**「データテーブルを追加」** をクリックし、**「チケット」** を選択します。
3. 記録するフィールドを選択します：**タイトル、ステータス、優先度、担当者、説明** など。

![04-forms-and-details-2026-03-13-18-25-11](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-25-11.png)

> **推奨**：すべてのフィールドを記録する必要はありません。ID や作成日時のように手動で変更されないフィールドは追跡不要です。ビジネス上意味のあるフィールドの変更だけを記録しましょう。

4. 設定項目に戻り、**「履歴データスナップショットを同期」** をクリックすると、プラグインが既存のすべてのチケットを最初の履歴レコードとして自動的に記録します。以降は変更のたびに新しい履歴レコードが追加されます。

![04-forms-and-details-2026-03-13-18-27-01](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-27-01.png)

![04-forms-and-details-2026-03-13-18-28-50](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-28-50.png)

### 詳細ページで履歴を表示

1. チケット詳細のドロワーページに戻ります（テーブル行の「閲覧」ボタンをクリック）。
2. ドロワー内で **「ブロックを作成（Add block）」→ 変更履歴** をクリックします。
3. **「現在のデータテーブル」** を選択し、データは **「現在のレコード」** を選びます。
4. 詳細ページの下部にタイムラインが表示され、各変更が明確に示されます。誰がいつ、どのフィールドの値を何から何に変更したかが一目瞭然です。

![04-forms-and-details-2026-03-13-18-31-45](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-31-45.png)

![04-forms-and-details-2026-03-13-18-33-00](https://static-docs.nocobase.com/04-forms-and-details-2026-03-13-18-33-00.gif)

これにより、チケットが複数の担当者を経由しても、すべての変更が明確に記録されます。

## まとめ

この章ではデータの完全なライフサイクルを完成させました。

- **フォーム** — ユーザーが新しいチケットを提出でき、フィールドにはデフォルト値とバリデーションあり
- **連動ルール** — 緊急チケットは自動的に説明の入力を必須に
- **詳細ブロック** — チケットの完全な情報をわかりやすく表示
- **変更履歴** — すべての変更を自動追跡、監査も安心（商用プラグイン、オプション）

「見える」から「入力できる」、そして「追跡できる」へ。チケットシステムは基本的な実用性を備えるようになりました。

## 関連リソース

- [フォームブロック](/interface-builder/blocks/data-blocks/form) — フォームブロックの詳細設定
- [詳細ブロック](/interface-builder/blocks/data-blocks/details) — 詳細ブロックの設定
- [連動ルール](../../interface-builder/linkage-rule.md) — フィールド連動ルールの説明
