Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】I read 298 Shopify catalogues to find out how often a size run has a hole in it

2026年09月30日に「Dev.to」が公開したITニュース「I read 298 Shopify catalogues to find out how often a size run has a hole in it」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

アパレルECでは、特定サイズが欠品なのに商品ページが残る「穴あき状態」が顧客を逃がす。Shopifyの公開データをプログラムで分析した結果、約1割のスタイルにこの問題があることが判明。管理システムはバリアント単位でしか在庫を見ないため、サイズ全体で見た「穴」を見つけにくい実態をデータで示した。

ITニュース解説

アパレルECサイトでは、商品ページが表示されていても、特定のサイズだけが売り切れているという、見過ごされがちな問題が常に存在している。これは「サイズ展開に穴がある」と表現され、商品全体が完売しているわけではないため、ストア管理者側ではその状態を把握しにくい。しかし、購入しようとした顧客が自分の欲しいサイズがないことに気づくと、購買意欲を失い、販売機会の損失につながる。

この記事は、このような見えにくい問題が実際にどれくらいの頻度で発生しているのかを数値で明らかにするために行われた、Shopifyストアを対象とした詳細な調査について述べている。著者は、単なる個別の事例ではなく、具体的なデータに基づいた客観的な数字を得ることを目的とした。

調査の核となるのは、データ収集の方法だ。多くのShopifyストアは、商品情報を公開されたJSON形式のデータとして提供している。具体的には、「https://{ストアのドメイン}/products.json」というURLにアクセスすると、そのストアの商品カタログデータが取得できる。このデータには、商品の種類、その商品が持つ「バリアント」(色やサイズなどの選択肢)、そして各バリアントの在庫状況などが含まれている。このデータは誰でもアクセス可能で、特別なAPIキーを申請したり、複雑な画面の解析(スクレイピング)を行ったりする必要がない。著者はPythonというプログラミング言語を使って、urllib.requestモジュールでURLからデータを取得し、jsonモジュールでそのデータをプログラムで扱える形式に変換した。さらに、大量の商品があるストアでも全てのデータを取得できるよう、ページを分けてデータを提供する「ページネーション」という仕組みに対応して、繰り返しデータを取得する処理を実装した。

データ収集そのものは比較的容易だったが、次に大きな課題が立ちはだかった。それは、取得したデータの中から「サイズ展開」(例えばS, M, Lといった一連のサイズ)を正確に識別することである。Shopifyでは、商品の「オプション」(選択肢)の名称やその値は、ストアを構築した人が自由に設定できるため、「Size」が「size」や「SIZE」、「Talla」(スペイン語のサイズ)となっていたり、あるいは「Option 1」や「Option 2」として設定されていたりする。また、サイズの値も「M」だけでなく、「Medium」や「md」、「8」、「28x32」など多様な表記が存在する。さらに「One Size」(フリーサイズ)のように、そもそもサイズ展開とは呼べないものもある。

そこで著者は、これらの表記を統一する「正規化」という処理を行った。そして、ある商品がサイズ展開であると判断するためには、そのバリアントが「サイズ」という一つの軸でのみ異なり、かつそのサイズに順序性がある必要があると定義した。例えば、色とサイズの両方の選択肢がある商品は、そのままでは一つのサイズ展開とは見なせない。色ごとにサイズ展開を分割して考える必要があり、そうしないと、実際にはサイズ展開に穴がないのに、たくさんの穴があるように見えてしまうからだ。この厳密な定義と正規化によって、正しい「サイズ展開」を抽出する作業が、データ収集以上に重要で困難な部分だった。

この方法で、438のShopifyストアにアクセスを試み、そのうち354ストアからデータが取得できた。さらに、その中から正確にサイズ展開を読み取れた298ストア、合計64,268のサイズ展開を分析対象とした。

その結果、重要な発見があった。 まず、購入可能なスタイル全体の中で、「穴のあるサイズ展開」(在庫があるサイズの間に、売り切れのサイズが挟まっている状態)の割合は10.3%に達した。つまり、アパレルECサイトの約10スタイルに1つは、このようなサイズ欠けの問題を抱えていることになる。

さらに興味深いのは、その「穴」の形状だ。サイズ欠けが発生しているスタイル全体の72.6%が、ちょうど一つのサイズだけが欠けている状態だった。これは、需要がMサイズやLサイズといった特定の中間サイズに集中し、それらのサイズが最初に売り切れてしまうためだと考えられる。例えば、XXS, XS, S, M, L, XL, XXLというサイズ展開があった場合、MとLが売り切れ、他のサイズは在庫がある、といった状況だ。このような「単一の穴」という特徴は、ストア管理者にとっての実用的な意味合いが大きい。カタログ全体に散在する把握しにくい問題ではなく、一つ一つの商品に存在する、明確な「購買注文上の問題」として捉えることができるからだ。しかし、現状ではどの商品がどのサイズの穴を持っているかを管理システムが教えてくれないため、多くの店舗が「漠然とした問題」としてしか認識できていない。

著者はさらに厳密な定義で問題の深刻度を評価した。もしサイズ展開の端のサイズだけが残っている場合、それは実質的に「完売に近い状態」であり、本当に販売機会を失っているとは言えないかもしれない。そこで、「穴」の両側に2つ以上のサイズがまだ残っている状態、つまり、売れ残った在庫が動きにくくなっている状態を「真に動かせない在庫がある」と定義し直した。この厳密な定義で計算すると、購入可能なスタイル全体の2.8%がこの問題に該当した。これは10.3%という数字よりもはるかに小さいが、販売機会の損失やデッドストックの発生という観点ではより深刻な問題と言える。

この問題がストア単位でどれくらい発生しているかという視点で見ると、調査対象の298ストアのうち、ゆるい定義(一つでも穴があれば該当)では78.5%(234ストア)が、厳密な定義(2つ以上の動かせない在庫がある)では63.8%(190ストア)のストアで少なくとも一つ以上のサイズ欠けが発生していることが分かった。大規模なカタログを持つストアほど、ゆるい定義と厳密な定義での発生率の差が小さくなる傾向も見られた。これは、小規模ストアでは一つのサイズ欠けが完売に近い状態である可能性が高いのに対し、大規模ストアではカタログが大きくなるにつれて、サイズ欠けが解消されるよりも早く新たなサイズ欠けが発生しやすいことを示唆している。

なぜShopifyの管理システムでは、このようなサイズ欠けの問題が分かりにくいのか。その根本的な理由は、Shopifyが個々の「バリアント」ごとの在庫を管理するものの、「サイズ展開」という概念、つまりMサイズがSとLの間に位置し、一連の並びの中に存在する、といったモデルを持っていないためだ。管理画面は「シャツのMサイズが在庫ゼロである」とは教えてくれるが、「シャツのMサイズがゼロであることが、シャツのXXSサイズがゼロであることとは異なる意味を持つ」とは教えてくれない。つまり、サイズを正しく順序付けて、その中にギャップがあるかどうかを分析する、という視点がシステムには欠けているのである。

著者は、サイズ情報を正確に正規化し、順序付けてから「在庫のある部分の最初と最後の間に、在庫切れの箇所がないか」をチェックする、というシンプルなロジックこそが、この問題を発見する上で最も重要だと強調している。この一連の作業は、サイズ表記の多様性を処理し、色などの他の軸とサイズ軸を分離し、サイズを正しく並べ替えるという地道な「前処理」があって初めて意味を持つ。

この調査結果をより多くの人に役立ててもらうため、著者は自身のShopifyストアでサイズ欠けをチェックできる無料ツールを公開している。ストアのドメインを入力するだけで、公開されているカタログを読み込み、どのサイズ展開に穴があり、どのサイズが欠けているかを教えてくれる。これにより、自身のストアがこの問題を抱えているかどうかを、誰でも簡単に確認できるようになった。

この記事は、一見単純な在庫管理の問題の裏に、データの構造化、正規化、分析といったシステムエンジニアリングの重要な側面が隠されていることを示している。そして、地道なデータ分析を通じて、ビジネス上の見過ごされがちな課題を発見し、解決への糸口を見つけることができるという好例だ。

関連コンテンツ

関連IT用語

関連ITニュース