レシートわん
トリミングの仕上がり写真とひとことを、レジのレシートプリンターでカードとして1枚刷るアプリです。スマレジの審査を通して、アプリマーケットで公開中です。ここには、何を解こうとして何を作らないと決めたかを書いています。
解いた困りごと
トリミングサロンの悩みは、集客より次に来てもらうことです。犬の毛は伸び続けるので、来る必要はずっとあります。それでも、次の予約を取らずに帰ったお客様は、しばらくすると別の店に行きます。悪気があるわけではなく、いつ行けばいいか分からなくなるだけです。
解き方としてよくあるのは、予約システムを入れる、LINEの公式アカウントを作って友だちを増やす、といったものです。どれも効きますが、どれも店に新しい運用が1つ増えます。会計のあとに友だち追加をお願いし、配信を作り、反応を見る。人手のない店では、その運用ごと止まります。
そこで、すでに毎回起きている「会計してレシートを渡す」の中に載せることにしました。仕上がりの写真とひとこと、次回の目安を1枚のカードにして、レジのプリンターから出します。お客様の側に必要な操作はありません。
作らないと決めたこと
この製品は、足せば足すほど「小さな予約システム」に近づきます。そこには行かないと決めました。
会計のデータに触らない。スマレジの取引データは読みません。会計を起点に自動で印刷することもしません。店員が作って、印刷ボタンを押したときだけ1枚出ます。自動化したほうが手間は減りますが、会計に連動させると、写真がない日でも何かが出たり、返金や取り消しのときに妙な動きをしたりします。お金の流れに、思い出のカードを結びつけないことにしました。
犬種から次回の時期を推定しない。「トイプードルなら1ヶ月」のような自動推定は作りません。次回の目安は、店員が1〜3ヶ月から選びます。毛の伸び方は個体でも季節でも違い、どのくらいの長さを好むかは飼い主によって違います。この判断はトリマーが持っていて、アプリは持っていません。持っていない判断を、それらしい数字にして出す機能は作りませんでした。
プレビューと印刷結果を、別々に作らない。画面に出しているものと、実際に刷られるものは同一の画像です。よくある作りは、画面用のHTMLと印刷用の画像を別々に用意することですが、それをすると必ずずれます。印刷物はボタンを押すまで確認できず、ずれた1枚はお客様の手に渡ります。刷り直しはお客様を待たせます。だから、見えているものがそのまま出る作りだけを許しました。
カードに絵文字や飾りを載せない。肉球のアイコンや飾り罫は、画面ではかわいく見えます。ところがレシートプリンターは白黒の2階調で、解像度も高くありません。細い線や小さい模様は潰れて、ただの黒い染みになります。同じ理由で、本文の書体は明朝をやめてゴシックに統一しました。明朝は横線が細く、ウロコが消えて汚くなります。文字の階層は、太さではなく大きさで付けています。刷れるものだけを載せるという制約から版面を決めました。
LINEも通知許諾も使わない。友だち追加をお願いする一言も、通知を許可してもらう操作も、この製品には出てきません。レシートは、何も許可しなくても受け取れます。
中心に置いたのは、58mmの版面
このアプリの本体は、画面ではなくて刷り上がった1枚のカードです。作りながらいちばん時間をかけたのも、その版面でした。
構成は、店名・写真・メッセージ・次回の目安・日付。この順に固定しています。渡された人が上から順に読んで、最後に「次はこのあたり」が残るようにしました。
写真は、白黒の点の粗密で濃淡を表す方式に変換してから刷ります。単純に明るさで白黒へ倒すと、犬の顔は黒い塊になります。毛のふわふわが残るかどうかは、この変換で決まりました。
印刷する画像には、寸法とデータ量の上限があります。写真を大きく入れて長い文章も書くと、必ず超えます。そこで、作成の画面にいま何ピクセル・何KBか、あと何行入るかを出しています。超えたときに黙って縮めるのではなく、先に見せて、店の人が写真か文字かを選べるようにしました。
レシートプリンターに、画像を渡すということ
スマレジのレジ端末で印刷する仕組みは、文字を送るのではなく画像のURLを渡す方式です。画像にできるものは何でも刷れる代わりに、寸法とデータ量に厳しい上限があります。レシートの紙幅によっても上限が変わります。
そこで、カードはブラウザの中で1枚の画像として描き切る作りにしました。同じ画像をプレビューに使い、そのまま印刷に回します。サーバー側では画像を作りません。画像を作る場所が2つあると、いつか片方だけが更新されます。
紙幅の設定も、機種を選ばせるのはやめました。機種ごとの上限を並べても、店の人は自分の機械の型番を覚えていません。58mmか80mmかだけを選んでもらい、その幅で全機種が安全な寸法を採っています。選択肢を減らして、外れる余地をなくしました。
もう1つ、画面に当てて実寸を合わせる設定を入れてあります。プレビューが実際の紙と同じ大きさで見えないと、文字の詰まり具合が分からないからです。紙に出るものは、紙の大きさで確認できるべきだと考えました。
扱うデータの範囲を先に決めた
お客様の写真を扱うので、範囲は先に決めました。
会計のデータは読みません。誰がいくら払ったかを、このアプリは知りません。
写真は印刷のために一時的に置くだけです。印刷用の画像はレジに渡すために置き場が要りますが、貯めるためのものではありません。台帳のように写真を蓄積する機能は持っていません。
店ごとの設定(見出しや定型文)は、使っている端末に保存します。ログインはスマレジのアカウントで行い、契約が止まったときはその契約のログインを失効させます。
このアプリの情報
- 対象
- トリミングサロン。スマレジ・アプリと接続したレシートプリンターが必要です(プリンターの紙幅は58mm・80mmに対応)
- 料金
- スマレジ・アプリマーケットの掲載を正とします。導入・契約・変更もアプリマーケットからのお手続きになります
- 公開状況
- スマレジの審査を通してアプリマーケットで公開中
- 主な構成
- Cloudflare Workers(Hono)・D1・R2、React+Vite、カードはブラウザのcanvasで描画、スマレジ・プラットフォームAPI(OAuth+レジ端末の印刷)
関連する記事
同じ困りごとを、アプリを使わない方法まで含めて書いた記事があります。
使ってみる、または似たものを作る
使い方・必要な機材・よくある質問は、アプリの紹介ページに載せています。
「トリミングではなく整体の施術後に渡したい」「クーポンを添えたい」といった相談も受けています。刷るものが変われば、版面から設計し直します。自社専用アプリなら、スマレジの審査もアプリマーケットへの手数料もかかりません。