Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スペースマーケットWebフロントエンド開発について〜2018冬〜
Search
ymanya
December 06, 2018
Technology
1
1.5k
スペースマーケットWebフロントエンド開発について〜2018冬〜
スペースマーケットTechミートアップの登壇資料です。
ymanya
December 06, 2018
Tweet
Share
More Decks by ymanya
See All by ymanya
Swiftでもapollo-iosで快適にGraphQL
ymanya
1
800
Other Decks in Technology
See All in Technology
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1.1k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
180
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
220
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
190
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
6
2.3k
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
350
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
850
Featured
See All Featured
Between Models and Reality
mayunak
1
200
Evolving SEO for Evolving Search Engines
ryanjones
0
130
Tell your own story through comics
letsgokoyo
1
810
The SEO Collaboration Effect
kristinabergwall1
0
360
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
ラッコキーワード サービス紹介資料
rakko
1
2.3M
Accessibility Awareness
sabderemane
0
57
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.6k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
スペースマーケット Webフロントエンド開発について 〜2018冬〜 フロントエンドチーム Yuki Manya
2 自己紹介 Yuki Manya( @ymanya ) スペースマーケットでフロントエンドチームリーダー兼 Webフロントエンド・iOSアプリエンジニアをしています。 前職はQAとか新規事業の開発とかやってました。
3 スペースマーケットのサービスについて
4 SPACEMARKET 時間貸し・宿泊スペースを検索・予約できるメインのサービス
5 SPACEMARKET DASHBOARD 掲載するスペースを管理するホスト向けのダッシュボードサービス
6 SPACEMARKET BUSINESS 法人向けに社員の予約や支払いを一元管理できるサービス
7 SPACEMARKET EVENT 予約情報を元に、簡単に参加者管理できるイベント告知ページが作成できるサービス
8 SPACEMARKET ACCOUNT これまで上げてきたサービスのログイン・ログアウトを担当するサービス
9 以上、現在5サービスを開発・運用しています
10 これらのサービスをどのような構成で、 どのように開発をしているか、 Webフロントエンドの視点からざっくり発表します
11 サービスの構成
12 サービスの構成図 クライアントサイド サーバサイド スマートフォン アプリ API(REST/GraphQL) 移行中 Web フロントエンド
(各サービスごと)
13 サービスの構成図 クライアントサイド サーバサイド スマートフォン アプリ API(REST/GraphQL) この発表でお話するところ 移行中 Web
フロントエンド (各サービスごと)
14 サービスの構成図 クライアントサイド サーバサイド スマートフォン アプリ API(REST/GraphQL) 移行中 Web フロントエンド
(各サービスごと)
15 Fastlyでのキャッシュ • 未ログインの場合の SSR結果をキャッシュするように • 間違って変なキャッシュがされないよう、必要なページのみレスポンスヘッダを追加しキャッシュ アクセスの多いトップページやカテゴリトップなどをキャッシュ
16 サービスの構成図 クライアントサイド サーバサイド Web フロントエンド (各サービスごと) スマートフォン アプリ API(REST/GraphQL)
移行中
17 PWA(ServiceWorker/Webプッシュ通知) • 現在はトップページのみ、キャッシュを導入 • Webプッシュはアプリでも使っている OneSignalを使っています ◦ 詳しくは弊社玉川のブログ記事もぜひご覧ください! ◦
既存WebサイトをPWA対応して一部の機能を実装してみる ( https://blog.spacemarket.com/code/add_pwa/ ) Workboxを使い、ServiceWorkerでのキャッシュやWebプッシュ通知を実装
18 リポジトリ構成
19 サービスの構成図 クライアントサイド サーバサイド スマートフォン アプリ API(REST/GraphQL) 移行中 Web フロントエンド
(各サービスごと)
20 フロントエンドのリポジトリ構成 SPACEMARKET SPACEMARKET DASHBOARD SPACEMARKET EVENT SPACEMARKET BUSINESS SPACEMARKET
ACCOUNT Nodeの設定やデータモデル、ヘルパなどの サービスのコアとなる処理をまとめたリポジトリ フロントエンド共通リポジトリ サービス共通コンポーネントリポジトリ AtomicDesignをベースにした サービス共通コンポーネントをまとめたリポジトリ 1サービス1リポジトリ、プラスしてサービス共通リポジトリ 2つという構成です
21 サービス共通リポジトリの依存解決 • リリースする際はgitのタグを、開発中はコミットハッシュを使って、共通リポジトリのバージョン管理 を行っています プライベートリポジトリなので、gitの認証情報を使ってnpmで依存解決しています サービスのpackage.jsonの例
22 • コンポーネントの実装や デザイナレビュー用に Storybookを使っています • 弊社荒田のブログ記事がありますので、 ぜひご覧ください! ◦ Atomic
Designを使って Reactコンポーネントを再設計した話 https://blog.spacemarket.com/code/atomic-design%E3%82%9 2%E4%BD%BF%E3%81%A3%E3%81%A6react%E3%82%B 3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E 3%83%B3%E3%83%88%E3%82%92%E5%86%8D%E8%A8 %AD%E8%A8%88%E3%81%97%E3%81%9F%E8%A9%B1/ サービス共通コンポーネントリポジトリ デザイナとの共通言語Atomic Designをベースにstyled-componentsを使って実装 AtomicDesign Storybook
23 サービス開発
24 開発環境/デプロイ 開発・本番環境ともにDockerで、特定ブランチへのマージで自動デプロイされます 開発環境 ステージング環境 本番環境 AWS CodePipeline masterマージ stagingブランチ
マージ
25 • ApolloのQueryタグのssr属性を、ログイン・未ログインデータかで設定しておき、それぞれのタイミ ングで取得するように • 弊社のGraphQLのAPIは参照系が多く、まだあまり mutationは使っていません Apollo(GraphQLクライアント) 基本的に、SSR時に未ログインデータ、CSR時にログインデータを取得しています
26 まとめ
27 まとめ • 複数サービス、各ロールが並行して開発しやすい仕組みづくりをみんなで進めていま す! • PWAやFastlyでのキャッシュ、GraphQLなど様々な取り組みも進めて、よりよいユーザ 体験・開発体験が得られるように改善してきました • 今後はPWAやコードスプリッティングをより進めたり、現状各サービスで多少アーキテク
チャにズレがあるため統合するフレームワークを作っていくなど、改善を続けていきま す!
28 We're Hiring! • スペースマーケットでは全方位で絶賛採用活動中です! ◦ フロントエンド・バックエンド・技術基盤・新卒 Webエンジニアなど ◦ 興味のある方は「Wantedly
スペースマーケット」で検索orQRコード読取!
None