フルスクラッチECの基盤であるNuxt 2を3に移行し、開発の効率性とパフォーマンスを高める
by
wakkn
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
フルスクラッチECの基盤であるNuxt2を3に移行し 開発の効率性とパフォーマンスを高める 株式会社TENTIAL テクノロジー本部 プラットフォーム部長 湧川仁貴
Slide 2
Slide 2 text
自己紹介 株式会社TENTIAL ● 所属 テクノロジー本部 プラットフォーム部 部長 ● フルスクラッチECを立ち上げ。決済・物流基盤を構築 ● 現在 ○ マネジメントしチームの成果を上げています ○ コードもガシガシ書いてEC運営 ● 言語 ○ Vue.js / Nodejsの生粋のJSエンジニア ● 志向性 ○ プロダクトに本質な機能を取捨選択しながらつくることが好き Wakugawa Hitoki (@_wakkn)
Slide 3
Slide 3 text
TENTIALの紹介 株式会社TENTIAL ウェルネスブランドTENTIALを運営し、一般医療機器である 疲労回復 ウェアのBAKUNEをはじめとした、身体を充電するツールを開発展開 しています。
Slide 4
Slide 4 text
目次 1.ECの概要 2.購買体験上の課題 3.Nuxt3の移行・気をつけるべきポイント 4.各種計測結果 5.まとめ
Slide 5
Slide 5 text
ECの紹介 公式オンラインストア https://tential.jp 主にNuxt.jsとNode.jsでフルスクラッチでECを開発。 お客様にとって細部までストレスのない UXと多機能CMSや データ基盤としても活用。 クイックな施策の実現 、徹底的なお客様理解のためのデータ 分析など、事業の要として機能。
Slide 6
Slide 6 text
EC ECが認知〜購入までの体験をテックで加速させる・より良くする → オンライン上の購買体験のパフォーマンスを上げる必要がある。
Slide 7
Slide 7 text
Nuxt2時代のEC課題 改善スピードの低下 - devサーバーが立ち上がるまでが遅く、開発がしにく い - 反映も1時間以上かかっていてデプロイ容易性が下 がっている - 細かい修正するにも時間がかかり、事業スピードに 直結する パフォーマンスの低下 - 動作に影響はないがコストパフォーマンスが悪い - 初回レンダリングに若干時間を要す - なんか遷移がもっさりしている・・・
Slide 8
Slide 8 text
Nuxt3にバージョンアップすれば ビルドは高速に、ページ速度も上がり お客様にとって価値しかないのでは?
Slide 9
Slide 9 text
Nuxt3リライト 3ヶ月かけて実施。ほぼリファクタというよりリライト (GraphQL Clientやyarn workspace化も) Vue CompositionAPIを使用していたため、Nuxt3で新しく追加された部分のみ移植 1. co/boそれぞれで共通コンポーネントの洗い出し 2. 1で分けた環境ごとにコンポーネントを Vue3化 (Composition APIからの移行) 3. Nuxt3特有のfetchやUrqlのfetchに変更 4. ページごとにSSR/CSRを選択
Slide 10
Slide 10 text
Nuxt3化で工夫したこと ● routeRulesの設定 ● useAsyncDataの適切な設定で 二重に取得を避ける ● LAZY Loading ● compressPublicAssets ● NODE_OPTIONS=--max_old_s pace_size=2048
Slide 11
Slide 11 text
Nuxt3にした結果
Slide 12
Slide 12 text
結果
Slide 13
Slide 13 text
ビルド時間 Before client: 1.5685Minute, server: 1.04Minute After client: 27s, server: 34s 開発時 Before 30Minutes After 10Minutes 本番時 Codebuild
Slide 14
Slide 14 text
反映数、本番変更リードタイム 1時間 30分以下 本番反映数(月)、リードタイム 反映までのリードタイム 28PR 46PR 本番反映数 DDDだと、0.26
Slide 15
Slide 15 text
パフォーマンス - 内部的観測 - LighthouseによるWeb Core Vitals - パフォーマンス計測(DevTools) - 遷移感 - インスタンスあたりのCPU→コスト - 外部的観測 - 実際の声(VOC) - CVR 4G、下り20Mbpsにて計測 ページスピードのみならず、事業的価値も計測
Slide 16
Slide 16 text
Web Core Vitals(Lighthouse) SSR主導でデータフェッチすることで、LCPとTBTが大幅に更新。
Slide 17
Slide 17 text
Web Core Vitals(パフォーマンス分析情報) app.jsはSSR時に取得することで最初にレンダリ ングブロックが走ることで、 FCPとLCPが等しくなっ ている。そのかわりに CSRで取得するnuxt/app.js などを取得せず、TBT向上につながっている。 また、初期レンダリング移行のフェッチする jsのサ イズが小さいために、最後の DOMがロードされる までの時間を大幅に削減。 FCPも削減。 DOMの最終ロードも高速化。
Slide 18
Slide 18 text
スクリプトサイズ 使用するjsファイルも約5分の1に
Slide 19
Slide 19 text
CVR/売上寄与 単純なCVRにはそこまで影響はなかったが、回遊をした時のカート投入率、購入率ともに上昇。 回遊が重要視される施策においては、ページ遷移時のスピードが起因する。 カート投入率 2%up 購入率 7%up
Slide 20
Slide 20 text
社内の声 エンジニアからの声 ビルド速度を上げることにより、デプロイ頻度が上がり、 事業の施策をECに反映できることが多くなった。事業を 前に進める速度が上がった!
Slide 21
Slide 21 text
お客様の声 反映前 - 欲しい商品にたどり着くまでのアクセスが悪い - 他のECと比較すると、反応が鈍い特定の画面 で画面が切り替わるのが遅くて不安になりまし た... 反映後 - サイトの動作・動きの遅さに対してのネガな 意見がほぼなくなった。 - 途中まで注文が何度かありましたが、今日は一番はじ めに注文できました。 - サイトが軽すぎて、逆に不便。
Slide 22
Slide 22 text
まとめ
Slide 23
Slide 23 text
まとめ ぜひ今すぐNuxt3へ移行しましょう! パフォーマンス指標に使われる WebCoreVitalsの数値も全体的に上がり、特に 初期レ ンダリング時のDOM展開が高速化された。 お客様からの不満な声も払拭 でき、ECにかかせないカート投入率や購入率CVRも上 昇。お客様の購買体験と売上寄与どちらにも貢献ができた。
Slide 24
Slide 24 text
計測方法や、具体的なNuxt3移行など 話しきれてないところあるので ぜひ声かけてください!