ことのはじまり
わたくしモリタロウはレシートプリンターを使ったプロダクトを開発しています。
このプロダクトのエンジニアは一家に一台レシートプリンターを装備しています。
日常の開発では、皆さんもよく見るであろうテキスト情報の印刷を行っていますが、ふとしたきっかけから「レシートプリンターって画像も印刷できるんだろうか?」という疑問が発生しました。
利用しているレシートプリンターはEPSON製のTM-m30Ⅲ-Hで、公式SDKが充実しています。
SDKを試しに覗いてみるとなんと「addImage」というそれらしいメソッドがあるではありませんか。
これを使ってコードをちょちょいと組んでみるとあら不思議。
一瞬で撮影した画像がレシートに印刷できました。
レシートはテキスト情報が印刷されているものという自分の中の常識が覆りました。
結果を報告。
思ったよりウケてくれました✌️ 嬉しい!!✌️✌️
これがキッカケで、もう少し手の込んだアプリに落とし込んでみました。
つくったもの
成果物はコチラ。(音デルヨ)
またつまらぬモノ(レシートプリント倶楽部)を作ってしまった...😎 pic.twitter.com/Cg26ZD3Y4Z
— モリタロウ🌳 (@moritaro_maru) February 26, 2026
音楽に合わせてポーズを指定されていきます🕺💃
音楽のシャッター音に合わせてオートで写真が撮られていきます📸
プレビュー画面で撮られた画像を選択して、レシートに印刷されるという流れです🖨️
※流れる音楽のタイミングに合わせてポーズ指定のUI切り替えやシャッターを切っていくのが一番難しかった...(小声)
レシートプリンターの制御コードを簡単に抜粋しておきます。
色々な印刷指示方法があるのですが、同ネットワークにいる場合はローカルIPを指定することでWebブラウザのJavaScriptから印刷することができます。
// 画像のキャンバス情報
const ctx = printCanvas.getContext("2d");
// テキスト情報の印字
printer.addTextAlign(printer.ALIGN_CENTER)
.addTextLang("ja")
.addText("ツナギメオフライン.5 2026/02/26\n@LAYERED")
.addFeedLine(1);
// 画像情報の印字
printer.addImage(
ctx,
0,
0,
printCanvas.width,
printCanvas.height,
printer.COLOR_1,
printer.MODE_MONO,
);
// レシート末尾に余白を作るために少し送る
printer.addPageBegin().addPageArea(0, 0, 276, 80).addPageEnd();
// カット
printer.addCut(printer.CUT_FEED);
// 送信(これでプリンターへの印刷実行)
printer.send();
レシートプリンターは出力の速度(出てくる紙の速度)を設定できますが、画像を印刷する時は最も遅い設定にした方が綺麗に印刷できるというTipsを置いておきます。
早すぎると感熱紙にうまいこと印字できず、ドットなどが荒くなる模様。
レシートは紛失する可能性がありますし、感熱紙なので財布に入れておいたら擦れて思い出の写真が薄れていく可能性もあります。
ただそれが、何でもデータとして残る今の時代に「儚さ」という付加価値をつけてくれるのです。
パイオニアじゃなくても
どうやらこのレシートで画像の印刷ですが、若い世代の中ではある程度の認知度があるようです。
調べてみると韓国で流行っていて、日本でも結婚式で活躍しているそうな。(全く知らなかった)
やっぱ「儚さ」なんでしょうね。
1~3万円程度でレンタルできる模様です!
今回僕が使ったレシートプリンターの単価は約5万円。
完全に二番煎じなアプリを形にしましたが、レシートプリンターで画像が印刷できるとなってくると色々な活用方法が頭に浮かんできます...
レシートはテキスト情報しか印刷できないという固定概念からのパラダイムシフトだ!







