0
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?

ブラウザからレシートプリンターで印刷するには? Web アプリの壁と、公開されている選択肢

0
Posted at

お店の機器とシステムをつなぐ仕事をしています。

最近、モバイルオーダーを作る会社さんがどんどん増えています。お客さんがお店の QR を読んで、自分のスマホで注文する仕組みです。アプリを入れてもらうより Web で完結させるほうが手軽なので、Web で作る会社さんが多いんですよね。

ところが、Web で作ると意外なところで壁に当たります。注文が入ったらキッチンでレシートを出したい、レジのプリンターで伝票を刷りたい。そこで「ブラウザからプリンターにつなげない」問題が出てきます。

この記事では、その壁がどこにあるのかと、メーカーが公開している手段を整理します。

内容は、MDN・Chrome for Developers・各メーカーの公開マニュアルの範囲です。対応機種や細かい仕様は、必ず公式のドキュメントで確認してください(2026 年 10 月時点)。

なぜブラウザからは直接つなげないのか

ネイティブアプリなら、プリンターの IP とポートにソケットを張ってバイト列を送れます。ブラウザでは、これがそのままではできません。

1. 普通の Web ページには TCP ソケットが無い

Chrome には Direct Sockets(TCPSocket)という API がありますが、Isolated Web Apps 向けの機能で、厳しい CSP や cross-origin isolation が前提です。一般の Web ページから気軽に使えるものではありません。

2. HTTPS のページから http の機器へは Mixed Content になる

モバイルオーダーは当然 HTTPS で公開します。一方、店内のプリンターは http://192.168.x.x のような宛先になりがちです。HTTPS のページから http へ投げる fetch() は Mixed Content としてブロックされます。

3. 公開サイトから LAN への通信そのものが制限されている

Chrome は Chrome 94 で、公開かつ http のページからプライベートネットワークへの通信を止めました(Private Network Access)。現在は後継の Local Network Access として、公開サイトから LAN へ通信するときにユーザーの許可を求める方式に移っています。

スター精密の WebPRNT のマニュアルにも、https でないサイトからは Chrome 94 以降で印刷できないことが書かれています。

ブラウザの API で直接つなぐ

API 何とつなぐか 対応の目安
Web Serial シリアル(USB シリアル含む) Chrome / Edge。Android Chrome や Firefox も新しい版で対応が進んでいる
WebUSB USB 機器 Chrome / Edge / Android Chrome
Web Bluetooth BLE 機器 Chrome / Edge / Android Chrome(Linux は既定で無効)

どれも secure context(HTTPS)必須で、ユーザーが機器を選んで許可する形です。

ここで大事なのが Safari / iOS Safari はどれも非対応という点です。お店の端末が iPad なら、この方法は使えません。Android の WebView でも使えないので、アプリに Web を埋め込む作りでも注意が要ります。

メーカーが公開している手段

ここからは、スター精密とエプソンが公開している手段です。大きく 3 つの型に分かれます。

型 1:ブラウザ → LAN のプリンターへ HTTP(S) で送る

スター精密 WebPRNT
ブラウザの JavaScript から、プリンターの /StarWebPRNT/SendMessage へ直接リクエストを送ります。プリンターは状態を返してくれます。

公式の注意として、Web アプリを https で公開するなら、プリンターへも https で送る必要があります。プリンター側とブラウザ側の両方に証明書の設定が要り、自己署名証明書なら端末にインポートします。

エプソン ePOS SDK for JavaScript
ブラウザから、プリンターの中にある ePOS のサービスへ XML を送ります。対応は有線・無線 LAN です(USB / Bluetooth は対象外)。HTTPS では、プリンターの自己署名証明書の扱いがやはり課題になります。

👉 向いている場面:店内の LAN で動く Web POS。HTTPS と証明書の運用を自分たちで持てるなら有力です。

型 2:プリンターがサーバーを見に行く(クラウド起点)

スター精密 CloudPRNT
プリンターがサーバーへ定期的に POST して状態を伝え、ジョブがあれば GET で受け取り、刷り終わったら DELETE で完了を知らせます。MQTT を使う方式もあります。

エプソン Server Direct Print
TM-Intelligent プリンターが Web サーバーへ定期的にリクエストを送り、返ってきた XML を印刷します。

👉 向いている場面:モバイルオーダーと一番相性がいい型です。注文はサーバーに入るので、そこからプリンターに取りに来てもらえば、ブラウザと LAN の壁を通らずに済みます。そのかわり、対応機種が必要で、ポーリングの間隔ぶんの遅れが出ます。

型 3:アプリに渡して印刷してもらう

スター精密 PassPRNT
URL スキーム(Android は Intent)で PassPRNT アプリを呼び出し、HTML や PDF を渡して印刷します。

エプソン TM Print Assistant
Web やアプリから XML / PDF を渡すと、アプリがプリンターのコマンドに変換して、Bluetooth・LAN・USB のプリンターへ送ります(Android では URL スキームで渡すデータは 200KB 以下)。

👉 向いている場面:タブレットやスマホに Bluetooth のプリンターをつなぐお店。端末にアプリを入れてもらう必要はありますが、Web 側はかなり楽になります。

まとめ:どれを選ぶか

状況 まず検討したい型
注文がサーバーに入る(モバイルオーダー・EC) 型 2:クラウド起点
店内 LAN の Web POS で、証明書を運用できる 型 1:ブラウザ → LAN
iPad / スマホ + Bluetooth プリンター 型 3:アプリに渡す
PC の Chrome + USB プリンター ブラウザの API(WebUSB / Web Serial)

プリンターや決済端末のような店内の機器とつなぐところは、Web だとネイティブと同じ感覚では進みません。設計の早い段階で「どの型でつなぐか」を決めておくと、あとで慌てずに済みます。

参考(公式)

0
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
0
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?