KAKEHASHI Tech Blog

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

AWSのIoT CoreとIoT Device Shadowで管理する「レセハブ」の紹介

はじめに

こんにちは。処方箋データ基盤チームの山田です。 私の所属するチームでは、レセハブというIoTデバイスを作っています。 今回は、レセハブの機能や特徴・および採用されている技術について紹介いたします。 これまで、処方箋データ基盤チームのプロダクトや使っている技術についてあまり発信していなかったので、今回の記事で初めて紹介させていただくことになります。 この記事を通じて興味を持っていただけると嬉しいです。

目次

  • レセハブとは何か
  • レセハブの機能
    • 処方箋データ送信機能
    • 遠隔での設定変更機能
    • バックエンドシステムへのセキュアなアクセス機能
  • まとめ
  • 最後に

レセハブとは何か

レセハブは、調剤薬局の薬剤師が使用するレセプトコンピュータ(処方箋情報を管理するためのコンピュータ)から、処方箋データを取得し、取得した処方箋データをカケハシのバックエンドシステムに送信するIoTデバイスです。

レセハブの機能

レセハブは、次のような機能を持っています。

  • 処方箋データ送信機能
  • 遠隔での設定変更機能
  • バックエンドシステムへのセキュアなアクセス機能

これらのレセハブが持つ機能と、使っている技術について説明します。

処方箋データ送信機能

調剤薬局の薬剤師が処方箋をレセプトコンピュータに登録すると、その処方箋データはネットワーク共有ドライブ(Sambaを利用しています)に保存されます。 レセハブは、処方箋データがドライブに保存されたかを常に監視しています。データの保存が確認されると、レセハブは即座にこれを取得し、バックエンドシステムへ送信します。この際、レセハブは調剤薬局に既設のネットワークとは別の専用回線(SORACOMの回線)を利用します。

(図1 処方箋データ送信機能)

遠隔での設定変更機能

レセハブは、調剤薬局のLANに接続し、レセプトコンピュータと協調して稼働しますが、レセハブのセットアップ時やレセプトコンピュータの設定変更などに伴って、レセハブ側のLANの設定変更が必要となることがあります。 遠隔での設定変更ができない場合は、作業者が現地に出向いて手作業で変更を行なわなければなりません。

IoTデバイス全般に言えることですが、遠隔でのデバイスの設定変更は容易ではありません。通信の不安定さやデバイスの電源落ちなどの要因により、設定変更は容易に失敗します。また、復旧手順についても設定変更に失敗した原因別に考慮しなくてはなりません。

そこで、レセハブではAWS IoT Device Shadow(Device Shadow)を活用して設定変更を行っています。Device Shadowは、AWSクラウドとIoTデバイスの間でデータを共有する機能であり、確実な設定変更を実現するための強力なツールとして利用されています。

以下は、レセハブがDevice Shadowを使って設定変更を行う流れです。

  1. 設定値の保存: 開発・運用担当者は、Slackアプリとして実装された管理画面を通じて設定したい値をAWSクラウド上のDevice Shadowに送信・保存します。
  2. レセハブがオンラインになるまで待つ: Device Shadowは、レセハブがAWSクラウドと通信できる状態になるまで待機します。
  3. レセハブがオンラインになったら設定値を送信する: Device Shadowは、レセハブと通信可能になった際に、保存されている設定値を送信します。
  4. レセハブは設定値の反映が完了したら、最新の設定値をDevice Shadowに通知する: レセハブは、受信した設定値で設定変更を実施します。設定変更が完了したら、最新の設定値をDevice Shadowに送信し、設定完了を通知します。

この仕組みにより、開発・運用担当者はDevice Shadowを通じて、現在のレセハブの設定値だけでなく、いつ設定が反映されたのかも確認できます。遠隔での即時通信ができなかった場合や、設定が正しく反映されなかった場合でも、AWS IoTサービスは設定値が適切に反映されるまでサポートしてくれます。これにより、遠隔地での設定変更がより効率的かつ確実に行われることが保証されます。

(図2 Device Shadowを用いた設定変更の仕組み)

バックエンドシステムへのセキュアなアクセス機能

レセハブは、クライアント証明書を用いて厳格なアクセス制御を行っています。これは、レセハブが処方箋データを取り扱うためです。 処方箋データは個人情報の中でも特に機密性の高い情報であり、適切な取り扱いが求められます。このため、レセハブが稼働する際、適切な証明書を保有している装置だけがバックエンドシステムにアクセスできるようにしています。

レセハブは、認証機構としてAWS IoT Coreを利用しており、クライアント証明書を利用して各個体を識別しています。具体的な手順は以下の通りです。

  1. クライアント証明書の発行とインストール: レセハブはAWS IoT Coreの機能を使用して、あらかじめ固有のクライアント証明書を発行します。この証明書は各レセハブに対して事前にインストールされます。
  2. 認証要求: 調剤薬局に設置されたレセハブは、事前にインストールされたクライアント証明書を使用して、AWS IoT Coreへ認証を要求します。AWS IoT Coreは、クライアント証明書によって特定のレセハブ個体を識別し、それぞれに適切なクレデンシャルを発行します。
  3. クレデンシャルを用いたアクセス: レセハブは、AWS IoT Coreから発行されたクレデンシャルを使用して、バックエンドシステムに処方箋データを送信します。

このような手法により、認証済みのレセハブだけがバックエンドシステムにアクセスできるような仕組みになっています。

図3に、アクセス制御の概要を簡単にまとめました。

(図3 レセハブのアクセス制御)

まとめ

処方箋データ基盤チームが作っている「レセハブ」を紹介させていただきました。 レセハブは、処方箋データをカケハシのバックエンドシステムに送信するシンプルなIoTデバイスですが、いろいろな工夫が盛り込まれています。 これらの工夫は、AWS IoT Device ShadowやAWS IoT Coreの技術を積極的に活用し、実現しています。

最後に

処方箋データ基盤チームでは、一緒に働くメンバーを募集しています。 もし今回取り上げた内容に興味をお持ちの方や、データ基盤システムの構築に興味を持っていただける方がいらっしゃいましたら、ぜひ弊社採用にご応募ください。