5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

薬剤師がMakeで作る!医薬品供給不安を解決するLINE Bot開発記

Last updated at Posted at 2025-08-08

はじめに

こんにちは、私は神奈川県の薬局で働く薬剤師です。情報科学の専門家ではありませんが、日々の業務で直面する 「医薬品の供給不安」 という課題を解決するため、 ノーコードツール「Make」を使ってLINE Bot を開発しました。
ここ数年、医薬品の出荷制限や供給停止が相次ぎ、私たちはその対応に多くの時間を費やしています。
厚生労働省が公表している約16,000品目の医薬品データのうち、約3,000品目に出荷制限がかかっているのが現状です。
この膨大な情報を手動で確認するのは非常に手間がかかるため、 誰でも簡単に、そして手軽に情報検索できるシステム が必要だと考えました。
この記事では、私がどのようにしてこのLINE Botを開発したのか、その制作過程と成果、そして今後の課題についてご紹介します。

LINE Botの概要

このBotは、医薬品の供給状況を簡単に検索できるようにすることで、 薬局での業務負担を軽減すること を目的としています。

解決したかった課題

情報確認の手間 : 医薬品の供給状況を調べるには、厚労省のExcelデータをダウンロードし、一つ一つ手動で確認する必要がある。
アクセスの簡便性: 誰でもすぐに情報にアクセスできる、簡易なシステムが必要。
操作の容易性 : 専門知識がなくても作成・管理ができるツールを使いたい。
このBotは、LINEに医薬品名の一部を入力するだけで、出荷制限や出荷停止の情報を瞬時に返信します。

「現場の困りごとをテクノロジーで解決する」

Makeによるシステム構築の解説

「誰でも簡単に使えるツール」 を目指したため、今回は入力ルールを設けず、医薬品名の一部で検索できる仕組みにしました。このシステムは、ノーコードツール「Make」で構築しました。
使用したモジュールとシナリオは以下の通りです。

各ステップの詳細

LINE Watch Events: LINEから送られてきたメッセージをトリガーとして、シナリオを開始します。

Google Sheets Search Rows: 厚労省の医薬品データを転記したGoogle Sheetsを検索し、ユーザーが入力したキーワードと一部一致する行をすべて抽出します。

Iterator: 検索結果が複数ある場合、一つずつ処理するためにIteratorモジュールを使用しました。複数の検索結果を一つにまとめるのに少し苦労しましたが、このモジュールのおかげで複数の品目情報もまとめて返せるようになりました。

LINE Send a Push Message: 検索でヒットした医薬品の情報を、LINEのメッセージとして返信します。

RouterLINE Send a Reply Message:スプレッドシートにキーワードがなかった場合、その旨をLINEのメッセージとして返信します。

スクリーンショット 2025-08-18 153157.png

白紙に戻す

深刻なオペレーション数不足。

1回の処理に 最低5オペレーション 、対象薬剤が20品目あると 41オペレーション を消費し、あっという間に 無料枠の1,000オペレーション がなくなってしまいます。
今回はあくまでも試作、実用可能かを無料プランの枠内で試さなくてはなりません。
“0”からやり直しです。

トリガーモジュールの実行: シナリオを開始させるきっかけとなるモジュールが1回起動する(例: 新しいメールを1件チェックする、特定の時間になる)。1オペレーション消費
アクションモジュールの実行: 実際に何らかの処理を行うモジュールが1回動作する(例: メールを1通送信する、スプレッドシートに1行追加する)。1オペレーション消費
検索モジュールの実行: データを検索するモジュールが1回動作する(例: スプレッドシートの特定行を検索する)。1オペレーション消費
ルーター (Router) の1分岐処理: 条件によって処理を分岐させるルーターモジュール自体が1回動作する。その後、実際に実行された分岐先のモジュールも別途オペレーションを消費します。ルーター自体で1オペレーション消費
イテレーター (Iterator) の1サイクル: 複数のデータ項目(配列など)を1つずつ順番に処理するイテレーターモジュールは、処理するアイテムの数だけオペレーションを消費します。例えば、3つのアイテムを処理する場合、イテレーター自体で3オペレーション消費し、さらに各アイテムに対する後続モジュールもアイテム数分オペレーションを消費します。
アグリゲーター (Aggregator) の1集約処理: 複数のデータを1つにまとめるアグリゲーターモジュール自体が1回動作する。アグリゲーター自体で1オペレーション消費

やさしさは半分に

「誰でも簡単に」 は譲れない条件なので、やさしさを半分にしました
具体的には、医薬品毎の個別返信をやめ、誤入力への注意の返信もやめました。

Makeによるシステム構築の開設(2回目)

Itaretor による個別返信をやめて、Aggregator で一括返信にしました。
これに伴い、LINE Botでメッセージ通数にカウントされる Send a Push Message から、カウントから除外される Send a Reply Message に変更。
LINEの無料枠も確保しました。
これで、対象薬剤が何品目あっても、1回の処理に4オペレーションの消費で済むようになります。
つまり、 1か月に250回の処理が可能 になり、実証実験としては十分な回数が確保できます。

各ステップの詳細(2回目)

LINEに入力したテキストを 一部一致 でスプレッドシートの医薬品名の列から検索します。

次にText Aggregatorでスプレッドシートから取り出した 複数の結果 を1つにまとめます。

最後に、LINEの メッセージ通数にカウントされない Send a Reply Messageで返信します。

できあがり!(2回目)

こういうのでいいんだよ、こういうので。

今後の課題と展望

このツールはまだ完璧ではありません。より実用的なものにするため、いくつかの課題を認識しています。
データの自動更新: 厚労省のデータはほぼ毎日更新されます。現状は手動でGoogle Sheetsに転記しているため、リアルタイムの情報を取得できていません。この作業を自動化する必要があると考えています。
検索方法の多様化: 現在は医薬品名での検索のみですが、GS-1コードや医薬品の写真を送信して検索できる機能を追加できれば、さらに簡便なシステムになるでしょう。
運用の規模拡大:実証実験の結果を示して、月額$10の有料プランの登録を上司におねだり!

最後に

情報科学の素人である私が初めて作ったツールですが、「現場の困りごとをテクノロジーで解決する」 という目標に近づけたと思います。
担当する3店舗の薬局で利用してもらい、検証段階に移りました。
今回の開発を通して、専門家でなくてもノーコードツールを使えば、身近な課題を解決できる可能性があることを実感しました。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?