← ハシトシステム トップ English ツール ブログ
設定
生成結果

JANコードを 2 で始めている理由

このツールが出す JAN コード(EAN-13 と同じ13桁)は、必ず 20〜29 で始まります。これは GS1 が「社内利用向け」として留保している帯で、事業者に割り当てられることがありません。つまりここで生成した番号が実在の商品と衝突することはありません

日本の商品によく付いている 45 / 49 で始まる番号は、GS1 Japan が実際の事業者へ割り当てたものです。テストデータのつもりで 49 始まりを適当に作ると、他社の実在商品と同じ番号を自社のマスタに入れてしまうことが起こりえます。POS やECの検証では、この違いが後から効いてきます。

チェックディジットの計算

13桁目は前の12桁から機械的に決まる検査用の数字です。左から数えて奇数桁を1倍、偶数桁を3倍して合計し、その合計を10の倍数に切り上げるために足りない数がチェックディジットになります。このツールは毎回この式で13桁目を計算しているので、生成した番号はバーコードリーダーやバリデータを通ります。

検算の例です。490177701868 の12桁に対する正しいチェックディジットは 6 で、13桁は 4901777018686 になります。チェックディジット計算で同じ結果を確認できます。

出力される列

内容
sku商品コード。カテゴリ2文字+4桁+英字1文字。同じ生成の中で重複しない
name商品名。架空のブランド名+品目+規格
category飲料・菓子・日用品・文具・家電のいずれか
jan13桁。20〜29 始まり・チェックディジット計算済み
price / tax_rate / price_incl_tax税抜価格・税率・税込価格。飲料と菓子は 0.08、それ以外は 0.10
stock在庫数。0〜499
released_on発売日。今日より後の日付は出しません

シードを固定する意味

シードが同じなら、何度押しても同じ行が同じ順で出ます。テストの期待値をコードに書いたり、不具合を再現したりするときに、毎回データが変わると比較になりません。逆に別パターンが欲しいときはシードを 1 文字変えれば全部入れ替わります。

生成はすべてブラウザ内のJavaScriptで行っています。サーバーへ送信されるデータはありません。ブランド名・商品名はすべて架空で、実在の企業・商品を指すものではありません。

よくある質問(FAQ)

生成したJANコードを実際の商品に付けてよいですか?

いけません。20〜29 で始まる番号は社内・店内での利用に限って留保されている帯で、流通させる商品に付けるものではありません。実際に販売する商品のJANコードは GS1 Japan から事業者コードの割り当てを受けて採番します。このツールの出力はテスト専用です。

同じシードで違う件数を出すと、前半は同じになりますか?

なります。生成は先頭から順に進むので、シードが同じなら 10 件生成したときの 10 行は、100 件生成したときの先頭 10 行と一致します。件数を増やしても既存行がずれない、と考えて構いません。

SQLの出力はそのまま実行できますか?

products テーブルが sku / name / category / jan / price / tax_rate / price_incl_tax / stock / released_on の列を持っていれば、そのまま流せます。文字列内のシングルクォートは 2 つ重ねてエスケープしています。列名が違う場合は INSERT 文のヘッダ部分を置換してください。

商品名に実在のメーカー名は入りますか?

入りません。ブランド名は「サンプル」「テスト」「ダミー」など、テストデータであることが一目で分かる語だけを使っています。品目名(緑茶、ボールペンなど)は一般名詞です。