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

30万行を超えるCMSのNuxt 3 移行戦略 / Nuxt 3 Migration Stra...

30万行を超えるCMSのNuxt 3 移行戦略 / Nuxt 3 Migration Strategy for CMS with over 300,000 lines

Yappli Tech Conference 2023 登壇資料

connpass:
https://yappli.connpass.com/event/295001/

セッション動画(YouTube:)
https://youtu.be/yecR25yk7mw?si=GnVxgcPINRp-x_Ic

Yappli Developers

December 04, 2024
Tweet

More Decks by Yappli Developers

Other Decks in Programming

Transcript

  1. Speaker プロダクト開発本部 開発2部 フロントエンドグループ フロントエンドエンジニア 小 林 洋介 2021年12 月

    からヤプリで働くフロントエンド5年 生 。Yappliの管理画 面 とデザインシステムの開発を している。 写真📸コーヒー☕キャンプ🏕 @k0n_karin
  2. プロダクトの規模 • コード 行 数:約 33 万 行 • コンポーネント数:約

    1,400 コンポーネント • ページ数:約 100 ページ フロントエンド5 人 と 一 部のバックエンド数 人 で 支 えている 0 1 Yappliのフロントエンドについて
  3. 使ってる技術 • Nuxt 2 . 1 5 . 8 •

    Vue 2 . 6 . 1 4 • @nuxtjs/composition-api 0 . 3 2 . 0 • TypeScript 4 . 2 . 4 ※2023-09-15時点 0 1 Yappliのフロントエンドについて
  4. 02 アップデート計画 取り組むこと 1 . アップデート前の準備 2 . Nuxt 2

    . 1 7 へのアップデート 3 . Nuxt Bridgeの導 入 4 . Bridgeの段階導 入 5 . Nuxt 3 へのアップデート
  5. Nuxt 2 . 1 7 へのアップデート 2023年頭にNuxt 2 . 1

    6 がリリースされ、続いて2.17もリリースされ た。後続のNuxt Bridgeに向けアップデートが必要。他にも • Vue 2 . 7 (script setup, Composition API) • Node.js 2 0 +をサポート など、年内をNuxt 2 で戦うための重要なアップデート。 02 アップデート計画
  6. 02 アップデート計画 取り組むこと 1 . アップデート前の準備 2 . Nuxt 2

    . 1 7 へのアップデート 3 . Nuxt Bridgeの導 入 (👈イマココ) 4 . Bridgeの段階導 入 5 . Nuxt 3 へのアップデート
  7. アップデートの前に… • 計画時点で対応事項が 100 個ぐらいあった。 • これらを 長 期的に安全にアップデートをしていく必要がある。 •

    リソース都合で 一 時的に1 人 でやらないといけない😇 ➡ 大 量の対応を少ないリソースで品質を担保しながら進める必要 がある🤔 03 アップデート前準備
  8. 自 動化 1 . ESLint のカスタムルールを使う 2 . VRT (Visual

    Regression Testing) をする 03 アップデート前準備
  9. 自 動化 1 . ESLint のカスタムルールを使う 2 . VRT (Visual

    Regression Testing) をする 03 アップデート前準備
  10. ESLint のカスタムルールを使う💪 Vue 公式の eslint-plugin-vue で破壊的変 更の多くを対応できる。 …が、プロダクトには放置された 非 推奨コ

    ードが多く、pluginだけでカバーできない 形式のものが結構あった(数百件🫠 03 アップデート前準備 - 自 動化
  11. Vue の SFC の書き換え (SFC→AST→SFC) は vue-eslint-parser とESLintのカスタムルールでできるので 自 作する✍

    ESLint のカスタムルールを使う💪 ➡ ➡ ➡ ✨ ✨ 03 アップデート前準備 - 自 動化
  12. 自 動化 1 . ESLint のカスタムルールを使う 2 . VRT (Visual

    Regression Testing) をする 03 アップデート前準備
  13. なんで VRT?🤔 1 . Yappliの開発フローとの相性 2 . テストのためのコスト 3 .

    バージョンアップとの相性 03 アップデート前準備 - 自 動化
  14. 実装 コード レビュー 個別QA 週次QA リリース かといって週次QAを待つと 手 戻りが多くなる可能性🙀 03

    アップデート前準備 - なんでVRT?🤔 1 . Yappliの開発フローとの相性
  15. なんでPlaywright? • VRTも普通のE 2 Eもどちらもできる • 並列実 行 が最 高

    • Auto-waitのおかげで、多少の不安定さを 吸収してくれる • 使うのが初めてでも、直感的に書ける! 03 アップデート前準備 - なんでVRT?🤔
  16. 1 2 ”仕組み”でプロダクトを維持すること 自 動化の偉 大 さ • 非 推奨なコードや依存関係は意識しないと放置されがち。

    • 日 頃から妥協せず、早めに摘む。(「後で直す」は 大 体直さない🫠) • 維持する仕組みを作ろう!(静的解析、CI、啓蒙活動など) • 定期的に 見 直す 文 化を作ることでも、チームにも維持する意識が芽 生 える。 • プロダクトが 大 きくなるほど、 人力 だけで対処できなくなる。 • 自 動化のメリットはプロダクトが 大 きくなるほど、時間が経つほどに増 大 する。 04 得られた学び📚