KAKEHASHI Tech Blog

カケハシのEngineer Teamによるブログです。

顧客からの課題解決はエンジニアにとってのgood first issue

こちらの記事は カケハシ Advent Calendar 2023 の12月10日の記事になります。

はじめに

こんにちは。カケハシで機械学習エンジニアをしている木村です。

私は今年の8月に入社してMusubi AI在庫管理の開発を行なっています。カケハシでは入社時のオリエンなどのプログラムがとても充実していますが、AI在庫管理のプロダクトは多数のモジュールで構成されておりそれらを少人数でカバーしていることもあって開発面でのオンボーディングには時間がかかってしまいます。 その中で顧客からの課題解決のタスクがエンジニアにとってオンボーディングを進める上で良いタスクだと感じましたので、顧客課題から需要予測のアルゴリズム改善に取り組んだ例を交えてお話しします。

薬の需要予測のための来局予測

AI在庫管理は薬局における薬の需要量を予測して在庫・発注を最適化するプロダクトで、薬の在庫管理にかかる薬剤師さんの負担軽減を目的として開発・サービス展開を行っています。

薬局では薬の在庫量が過少で欠品になれば来局する患者さんにご迷惑をかけてしまいますし、一方で在庫量が多過ぎると不動在庫や廃棄処分となり薬局の経営を圧迫してしまいます(1錠10000円以上する高価な薬もあります!)。そのためAI在庫管理の開発チームは薬の需要予測の精度を上げるために日々奮闘しています。

AI在庫管理では各薬局の1つ1つの薬の需要量を予測しますが、1店舗の薬局で扱う薬は1000種類以上になることも珍しくなく、また各薬の需要は薬ごとや患者さんごとに特徴が異なりその予測は簡単ではありません。1つの薬の需要量の予測を間違えてしまうだけでも欠品・在庫過多に繋がってしまいます。

各薬の需要量は患者さんの来局日や処方量に基づいて予測しますが、将来の来局日や処方量は既知ではないのでこれらも予測をする必要があります。来局予測に関しては、患者さんが次回も来局するかどうか、来局するのであればいつ来局するかといった予測が必要になります。

来局予測のための疾患予測

患者さんの次回の来局を予測するためにはどのような疾患での通院・来局かを知ることが重要です。例えば急性の疾患の場合は次回来局が見込めないのでその患者さんのために薬を購入するとロスになってしまいますし、慢性の疾患の場合には来局日前に薬を購入しておかなくてはなりません。 また複数の疾患を抱える患者さんでは疾患ごとに薬局への来局間隔が異なる場合があるので、どの疾患での来局かを把握しておくことが重要になります。

しかし薬局が受け取る処方箋には疾患の記載が無いので、一般的に薬剤師さんは処方される薬や患者さんからのヒアリングに基づいて疾患を予測しています。

AI在庫管理でもこれになぞらえて処方薬から疾患を予測しています。ただし1つの薬でもさまざまな疾患に効果を持つ場合があり、必ずしも薬と疾患とは1対1の対応ではないため処方される複数の薬に基づいてもっともらしい疾患を予測するアルゴリズムを構築しています。

AI在庫管理の需要予測のフローをとても簡素化したものが下図になります。

顧客問い合わせから見つかる課題

カケハシでは顧客である薬局からの問い合わせにはCS(カスタマーサクセス)が窓口となり対応をしますが、それらの課題はエンジニアにも共有されておりAI在庫管理の継続的な改善に努めています。 その中で来局予測の精度が低く薬の需要量が実態に合わない場合があるといった課題があり、私の方でプログラムの詳細解析を行いました。

プログラムを解析したところ来局予測の元になる疾患予測の処理において、AIが正しく疾患を予測できていない可能性があることがわかりました。 疾患予測の処理ではAIは処方薬から疾患を予測するので、処方薬と疾患との関係を正しく予測できていないことになります。

詳しい原因を探るためにAIが処方薬に基づいてどのような疾患を予測するか、またその予測結果が正しいかどうかを調べるのですが、薬と予測された疾患の一覧を見てもドメイン知識の無い私にはその成否の判定ができません(薬の名前さえ覚えられないのにそれに紐づく疾患までなんて…)。

このような時には社内の薬剤師にAIの疾患予測の結果を見てもらいます。カケハシ社内にはドメインエキスパートとして薬剤師が在籍しており、薬のことで不明点があれば気軽に相談できます。社内薬剤師は各薬についてどのような疾患に効く薬かを教えてくれます。たしかに特定のケースにおいてAIの疾患予測の結果が薬剤師の感覚とズレが生じてしまっていることが分かりました。

あとはプログラムの中身を調べて薬剤師と同じ予測ができない原因となっている理由を特定します。今回の場合、過去にAIの予測処理の短時間化のためのプログラム変更を行った際に、特定のケースでの疾患予測精度を低下させてしまっていたことが分かりました。 開発チーム内に課題と原因を共有してバックログとして登録しました。

このように顧客問い合わせの中からアルゴリズム面での課題を見つけ1つ1つ改善を行なっています。

顧客からの課題解決はエンジニアにとってのgood first issue

私は入社してから最初のタスクとして需要予測アルゴリズムについて顧客からの問い合わせに基づく課題の調査とその解決を担当しています。とくに私のように入社して日の浅いエンジニアにとっては顧客からの課題解決を担当するメリットは以下のように多くあると感じています。

  • プロダクトの理解が進む
    • 漫然と仕様書やソースコードを眺めるだけではなく課題解決に責任を持つので必死に勉強する
    • 自身の開発担当外の部分も解析する必要があるので知識範囲が広がる
    • 顧客ニーズとそれに対するプロダクトの不足がわかる
  • 社内の繋がりができる
    • 顧客解像度の高いCSから情報が得られる
    • カケハシでは社内薬剤師がAIが予測すべき正解を示してくれ、ときに健康相談にも乗ってくれる

おわりに

AI在庫管理の薬の需要予測に関する顧客からの課題解決について、アルゴリズム改善を例にお話しました。顧客課題に向き合うことはオンボーディング中のエンジニアにとってはプロダクトの理解や社内メンバーと繋がるきっかけとなり、とても良いタスクだと感じました。 AI在庫管理の開発チームでは今回のように顧客ニーズに応えていく改善活動に加え、カケハシが所有する膨大な処方箋や医薬品のデータ分析に基づいてAIの予測精度を向上させるような取り組みも行っています。

この記事がカケハシに興味を持っていただくきっかけになれば幸いです。