ゼスト Tech Blog

ゼストは「護りたい。その想いを護る。」をミッションに、在宅医療・介護業界向けのSaaSを開発しています。

訪問スケジュール最適化機能「スマート割当」の改善のために

はじめに

みなさん、こんにちは。
株式会社ゼストでバックエンドエンジニアとしてインターン中の浦野です。現在、東京大学の 4 年生です。

私は現在、訪問スケジュールを自動で最適化する機能「スマート割当」の開発・改善チームに参画しています。
本投稿では、「スマート割当」をより良いものにしていくために私が担当している内部ツールの取り組みについて簡単にまとめてみたいと思います。

スマート割当とは

ZESTシステムが対象としている在宅医療・介護領域においては、患者様/利用者様宅へ医療関係者が訪問するという特徴があり、誰がいつどこへ訪問するかというスケジュールを組む必要があります。
ただ、その際に考慮することというのは、具体的には、患者様/利用者様の訪問希望時間、職員様のスキルや資格、個々の訪問予定間の移動時間などなど、多様な制約条件を考慮した上で、職員の皆様が最も効率的にサービスを提供できるようなスケジュールを作る必要があり、非常に難しくかつ時間のかかる業務となります。
「スマート割当」は、訪問スケジュールの最適化を人に代わって AI が提案するというものです。

よりよくするために

AIが出力した結果というのは、例えば足し算プログラムのように、1と2を入力したら3が出力されるといった性質のものとは異なり、完全に予測することは難しいものとなります。
そのため、「なぜこの予定は割り当てられなかったのか?」「もっといい割り当て方がないか?」といった改善を行っていくには、ある程度原因を正確に把握する必要があります。
少なくとも以下の2つの事象の切り分けは、改善を行っていく上で重要となります。

  1. スマート割当の不具合によるもの。AI がこちらの意図通りに動くように修正する必要があります。

  2. スマート割当は仕様通り正しく働いていたが、もっとよいアウトプットがある可能性が高いというもの。チューニングしたり、機能を追加する(制約条件を増やす)などしてスマート割当をアップデートしたりする必要があります。

いずれの場合でも、なぜその結果が導かれたのかを再検証する必要があります。
そのために、AI がどのような思考を経て、そのスケジュールを導き出したかを辿れる仕組みが不可欠です。

ログの解析

そのためには、開発エンジニアが使用する社内用の解析ツールがあると便利です。最近はこのツールのブラッシュアップを担当しています。

スマート割当で参照する情報は、日々更新されていきます。そのため、単に結果やエラーログを保存するだけでは不十分で、実行当時の入力データすべてを保存しておき、どういう入力を与えて、どういう出力が行われたかを把握できるようになっている必要があります。

そのツールにより、たとえば「移動時間が足りていない」「他の予定と時間が重複している」などの制約違反が原因で割当を行わなかったことが分かれば、比較的短時間で原因究明できるようになります 。
少し難しいのは、AI の思考の優先順位が影響しているような場合で、少し前まではAI のチューニングや追加のデバック作業が発生し、それなりに時間がかかっていました。原因調査の時間を短縮できるよう改善とリリースを繰り返しており、引き続き試行錯誤を行っている最中となります。

さいごに

最終的な目標として、調査・改善プロセス自体も AI 化したいと考えています。
現時点ではエンジニアが前述の社内ツールを使って調査を行なっていますが、この解析ツールはコマンドラインベースのもので、あらかじめ用意していたオプションに基づいて動くよう設計・開発をしています。
最終的には、Gemini や ChatGPT のような対話型 AI のように、直接対話して原因究明につながるような返答する仕組みを構築したいと考えています。

私は、大学の授業や課題に取り組む中で、AI の進化を日々実感していますが、それに負けぬよう、スマート割当のアップデートに貢献できるよう頑張っていきたいと思います。

ありがとうございました!