「開始〜終了」を 1つの値 として持つフィールドです。開始日と終了日を別々の2フィールドで管理する方法と違い、開始が終了より後にならないことや、開始と終了が常にペアであることを型として保証します。出張期間・予約時間・休暇期間のような「範囲そのもの」が意味を持つ項目に使用します。
入力フォームでの表示
出張期間 *
在籍期間
夜勤シフト
一覧・カードビュー・レコード詳細でも同じ整形(「2026/08/20〜2026/08/22」「22:00〜06:00(翌日)」「2020/04/01〜(終了未定)」)で表示されます。メールテンプレート変数・通知本文・帳票/PDF出力でも同じ表示整形文字列が使われます。
プロパティパネル
ラベル *
フィールドコード
基準タイプ
作成後は変更できません
最小の長さ(日)
最大の長さ(日)
初期値
| 設定項目 | 説明 |
|---|---|
| ラベル | 画面に表示されるフィールド名 |
| フィールドコード | API・帳票・数式で使用する識別子 |
| 必須 | ONにすると開始(from)が未入力では保存不可。開始側のみが必須の対象で、終了側は下記「終了を必須にする」で別途制御します |
| 基準タイプ | 日付 / 日時 / 時刻 / 数値 の4種類から選択。作成後は変更できません(保存済みの値と非互換になるため、設定画面では作成時のみ選択でき、APIでの変更もエラーになります) |
| 終了を必須にする | OFF(既定)では終了(to)を未入力のまま保存でき、「終了未定」の開区間として扱われます。ON にすると終了も必須になります(予約のように終了時刻が確定している用途向け) |
| 開始ラベル / 終了ラベル | 入力欄の上に常に表示する小さなラベルを任意で設定できます(例: 最小/最大、出勤/退勤。20文字以内)。どちらか一方だけ設定した場合も両側にラベルが表示され、未設定側は既定の「開始」「終了」になります。ラベル未設定時は入力欄内のプレースホルダに「開始」「終了」を、設定時は通常の日付フィールドと同じ入力ヒント(「日付を選択」)を表示します。CSVの列見出しはラベルに関わらず「(開始)/(終了)」で固定です |
| 最小の長さ / 最大の長さ | 範囲の長さの下限・上限。単位は基準タイプで自動的に決まります(日付=日数、日時・時刻=分、数値=差)。終了未定(開区間)の値は長さが定義できないため、この検証の対象外になります |
| 初期値(開始 / 終了) | 開始・終了それぞれに独立して設定します。基準タイプによって選べる語彙が変わります(日付・日時=なし/レコード登録日/固定の日付・日時を指定、時刻=なし/現在の時刻、数値=固定の数値)。詳しくは下記「デフォルト値」を参照してください |
| (基準タイプ別の入力・表示設定) | 基準タイプに応じて、通常の日付/日時/時刻/数値フィールドと同じ設定項目(表示形式〔数値基準では「数値」/「時間」/「パーセント」の切替、時間選択時は値の単位・表示のパターンも含む〕・入力方法・時刻の間隔・単位記号・桁区切り・負数の表示 等)が表示されます。これらは開始・終了の両方に共通で適用されます |
| 重複を禁止する | ONにすると、期間が重なるレコードをデータベースレベルで作成・更新できなくします(既定はOFF)。詳しくは下記「重複を禁止する」を参照してください |
| 重複を判定する単位 | 「重複を禁止する」がONのときだけ表示されます。重なりを判定する単位となるフィールドを最大3個まで選べます(未指定ならアプリ全体で重ならないことを保証します) |
範囲型フィールドは 日付 / 日時 / 時刻 / 数値 のいずれか1つを「基準タイプ」として持ちます。開始(from)と終了(to)は常に同じ基準タイプの値です。
「終了を必須にする」が OFF の間は、終了(to)を空欄のまま保存できます。これを開区間(終了未定)と呼びます。在籍期間・利用開始日のように、いつ終わるか決まっていない期間を表すのに使います。
基準タイプが時刻の場合、終了の入力欄の隣に「翌日」トグルがあります。終了が開始より前の時刻になる場合(例: 開始「22:00」・終了「06:00」の夜勤シフト)は、このトグルをONにして「翌日の06:00に終了する」ことを明示してください。
RANGE_LENGTH / RANGE_OVERLAP)は日をまたぐ範囲でも正しく計算されます。詳しくは計算フィールドの数式リファレンスを参照してください基準タイプが日付・日時の場合、入力方法にはカレンダー・プルダウン・和暦プルダウンの3種類のみ選択できます。
開始・終了それぞれに、基準タイプに応じた既存の単体フィールドと同じ語彙でデフォルト値(初期値)を設定できます。プロパティパネルの「初期値」欄に開始・終了が横に並び、独立して設定します(例: 開始だけ「レコード登録日」にして終了は未設定のまま、のように片側だけの設定も可能です)。
| 基準タイプ | 選べる値 |
|---|---|
| 日付 | なし(空白) / レコード登録日 / 固定日付を指定 |
| 日時 | なし(空白) / レコード登録日 / 固定の日付と時刻を指定 |
| 時刻 | なし(空白) / 現在の時刻 |
| 数値 | なし(空白) / 固定の数値を指定 |
「重複を禁止する」をONにすると、期間が重なるレコードを作成・更新できなくなります。データベースの制約として保証されるため、2つの登録が同時に届いた場合でも片方だけが成立し、もう片方はエラーになります(アプリ側の事前チェックだけでは、この「同時に2つ」がすり抜けて両方成立してしまうことがあります)。
プロパティパネル
重複を判定する単位(最大3件)
単位フィールド(重複を判定する単位)は任意です。例えば会議室予約アプリで予約時間(時刻基準の範囲型フィールド)に重複禁止を設定し、単位フィールドに「予約日」「会議室」の2つ(最大3個まで指定可能)を選ぶと、同じ日・同じ会議室の中でだけ時間帯の重なりを禁止できます。別の会議室、または別の日であれば、同じ時間帯に何件でも登録できます。単位フィールドを1つも指定しない場合はアプリ全体で重ならないことを保証します(サンプルアプリの「会議室予約」にこの設定が入っているので、実際の設定画面と挙動を確認できます)。
AI エージェント連携 (MCP) から設定する場合の設定キー名: 範囲フィールドはcreate_app では作れないため、update_form でフィールドを追加してからapply_form で本番に反映します。フィールドの settings に指定するキーは次のとおりです。
| 設定キー | 値 | 内容 |
|---|---|---|
baseType | "date" / "datetime" / "time" / "number" | 基準タイプ(必須。作成後は変更できません) |
preventOverlap | true / false | 重複を禁止する(既定 false) |
overlapScopeFieldCodes | フィールドコードの配列(最大3件) | 重複を判定する単位。省略・空配列はアプリ全体で1グループ(例: どの会議室でも同じ時間帯を取れない) |
requireEnd | true / false | 終了の入力を必須にする(既定 false = 終了未定を許可) |
baseType"date" / "datetime" / "time" / "number"preventOverlaptrue / falseoverlapScopeFieldCodesrequireEndtrue / falseoverlapScopeFieldCodes に入れるのはフィールドコードです(フィールド id ではありません)。似た名前の別のキー(overlapScopeFieldIds のような綴り)を送った場合は保存されず、応答にそのフィールド型で指定できるキーの一覧が返ります期間の端点がちょうど接している場合の扱いは、基準タイプによって異なります(下表)。時刻・日時・数値基準では、この扱いは数式(RANGE_LENGTH / RANGE_OVERLAP)と同じ考え方で決まっています(境界が接するだけの状態は「重なる量が0」=重複なし、という結論で数式・重複禁止とも一致します)。一方日付基準はこれと異なり、下表のとおり終了日を含めて判定するため、数式のRANGE_OVERLAPが返す重なり量が0(境界が接するだけで実質的な重なりが無い)場合でも、重複禁止では終了日を共有する1日分の重なりとして衝突と判定します。
| 基準タイプ | 端点の扱い | 例 |
|---|---|---|
| 日付 | 終了日を含む | 「8/1〜8/3」と「8/3〜8/5」は重複します(8/3が両方の期間に含まれるため) |
| 時刻 / 日時 / 数値 | 終了ちょうどは含まない | 「10:00〜11:00」と「11:00〜12:00」は重複しません(11:00は前者の期間に含まれないため) |
注意(条件の「重なる」演算子とは結論が異なる場合があります): 上記は数式(RANGE_LENGTH / RANGE_OVERLAP)と重複禁止の判定の話です。条件・フィルタでの利用で説明する「重なる」演算子は、基準タイプによらず境界が接するだけでも重なっていると判定します(閉区間の意味論。2フィールド方式で「終了日は相手の開始日以降」のような条件を書いたときの直感に合わせた設計です)。そのため時刻・日時・数値基準では、上表の「10:00〜11:00」と「11:00〜12:00」のように重複禁止では衝突しない(両方登録できる)組み合わせが、「重なる」条件では重複ありと判定されるケースがあります。日付基準は終了日を含む扱いのため、この違いは表面化しません(重複禁止も「重なる」条件も同じ結論になります)。
すでにレコードが登録されているフィールドで「重複を禁止する」をONにすると、既存の全レコードに重なりがないかを確認してから有効化します。
時刻型(時刻基準)の範囲フィールドは日付を持ちません。そのため、「ある日の23:00〜翌2:00」と「その翌日の01:00〜03:00」のように日をまたいだ実際の重なりは検出できません(レコードの値自体が「どの日」のものかを識別できないため、「翌日」かどうかを判定できません)。
sortField / sorts)でも、範囲フィールドのコードをそのまま指定すると開始基準、<コード>.to を指定すると終了基準でソートできます<ラベル> (開始)」「<ラベル> (終了)」の2列に分割されます。開区間の行は終了列が空欄になります。サブテーブル内の範囲型サブフィールドは「親テーブル名:サブフィールド名 (開始)」のような列名になります{"from": ..., "to": ...}(開区間は to: null)をそのまま送受信できます基準タイプが日付・日時の範囲フィールドは、カレンダービューやガントビューの 期間(日付ソース)としてそのまま指定できます。開始日・終了日を別々の2フィールドで用意し直す必要はありません。
範囲型フィールドは、リマインダーの基準日、期間ロックの対象の日付フィールド、未登録チェックの日付フィールドにも、開始日・終了日を別々の2フィールドで管理する場合と同様に指定できます。
範囲型フィールドは、フィールドを条件として参照するほぼすべての機構(一覧・グラフ・公開ビューのフィルタ、データパイプラインのソースフィルタ、関連レコード集計(rollup)の絞り込み条件、メール一括送信の対象条件、通知ルールの条件、表示条件、条件付き書式(カンバン・一覧の行色)、入力ルールの自動セット(auto-set)の発動条件、アクションの発動条件、アクションウィジェットの条件、レコード条件(アクセス権)の条件行)で条件に使えます。設定画面の条件・フィルタのフィールド選択には、範囲型フィールド 1 つにつき次の3 つの候補が並びます。
本体を条件にする場合の専用演算子は次の4つです。
| 演算子 | 説明 |
|---|---|
| 重なる | 指定した期間(開始〜終了、または「今月」のような期間トークン)と少しでも重なるレコードを絞り込みます。指定側の終了を空欄にすると「以後ずっと」として扱われます |
| 時点を含む | 指定した1つの時点(日付・日時・時刻・数値、または「今日」のような単一値トークン)が、レコードの範囲内に含まれているかを判定します |
| 空 | フィールドが未入力のレコードを絞り込みます(通常フィールドの「空」と同じ意味) |
| 空でない | フィールドに値が入っているレコードを絞り込みます |
時刻基準の例外: 「重なる」「時点を含む」は、開始・終了とも日付/日時/数値基準では終了未定(開区間)を「以後ずっと」として扱いますが、時刻基準は開区間を条件では常に不一致として扱います(時刻は1日で循環するため、「以後ずっと」という解釈が意味を持たないためです)。
時刻基準の「重なる」は、開始・終了を指定する順序で意味が変わります。開始より終了を前の時刻にする(例: 開始「22:00」・終了「05:00」)と、特定の1日の期間ではなく「毎晩22:00〜翌5:00」という繰り返しの夜間帯と少しでも重なるレコードを絞り込む条件になります(例: 「深夜帯にかかる勤務を全て抽出したい」)。一方、ある1つの期間のうち日付が変わった後の部分だけ(例: ある夜勤シフトの深夜0:30〜1:00の部分とだけ重なっているか)を狙いたい場合はこれとは別の指定が必要です。詳しくは下記のレシピを参照してください。
なおカスタム検証(入力ルール)からの参照は第1期から利用できています。カスタム検証は計算フィールドと同じ数式エンジンを共有しているため、RANGE_START や RANGE_LENGTH などの関数をそのまま条件式に書けます(例: 「開始日は本日以降」= RANGE_START(period) >= TODAY())。関数の詳細は計算フィールドの数式リファレンスを参照してください。
一方で以下は現時点ではまだ条件・キーとして使えません(今後の期で順次対応予定です)。
「まだ終わっていない出張・在籍中のメンバー」のように、終了未定(開区間)のレコードだけを一覧・公開ビュー・rollupの絞り込み条件などで抽出したい場合は、次の2条件をANDで組み合わせます。
本体を条件にする「空」「空でない」は「範囲フィールド自体が未設定かどうか」を判定するのに対し、この2条件は端点(開始・終了)それぞれの入力有無を個別に見ている点が異なります。
範囲型フィールドをテーブル(サブテーブル)の行として持たせ、固定の時間帯とどれだけ重なっているかを計算式で求める例です。例えば「休憩」テーブルの各行に、時刻基準の範囲型フィールド「休憩時間帯」があるとします。
RANGE() で日をまたぐ時間帯を書くときは、終了側を24時を超える表記にします("29:00" = 翌5:00。範囲型フィールドの入力欄にある「翌日」トグルと同じ考え方で、終了に24時間を足した値をそのまま書きます)SUM(休憩.深夜分) のように集計すれば、既存のサブテーブル集計と組み合わせて「実働時間から深夜帯にかかった休憩分を控除する」といった計算が1つの数式で完結しますRANGE_OVERLAP(休憩時間帯, RANGE("24:30", "25:00")) のように書きます。同じ0:30〜1:00でも RANGE("00:30", "01:00")(24時未満の通常表記)を使うと意味が変わり、日をまたがない0:30〜1:00の休憩とだけ重なる判定になります(上記「条件・フィルタでの利用」の「重なる」条件を時刻の逆順で指定した場合の「毎晩」という繰り返しの意味とは異なる点に注意してください)