メーカー型番で商品を探しているお客様にとって、商品ページで最初に確かめたいのは写真でも説明文でもなく「型番が合っているか」です。Shopify の商品登録画面には SKU とバーコードの欄が最初から用意されているのに、商品ページにその値を出す手段はテーマ任せで、多くのテーマは SKU を小さく出すだけ、バーコードに至っては一切表示しません。
「シンプル型番・JANコード表示|お手軽SKU・商品コード表示」は、この「登録してあるのに見せられない」状態を解消するために当社(UnReact)が開発した Shopify アプリです。商品登録画面に入っている SKU とバーコードをそのまま読み取り、「SKU:SNB-CMP-ICE」「JAN:4901234567001」のようにラベル付きで商品ページに並べます。お客様がバリエーションを選び直すと、表示される番号もその場で変わります。
この記事では、アプリの管理画面を画面ごと、テーマエディタの設定を 17 項目すべて、スクリーンショット付きで解説します。設置の手順そのものは Shopifyで商品ページにSKU(型番)とJANコードを表示できるアプリについて徹底解説|ご利用ガイド に譲り、ここでは「各項目が何を決めていて、どんな場面でどう使い分けるか」「コードを読まないと分からない制約」に比重を置きます。後半には Liquid と JavaScript で自作する場合の手順と、SKU を生成・印刷するアプリとの使い分けもまとめました。
「シンプル型番・JANコード表示」は、商品ページに選択中のバリエーションの SKU(型番)と JAN コードを表示する Shopify アプリです。英語名は UR: SKU & Barcode Display で、Shopify App Store からインストールできます。

Shopify のバリエーションには、お店の在庫管理に使う「SKU(最小管理単位)」と、JAN / EAN / UPC / ISBN といった世の中で共通の「バーコード」の 2 つの欄があります。このアプリが扱うのはこの 2 つだけで、どちらもアプリ側に入力画面はありません。すでに Shopify に入っている値を表示するだけなので、導入の日にやることは「ブロックをテーマに入れてラベルを決める」ことに絞られます。
アプリの構成は 3 つに分かれています。
要求する権限は「テーマの読み取り」だけです。管理画面でテーマの一覧を出すために使い、商品・顧客・注文のデータには触れません。ストアフロントで SKU とバーコードを読むのはテーマの Liquid なので、値がアプリのサーバーへ送られることもありません。
型番を表示するアプリの中には、アプリ側の画面に商品ごとの値を入れ直すものがあります。このアプリは Shopify の SKU 欄とバーコード欄を直接読むため、商品を増やしても追加の作業は発生しません。CSV で一括登録しているストアなら、「Variant SKU」「Variant Barcode」の列がそのまま商品ページに反映されます。

色やサイズを選び直したときに型番が最初のまま残ると、お客様は間違った番号を控えてしまいます。このアプリは Shopify 標準のバリエーション選択イベント、テーマ独自のイベント、ページ URL の変化という 3 つの経路で切り替えを検知し、どれか 1 つでも届けば値を差し替えます。Horizon と Dawn の両方で動作を確認済みです。

ラベルの文言、縦並びか横並びか、区切り文字、文字の色と大きさ、上下の余白は、テーマエディタの設定パネルで変えた瞬間にプレビューへ反映されます。CSS を書く必要はなく、どうしても細かく直したいときだけ「追加のCSS」の欄が使えます。

バーコードを入れていない商品では JAN の行だけが消え、SKU もバーコードも空の商品ではブロック全体が非表示になります。「JAN:」というラベルの後ろが空白のまま残ることはありません。入力が揃っていない商品が混ざっていても、商品ページの見た目が崩れないのは運用上かなり楽です。

ストアフロントで動くのは数 KB の小さなスクリプト 1 つで、外部のサーバーとは通信しません。表示に必要な値はページに埋め込まれているので、切り替えのたびに読み込みを待つこともありません。
表示するのは数字と文字だけです。縞模様のバーコード画像を生成したり、ラベル用紙に印刷したりする機能はありません。店頭でスキャンするためのラベルが欲しい場合は、印刷専用のアプリと役割を分けることになります。
メタフィールドに入れた独自の品番や、販売元・商品タイプのような他の項目を同じ枠に並べることはできません。「型番」と「JAN」以外の行を足したいときは、テーマの標準ブロックや別の手段を組み合わせる必要があります。
管理画面に商品一覧を持たない設計なので、「この商品だけ型番を隠す」というスイッチはありません。隠したい商品は SKU とバーコードの欄を空にするか、その商品にだけ別の商品テンプレートを割り当ててブロックを置かない、という方法になります。
ホームページの「注目商品」セクションや、コレクション一覧の「クイック追加」の中では、バリエーションを切り替えても URL が変わらないため、値が更新されないことがあります。商品ページでは 3 つの検知経路が揃いますが、それ以外の場所は保証の外です。
ブロックを追加した直後はラベルが空で、値だけが表示されます。「SKU」「JAN」といった文言は必ず自分で入れる必要があり、言語ごとに自動で切り替わる仕組みもありません。多言語ストアで言語ごとにラベルを変えたいときは、テーマの翻訳機能でブロック設定の文字列を翻訳する運用になります。
料金はプラン 1 つだけです。
機能の制限によるプランの違いはなく、設定項目はどちらのプランでも同じです。インストールの直後に料金プランの確認画面が出ます。プランを選ばないまま管理画面を開くと、毎回この画面へ移動します。
Shopify の他のアプリと同じ流れです。


![]()
インストールしただけでは商品ページに何も出ません。次の「テーマへの追加」でブロックを入れ、「保存」を押した時点で表示が始まります。
管理画面は「設定」の 1 画面だけで、サイドバーにもこの項目しか並びません。画面の中は上から、テーマに追加するカード、2 つのお知らせバナー、言語設定のカード、おすすめアプリのカードの順です。

型番の表示そのものに関する設定は、この画面には 1 つもありません。管理画面の役割は「テーマエディタへ連れて行くこと」と「管理画面の言語を変えること」の 2 つです。

画面のいちばん上にあるカードで、操作は 3 つです。

すでにブロックが入っているテーマで「テーマに追加」をもう一度押すと、2 つ目のブロックが追加されます。商品ページに型番が二重に出たときは、テーマエディタで片方を「ブロックを削除」で消してください。
カードの下に、黄色の警告と青色の案内が出ます。黄色は「テーマに追加」での自動追加が失敗したときに手動追加を促すもので、管理画面の言語が日本語のときだけ表示されます。青色は、テーマエディタからアプリブロックを手動で追加しても同じ結果になるという補足です。どちらも読むだけで、押す操作はありません。

ここで変わるのはアプリの管理画面だけです。お客様が見るストアフロントの表示には影響せず、テーマエディタの設定項目の文言(「SKU(型番)を表示」など)は Shopify アカウントの言語に従います。こちらも同じ 20 言語に翻訳されています。

型番と JAN コードの入力場所はアプリの中ではなく、Shopify の商品編集画面です。「商品管理」から商品を開き、バリエーションごとの編集画面で「在庫」カードの「詳細を表示」を開くと、「SKU (最小管理単位)」と「バーコード」の欄があります。バリエーションの無い商品では、商品の編集画面に同じ欄が直接並びます。
ここに入れた値が、そのまま商品ページに出ます。アプリを削除しても欄の値は残ります。読み取っているだけで、書き換えも複製もしていないからです。
「テーマに追加」を押すと、商品ページのテーマエディタがブロックを入れた状態で開きます。


ここで右上の「保存」を押すと、商品画像と説明文の下に型番と JAN コードが表示されます。テーマエディタを閉じるときに「最後のセッションを復元しますか?」と聞かれたら、保存されていなかった印なので、もう一度開いて保存してください。
価格のすぐ下など、別の位置に置きたいときは手動で追加します。テーマエディタで「商品」>「デフォルトの商品」を開き、「商品情報」セクションの中で置きたい場所の「ブロックを追加」を押して「アプリ」タブを選びます。Horizon テーマでは「詳細」グループの中の「ブロックを追加」を使うと、商品名・価格・購入ボタンと同じ右の列に入ります。


追加した直後はグループの先頭に入るので、左のブロック一覧でドラッグして価格の下や購入ボタンの下へ動かします。このブロックは商品テンプレートにしか追加できず、コレクションページやホームページの「ブロックを追加」には出てきません。
商品テンプレートを複数使っているストアでは、ブロックは追加したテンプレートにだけ入ります。「デフォルトの商品」に入れても、別のテンプレートを割り当てた商品には出ないので、そちらにも同じ手順で追加してください。
左のブロック一覧でアプリのブロックを押すと、設定パネルが開きます。設定は「表示設定」「スタイル設定」「余白設定」「追加設定」の 4 グループに分かれ、合わせて 17 項目です。


設定を変えるとプレビューはすぐに変わりますが、ストアに反映されるのは「保存」を押してからです。テキスト欄に入力した直後に「保存」を押すと、クリックが入力の確定に使われて保存されないことがあるので、一度パネルの別の場所を押してから「保存」を押してください。


案内枠の文言はストアのメイン言語で出ます。英語のストアでは「This product has no SKU or barcode (this notice is only shown in the theme editor)」になります。


ラベルを薄く・値を濃くという初期状態の差は、視線を数字に集めるための設計です。ラベルをはっきり出したいときは、ラベルの色にテーマの文字色と同じ値を指定すると薄める処理が外れます。

スマホでは画面が縦に長くなりがちなので、文字を 12px、余白を 4px にするなど PC より控えめにするのがおすすめです。テーマエディタ上部のスマホアイコンで、スマホ幅のプレビューに切り替えて確かめられます。


要素のクラス名は、ラベルが ur-sku-barcode__label、値が ur-sku-barcode__value、区切り文字が ur-sku-barcode__separator、SKU の行が ur-sku-barcode__row--sku、バーコードの行が ur-sku-barcode__row--barcode です。たとえば値だけを太字にし、SKU の行とバーコードの行の間を少し広げたいときは、次のように書きます。
.ur-sku-barcode__value { font-weight: 700; }
.ur-sku-barcode__row--barcode { margin-top: 4px; }
1 行目が値の太字化、2 行目がバーコードの行の上に 4px の隙間を足す指定です。ブラウザの検証機能(右クリック > 検証)で要素を確かめながら書くと、どのクラスに当てればよいかがすぐに分かります。
同じグループの「アプリを管理」は Shopify 管理画面のアプリ一覧へのリンク、「ブロックを削除」はこのブロックをテーマから外すボタンです。削除も「保存」を押すまで確定しません。
公開ストアの PC 表示では、「テーマに追加」で入れた位置(商品画像と説明文の下)に 2 行で表示されます。

ここからは、業種や置き場所に合わせた設定の組み合わせを 4 つ挙げます。
1 行にまとめて場所を取らない … 「並び方」を横並び、「横並びの区切り文字」を「|」にします。商品名のすぐ下のように縦の余裕が無い位置に向いています。

型番だけで通じる業種では値だけ … 「SKU のラベル」と「バーコードのラベル」を両方空にします。商品説明の中で「型番」と書いているストアや、数字を見れば分かるお客様が多い BtoB 向けの構成です。

JAN は社内用で見せない … 「バーコード(JANコード)を表示」を OFF にします。SKU の行だけが残り、JAN の値は商品データに入れたまま隠せます。

型番を主役にする … 「テキスト配置」を中央揃え、「値の色」にブランドカラー、「文字の大きさ(PC)」を 18〜20px にします。ラベルは未指定のまま薄く残すと、視線が数字に集まります。


Shopify のテーマは、バリエーションを切り替えたときにアプリブロックの中身を描き直しません。描き直されるのは価格や在庫などテーマ自身のブロックだけです。そこでこのアプリは、商品の全バリエーションの ID・SKU・バーコードをページに埋め込んでおき、切り替えを検知したらスクリプトが値を差し替えます。検知の経路は次の 3 つで、どれか 1 つでも届けば動きます。
3 つのどれにも当てはまらないテーマでは追随できず、商品ページを読み込み直すと正しい値になります。また、埋め込めるバリエーションは 250 件までです。251 件目以降を選んだときは、その場で Shopify からブロックの HTML を取り直して差し替えます。通信に失敗したときは直前の表示が残ります。

長い型番は折り返して表示するので、横にはみ出すことはありません。横並びで窮屈になるときは縦並びに戻すか、「文字の大きさ(スマホ)」を小さくしてください。
アプリを使わずに同じことをするなら、テーマの商品セクションに Liquid を足し、切り替えの追随は JavaScript で書きます。仕組みを知っておくと、アプリが何を肩代わりしているかが見えてきます。
まず表示の部分です。Dawn なら sections/main-product.liquid の中で、価格ブロックの近くに次のコードを置きます。選択中のバリエーションの SKU とバーコードを読み、空でない行だけを出します。
{%- assign current = product.selected_or_first_available_variant -%}
{%- assign sku = current.sku | default: '' -%}
{%- assign barcode = current.barcode | default: '' -%}
{%- if sku != blank or barcode != blank -%}
<div class="my-sku-barcode" data-sku-barcode>
{%- if sku != blank -%}
<div data-row="sku"><span>型番</span> <span data-value>{{ sku }}</span></div>
{%- endif -%}
{%- if barcode != blank -%}
<div data-row="barcode"><span>JAN</span> <span data-value>{{ barcode }}</span></div>
{%- endif -%}
</div>
{%- endif -%}
SKU が空のときは空文字、バーコードが空のときは null が返るという違いがあるため、両方を default フィルタで空文字に寄せてから比べています。これを忘れると、バーコード未入力の商品で「JAN null」と表示される事故が起きます。
次に切り替えの追随です。テーマはバリエーションを変えてもこの要素を描き直してくれないので、全バリエーションの値を JSON で埋め込み、Shopify 標準のイベントを聞いて差し替えます。
<script type="application/json" data-sku-barcode-variants>
{"ids": {{ product.variants | map: 'id' | json }},
"skus": {{ product.variants | map: 'sku' | json }},
"barcodes": {{ product.variants | map: 'barcode' | json }}}
</script>
for ループではなく map フィルタで 3 本の配列を作っているのは、ループの上限と出力量を抑えるためです。この JSON を読んで差し替えるスクリプトが次です。
document.addEventListener('shopify:product:select', function (event) {
event.promise.then(function (result) {
var id = String(result.variant.id).replace(/.*\//, '');
var box = document.querySelector('[data-sku-barcode]');
var data = JSON.parse(document.querySelector('[data-sku-barcode-variants]').textContent);
var index = data.ids.map(String).indexOf(id);
if (!box || index < 0) return;
var sku = data.skus[index] || '';
var barcode = data.barcodes[index] || '';
box.querySelector('[data-row="sku"] [data-value]').textContent = sku;
box.querySelector('[data-row="barcode"] [data-value]').textContent = barcode;
box.querySelector('[data-row="sku"]').hidden = !sku;
box.querySelector('[data-row="barcode"]').hidden = !barcode;
box.hidden = !sku && !barcode;
});
});
イベントが返すバリエーション ID は、テーマによって gid の形で来ることも数字だけで来ることもあるため、末尾の数字だけを取り出して比べています。値を書き換えたあとに空の行を hidden で隠し、両方空ならまとめて隠すのは、表示側の Liquid と同じ判定をブラウザ側でも繰り返す必要があるからです。
ここまでで Horizon と最新の Dawn では動きますが、このイベントを発火しないテーマでは何も起きません。旧バージョンの Dawn や有料テーマの独自イベント、URL の変化を監視する処理をそれぞれ足し、テーマを更新するたびに main-product.liquid へ同じ変更を移し替える保守が続きます。ラベルの文言や色・余白をテーマエディタから変えられるようにするには、さらに schema とスタイルの記述が要ります。アプリは、これらを 1 つのブロックに閉じ込め、テーマを乗り換えても同じ手順で入るようにしたものです。
App Store で「SKU」「barcode」と探すと、SKUGen や Quick SKU Barcode のような「SKU を自動で採番するアプリ」「バーコードの画像を作ってラベルに印刷するアプリ」が多く並びます。名前は似ていますが、商品ページに値を見せるアプリとは役割が違います。ここでは、同じストアに両方入れるときの順番と設定の決め方を整理します。
採番アプリは、商品名やオプションから規則的な SKU を生成して Shopify の SKU 欄に書き込みます。印刷アプリは、バーコード欄の数字を縞模様の画像に変換してラベル用紙に出力します。どちらも値を「作る」「出す」側で、お客様が見る商品ページには何も表示しません。
「シンプル型番・JANコード表示」はその逆で、欄に入っている値を「見せる」側です。自分では値を作らず、Shopify の欄だけを読みます。つまり採番アプリが SKU 欄に書いた値は、そのまま商品ページに現れます。
順番は「採番アプリで欄を埋める → 表示アプリでブロックを入れる」です。表示アプリは欄が空の商品で行ごと消す設計なので、先に入れても壊れはしませんが、商品によって型番が出たり出なかったりする期間ができます。採番を一括で済ませてから表示を始めると、公開ストアに中途半端な状態を見せずに済みます。
採番の規則を途中で変えて SKU 欄を書き換えた場合も、表示側の設定は触らなくて構いません。次にページが開かれた時点で新しい値が出ます。
バリエーション名や SKU を商品タイトルの末尾に足すタイプのアプリ(Variant Title: Color, SKU など)を使っているストアもあります。タイトル側に型番が出ている状態でこのアプリも入れると、商品ページに同じ型番が 2 回並びます。
併用するなら役割を分けます。タイトル側には SKU を出さずバリエーション名だけにして、このアプリで型番と JAN コードを商品情報の行として出すのがいちばん自然です。逆にタイトルに型番を残したいなら、こちらは「SKU(型番)を表示」を OFF にして JAN コードの行だけを担当させると、情報が重なりません。
次のどれかに当てはまるなら、表示アプリから入れる価値があります。
まだ SKU の付け方が決まっていないストアは、先に採番アプリで規則を決めて欄を埋めるほうが近道です。店頭の在庫管理が主目的でラベル印刷が要るなら、印刷アプリを先に入れ、商品ページの表示は後から足しても遅くありません。
「シンプル型番・JANコード表示|お手軽SKU・商品コード表示」は、Shopify に登録済みの SKU とバーコードを、ラベル付きで商品ページに出すことだけに絞った Shopify アプリです。管理画面は「設定」の 1 画面、テーマエディタの設定は 4 グループ 17 項目で、ラベル・並び方・区切り文字・色・文字の大きさ・余白をプレビューを見ながら決められます。
バリエーションの切り替えには 3 つの経路で追随し、空の行は自動で消え、権限はテーマの読み取りだけ、外部との通信はありません。できないことも明確で、バーコード画像の描画、SKU 欄とバーコード欄以外の表示、商品ごとの ON / OFF は対象外です。
月額 $2.99(年額 $29.99)、7 日間の無料体験付きです。型番で指名買いされる商品を扱っているなら、まず Shopify App Store から入れて、商品ページに型番と JAN コードが並ぶ状態を試してみてください。

当社では、商品ページの情報を充実させるアプリや、運営の手間を減らすアプリを多数公開しています。型番表示と組み合わせやすいものを挙げます。