見出し画像

【ZOZOTOWN】PayPayモール出店に向けたデータ連携の取り組み

こんにちは。基幹システム部PayPayモールチームの岸本です。

2019年12月にZOZOTOWN PayPayモール店がオープンしてから1年たちました。
オープン以来、多くのお客様にご利用いただいています。

基幹システム部がPayPayモール出店のためのデータ連携開発に着手し始めたのは、同年10月の中旬でした。
開発期間は約2か月と短期間だったため、基幹システム部の各チームで分担して開発をしました。

今回は、ZOZOTOWNをPayPayモールに出店するため、どういったことが内部で行われていたのかをお話したいと思います。

PayPayモールへのデータ連携

ZOZOTOWNとPayPayモールで行っているデータ連携は、主に「商品連携」「在庫連携」「注文連携」です。

商品連携

商品連携では、ZOZOTOWNの商品データのうち累計約90万件をPayPayモールに送り連携しています。

ひとくちに商品データといっても、商品ID、商品名、価格、商品説明、サイト表示フラグ、性別、カテゴリー、ブランド、サイズ、カラー、スペック、ブランド管理品番などなど、その種類は多岐にわたります。
また、大規模なセールイベントの時などは1回のバッチ処理で20万件連携することもあります。それらの情報更新は、社内管理システムの様々な画面から行われることもあれば、出店ブランド様からのデータ連携で行われることもありますし、イレギュラーなケースとしてデータの直接変更作業によることもあります。

このような時には連携するデータ量が多く、データ反映に時間がかかってしまうことが課題となっていました。その課題を解決するために考えた設計を紹介したいと思います。

まず、これらの変更を漏れなく拾うために、DBのトリガー機能を使い、特定のテーブルに更新が行われたらそれをキャッチして、その商品IDを専用のログテーブルに書き込んでおくようにしました。
次に、このログテーブルにある商品情報を参照して入稿するCSVデータを作っていくのですが、ログテーブルには文字通り商品情報の全ての変更がキャッチされて書き込まれるため膨大な件数となっており、この商品ID群から連携データを作っていくには直列処理では時間がかかりすぎてしまいます。
そのため、CSVデータの作成を並列処理に替えてしてCSVに書き出す1レコードを文字列として別のテーブルに保持しておき最後にそのテーブルを参照して規定の件数ごとにCSV出力するという設計にしました。
データの作成処理は今後の連携ボリュームによって並列数を増やすことが可能ですし、CSVの書き出し処理を分離したことで、並列数を増やしても、なるべくCSVのレコードをまとめて少ないファイル数で連携したいという要望も満たすことができました。

画像1

また、商品データは、PayPayモールのデータ仕様に合うように編集して連携をしています。
編集の方法として、ZOZOTOWNとPayPayモールのデータをマッピングデータとして定義し、ZOZOTOWNのデータをPayPayモールのデータに変換しています。
マッピングは取引先企業とのデータ連携においてよく用いられており、ZOZOとブランド様とのデータ連携でも利用しています。

マッピングしているデータは、カテゴリー、ブランド、検索データなどがあり、レコード総数は約6万件です。
件数も多く、ZOZOTOWNのマスターデータをPayPayモールのマスターデータと突合させてマッピング定義を作成するのはかなり大変でしたが、マッピングが検索の要となるため、私たちシステム担当だけではなく、社内のPayPayモール事業担当者と協力し、しっかり時間をかけて作業をしました。
また、マッピングデータ1つでPayPayモールのカテゴリー構成が変わるなど、お客様の使い勝手を左右する部分なので、一度作ったら終わりではなく現在も都度見直しをしています。
マッピングデータ以外では、商品の構成や表示方法等もPayPayモールの仕様に合わせて連携しています。

連携当初は入稿のレギュレーションの違いから連携エラーも多く出ていましたが、PayPayモール担当者とこまめにやり取りを重ねて徐々に解消していき、現在は安定して稼働できています。

在庫連携

在庫連携では、ZOZOTOWNで管理している在庫の数を連携しています。
ZOZOTOWNでは、自社倉庫内に在庫がある通常商品、ブランド様の店舗と倉庫に在庫がある取寄せ商品、受注販売を行う予約商品の3種類に分類しており、各種類の在庫数量をPayPayモールに連携しています。
ブランド様がPayPayモールへの出店を同意すると、商品連携と同様にバッチで一括で在庫データCSVを作成し、連携しています。

画像2

注文連携

注文連携では、PayPayモールで受注後、在庫を引き当て、APIで注文情報を取得しZOZOTOWN側のDBに注文データを作成します。
その後は通常のZOZOTOWNの注文と同様に出荷処理を行い、お客様への配送が完了すると、出荷ステータス変更APIを使用し、PayPayモールの注文情報を出荷完了に変更します。

画像3

在庫の引き当てのタイミングが異なることによる課題や、PayPayモール特有のキャンセルの仕様等による制約もありましたが、UXをなるべく損なわず且つ、カート内でのアクションや、キャンセルのタイミングによって在庫数に差異が発生しないよう、注意深く設計を行いオープン当初から安定した運用ができています。

最近はZOZOTOWN PayPayモール店の認知が進んできたことや、PayPayモール自体の様々な施策によって注文数が増加してきており、注文連携に関してはパフォーマンスを重要視するようになりました。そのため、先日取り込み処理を並列化させて高速化する対応もリリースしました。
これにより注文のピーク時の動作が安定し、注文連携の遅延が発生しにくくなりました。体感しにくい部分ではありますが、お客様にご不便をおかけすることが少なくなり、運用側の心理的な負担も改善されました。

PayPayモール店オープン後の取り組み

PayPayモール店オープンからの約1年、できるだけZOZOTOWNの機能に追いつくよう改善を進めてきました。
ここからは、この1年で追加した機能を5つ紹介します。

1)ZOZOUSEDの連携

ZOZOTOWN PayPayモール店では、通常商品と古着商品(ZOZOUSED)を両方扱っています。
古着商品をPayPayモールで販売する場合、古着であるということを明記しなければいけません。通常商品と古着商品の区別を明確にするために、連携時に古着であることを連携すると、商品ページに「中古」と表示されるようにしました。

画像4

また、PayPayモールではZOZOTOWNとZOZOUSEDが1店舗として出店していることもあり、同じ商品の中古と新品が検索結果に並んでしまうケースが起きてユーザビリティを損なう懸念があるという意見がカスタマーサポートから出ました。
こちらはヤフーと協議を行い、検索条件に新品と中古の切り替えボタンを設置することで解決ができました。

画像5

PayPayモール店の運用は担当の事業部門だけでなく、ここに関わる全ての部門からアイデアを出し合って改善を進めています。

2)ZOZOクーポンの連携

ZOZOTOWNでは、毎日多くのショップでクーポンを配布しています。
PayPayモール店でも、ZOZOTOWNで実施しているクーポンを利用できるようになりました。ZOZOTOWN PayPayモール店のトップにあるこちらのバナーから、クーポン対象の商品が検索できます。

画像6

クーポン連携は、ブランド様がクーポン実施のエントリーをする際にPayPayモールでも実施するかを選択できるようになっています。
クーポン実施の前日に、PayPayモールでクーポンを発行し、発行したクーポンとZOZOクーポンをマッピングし、対象商品を連携しています。

画像7

クーポン機能を導入したことで売上の向上に大きく寄与できましたし、お得にお買い物ができるのでお客様からも非常に良いフィードバックをいただいています。

3)画像補足文

ZOZOTOWNでは、商品画像の下部にモデルのサイズや、着用している商品のサイズ等を記載しています。
着用感の参考にしたいとお客様から問い合わせをいただくこともある必要な情報のため、PayPayモールでもZOZOTOWNと同じように表示しています。

4)予約商品の連携

2020年11月末から予約商品の連携も開始しました。
オープン当初から話は出ていましたが、開発期間が限られていたこともあって、まずは予約商品の連携を除いてのローンチになっていました。

予約商品の連携が始まったことにより、福袋の販売をすることもでき、通常販売、取寄せ販売、予約販売というZOZOTOWNの販売形態全てをPayPayモールで実現することができました。
予約商品、福袋ともに予想よりも多くのお客様に注文いただけて、嬉しかったです。

5)価格の自動切替

PayPayモール店オープン当初からZOZOTOWNと連動したセール販売を行っています。セールは、通常より多くのアクセスが見込める大切なタッチポイントですが、ZOZOTOWNでセール販売開始後にPayPayモールに連携を行うため、価格差のタイムラグが生じ、混乱を招いてしまうことが課題となっていました。
ZOZOTOWNではセールを行う際に、価格と開始時間を予め設定し、時間になったらセール価格に自動で切替える機能があるのですが、PayPayモールにも同様の機能が先日リリースされ、セール価格と開始時間を事前に連携できるようになりました。
これにより、ZOZOTOWNとPayPayモールで同時にセール販売が可能となりました。

まとめ

ZOZOTOWNからPayPayモールへのデータ連携についてお話させていただきました。
ZOZOTOWNが国内オンラインモールに出店するのは初のことであり、ZOZOTOWN PayPayモール店は、私たちにとって今までにない挑戦的な取り組みです。オープンから現在まで日々試行錯誤を重ねて改善を続けています。
これまで新機能のリリースや、改善を行ってきましたが、これは自社メンバーだけの力ではなく、一緒に取り組んできたヤフーの協力なくしては実現できませんでした。
ヤフーとは、PayPayモールの改善について密にミーティングを行っています。
また、ミーティングだけでなくSlackでも日常的にやり取りが行われており、非常に強固な協力体制を築けています。

----

基幹システム部PayPayモールチームは、ZOZOTOWNに次ぐ事業の柱として育てる開発を機動力高く対応していくことを目的に独立した開発チームとして2020年4月に発足しました。現在は、今回ご紹介したようなPayPayモールへのデータ連携の開発や保守運用、裏側の仕組み作りを行っています。

この1年間で新しい機能をいろいろと追加しましたが、PayPayモールに展開できていないZOZOのサービスがまだまだあります。
今後も、ZOZOのサービスをPayPayモールに展開するように改善を進め、多くのお客様に満足していただけるようにしていきたいと思います。

ZOZOテクノロジーズでは、運営する様々なサービスを一緒に作り上げていただける方を募集しています。ご興味のある方は、以下のリンクからぜひご応募ください。


ZOZOでは、エンジニア・デザイナーを含む各職種で採用を行っています! 採用情報はTwitterでもお知らせしているのでぜひチェックしてください!