<!-- https://unlockos.io/ja/manual/forms -->

# フォーム管理 ヘルプ

## 概要

フォーム管理では、施設で使用するあらゆる情報収集フォームを一元管理できます。チェックイン時のゲスト情報収集（従来のゲストフォームの上位互換）から、会員登録・アンケート・施設点検まで、用途別に複数のフォームを作成・運用できます。

このページでできること：

- 施設に紐付いたフォームの一覧表示と絞り込み
- 新しいフォームの作成（名前・説明・適用範囲・公開URLスラッグを設定）
- 各フォームをクリックして詳細設定（フィールド・紐付け）を編集
- フォームのステータス管理（下書き / 公開中 / アーカイブ）

---

## アクセス方法

メインメニュー → 「フォーム」を選択してください。

---

## 詳細機能

## 機能1: フォーム一覧と絞り込み

すべてのフォームがカード形式で一覧表示されます。各カードには、フォーム名・適用範囲バッジ・ステータスバッジ・公開URLスラッグ（設定されている場合）・最終更新日が表示されます。

### 適用範囲フィルター

ドロップダウンで特定の適用範囲のフォームだけを絞り込めます。

| 適用範囲 | 用途 |
|---------|------|
| 予約 | チェックイン / 宿泊申込 時のゲスト情報収集 |
| 会員 | 会員登録・更新時の個人情報収集 |
| 部屋・設備 | 部屋や設備に紐付く点検・レポートフォーム |
| 施設 | 施設全体に関わる設定・申請フォーム |
| スタンドアロン | URL公開型アンケート・問い合わせフォーム |

---

## 機能2: 新規フォームの作成

「新規フォームを作成」ボタンをクリックするとインラインに入力フォームが展開されます。

### 入力項目

| 項目 | 説明 | 必須 |
|-----|------|------|
| フォーム名 | 管理画面に表示される識別名（例：チェックイン用ゲストフォーム） | はい |
| 説明 | フォームの用途メモ（ゲストには表示されない） | いいえ |
| 適用範囲 | 上記の5種類から選択 | はい |
| 公開URLスラッグ | スタンドアロン選択時のみ表示。英数字とハイフンで指定（例：customer-survey-2026） | スタンドアロン時は任意 |

### 作成手順

1. 「新規フォームを作成」ボタンをクリックします
2. フォーム名を入力します
3. 必要に応じて説明を入力します
4. 適用範囲をドロップダウンから選択します
5. スタンドアロン選択時は公開URLスラッグを入力します
6. 「作成」ボタンをクリックします
7. 作成後、自動的にフォーム設定画面に遷移します

---

## 機能3: フォーム設定（フォームエディタ）

フォーム一覧のカードをクリックすると、フォームエディタが開きます。フォームエディタでは以下の3つのセクションを管理します。

### 3-1: フォームメタデータ

| 項目 | 説明 |
|-----|------|
| フォーム名 | 管理画面での表示名 |
| 説明 | フォームの用途メモ |
| ステータス | 下書き / 公開中 / アーカイブ |
| 適用範囲 | 5種類から選択 |
| 公開URLスラッグ | スタンドアロン時のみ。/form-demo?facility=…&slug=… の形式で公開 |
| 再利用ポリシー | 以下の3種類から選択（後述） |
| 保存範囲 | UnlockPass全体 / 組織内施設 / 当施設のみ |

変更後は「保存」ボタンで確定します。

「削除」ボタンをクリックするとフォームを削除できます（確認ダイアログが表示されます）。「Default Reservation Form」などシステムデフォルトフォームは削除できません。

#### 同一予約内では二度入力を求めません

プランにフォームを紐付けると、ゲストは**予約時**にフォームを入力します。その予約で既に回答が記録されている場合、**同じ予約のチェックイン時には、そのフォームは再表示されません**。予約とチェックインは同じ滞在の連続した手続きであるため、下記の再利用ポリシー（毎回入力・初回のみ・期限付き）の設定にかかわらず、同一予約の中で同じゲストに二度入力を求めることはありません。

> **直接チェックイン（walk-in）や、予約時にフォームを入力しなかった場合**は、従来どおりチェックイン時にフォームが表示されます。

#### 再利用ポリシー（UnlockPassプリフィル）

再利用ポリシーは「**別の予約・次回の滞在**」でフォームをどう扱うかを制御する設定です（同一予約内の二度聞き防止は上記のとおり、ポリシーに関係なく常に適用されます）。同じゲストが以前の予約でフォームを提出したことがある場合、前回の回答を確認画面に表示してプリフィルします。

| ポリシー | 挙動 | 代表的なユースケース |
|---------|------|-------------------|
| 毎回入力（per_visit） | **予約ごと**に新たに入力させる。保存範囲が「当施設のみ」の場合はプリフィルなし | 旅館業法に基づく宿泊者名簿など法定帳票 |
| 初回のみ（one_time） | 一度提出後は、次回以降の予約では内容の確認のみ（修正不可） | 会員サロン・サブスクの初回登録 |
| 期限付き（periodic） | N日経過後の予約で再入力を求める | 年次更新が必要な施設利用申込など |

保存範囲を「UnlockPass全体」にすると、ゲストが他施設で提出した回答もプリフィルの対象になります。

**ゲストが見る確認画面（Confirm ステップ）：**

前回の回答がある場合、ゲストには前回の提出内容が一覧で表示され、以下のボタンが表示されます。

- 「この内容で送信」— 変更なしでそのまま提出
- 「修正する」— 入力フォームに戻って内容を変更（`one_time` ポリシーでは表示されない）

### 3-2: フォームフィールド

フォームに含まれるすべてのフィールドをテーブル形式で確認・管理できます。

**予約スコープのフォームには以下の11項目がデフォルトで含まれます（削除不可）：**

| # | フィールド名 | タイプ | 初期状態 | 必須/任意 | 表示条件 |
|---|------------|-------|---------|----------|---------|
| 1 | 氏名 | テキスト | 有効 | 必須 | 常時 |
| 2 | 生年月日 | 日付 | **無効** | 任意 | 常時 |
| 3 | 携帯番号 | 電話番号 | 有効 | 必須 | 常時 |
| 4 | 住所 | テキスト | 有効 | 必須 | 常時 |
| 5 | 都道府県 | テキスト | **無効** | 任意 | 常時 |
| 6 | 郵便番号 | テキスト | **無効** | 任意 | 常時 |
| 7 | 国籍 | 選択肢 | 有効 | 必須 | 常時 |
| 8 | パスポート番号 | テキスト | 有効 | 必須 | 国籍が施設所在国以外の場合 |
| 9 | パスポート写真 | 画像 | 有効 | 必須 | 国籍が施設所在国以外の場合 |
| 10 | 身分証番号 | テキスト | 有効 | 必須 | 国籍が施設所在国の場合 |
| 11 | 身分証写真 | 画像 | 有効 | 必須 | 国籍が施設所在国の場合 |

> **「連絡先」は「携帯番号」に改名されました。**（旧名称「電話番号」からさらに改称）既存データの `field_key` は `contact` のままで後方互換を維持しています。SMSでの電話番号確認に対応させるため、タイプも電話番号型に変更されています。詳しくは[SMS電話番号確認のヘルプ](sms-verification.md)を参照してください。

> **初期状態が「無効」のフィールド**（生年月日・都道府県・郵便番号）は一覧にグレーアウトと「無効」バッジで表示されます。ワンタップで有効化できます。有効化後に必須/任意の切り替えが可能です。

**その他のスコープでは、デフォルトフィールドはなく自由にカスタムフィールドを追加できます。**

#### デフォルトフィールドの有効化・無効化

デフォルトフィールドはすべて有効/無効をトグルで切り替えられます。

- 無効状態のフィールドはゲストの入力画面に表示されません
- 一覧ではグレーアウトと「無効」バッジで視覚的に区別されます
- 有効にするには行の「有効」トグルをオンにします（即時保存）
- 必須トグルは有効状態のフィールドにのみ操作できます
- 例：海外ゲストを受け入れない施設は国籍・パスポート系をすべて OFF にできます

#### 並び替え

フィールドの表示順を変更できます。変更は即時保存されます。

- **デスクトップ**: 各行左端の `⋮⋮` ハンドルをドラッグ＆ドロップで並び替えます。ドロップ先がブランドカラーでハイライトされます
- **モバイル**: 各カードに表示される `↑` / `↓` ボタンで1段ずつ移動できます
- カスタムフィールドとデフォルトフィールドを混在させて並び替え可能です

#### カスタムフィールドの追加

| 入力項目 | 説明 | 必須 |
|---------|------|------|
| ラベル（日本語） | 日本語表示のフィールド名 | はい |
| ラベル（English） | 英語表示のフィールド名 | いいえ（未入力時は日本語ラベルを使用） |
| フィールドID | システム内部で使用するID | いいえ（自動生成） |
| フィールドタイプ | text / number / tel（電話番号） / email / textarea / select / date / image から選択 | はい |

追加されたカスタムフィールドは初期状態では「任意」です。必須にする場合は必須トグルをオンにしてください。

#### 選択肢（プルダウン）の設定

フィールドタイプで **select（選択肢）** を選ぶと、その下に選択肢の入力欄が出ます。ここで入力した項目が、ゲスト側のプルダウンに並びます。

| 入力項目 | 説明 |
|---------|------|
| 表示（日本語） | プルダウンに出る日本語の文言 |
| 表示（English） | 英語表示時の文言。未入力なら日本語の文言をそのまま使います |
| 保存値 | 回答として保存・CSV出力される値。未入力なら日本語の文言をそのまま使います |

- 「＋ 選択肢を追加」で行を足し、`↑` `↓` で並び替え、`×` で削除します。プルダウンに出る順番はこの並び順です
- **選択肢が1つも無いと保存できません**。選択肢の無いプルダウンはゲスト側で空になり、必須にしているとフォームそのものを送信できなくなるためです
- 保存値は選択肢どうしで重複できません（回答として保存されるのが保存値なので、重複すると後からどちらを選んだのか分からなくなります）

既にあるフィールドの選択肢を編集するときは、フィールド一覧のタイプ欄にある「選択肢 N」バッジをクリックすると、その行の下に同じ入力欄が開きます。選択肢がまだ無いフィールドは「選択肢なし」と赤く表示されるので、一覧を見るだけで設定漏れが分かります。

保存値を後から変えると、**すでに保存済みの回答は古い値のまま**残ります。文言だけを直したいときは「表示（日本語）」だけを変更し、保存値はそのままにしてください。

#### SMS認証（電話番号欄のSMS確認）

電話番号タイプ（既定の「携帯番号」欄、または自分で作成した電話番号タイプのカスタムフィールド）の行には、フィールド名の隣に「SMS認証」というバッジ（トグル）が表示されます。ONにすると、そのフォームが予約時に出てもチェックイン時に出ても、ゲストはSMSで受け取ったコードでその電話番号を確認しないと送信できなくなります。

このトグルは以下の両方を満たす行にしか操作できません。

- その欄が「必須」であること（任意の欄は空欄のまま送信できてしまうため）
- 施設がSMSの送信元を設定済みであること（未設定の場合、フィールド一覧の上部に案内バナーとリンクが表示されます）

詳しい仕組みは[SMS電話番号確認のヘルプ](sms-verification.md)を参照してください。

#### 仮予約フォーム（Default Pending Reservation Form）

承認制予約など事前審査が目的の仮予約フォームは、国際身分確認系フィールドを除いた以下の**8項目**で構成されています：

```
氏名 / 生年月日 / 電話番号 / 住所 / 都道府県 / 郵便番号 / 身分証番号 / 身分証写真
```

（国籍・パスポート番号・パスポート写真は含まれません）

有効化/無効化・必須切り替え・並び替えの操作方法は通常のフォームと同じです。

#### 即時保存（Auto-save）について

以下の操作はクリック直後にサーバへ自動保存されます（「保存」ボタン不要）：

- 有効トグルの切り替え
- 必須トグルの切り替え
- 並び替え（ドラッグ＆ドロップ・↑↓ボタン）
- カスタムフィールドの追加・削除

「保存」ボタンが必要なのは**フォームメタデータ**（名前・説明・ステータス・適用範囲・再利用ポリシーなど）のみです。

### 3-3: 紐付け (Bindings)

フォームをどこで表示するかを指定します。

| 種類 | 説明 | フォームが出るタイミング |
|-----|------|----------------------|
| プラン | 特定の予約プランに紐付け。そのプランで予約したゲストにフォームが表示される | フォームの「表示タイミング」設定に従う（予約時 = Booking / Go アプリの決済直前ステップ／チェックイン時／両方） |
| イベント | 特定のイベントに紐付け | イベント申込時 |
| 公開URL | スタンドアロンフォームとして公開（URLで直接アクセス可能） | URL直接アクセス時（ログイン不要） |

紐付けを追加するには種類を選択し、プランまたはイベントの場合はUUIDを入力して「追加」をクリックします。

### どのフォームが使われるかの決まり方

フォームの適用先は管理画面の 4 箇所に分かれています。実際にどれが使われるかは、**予約の出自ごとに 1 つ**決まり、そこに紐付けが無ければ既定のチェックイン設定へフォールバックします。

| 順 | その予約が… | 使われる紐付け | 設定する場所 |
|---|---|---|---|
| 1 | 外部 PMS 連携から来た | 連携接続のフォーム | 予約管理＞チェックイン（連携の行） |
| 2 | iCal 取り込みから来た（プラン無し） | iCal フィードのフォーム | 予約管理＞チェックイン（iCal の行） |
| 3 | Google カレンダー取り込みから来た（プラン無し） | カレンダーのフォーム | 予約管理＞チェックイン（カレンダーの行） |
| 4 | 予約管理＞チェックインで作られた | そのチェックイン設定のフォーム | 予約管理＞チェックイン（既定の設定） |
| 5 | ゲストがプランを選んで予約した | プランのフォーム | プラン編集の「適用フォーム」 |
| — | 上のどれにも紐付けが無い | **既定のチェックイン設定のフォーム** | 予約管理＞チェックイン（既定の設定） |

上から順に「当てはまるもの 1 つ」が選ばれます（複数が重なって適用されることはありません）。非既定のチェックイン設定にフォーム欄が無いのはこのためで、それらの予約は既定の設定のフォームを使います。

> **既定へのフォールバックには 1 つ例外があります。** ゲストが Booking / Go アプリにログインした状態で自分の予約からチェックインする場合、**プランで予約した予約だけ**は既定のチェックイン設定のフォームに落ちません（そのゲストには自分が選んだプランのフォームだけを出す、という設計）。ホストのチェックインURL・キオスク・連携/取り込み由来の予約は、従来どおり既定へフォールバックします。

> **表示タイミングはフォーム側の設定で決まります。** プランに紐付けたフォームでも、フォームの「表示タイミング」が「チェックイン時」または「両方」なら、チェックイン時にも表示されます。「予約時のみ」ならチェックイン時には出ません。
>
> なお、同じ予約の中で予約時に回答済みのフォームは、チェックイン時に再表示されません（再利用ポリシーの設定にかかわらず）。

> **プラン紐付けとチェックイン設定フォームの違い：**
> - **プラン紐付け** → そのプランで予約したゲストに表示されます。予約時か、チェックイン時か、両方かは**フォーム側の「表示タイミング」設定**で決まります
> - **チェックイン設定（既定）のフォーム** → ホストのチェックインURL やキオスク経由のゲストに**チェックイン時**に表示されます
>
> 同じプランの予約でも、ゲストが Booking でセルフチェックインするか、キオスクを使うかで表示タイミングが変わります。詳しくは[チェックイン設定のヘルプ](checkin-config-form.md)を参照してください。

---

## 機能4: 公開アンケート（スタンドアロン）

スタンドアロンスコープのフォームは、ログイン不要の公開URLでアクセスできます。

### 設定手順

1. フォームを作成する際、適用範囲に「スタンドアロン (URL公開)」を選択します
2. 公開URLスラッグを設定します（例：`satisfaction-survey-2026`）
3. フォームのステータスを「公開中」にします
4. 以下のURLを共有します：
   ```
   /form-demo?facility=<施設ID>&slug=<スラッグ>
   ```

### 主なユースケース

- 満足度アンケートのQRコード配布
- イベント後の参加者フィードバック収集
- 施設見学・内覧の申込フォーム

---

## 機能5: 承認制予約

プランの設定で `approval_mode` を「手動承認」にすると、ゲストが予約した時点でステータスが `pending_approval`（承認待ち）になります。施設オーナーが「予約承認」ページで承認または拒否するまで予約は確定しません。

### 承認フロー

```
ゲストが予約 → pending_approval（承認待ち）
  ↓ 施設オーナーが承認 → confirmed（確定）
  ↓ 施設オーナーが拒否 → cancelled（キャンセル）
```

### 承認手順

1. メインメニュー → 「予約承認」を選択します
2. 承認待ちの予約が一覧表示されます
3. 各予約カードの「承認」ボタンをクリックすると予約が確定します
4. 「拒否」ボタンをクリックすると理由の入力フィールドが表示されます
5. 拒否理由を入力して「拒否を確定」をクリックします

詳細は[予約承認](reservation-approvals.md)のヘルプを参照してください。

---

## 従来のゲストフォーム設定からの移行

予約管理タブ内の「ゲストフォーム」タブ（旧 `/booking?tab=guestForm`）は **2026-05-19 に削除されました**。

| | 旧「ゲストフォーム」タブ | 新フォーム管理 (`/forms`) |
|--|------|------|
| フォーム数 | 施設ごとに1つのみ | 複数作成可能 |
| 適用範囲 | 予約のみ | 予約・会員・空間・施設・公開URL |
| プラン別切替 | 不可 | プランごとに別フォームを紐付け可 |
| 公開アンケート | 不可 | slug設定でURLから直接アクセス可 |
| データ移行 | — | 自動（Default Reservation Form として移行済み） |

旧タブで編集していた内容は「Default Reservation Form」として `/forms` に自動移行されています。引き続き同じデータを編集できます。

---

## よくある質問

### Q: 従来の「ゲストフォーム設定」のデータはどうなりますか？

自動的に「Default Reservation Form」として新フォーム管理に取り込まれています。設定した内容はそのまま引き継がれます。

### Q: 1つのプランに複数のフォームを紐付けられますか？

現時点では、1プランに対して1フォームを紐付けることを推奨します。複数の紐付けが存在する場合の優先順位は未確定です。

### Q: スタンドアロンフォームへの回答はどこで確認できますか？

回答データの確認・CSV出力機能は今後追加予定です。現時点では管理画面からの直接確認はできません。

### Q: 従来の「宿泊者名簿」ページはどこに行きましたか？

宿泊者名簿はフォーム管理に統合されました。フォーム一覧から **回答ハブ (Form Responses Hub)** を開き、ショートカットカード「宿泊者名簿」を選択すると、Default Reservation Form の回答を従来と同じ日付フィルター・CSV出力で確認できます。フォーム名のドロップダウンから他のフォームの回答も同じ画面で参照できます。

### Q: フォームをアーカイブするとどうなりますか？

アーカイブされたフォームは一覧に表示されますが、紐付け先でのフォーム表示が停止します。データは削除されません。

### Q: デフォルトフィールドの必須/任意は変更できますか？

はい、変更できます。予約スコープのデフォルト11項目はすべて必須/任意の切り替えが可能です。また有効/無効の切り替えや並び替えも可能です。ただし無効状態のフィールドは必須化できません（先に有効にしてください）。

### Q: 予約時に入力したフォームが、チェックイン時にまた表示されることはありますか？

いいえ。予約時にフォームへの回答が記録されている場合、**同じ予約のチェックイン時にはそのフォームは再表示されません**。予約とチェックインは同じ滞在の連続した手続きとして扱われるため、再利用ポリシーの設定にかかわらず同一予約内で再入力を求めることはありません。チェックイン時にフォームが表示されるのは、予約フローを経由せず直接チェックイン（walk-in）した場合、または予約時にフォームを入力しなかった場合です。

---

## 関連ページ

- [予約承認](reservation-approvals.md)
- [予約ダッシュボード](reservation.md)
- [料金プラン設定](plan-form.md)
- [チェックイン設定（フォームの紐付け方法）](checkin-config-form.md)
- [SMS電話番号確認（フィールド単位の設定）](sms-verification.md)
