#kintone100日チャレンジ Day097:会議室や設備の二重予約を保存前に防ぐ!「重複期間チェッカー」を組んでみた

#kintone100日チャレンジ Day097:会議室や設備の二重予約を保存前に防ぐ!「重複期間チェッカー」を組んでみた

記事
IT・テクノロジー
面倒解決エンジニアの森田ユウゴです。
台湾からお届けする「#kintone100日チャレンジ」の97日目。

Claude Fableに熱中していたら、あっという間に#kintone100日チャレンジも明日から残り3日しかないことに気が付きました。
このチャレンジを始めた2026年4月1日から現在、私個人のAI活用力という意味でも大きく変化しました。
このノウハウはきっと、今後のプロジェクトでも大きく活きていくでしょう。

さて、本日のテーマは、会議室や設備、担当者の予定などをkintoneで管理している方向けの「重複期間チェッカー」。期間重複は開始・終了の一致だけでは見逃されるため、保存直前に包み込み型の重複も拾える判定式と、任意のグループフィールドで比較範囲を絞る構成にしました。

「重複期間チェッカー」について

🎯 どんな課題に向き合ったか(現場の不とベネフィット)


現場の「不」: 会議室予約や設備貸出をkintoneで管理していても、開始日時と終了日時を登録するだけでは、別レコードとの期間重複までは自動で判断されません。登録前に一覧やカレンダーを目視で確認する運用では、見落としによる二重予約が起きます。

導入後の世界(ベネフィット): 保存時にほかのレコードを検索し、期間が重なっていれば保存を止めます。警告には該当レコードへのリンクが表示されるため、利用者は競合している予定をすぐに確認できます。

💡 着想・こだわり

期間の重複チェックは、会議室予約や複数条件での重複防止など、優れた既製プラグインが既に存在する領域です。今回は新しく作ったこと自体ではなく、「どう判定するか」と「何と比較するか」にこだわりました。

期間の重複は、開始日時や終了日時のどちらかが一致するかを見るだけでは正しく判定できません。たとえば、既存の予定が「10:00〜12:00」で、新しい予定が「9:00〜13:00」の場合、新しい予定の開始・終了はどちらも既存期間の外側です。それでも、2つの期間は完全に重なっています。

そこで、次の条件で期間の重複を判定しています。

既存レコードの開始が新しい終了より前
かつ
既存レコードの終了が新しい開始より後

日時フィールドでは「10:00〜11:00」と「11:00〜12:00」のような端点の一致は重複にしません。一方、日付フィールドは1日単位の期間として扱うため、終了日と開始日が同じなら重複と判定します。

また、単にアプリ内の全レコードを比較するのではなく、任意のグループフィールドを指定できます。たとえば「会議室」フィールドを指定すれば同じ会議室だけ、「担当者」フィールドを指定すれば同じ担当者だけを比較できます。1つのアプリで複数の設備や人の予定を管理する場合にも使える構成です。

✨ これで出来ること(機能概要)


まずはこちらをご覧ください。
保存直前に重複を検査: レコードの新規作成・編集・一覧のインライン編集で、指定期間と重なる別レコードを検索します。

重複時は保存をブロック: 競合するレコードが見つかると保存を止め、画面上部に警告を表示します。

該当レコードをすぐ確認: 警告にはレコード番号・期間・詳細画面へのリンクが並びます。リンクは別タブで開けます。

同じグループ内だけを比較: 会議室、設備、担当者などのフィールドを任意で指定し、値が同じレコードに検索対象を絞れます。※動画に含められていなかった機能

100件を超える重複にも対応: カーソルAPIで該当レコードを最後まで取得するため、検索結果が多い場合も取りこぼしません。

設定は3項目: 開始、終了、任意のグループフィールドを選ぶだけです。開始・終了には日付または日時フィールドを指定します。


課題


現時点では下記のような課題が残っています。

開始・終了の前後関係は検証しない
開始が終了より後になっていないかは、このプラグインでは確認しません。kintoneのフィールド制約や別の入力チェックと組み合わせる必要があります。

開始または終了が空なら検査を行わない
どちらかが未入力のレコードは、そのまま保存できます。両方を必須にしたい場合は、フィールドの必須設定も有効にしてください。

グループ値が空の場合は全レコードが比較対象になる
グループフィールドを設定していても、保存するレコードのグループ値が空なら絞り込みません。意図しない広範囲の判定を避けるには、グループフィールドも必須にする運用が適しています。

同時保存の競合は完全には防げない
複数ユーザーが同時に重複のない状態を確認し、ほぼ同時に保存した場合は、両方が登録される可能性があります。厳密な予約確保が必要な業務では、別途排他制御を検討してください。

さいごに


#kintone100日チャレンジ として、2026年4月から毎日プラグインをバイブコーディングしています。明日もお楽しみに!

私森田ユウゴはココナラでkintoneに関する各種サービスを出品しております。


SIerの中でもインフラSEとして約10年、特に「運用保守」にはベンダーとして深く携わってきました。
作りっぱなしにしない導入やカスタマイズのご提案が可能です。
お気軽にご相談をくださいませ
→森田ユウゴのプロフィールはこちら👇

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す