私が店を経営していた頃、毎月もっとも気の重い仕事の一つがシフト作成であった。スタッフから希望を紙で集め、土日の人手を確保し、繁忙期に穴が空かないよう何度も組み替える。この作業に半日、時には一日を費やすことも珍しくなかった。
今だったら、あの負担を生成AIが軽くしてくれるのではないか。そう考え、私は自分でシフト管理アプリを作ってみることにした。
私が最初に取り組んだのは、店で使っていたシフト表を、そのままの形で画面上に再現することであった。見慣れない体裁のものを出したところで、現場は使ってくれない。そこにスタッフの希望を入れ込み、管理者である私が手を加えていく。
この部分は拍子抜けするほど簡単に形になった。私はコードを書けないが、AIに指示を出せば作ってくれる。入力の操作も思いのほか滑らかで、ここまでは順調であった。
私が行き詰まったのは、これを自分一人の手元から外に出そうとした段階である。
希望は紙で集めるのか、画面から入力してもらうのか。スタッフはどこからアクセスするのか。他人の希望休が見えてしまってよいのか。確定したシフトは誰がどう公開するのか。ログインの仕組みはどうするのか。サーバーはどこに置くのか。個人情報はどこまで保有するのか。考え始めると際限がない。
近頃はAIスクールの教材でも、シフト管理アプリがしばしば題材に取り上げられる。だがあれは、希望を入力するとシフトが出てくるという、もっとも見栄えのする部分だけを切り出したデモンストレーションである。
よくできてはいる。しかし「こうしたものがあればよい」という段階であって、明日から店で運用できるものではない。デモと実務の間には、私が思っていたよりも深い谷があった。
シフトの自動作成は、さらに手強かった。
希望休をすべて通せば、土曜の午後に人がいなくなる。人員を確保すれば、誰かの希望を断ることになる。レジを締められる者を各日に一人は置きたい、新人だけの時間帯は作りたくない、特定の誰かに負担が偏るのも避けたい。
私が条件を足すたびに、AIが返してくるシフトはどこかが壊れていた。指示を練り直しては試す。その繰り返しを何度重ねたか、もはや数えていない。
後になって知ったのだが、これはナーススケジューリング問題と呼ばれる有名な難問だという。看護師の勤務表作成をめぐって長く研究されてきた組合せ最適化の一分野であり、専門家が取り組んでも完全な自動化は難しいとされる。条件をすべて満たす解が、そもそも存在しない場合が多いからである。
つまり、私の力不足ではなかった。そう分かって幾分か救われはしたが、同時に手が止まった。周辺も本丸も難しい。時短のために始めたはずが、明らかに手で組むより時間を費やしている。やめてしまおうかと、私は本気で考えた。
結局、私が選んだのは捨てることであった。
個人情報は最低限しか保有しない。自動作成も完璧を諦め、叩き台が出れば十分とする。複雑な条件はすべて外し、簡単にできる範囲だけで一度動かしてみる。足りない部分は手で直す。そして使いながら少しずつ育てていく。
そう割り切った途端、話は前に進み始めた。
とはいえ、完成したわけではない。アプリは現在もテスト中である。使ってみては直し、また使う。その繰り返しの最中にいる。それでも、手元に動くものがあるのとないのとでは大きく違う。完璧を求めて足踏みしていたあの時間こそが、もっとも無駄であったということだ。
このとき私が思い出したのが、待ち行列の理論である。稼働率が九割を超えたあたりから、待ち時間は急激に伸びていく。工場のラインでも空港の滑走路でも同じ現象が起きる。稼働率100%とは、もっとも効率的な状態ではなく、たった一つの乱れで全体が崩れる状態なのである。
シフトも同様だ。人員を限界まで詰めた表は美しく見えるが、一人が体調を崩しただけで破綻する。一割か二割の余白があって、はじめて現場は回る。
考えてみれば、シフト表に誰もが納得する正解など、はじめから存在しない。希望を通せば売場が薄くなり、売場を守れば誰かが我慢する。AIが示せるのは、どこを我慢してもらうかが異なる何通りかの案までである。
だからこそ、最後は自分で決めるしかない。この案でいくと線を引く。動かしてみて、まずい箇所を直す。そうして決めたものを、後から正解にしていく。
私が店を経営していた頃の判断も、思えばそういうものであった。仕入れも人の配置も、正解が先にあったためしがない。決めて、走らせて、直す。その繰り返しであったはずである。同じことを、私はアプリ作りで一から学び直していたことになる。
生成AIは、案を出すところまでであれば驚くほど速い。だが、どれを選ぶかは決めてくれない。決めた責任も引き受けてはくれない。そもそも正解などない。正解とは探すものではなく、自分で作るものである。いまも直し続けているシフトアプリが、それを思い出させてくれる。

