個別指導塾の時間割作成を自動化しようとするとき、「月初の全体生成さえできれば十分ではないか」という問いが出ることがある。
しかし全体生成だけを自動化し、再生成と自動振替を別の仕組みで処理しようとすると、現場で機能しないシステムができあがる。
全体生成・再生成・自動振替が一体でなければならない理由は、三つの処理が同一の問題構造を持っているからだ。
三つの処理がどう異なり、どこが共通するのかを整理する。
全体生成とは、月初に時間割を全コマ一括で生成する処理だ。
既存のスケジュールがない状態から全てのリソースを探索対象として配置を決定する。
再生成とは、確定済みの配置を一部固定したまま変更が必要な範囲だけを再度生成する処理だ。
新規入会・新規講師追加・条件変更が発生したとき、確定済みの配置を崩さずに影響範囲だけを再処理する。
自動振替とは、欠席の連絡が届いたとき確定済みの時間割の中から振替先を自動で探して提示する処理だ。
確定済みの配置を前提条件として固定し、その上で振替先だけを探索する。
三つに共通しているのは「何を固定し、何を探索するか」という問題の構造だ。
全体生成は固定対象がなく全てを探索する。
再生成は確定済みの配置を固定し、変更範囲を探索する。
自動振替は確定済みの時間割を固定し、振替先だけを探索する。
処理の名前は違うが、業務の状態に応じて探索対象と固定対象を決定するという制御の構造は同じだ。
なぜ一体でなければならないのか。
全体生成・再生成・自動振替を別々のシステムとして構築すると、それぞれが異なる判断基準で動くことになる。
全体生成で作った時間割と、再生成で変更した時間割と、自動振替で動かした配置が、同じ制約のもとで整合的に管理されていなければ、時間割全体の一貫性が失われる。
整合性が崩れた時間割は現場で使えない。
こうした設計思想に基づいて、shiftect. for EDUCAはshiftect.(不変コア)の技術をもとに全体生成・再生成・自動振替を同一の制御構造で処理する仕組みとして開発されている。
三つを一体として設計することで、どの処理を実行しても時間割全体の整合性が保たれる。