量り売りマスターeco
量った重さから価格を出し、価格入りのバーコードを画面に表示してレジで読み取る会計のアプリです。ラベルを1枚も印刷しません。スマレジの審査を通して、アプリマーケットで公開中です。ここには、何を解こうとして何を作らないと決めたかを書いています。
解いた困りごと
量り売りを始めようとすると、最初に立ちはだかるのが計量ラベル機です。量って値段を計算し、ラベルに印刷する機械で、数十万円します。買ったあとも、ラベル用紙が減り続けます。
ところが、小さい対面の店で必要なのは「この量なら、いくら」という数字が1つ、レジに正しく渡ることだけです。ラベルは、その数字をレジまで運ぶための入れ物にすぎません。入れ物のために機械と紙を買い続けているのが、量り売りを始めない理由になっていました。
そこで、ラベルを速く印刷する方法ではなく、印刷という工程ごと外すことをこのアプリの役割に決めました。価格を埋め込んだバーコードを画面に出して、レジでその画面を読みます。運ぶものは同じで、入れ物だけがなくなります。
作らないと決めたこと
印刷しないと決めた時点で、できなくなることがいくつも出ます。それを取り戻す作りには進みませんでした。
セルフのお買い物に対応しない。お客様が量って、カゴに入れて、あとでレジに並ぶ形は対象外です。画面に出したバーコードは持ち歩けないからで、これを成立させるにはやはり何かを印刷することになります。対面で、その場で会計する店だけに絞りました。絞ったおかげで、画面は1つで済み、値段の付いた商品がレジまでの間に増えたり減ったりする話も考えずに済みます。
ラベルに載っていた情報を、無理に持たない。加工日、消費期限、産地。計量ラベルにはこれらが刷られていますが、このアプリでは扱いません。表示が要る商品は、そもそもラベルが要ります。ラベルが要る店には、この製品は向かないとはっきり書くほうが、機能を足すより誠実だと考えました。
スマレジ側の商品データに、余計なものを書き込まない。量り売りの対象かどうかは、スマレジの「タグ」で判別します。会計分類(部門)を使うと売上の集計が変わってしまい、関連商品のコードを使うとその用途が潰れます。タグなら、いま店がやっている運用を壊しません。通常の売価も0円(オープン価格)のまま触りません。会計はバーコードに埋めた価格で通るので、売価を書き換える必要がないからです。
重さあたりの単価を、スマレジに持たせない。これは途中で方針を変えた場所です。当初はスマレジの商品ごとの自由項目に単価を持たせていました。ところがこの項目は商品を1件ずつ取りに行かないと読めません。品目が30あれば30回です。読み込みが遅い機能は、レジの前で使われません。単価と単位はアプリ側に持つことにして、商品の一覧は1回の取得で済むようにしました。「正しい置き場所」より「使える速さ」を採りました。
できないことを、できるように見せない。この方式には前提があります。レーザー式のバーコードリーダーは、光る画面を読めません。印刷物の反射光を読む方式なので、原理的に無理です。見た目では区別が付かないので、紹介ページの目立つ場所に注意として書いています。買ってから読めないと分かるのが、いちばん困る形だからです(レジ側のカメラで読む方法も案内しています)。
中心に置いたのは、販売の1画面
使う場面は、お客様を前にした対面です。ここで迷う画面は使えません。
会計はこの一瞬です。画面に出たバーコードを、レジ側のリーダーで読む。ラベルも紙も出てきません(写真はイメージです)。
販売の画面は1枚に集約しました。品目を大きなボタンで選び、重さを入れると、同じ画面にそのまま価格とバーコードが出ます。読み取ってもらったら「会計完了」を押して、次の計量へ戻ります。設定や商品の登録は別のモードに分け、営業中の画面には出しません。
単位は商品ごとに変えられます。精肉は100gあたり、コーヒー豆はkgあたり、というように店の言い方が違うためです。選んだ品目に応じて、入力する単位も計算も切り替わります。店の側に言い換えをさせないようにしました。
販売の画面は、通信が切れても動きます。レジ周りは電波が弱いことがあり、そこで会計が止まるのは製品として失格だからです。
桁があふれたら、バーコードを出さない
価格を埋め込むバーコードは、桁数が決まっています。どこからどこまでが商品コードで、どこからが価格か、という設定を店がスマレジ側に持っていて、アプリはそれに合わせます。
ここに事故の芽があります。設定した桁に収まらない価格を無理に入れると、上の桁から落ちます。たとえば価格の枠が4桁なら、12,800円は2,800円として読まれます。バーコードは正しく読み取れ、レジも正常に会計を通し、誰も気づきません。1万円少なく売れたことだけが残ります。
そこで、桁に収まらない価格のときは、バーコードそのものを表示しません。警告を出して止めます。会計が1回できないのは店にとって面倒ですが、静かに1万円安く売れるより、はるかにましです。間違いを表示できてしまう作りにしないのが、この画面でいちばん大事な仕様でした。
もう1つ、桁の設定はスマレジのAPIから読み取れません。店がスマレジ側に入れた値を、アプリ側にも同じように入れてもらう必要があります。自動で合わせられない以上、導入のときにレジで1回読み取りを試す手順を案内しています。合わせられないものを、合っているふりにしないためです。
扱うデータの範囲を先に決めた
扱うのは商品の情報と、店が入れた単価・単位だけです。
お客様の情報は一切扱いません。会計はスマレジ側で完結するので、誰が買ったかをこのアプリが知る必要がありません。
スマレジへの書き込みは最小限です。新しく商品を作るとき以外は、既存の商品データを書き換えません。
スマレジへの接続情報は暗号化して保存し、店ごとにデータを分離しています。
このアプリの情報
- 対象
- 鮮魚・精肉・コーヒー豆やナッツ・古着のkg売りなど、専用の計量機を持たない対面の量り売り店(NON-PLUの読み取りに対応した有料プランが前提)
- 料金
- スマレジ・アプリマーケットの掲載を正とします。導入・契約・変更もアプリマーケットからのお手続きになります
- 公開状況
- スマレジの審査を通してアプリマーケットで公開中
- 主な構成
- Cloudflare Workers(Hono)・D1、Vite+TypeScriptの画面、PWAでオフライン動作、スマレジ・プラットフォームAPI(OAuth)
必要な機材は、レジのほかに「表示する端末(スマホ・タブレット・PC のいずれか1台)」と「はかり」、そして画面のバーコードを読む手段だけです。
関連する記事
同じ困りごとを、アプリを使わない方法まで含めて書いた記事があります。
使ってみる、または似たものを作る
機材の条件・使い方・よくある質問は、アプリの紹介ページに載せています。読み取りリーダーの方式については、導入前に必ずご確認ください。
「セルフの量り売りをやりたい」「はかりと直接つないで自動で重さを取りたい」といった相談も受けています。自社専用アプリなら、スマレジの審査もアプリマーケットへの手数料もかかりません。