Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ZOZOのショップスタッフ向け 新規サービス「FAANS」における チームの取り組みとWeb技...
Search
ShoTanaka
February 25, 2022
Programming
0
2k
ZOZOのショップスタッフ向け 新規サービス「FAANS」における チームの取り組みとWeb技術/ Team Approach And Web Technology Of FAANS
ShoTanaka
February 25, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
110
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
Go コードベースの構成と AI コンテキスト定義
andpad
0
140
gunshi
kazupon
1
120
ゲームの物理 剛体編
fadis
0
370
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.9k
Implementation Patterns
denyspoltorak
0
110
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
190
これならできる!個人開発のすゝめ
tinykitten
PRO
0
130
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.8k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
5.7k
Designing Experiences People Love
moore
143
24k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
38k
Optimizing for Happiness
mojombo
379
70k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
120
Discover your Explorer Soul
emna__ayadi
2
1k
Accessibility Awareness
sabderemane
0
24
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
68
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
100
Building Flexible Design Systems
yeseniaperezcruz
330
39k
Transcript
ZOZOのショップスタッフ向け 新規サービス「FAANS」における チームの取り組みとWeb技術 株式会社ZOZO メディア開発本部 FAANS部 フロントエンドブロック 田中 翔 Copyright ©
ZOZO, Inc. ZOZO Tech Talk #4 - Webフロントエンド x 新規事業 (2022/2/25)
© ZOZO, Inc. 株式会社ZOZO メディア開発本部 FAANS部 フロントエンドブロック Web担当 田中 翔 2019年4月新卒入社
WEARのバックエンドとしてリプレイス・新機能開発の経験を経て、 現在は新規サービス「FAANS」のWebのフロントエンドを担当している。 趣味はK-POP鑑賞。 2
© ZOZO, Inc. 3 AGENDA 1. FAANSとは 2. FAANSを支える開発チーム 3.
Webの技術スタック 4. Webの課題と解決するための取り組み 5. 終わりに
© ZOZO, Inc. 4 AGENDA 1. FAANSとは 2. FAANSを支える開発チーム 3.
Webの技術スタック 4. Webの課題と解決するための取り組み 5. 終わりに
© ZOZO, Inc. 5 ファッションを「買う」ならZOZOから、 ファッションの「こと」ならZOZOへ。 を目指している。 そこで、ZOZOTOWNの成長戦略として 「買う」以外のトラフィックを増やす ことを掲げている。
FAANSプロジェクト誕生!! 1. FAANSとは:FAANS立ち上げの経緯 2021年3月期配信の弊社決算説明会資料より (https://d31ex0fa3i203z.cloudfront.net/assets/ja/ir/pdf/webup_fy20204q_j.pdf)
© ZOZO, Inc. • FAANSとは、 Fashion Advisors are Neighborsのことで、 「ショップスタッフの効率的な販売を
サポートするショップスタッフ専用ツール」です • Web、iOS、Androidで提供 • Webはショップ店長をはじめとした 管理者向けにサービスを提供 6 1. FAANSとは:概要 2022年3月期第2四半期配信の弊社決算説明資料より (https://d31ex0fa3i203z.cloudfront.net/assets/ja/ir/pdf/J_webup_FY2021_2Q.pdf)
© ZOZO, Inc. 7 1. FAANSとは:機能紹介(コーデ投稿と成果確認画面) ZOZOTOWNやWEARへのコーディネート同時投稿が可能で、 その投稿コーディネート経由の成果機能を開発中 効果測定 投稿
コーディネート画像
© ZOZO, Inc. 8 2022年3月期第2四半期配信の弊社決算説明会資料より (https://d31ex0fa3i203z.cloudfront.net/assets/ja/ir/pdf/J_webup_FY2021_2Q.pdf) 1. FAANSとは:機能紹介(店舗在庫連携機能) ZOZOTOWNで行われた取り置き注文の内容をFAANS上で確認でき、 ショップスタッフは取り置き対応できる。
© ZOZO, Inc. 9 AGENDA 1. FAANSとは 2. FAANSを支える開発チーム 3.
Webの技術スタック 4. Webの課題と解決するための取り組み 5. 終わりに
© ZOZO, Inc. 少数精鋭のチームで構成 • PM • デザイナー • フロントエンド(Web)
• フロントエンド (iOS) • フロントエンド (Android) • バックエンド • 分析 • 他にもQA、SREなど 10 2. FAANSを支える開発チーム(チーム構成)
© ZOZO, Inc. 11 2. FAANSを支える開発チーム(チームの特徴) ZOZO内のスタートアップのようなチーム • 新規サービスなので新しい技術にチャレンジできる。 •
小規模なチームなのでクイックに相談でき、クイックに物事が決まりやすい。
© ZOZO, Inc. 12 2. FAANSを支える開発チーム(チームの特徴) 例えば、、 Webは開発初期はPCとSP両方対応をしていた。 FAANSのWebは管理者(ショップ店長・企業管理者)向けの機能という立ち位置で、 その管理者は基本的にPCを使っている。
そのため、SP対応する必要はないとPMに相談。 検討後、PCのみ対応という判断になった。 SP用にデザインや開発やQAを行っていたが、その工数が削減された。 PCにリソースを割けるようになり、ユーザーにより高い価値を提供できるようになった。
© ZOZO, Inc. 13 2. FAANSを支える開発チーム(チームの取り組み) FAANSのデータ確認会 • 週に1回、各職種合同で FAANSのデータを見る時間をとり、
気づいたことを言い合う。 • Slackのチームチャンネルに FAANSのダッシュボードが定期的に投稿されて、 誰でも確認ができる。
© ZOZO, Inc. 14 2. FAANSを支える開発チーム(チームの取り組み) 新機能確認会 • 週1の頻度で各職種合同で集まって FAANSの新機能をユーザー目線で触ってみる会。
• チームメンバーがより深くFAANSの新機能を理解できる。 • 改善点があれば、Jiraでチケット化され、優先度決めて対応。
© ZOZO, Inc. 15 AGENDA 1. FAANSとは 2. FAANSを支える開発チーム 3.
Webの技術スタック 4. Webの課題と解決するための取り組み 5. 終わりに
© ZOZO, Inc. 16 開発言語 ・TypeScript クラウド ・Firebase Hosting /
Firebase Authentication CI/CD ・GitHub Actions ツール・ライブラリ ・React / Storybook / Mock Service Worker / Chromatic / Chakura UI / styled-components / Jest / OpenAPI Generator / Sentry 3. Webの技術スタック
© ZOZO, Inc. 設計について • ロジックと見た目の部分を分けるために、 Container Presenterパターンを採用。 • ContainerからPresenterに必要な値を
注入して表示している。 • コンポーネントをまたいだ値 に関してはContextからとってきている。 17 3. Webの技術スタック User Backend Container API Client Presenter Context Router
© ZOZO, Inc. 18 AGENDA 1. FAANSとは 2. FAANSを支える開発チーム 3.
Webの技術スタック 4. Webの課題と解決するための取り組み 5. 終わりに
© ZOZO, Inc. FAANSのWebの課題 1. PMやデザイナーが各状態ごとの表示を確認するのが大変だった。 (例、APIがエラーを返した場合や権限ごとの画面の表示) 2. デザインの修正をしたときに、修正箇所以外の影響範囲を検知する仕組みがなかった。 19
4. Webの課題と解決するための取り組み 19
© ZOZO, Inc. FAANSのWebの課題 1. PMやデザイナーが各状態ごとの表示を確認するのが大変だった。 (例、APIがエラーを返した場合や権限ごとの画面の表示) 2. デザインの修正をしたときに、修正箇所以外の影響範囲を検知する仕組みがなかった。 20
4. Webの課題と解決するための取り組み 20
© ZOZO, Inc. 21 4. Webの課題と解決するための取り組み 21 右の画像のようにStorybookで各状態ごとのページの画面 を表示させていたが、、、
© ZOZO, Inc. 22 4. Webの課題と解決するための取り組み 22 User Backend Container
API Client Presenter Context Router Containerで定義されている値をすべて用意して、 Presenterに渡さないといけないので大変だった。 mock Storyを表示させるために Containerで定義されている値を 用意しないといけない。
© ZOZO, Inc. 23 4. Webの課題と解決するための取り組み User Backend Container API
Client Presenter Context Router MSW intercept Mock Service Worker (MSW) ネットワークレベルでAPIリクエストをインターセプトし、mockレス ポンスを返すライブラリ。 MSW Storybook Addon 各Storyごとに自分が返して欲しいmockレスポンスを 返すことができるライブラリ。
© ZOZO, Inc. 24 4. Webの課題と解決するための取り組み User Backend Container API
Client Presenter Context Router MSW intercept 導入の結果、 Containerで定義されている値を用意する必要はなくなり、 APIのmockレスポンスだけ用意すれば良くなった。 mock APIのレスポンスをmock してStorybookに表示
© ZOZO, Inc. • 各StoryごとにAPIが返すモックレスポンスを定義できるため、 多様なUI(200や500を返した場合のUI) をStorybook上で一覧表示することができる。 • Storybookの最新機能であるPlay functionを使うと、
表示したページに対して イベントを発火させることができるため、 モーダルを表示した後などのUIを見ることができる。 25 4. Webの課題と解決するための取り組み
© ZOZO, Inc. 26 4. Webの課題と解決するための取り組み 「モーダルを開いた後に表示する一覧取得APIで500を返した場合」 のようにUI上で確認が難しいイベントを確認することも可能に。
© ZOZO, Inc. 27 4. Webの課題と解決するための取り組み その他のメリット • MSWのおかげでバックエンド側にSwaggerだけ用意してもらえれば、 APIが実装されていなくても開発ができる。
課題 • Swaggerからベースのモックレスポンスを自動生成するうまい方法が見つかっていない。 (現状はSwaggerUI上でサンプルのレスポンスが生成されているのでそれを元にレスポンスを定義している。) 27
© ZOZO, Inc. FAANSのWebの課題 1. PMやデザイナーが各状態ごとの表示を確認するのが大変だった。 (例、APIがエラーを返した場合や権限ごとの画面の表示) →Mock Service Workerで解決
2. デザインの修正をしたときに、修正箇所以外の影響範囲を検知する仕組みがなかった。 28 4. Webの課題と解決するための取り組み 28
© ZOZO, Inc. 4. Webの課題と解決するための取り組み Chromatic • 変更前と後のUIのスナップショット を撮影して、差分比較できる。 •
StorybookのHostingの機能やGitHub のようにその差分に対してレビューできる 機能も備わっている。 29
© ZOZO, Inc. 4. Webの課題と解決するための取り組み あるページで検索窓が追加されたので右のような 差分が出ているが。。。 検索窓追加前 検索窓追加後 ヘッダーやモーダル表示後のUIには
影響を与えていないことがわかる。 30
© ZOZO, Inc. FAANSのWebの課題 1. PMやデザイナーが各状態ごとの表示を確認するのが大変だった。 (例、APIがエラーを返した場合や権限ごとの画面の表示) →Mock Service Workerで解決
2. デザインの修正をしたときに、修正箇所以外の影響範囲を検知する仕組みがなかった。 →Chromaticで解決 31 4. Webの課題と解決するための取り組み 31
© ZOZO, Inc. 32 AGENDA 1. FAANSとは 2. FAANSを支える開発チーム 3.
Webの技術スタック 4. Webの課題と解決するための取り組み 5. 終わりに
© ZOZO, Inc. 33 5. 終わりに FAANSについてより詳しく聞きたい方は カジュアル面談を行っておりますので、 気軽にお申し込みください! https://hrmos.co/pages/zozotech/jobs/0000225
None