個別指導塾の時間割作成を自動化しようとするとき、「再生成」という概念が重要になる。
再生成とは、確定済みの時間割を一部固定したまま、変更が必要な範囲だけを再度生成する処理だ。
全体を組み直すのではなく、影響範囲だけを再処理する。
なぜ全体を組み直さずに済むのかを説明する。
再生成が必要になる場面はどういうときか。
月初に時間割を生成した後、新規入会の生徒が加わる。
講師が新たに採用される。
既存の生徒の条件が変わる。
こうした変化が生じるたびに、現在の時間割に変更を加える必要がある。
なぜ全体を組み直してはいけないのか。
全体を組み直すということは、すでに生徒・講師・保護者に共有された配置が変わる可能性があることを意味する。
確定済みの配置が変われば、その配置にいた全員に連絡が必要になる。
新規入会の生徒が1名増えただけで、既存の生徒全員の時間割が変わる可能性がある。
これでは現場で運用することはできない。
確定済みの配置は固定したまま、変更が必要な範囲だけを再処理する必要があるのはこのためだ。
再生成の仕組みはどうなっているのか。
管理者が変更が必要な生徒や授業を指定すると、その操作内容が状態情報としてシステムに記録される。
shiftect. for EDUCAはshiftect.(不変コア)の技術をもとに、この状態情報に基づいて変更対象リソースとその代替候補だけを探索対象(変数)として定義し、操作対象外の確定済み配置を全て固定対象(定数)として自動的に分離する。
管理者が数百件に及ぶ既存の配置を一つひとつ固定指定しなくても、システムが業務の文脈から自動的に探索範囲を決定する。
これにより全体を組み直すことなく、変更が必要な範囲だけを再処理できる。
再生成は全体生成・自動振替と同一の制御構造で処理される。
全体生成では全リソースが探索対象になり、再生成では変更範囲だけが探索対象になり、自動振替では振替先だけが探索対象になる。
業務の状態に応じて探索対象と固定対象を自動的に切り替えるという制御構造が、全体を組み直さずに済む再生成を可能にしている。