Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンポーネント化とHeadlessCMSを用いた ECプロモーションの効率化

yuya takei
September 08, 2021

コンポーネント化とHeadlessCMSを用いた ECプロモーションの効率化

関連

Presentational and Container Components
https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0

React + microCMSで実現するZOZOTOWNキャンペーンページのノーコード化
https://techblog.zozo.com/entry/microcms-zozotown-usecase

任意のテンプレートエンジン(HTML) で React を部分的に用いる際に 便利な createPortal API について https://zenn.dev/takewell/articles/64e6324042610f

yuya takei

September 08, 2021
Tweet

More Decks by yuya takei

Other Decks in Technology

Transcript

  1. © ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ
 ZOZOTOWN本部 ZOZOWEB部 企画チーム
 エンジニア
 武井 勇也


    2020年4月 新卒入社
 入社してからオフィスへの出社回数は2回
 ランニングやサウナなどアツいことが好きです
 zenn : @takewell
 twitter : @takewell_
 
 2
  2. © ZOZO Technologies, Inc. https://zozo.jp/
 3 • 日本最大級のファッション通販サイト
 • 1,400以上のショップ、8,400以上のブランドの取り扱い(ともに2021年6月

    末時点)
 • 常時83万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品 を掲載
 • コスメ専門モール「ZOZOCOSME」や靴の専門モール
 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン
 「ZOZOVILLA」を展開
 • 即日配送サービス
 • ギフトラッピングサービス
 • ツケ払い など

  3. © ZOZO Technologies, Inc. 目次
 • ZOZOTOWNのプロモーションページについて • ECサイトはアプリケーション+プレゼンテーション •

    導入した手段 • コンポーネント化 • Headless CMSを用いてコンポーネント駆動なLP作成を実現 • 改善結果 • 今後の展望 • まとめ 
 4
  4. © ZOZO Technologies, Inc. 背景 : ZOZOTOWNのプロモーションページについて
 6 • お客様に様々なキャンペーンをプロモーションするLPを  月平均

    3,4ページ公開(昨年度)している • 期間限定セール、抽選キャンペーン、新商品、コラボなど内容は 様々。 • シューズやコスメ、ラグジュアリー商品などの注力カテゴリーが広が りプロモーションページの本数ニーズが増加 • zozo.jpは16歳、Classic ASPで構築されており、これらの資産とシー ムレスな連携ができる制約のもと技術的効率化が必要 
 左記の制約のもと、効率化の手段を考案する必要 があり、プロモーションページの作成を、 コンポー ネント化とCMSの導入により効率化することとしまし た。
  5. © ZOZO Technologies, Inc. 背景 : ECサイトはアプリケーション+プレゼンテーション
 • アプリケーション •

    目的 : お買い物機能の提供 • ページ : 検索・商品詳細・カート・お気に入り • 要求 : 動的、複雑な機能を素早く変えられる堅牢な設計 • プレゼンテーション • 目的 : 商品訴求、マーケティングのための情報伝達 • ページ : キャンペーン・セール (いわゆるLP) • 要求 : 静的、素早い開発、アニメーションなどの演出効果 
 7 アプリケーションとプレゼンテーションは 要求が異なるため、作り方も異なる。 アプリケーションはコンポーネントベースのライブラ リ(e.g React,Vue)を用いて宣言的にUIを記述。コ ンポーネント化して再利用性や保守性を重視して 実装する。 一方、プレゼンテーションはDOM操作 (e.g DOM API, jQuery, CSS)を駆使して、 ページ 固有の演出を実現。 モジュール化、再利用性などはあまり考慮せずス ピード優先で実装する。 フロントと言っても上記の使い分けが合理的。
  6. © ZOZO Technologies, Inc. 8 例えば左記の商品リストの場合、 動的な状態を制御したいニーズがある。 - API通信中のローディング表現 -

    性別(ALL,MEN,WOMEN,KIDS)によって商品 を切り替える - ソート順 : 新着順・人気順・おすすめ順 - 価格タイプ : すべて・通常価格・セール価格 - 販売タイプ : 通常・予約 - クーポン対象商品の絞り込みの有無 - アプリ内WebViewの場合は遷移先をURL ス キームにする インタラクション要素はないが、動的で複雑なもの。 しかし、プレゼンテーションページ(LP)にも動的で複雑なものは含まれる

  7. © ZOZO Technologies, Inc. 取り込み1 : 商品リストのReactコンポーネント化
 9 • 商品APIの状態遷移ロジック扱うContainer

    Components • 任意の商品(商品にタグを付与して制御) • 売れ筋セール商品ランキング • ユーザーのお気に入りブランドからセール商品 • 商品のビューを表示するPresentation Components • 横スクロール • タイル • カルーセル 
 見た目と状態ロジックを分離させることで、ひとつのAPIで様々な商 品表示させることができ再利用性が高まる。 より詳しくは React コミッターが執筆した Presentational and Container Components Dan Abramov Midium が参考 になります
  8. © ZOZO Technologies, Inc. React コンポーネント化のメリット
 10 • 過去に開発したものは都度開発する必要がなく再利用できる •

    Reactを用いてコンポーネントを実装するエンジニアとプレゼンテーションの効果を実装するエンジニアで 並行して作業ができる • 上記によりアニメーションなどのプレゼンテーション演出開発により注力できるようになる LPの場合Reactコンポーネント化するものは複雑なものから慎重に選定し、 すべてをReactで記述することを目指さないのがポイント
  9. © ZOZO Technologies, Inc. 取り組み 2 : CMSを用いてコンポーネント駆動なLP作成を実現
 12 管理ツールの実装しておらず、

    UI部分の実装をプレビュー表示で 確認できるようにしただけで、追加 の実装コストが少しな点がポイント です。
  10. © ZOZO Technologies, Inc. Headless CMS について
 13 • Headless

    CMS (Headless Contents Management System) • Headless CMSを一言でいうと管理画面つき Web API(head = 公開されるWebページのビュー) • 本質的には単なるWeb APIのため様々なクライアントアプリケーションと接続できる • ビューはzozo.jpと同じWebサーバー(Classic ASP)の環境で動作させたかったため、
 別サーバーで動作するWordPressなどではなくAPIで連携できるHeadless CMSが妥当 • 代表的な Headless CMS : Contentful, Storapi, microCMS, etc. • ZOZOTOWNではmicroCMSを採用 • 管理画面は日本語表示としたい ▪ 海外のHeadless CMSは、その殆どが選択肢から外れる ▪ microCMSは純国産のHeadless CMSで、管理画面が日本語表示に対応している • コンポーネントと相性が抜群にいいカスタムフィールドと繰り返しフィールドの機能を持つ 

  11. © ZOZO Technologies, Inc. カスタムフィールドと繰り返しフィールド
 14 • カスタムフィールドとは、自由にフィールドを作成できる機能 • フィールドの要素には数字・テキスト・真偽値・画像・日時などの設定が可能

    • テキストには正規表現でのバリデーションや字数制限が可能 • 繰り返しフィールドとは、カスタムフィールドを複数選択し、好きな順序で入力を繰り返 すことのできる機能 • ドラッグ&ドロップでコンテンツを入れ替えすることも可能 繰り返しフィールドはカスタムフィールドの配列として提供される、 カスタム フィールドには繰り返しフィールドも指定できるため HTML の入れ子構造との相性が良い
  12. © ZOZO Technologies, Inc. 改善結果 : コンポーネントとシステムを導入後 LP はどれくらい作成できるようになったのか
 17

    • 月平均4ページ公開 (昨年度) に対して、 microCMSを使ったLPは月平均5, その他のLPも 3ページ公開できるようになった(2倍) • 短期間に複数のページを公開することは困難だったが、CMSであればその課題も解決された (連続キャンペーンが実施可能になった) • CMS上で編集しながらプレビュー確認が行えるようになったため、デザイナーの工数が削減され、手戻りも発 生しづらくなった 

  13. © ZOZO Technologies, Inc. 今後の展望 / 解決したい課題
 18 • Web

    Front基盤をClassic ASP/jQueryから今世代のWebフレームワークにリプレイス • オンプレ => クラウド • CI/CD • Core Web Vitalsなどのパフォーマンス指標の改善 • 上記のためSSG・CSR・SSR・ISRなどの適したレンダリング手法を選択可能に
  14. © ZOZO Technologies, Inc. まとめ
 19 • プレゼンテーションが目的の主なLPでもAPIとUI Componentsをモジュール化してコンポーネント 駆動開発をすることで効率化できる

    • HeadlessCMSはサイトに部分的に導入することができるため、既存システムにも簡単に導入でき、 コンテンツ編集を非エンジニアでも可能にできる • microCMSはコンポーネント駆動ページ作成と相性が良い機能が備わっている
  15. © ZOZO Technologies, Inc. ZOZOTOWN の Web フロントをさらに躍進させませんか? 20 •

    募集職種名 : ZOZOTOWN フロントエンドエンジニア • 業務内容 • ZOZOTOWNのサイト改善 / 改修におけるUI / インタラクション / LPなどの開発 • 新サービス開発プロジェクトにおけるUI / インタラクション / LPなどの開発 • 備考 • フルフレックス制 • 全国どこでも勤務可能 その他の職種の方も適切な方にルーティング可能だと思うので カジュアルにTwitter @takewell_に DM などいただければ幸いです!
  16. © ZOZO Technologies, Inc. 21 Appendix 1 : ページに部分的に React

    コンポーネントを用いる際に ReactDOM.createPortal API を使う
 UI Components HTML の data 属性に変数を渡す TypeScript より詳しくはこちらの記事をご覧ください 
 任意のテンプレートエンジン(HTML) で React を部分的に用いる際に便利な createPortal API について 描画したい箇所に記述
  17. © ZOZO Technologies, Inc. Appendix 2 : CMS を用いてコンポーネント駆動 な

    LP 作成を実現
 22 実際のシステム導入は追加でサイトジェネ レーターを作るなど手間がかかりました。 Next.js など SSG に対応したフレーム ワークを利用できる場合は非常に簡単に headless CMS を導入できるでしょう。 より詳しくはこちらの記事をご覧ください 
 React + microCMSで実現するZOZOTOWNキャンペーンページのノーコード化 - ZOZO Technologies TECH BLOG
 

  18. 23