🖨️

医療系Webエンジニアが発券機連携で感じた物理デバイスの可能性

に公開

この記事は MICIN Advent Calendar 2025 の 7 日目の記事です。
前回は manimoto さんの、 Google Apps Script で Google ドキュメント操作 逆引きリファレンス でした。

はじめに

MICIN オンライン医療事業部エンジニアのgenmei です!
普段は患者さんにスマートな通院体験を届ける「クロンスマートパス」というプロダクトを開発しています。

https://smartpass.curon.co

この記事では「クロンスマートパス」の機能を開発する中で、Web開発では珍しい物理デバイスとの連携を実装したので、得た知見や苦戦、可能性を紹介しています。

プロダクトでの利用にとどまらず、日常生活や個人開発での活用についても触れていくので、ぜひ最後まで読んでいただければと思います!

レシートプリンター

「クロンスマートパス」の発券機連携では、物理デバイスとしてレシートプリンターを利用しました。

具体的な製品名はEPSON の「TM-m30Ⅲ-H」で、EPSON 製レシートプリンターの中でも様々な機能を取り揃えているモデルでした。

このモデルは印刷機としてそのまま置いて利用するだけでなく、利用者が自分たちのプロダクトに組み込めるように設計されています。身の回りで言えば、ファストフード店などのセルフレジが代表的でしょうか。


セルフレジに組み込まれた(おそらく)同型のレシートプリンター

意外と手軽に入手できる

「TM-m30Ⅲ-H」は50,000円ほどで購入しました。かなり多機能なモデルなのでデバイス1つにしてはやや高価でしたが、用途やスペックを絞れば半額程度まで抑えられると思います。
個人的にかなり驚いたのが、EPSON や正規代理店を経由しなくても、シンプルにAmazon などのEC サイトで購入することができる点でした。これなら個人でも気軽に購入することができます。

EPSON 製レシートプリンターの機能

EPSON 製のレシートプリンターは先述の通り、プロダクトに組み込むことを前提に作られています。
豊富なインターフェースがあるのですが、SDKの導入や複雑な設定をせずにクイックに使える機能を2つ紹介したいと思います。

1. ePOS-Print XML

この機能は主に飲食店のPOS システムのために用意されている機能です。
レシートプリンターの中でサーバーがホスティングされており、HTTP リクエストでXMLを送ると、そのデザイン通りに印刷を行ってくれます。

似た機能でSocket 通信を利用する ePOS-Device XML や専用のSDKなどもありますが、個人的にはシンプルで自前のアプリケーションやワークフローに組み込みやすいなと感じています。

HTTP リクエストだけで動作するので、Raspberry Pi などのシングルボードコンピュータから呼び出したり、フロントエンドのJavaScript から呼び出したりなど、様々なシーンで活用できそうです。

https://www.epson.jp/products/receiptprinter/develop/xml.htm

2. サーバーダイレクトプリント

この機能は先述とは真逆で、レシートプリンターがクライアントとなって、指定したURLにポーリングを行ってくれるという機能です。レスポンスにXML を含めることで、そのデザインで印刷を行ってくれます。

自前のサーバーやLambda などをデータソースとして運用する場合は、こちらが選択肢に入ってきます。

https://faq2.epson.jp/web/Detail.aspx?id=52630

物理デバイスとしての特性

ここまではEPSON 製レシートプリンターの具体的な機能を紹介してきましたが、ここからは少し視点を変えてレシートプリンターというデバイスが持つ特性を見ていきたいと思います。

レシートプリンターは「イベント駆動で紙に任意のデザインを出力できる装置」として機能します。
これをうまく利用することで、単にレシートを出すだけではない、レシートプリンターにしかできない効果を得ることができます。

強力な通知性能

レシートプリンターなので、実際にレシートが印刷されるわけですが、

  • レシートが排出される際に駆動音が発生する
  • 視覚内で実際にレシートが動く

と思った以上に利用者の注意を惹きます。

これを利用して「イベントが起きた時に、その情報と共に通知を行う」という機能を実現できます。
さらに印刷物は形に残るので、通知時点で気づいてもらえなくても、永続的にユーザに情報が伝わる余地が残るというのは、音やPC上の通知にはないポイントだと思います。

デザイン性が高い

レシートといっても、内部的には感熱紙に印刷をしているだけなので、ある程度のデザインを行うことができます。

フォントや文字のレイアウトは基本として、画像イメージや二次元コードの埋め込みまで行うことができるので、大体のデザインは網羅しています。

特に二次元コードの埋め込みは効果が高く、「レシート本体にはサマリ的な情報だけ集めて、詳細はリンク先のWeb ページで補完する」というのがかなり有効です。

参考: EPSON のレシートデザインXML のWeb エディタ

https://www2.epson.jp/products/receiptprinter/epos_print_sample_xml/editor/index.html

プロダクトへの組み込み

ここまで、EPSON製のレシートプリンターの機能を紹介してきましたが、実際に「クロンスマートパス」の機能として利用した事例である「発券機連携」を紹介しようと思います。

プロダクトが抱えていた課題

「クロンスマートパス」では「順番待ち受付」という、患者さんが診察の順番を待つ際に受付業務を効率化するための機能があり、現在一部の医療機関でPoC 検証を行なっています。
この機能を利用する際、患者さんの流入経路には2つのパターンがあります。

  • オンラインあるいは医療機関のQRコードから「クロンスマートパス」を利用する患者さん
  • 医療機関の窓口に直接いらっしゃった「クロンスマートパス」を利用しない患者さん

上記のどちらも「クロンスマートパス」で一元管理することができますが、いくつかの課題を抱えており一部の医療機関のオペレーションにフィットしきれない状況がありました。

オンラインからの受付に気づけない

医療機関のスタッフは受付や書類のチェック、会計などでかなり多忙です。PCに張り付いているわけでもないので、オンラインから利用する患者さんに気づくことができず、対応が遅れてしまうことがありました。

医療機関独自の番号券と管理番号が衝突してしまう

医療機関では、患者さんに渡すための独自の番号発券機を利用していることが多いです。
その発券機は番号をインクリメントする機能しか持っていないので、どこかで番号の同期をとる必要がありますが、受付に来た患者さんの対応中にオンラインから受付が行われると、手渡した番号が「クロンスマートパス」上の管理番号とずれてしまう事象が発生します。

レシートプリンター導入による解決

元々、2つ目の課題を解決しようとしてMICIN 社内では様々な案が議論されていました。

  • SwitchBotなどを使って、オンラインからの受付の際に発券機を自動で押す
  • 医療機関独自の発券機のボタンに割り込んで「クロンスマートパス」側の番号を調節する
  • 医療機関独自の発券機の番号を外部から変更できるようなシステムを構築する

どれも電子工作が必要で本質的な解決ができていない上に動作が不安定なので、医療機関側のオペレーションを崩しやすく、メンテナンスのコストがかかる可能性が高い状況でした。

そんな中で「管理番号の二重管理を統一する」ことに重点を置いたことで、レシートプリンター導入による解決が提案されました。
発券機を置き換え、番号の発番を「クロンスマートパス」によるものに統一することで、番号の衝突は起きなくなります。

さらに、受付に来た患者さんの対応中であっても発券機が自動的に番号券を吐き出すので、オンラインからの受付に気づけるという効果も見込むことができます。

ハマったポイント

論理的に問題は解決しましたが、難所は実装やテストが終わった後の導入時にありました。
物理デバイスの特性上、医療機関の機器構成やネットワーク環境によって様々な問題が発生し、都度対応を強いられることになります。

医療機関のネットワークが複雑

医療機関のネットワークは、電子カルテや受付のPCなど、様々なネットワーク機器があるので、ルーターやハブ周りがかなりカオスになっています。
個人情報や医療データを扱う都合上、ネットワークから切り離されていたり、厳密なセキュリティが組まれていることも多いです。

医療機関のスタッフの方がネットワークの管理をしている訳ではないので、ここに割り込むのは困難を極めました。

デバイス都合の動作不良

上記を解消した後に「TM-m30Ⅲ-H」のデバイス仕様に起因する動作不良「特定の暗号化形式を含んでいるWi-Fi に接続できなくなる」という事象が発生しました。

この事象は特定医療機関でしか再現しなかったので、原因の究明に多くの工数を割くことになりました。

パスワードの打ち間違いや医療機関のホワイトリスト設定のヒアリングから始まり、最終的にネットワーク事業者のサポート窓口まで問い合わせを行なったことで上記の事実が判明し、無事解決することができました。

しかし、かなりの期間をとってオフィスで動作検証をしていたにも関わらず、このような思わぬ落とし穴によって導入が遅れる結果となってしまいました。

物理デバイスの辛さ

紹介した以外にも、物理デバイスには様々なハマりポイントがあります。

ある医療機関でうまくいっても、別の医療機関でその知見は利用できず、ナレッジが属人・属地化しやすいというのもかなり辛いところです。

解決に実際にエンジニアが訪問する必要があるため、スケールがしにくかったり、技術サポートの整備も課題となりそうです。

最終的な構成

「クロンスマートパス」の発券機連携は最終的に以下のような構成になっています。

「サーバーダイレクトプリント」の機能を利用した実装となっていて、Dynamo DB + Lambda を利用した典型的なサーバレス構成を利用しています。

ポーリングとなるため、「クロンスマートパス」のバックエンドと統合はせず、Lambdaに対してロングポーリングをかけることで、印刷のタイムラグを減らす試みをしています。

Dynamo DB に印刷するレシートのXML を保存しており、印刷後のデータはDynamo DB のTTL によって自動的に削除されるので、プロビジョニングキャパシティを採用してコストを抑えることができました。

結果

上記の機能は9月にリリースされ、レシートプリンターは今日に至るまで毎日医療機関で番号券を発券し続けています。


番号券を吐き出すレシートプリンター

実装や検証中に辛いことがあっても、自分の作ったプロダクトや機能が本番で動作して、そのログが流れているのを見ると、報われた感じがします。

更なる効果

さらに嬉しいことに、レシートプリンターの導入によって、プロダクトの課題解消とは別の効果がおまけとしてついてきました。

それは、印刷した番号券に二次元コードを記載し、まだ「クロンスマートパス」を知らない患者さんに対してプロダクトの紹介と新規登録の導線を引くことができるというものです。

元々医療機関にチラシなどを置き、スタッフの方に勧めていただくような運用はあったのですが、

  • チラシの用意・郵送のコスト
  • スタッフの方も多忙の中案内をしてくれる余裕があるとも限らない

というのもあり、このような静的な方法で導線を作れるのは思わぬ収穫ではないかと思います。

個人開発・趣味でのエンジニア的活用アイデア

さて、ここまでプロダクトへの組み込みについて話してきましたが、日常生活や個人開発で利用する方法を模索してみたいと思います。
※ 多少無理のある内容が含まれるかもしれません。

タスク管理

タスクをTODOアプリで管理するのは古いです。時代はレシートプリンターです。
レシートプリンターを用いれば、いちいちPCやスマートフォン上のソフトを切り替えるスイッチングコストは発生しませんし、レシートの量でタスクの残量も一目瞭然です。

似たような方法で付箋によるタスク管理がありますが、コストの面で優っています。

レジロール 付箋
1セットの定義 60m × 10ロール 100枚綴り × 5冊
値段 900円 1000円
タスクあたりの値段 0.11円 2円

なんと、約20倍のコストパフォーマンスを誇ります。

レシートプリンターの値段をペイできる損益分岐点は10000タスクからになりますが些細な問題です。
元を取ろうとする心理でより多く、より効率的にタスクを捌くので生産性は飛躍的に上がるはずです。

通知機能の利用

先述した通り、物理的な紙が出るという強烈な通知能力を有するレシートプリンターは、個人開発や趣味プロダクトの開発者用通知機能としてかなり優秀です。

いくつか例を挙げてみます。

  • github上の通知をWehook から転送して通知
  • 死活チェッカーと組み合わせてサーバーダウンを通知
  • 月次、週次のタスクのリマインド

後で対応すると思って忘れてしまうものは紙をそのままタスク管理に繋げることができますし、いますぐ対応しないといけないもの、やる機会を逃すと次のチャンスが来ないものなども隙なくカバーできていますね。

生成AIとの接続

こちらも先述しましたが二次元コードを入れ込めたりと、かなりデザイン性が高いことを利用して、物理メモとして利用することができます。

特にLLMのサマライズとの相性が良いので、技術記事の要約とリンクの二次元コードを載せることで、物理版の「あとでみる」を作ったり、冷蔵庫の中身から出したレシピをそのまま印刷をしてキッチンに持って行ったりなど、上の真面目系な利用の間で色々遊べそうです。

まとめ

色々と活用のアイデアをこじつけて紹介してきましたが、実際使ってみるとかなり面白い面が多いです。

自分の書いたスクリプトによって、実際にデバイスがガチャガチャ動く様子は電子工作感もあり、久しぶりにfunny な開発ができました。

また、インフラの構築やコストを含めた技術選定など、たくさん学びがある機能開発だったなと思います。

皆さんもぜひ、ご自身のプロダクト、そして日々の生活にレシートプリンターを導入してみてはいかがでしょうか?


2025年の「クロンスマートパス」はWeb アプリの領域から一歩踏み出して、物理領域の連携をはじめとした様々なチャレンジを始めました。
2026年も変化の大きい年になりそうですが、時代の変化にしっかりついていける柔軟なプロダクトを作っていけたらと思っています。

MICINではメンバーを大募集しています。
「とりあえず話を聞いてみたい」でも大歓迎ですので、お気軽にご応募ください!
https://recruit.micin.jp/

株式会社MICIN

Discussion