AWS Startup ブログ
「Musubi AI在庫管理」を支えるアーキテクチャ ─ カケハシ社の AWS 活用事例
「日本の医療体験を、しなやかに。」のミッションのもと、医療現場の課題を解決するためのソフトウェアを開発・提供する株式会社カケハシ。
薬局体験アシスタント「Musubi」や薬局経営“見える化”クラウド「Musubi Insight」、おくすり連絡帳「Pocket Musubi」、医薬品在庫管理・発注システム「Musubi AI在庫管理」など複数のプロダクトを展開し、薬局の業務の DX をサポートしています。
今回はカケハシ社の AWS 活用事例について、「Musubi AI在庫管理」を担当するソフトウェアエンジニアの平松 拓 氏(写真左)とデータサイエンティストの保坂 桂佑 氏(写真右)にインタビュー。システムアーキテクチャの詳細を伺いました。
薬の在庫管理業務を効率化・適正化するサービス
――お二人が担当されているサービスについてお話しください。
保坂:カケハシは「明⽇の医療の基盤となる、エコシステムの実現。」をビジョンとして掲げています。医療へのアプローチを行ううえで、特に“薬局”の業務にフォーカスしており、そのなかで私たちが担当しているのが「Musubi AI在庫管理」です。これは、薬局における薬の在庫管理業務を効率化・適正化するサービスになります。
――「Musubi AI在庫管理」では、AWS のどのようなコンポーネントを用いてアーキテクチャを構築していますか。
平松:まず Web アプリケーションの部分からご説明すると、シングルページアプリケーション(SPA)の設計になっており、フロントエンドは AWS Amplify ホスティングを用いています。バックエンドは AWS AppSync で、データソースとして Direct Lambda Resolvers を使っています。データベースは Amazon Aurora MySQL です。
この AWS AppSync + AWS Lambda で構築した Web アプリケーションとは別に、薬局の処方箋取り込みや発注、納品取り込みなどの処理を行うコンポーネントが動いています。その処理には AWS Lambda を用いており、処方箋取り込みのイベントのトリガーは Amazon EventBridge になっています。
――AWS AppSync + AWS Lambda によってバックエンドを構築した理由を教えてください。
平松:カケハシでは他のプロダクトでも AWS Lambda を多用しているため、社内に開発・運用の知見がありました。「Musubi AI在庫管理」はプロジェクトの立ち上げ時期にスピーディーに開発する必要があり、ノウハウがあった AWS Lambda は自分たちのニーズにマッチしていました。
また、カケハシ社内ではシステムを横断的に管理する SRE チームはあるものの、基本的には各プロダクトの開発チームが DevOps を担います。少人数のエンジニアでサービスを開発しつつインフラ関連の業務も担当するため、サーバーレスである AWS Lambda は運用工数を低減してくれるので助かりました。
株式会社カケハシ ソフトウェアエンジニア 平松 拓 氏
AWS AppSync を用いると GraphQL の API を簡単に構築できますし、データソースの柔軟性も高いです。サブスクリプションの機能がデフォルトで備わっているのも、AWS AppSync の良さだと思います。最小限の開発・運用工数で API を作ることができ、その後のメンテナンスもしやすいのが AWS AppSync + AWS Lambda 構成の利点でした。
需要予測を実現する機械学習のアーキテクチャ
――「Musubi AI在庫管理」は AI による需要予測の機能があるそうですが、その部分のアーキテクチャも教えてください。
保坂:前提として、Amazon Aurora に格納されたデータに直接アクセスして需要予測を行うと、データベースに大きな負荷がかかってしまいます。それを回避するため、「Musubi AI在庫管理」では、データの ETL 処理を行い、大規模な学習の処理に使いやすいデータマートを構築したうえで、機械学習のモデルなどを使って需要予測する流れになっています。
技術的な詳細についてお話しすると、まず Apache Airflow によって ETL のワークフロー管理をしています。AWS Lambda を起点として処理がスタートし、Amazon ECS on AWS Fargate 上で動くバッチでデータを抽出して、AWS Glue を使ってデータを加工・変換します。変換後のデータは、Amazon Athena を経由して参照します。
AWS Glue による処理が終わると、AWS Step Functions により日次バッチの非同期処理が起動します。初回来局予測や再来局予測、発注おすすめ計算などの処理が、別々の Amazon ECS on AWS Fargate 上でバッチ実行されます。予測結果は Amazon S3 に格納され、その情報が最終的に AWS Lambda によって「Musubi AI在庫管理」のサービス側に受け渡されます。
AWS Step Functions はさまざまな AWS のコンポーネントを直接操作できるため、インフラ構築・管理の工数を大きく軽減してくれます。今後は Amazon DynamoDB の導入を想定していますが、AWS Step Functions は Amazon DynamoDB も操作できるのが良いですよね。
それから、AWS Fargate はスケーラビリティが高くジョブを実行できます。サービスの運用が長くなるにつれてクライアントの薬局数も増加していますが、AWS Fargate を用いていることで処理遅延などが発生せず、非常に助かっています。
株式会社カケハシ データサイエンティスト 保坂 桂佑 氏
サポートが充実しているのも AWS の魅力
――カケハシ社は AWS のサポートもご活用いただいていますが、その感想もお聞かせください。
平松:かなり便利に利用していまして、月に数件ほど問い合わせをしています。問い合わせる場面は大きく分けて 2 つあり、ひとつが緊急度の高い障害が発生したとき、もうひとつが AWS の各種ドキュメントを読んで疑問点や不明点があったときです。サポートからの回答は説明が丁寧なだけではなく、検証用のコードなども提供してもらえるケースがあります。
AWS のサポートは最近チャットによる質問が可能になったのですが、それもかなり使い勝手がいいです。在庫管理は薬局の基幹システムであるため、万が一システムに障害が起きると薬局の業務そのものが止まる可能性があります。そうした場合には早急に解決する必要があるので、スピーディーにコミュニケーションを取れるチャットはありがたいです。
保坂:AWS のサービス仕様についてもAWSのサポートエンジニアに相談すると、詳細まで調べて教えてもらえるので助かりますよね。
平松:社内のエンジニアには常々「不明点がある場合は、悩んでいる時間がもったいないから、積極的に AWS のサポートを利用しよう」と言っています。社内のリソースが限られているスタートアップにとって、調査する作業をアウトソースできるのはありがたいです。
――今後、システムのアーキテクチャをどのように改善したいですか。
平松:プロジェクト初期に、立ち上げのスピードを重視してモノリシックな構成を選んだのですが、今後は適切にシステムを分割してマイクロサービス化しようと考えています。また、Amazon Aurora ではなく Amazon DynamoDB を用いることがより適切な箇所もあるため、用途に合った AWS のコンポーネントに変更していきたいです。
保坂:機械学習基盤では現在、機械学習に関連する処理とそれ以外のビジネスロジックに関する処理が、同一コンテナ内に格納されている箇所があります。システムの立ち上げ時には開発スピードを重視したためそのような構造にしていたのですが、今後はロジックを分割していくことを構想しています。
機械学習部分とそれ以外の部分を分離することで、機械学習の担当者とサーバーサイドエンジニアが分業しやすいようなアーキテクチャにしたい。さらに、機械学習側に Amazon SageMaker などの技術を導入していきたいです。
――開発組織も拡大していくと思いますが、どのようなエンジニアを求めていますか。
平松:ひとつは AWS を使い倒したいエンジニアですね。カケハシはエンジニアが適切な技術スタックを選定して使える環境なので、技術的なチャレンジが好きな方に来てもらいたいです。新しいものをキャッチアップする姿勢があるならば、現時点での経験の有無は問いません。
また、各チームが DevOps を実施しており「顧客により早く価値を提供する。スピーディーにシステムを改善していく」という会社の文化があります。その思いに共感してくれる方だとありがたいです。
マインド面としては、自分の領域に閉じこもらない人がいいです。私自身もかつてはフロントエンドのみが担当でしたが、今ではバックエンドも担うようになりました。プロダクトを改善するために、必要なことはなんでもやるスタンスの人と働きたいです。
保坂:平松さんの話を少し補足すると、なんでもやるマインドを持っていることが前提で、今後は「特定領域の専門性を高めたい」という志向の方の割合も増やしたいと考えています。機械学習・データサイエンスの専門家や、特定の技術領域を深掘りしている人などが活躍しやすいように、アーキテクチャや組織体制を整えていきたいです。
――「Musubi AI在庫管理」の未来が楽しみですね。今回はありがとうございました。
導入支援・お見積り・資料請求等に関するご質問、ご相談に日本担当チームがお答えします。平日 10:00〜17:00 はチャットでもお問い合わせいただけます。お問い合わせはこちら