はじめに
こんにちは、私は神奈川県の薬局で働く薬剤師です。情報科学の専門家ではありませんが、日々の業務で直面する 「医薬品の供給不安」 という課題を解決するため、 ノーコードツール「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のメッセージとして返信します。
Router→LINE Send a Reply Message:スプレッドシートにキーワードがなかった場合、その旨をLINEのメッセージとして返信します。
白紙に戻す
深刻なオペレーション数不足。
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店舗の薬局で利用してもらい、検証段階に移りました。
今回の開発を通して、専門家でなくてもノーコードツールを使えば、身近な課題を解決できる可能性があることを実感しました。