2026年10月21日に公表されたPHPの脆弱性(CVE-2026-109618 および CVE-2026-109619)に関し、当社の全Shopifyアプリ(Japan Order CSV、Delete Me、Mockingbird、B2E 社販アプリ)への影響を確認いたしました。いずれのアプリもPHPを使用しておらず、本脆弱性の影響はございません。ご利用のマーチャント様において、アップデートや設定変更などの対応は不要です。

当社では、公表される脆弱性情報を継続的に監視しており、ご利用の皆様に影響が想定される場合には速やかにお知らせいたします。本件についてご不明な点がございましたら、各アプリのサポート窓口までお問い合わせください。

オファー(Mirakl Offer)(オファー)

定義

Miraklのカタログは「商品(Product)」と「オファー(Offer)」の2層に分かれている。

  • 商品: 商品そのものを表すマスタ情報。JAN/GTINなどの識別子、オペレーターが定めたカテゴリ(タクソノミー)、必須属性、商品名、説明、画像など。セラーが変わっても内容は変わらない
  • オファー: セラーが商品に紐づけて登録する販売条件。価格、在庫数、商品状態(新品・中古など)、出荷リードタイム、配送条件、セラー側の商品コード、セール価格と期間、有効・無効の状態など
  • 紐づけ: オファーは商品識別子(JAN/GTIN)またはマーケットプレイス側の商品IDで既存の商品に結びつく。オペレーターの設定によっては、承認済みの商品にしかオファーを付けられない
  • API: 商品は商品インポート(P41)、オファーはオファーインポート(OF01)と、別々のAPIで登録・更新する

買い手が見る商品ページは1つで、その下に各セラーのオファーが価格や配送条件の順で並ぶ。同じ商品を複数セラーが売る「1商品・N オファー」がマーケットプレイスの基本形になる。

背景

商品とオファーを分けるのは、カタログの品質管理と価格競争を切り離すためである。商品情報はオペレーターが審査・統制し、重複や属性の欠落を防ぐ。一方で価格や在庫はセラーごとの裁量で、頻繁に変わる。ひとつのレコードにまとめると、あるセラーの価格変更が商品ページ全体の更新になり、他セラーの情報にも影響が及ぶ。

システム連携で効いてくるのは更新頻度の差である。商品情報はカタログ登録時に整えれば以後の変更は少ないが、在庫と価格は日に何度も動く。そのため連携基盤では商品の同期と、在庫・価格(オファー)の同期を別の処理として組み、失敗時の再送やレート制限の扱いも分ける設計が一般的になる。

もうひとつの論点は、オファーという概念を持たないシステムとの対応関係である。ShopifyのデータモデルにはProductとVariantはあるがオファーはない。Mirakl側の複数オファーをShopifyでどう表現するか(バリアント、メタフィールド、別商品)は、マーケットプレイス化するストアの設計上の決めどころになる。受注管理システム(OMS)側でも、マーケットプレイスの「オファー」を自社の「商品」と「在庫・価格」にどう対応させるかを最初に決める必要がある。

Flagshipでの関わり

当社のConnector for Miraklは、商品同期、在庫同期、価格同期、注文同期を分離したアーキテクチャになっている。この分け方はMiraklの商品とオファーの2層構造に沿ったもので、更新頻度の高い在庫・価格を商品情報から独立して流せるようにしている。セラー側の受注管理システムでは、Miraklのマーケットプレイスを「もうひとつのモール」として扱い、自社の商品マスタをMiraklの商品に、在庫と価格をオファーに対応させる。商品インポートで受け付ける属性はマーケットプレイスごとに異なるため、商品属性のマッピングはオペレーター単位で設定できる設計を取っている。

Shopifyでは価格は商品オブジェクトの一部なので、最初にオファーの概念を知ったときは「なるほど」と感じた。同じ商品を複数のセラーが出品する構成を想定しており、その場合は価格もセラーごとに異なるからである。

関連リンク