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

クライアントワーク(受託)のJamstack開発でNuxt 3を提案・実装する / Rejec...

Chinen
November 02, 2022

クライアントワーク(受託)のJamstack開発でNuxt 3を提案・実装する / Reject Conference - Vue Fes Japan Online 2022

Reject Conference - Vue Fes Japan Online 2022の登壇資料です。

Chinen

November 02, 2022
Tweet

More Decks by Chinen

Other Decks in Technology

Transcript

  1. 株式会社TAM/TAMTO:フロントエンドエンジニア 兼 個人事業主 
 知念 昌史 / まぁし Twitter@chocodogmagic
 •

    沖縄でリモートワーク/元・美容師
 • 技術コミュニティ運営
 ◦ PWA Night(東京)/ v-okinawa(沖縄) 
 • Vue.js/Nuxt/Jamstack/セマンティックHTML/
 アクセシビリティ/SEO/パフォーマンス改善/CMS
 • 最近のハマり:スプラトゥーン3(弓ウデマエS+12)

  2. Nuxt 3の状況
 時期 状況 お気持ち 2021年10月 Beta版リリース この時点ではまだ様子見 2022年2月 3月にRC版リリース予定と発表

    導入の検討を始める 2022年3月 RC版リリースされず4月へ延期 まぁ大丈夫 2022年4月 RCリリース(Stable版は6月予定と発表) 業務プロジェクト選定候補へ 6月以降に公開するプロジェクトなら 導入しても良さそう 2022年6月 RC.4 Stable版のリリースが夏へ延期 ?! 2022年9月 RC.10 Full Static Generation(Stable版は秋へ) SSGが安定した・・・はず 2022年11月2日 本日時点の最新はRC.12 もう一踏ん張り、応援
  3. 検討時の懸念点
 WordPress
 • アップデート対応必須
 • PHPサーバー保守
 • 表示速度、セキュリティ面ではStatic Generationに劣る
 Jamstack(microCMS)


    • JSフレームワークが必要
 • ビルド環境(Node.jsが必要)
 • プレビューやページャーは
 自前で実装
 CMS保守をクラウド化したい → WordPress管理コスト避けたい
 今までAWSを利用しており、S3で完結したい(保守・運用コスト)
 エンジニアの成長視点ではJamstackを採用したい、実績にもなる

  4. Jamstack提案といえばJSフレームワーク選定
 • Vue 2 + Nuxt 2
 • Vue 3

    + Nuxt 3
 • Vue.js + Vite
 • (今ならAstroも候補)
 社内ではVueが得意なエンジニアが多かったため、Nuxtを採用することに
 ※検討時点ではNuxt 3はまだBeta版(2系のメンテ終了リスク避けたい)
 安定しているNuxt 2でいくか、最新のNuxt 3に挑戦するか
 6月にはStable版が出るはず・・・!
 • React + Next.js
 • React + Gatsby

  5. 構成例
 • AWS Amplify
 • CodeCommit
 • Nuxt 3
 •

    microCMS
 • Webhookでbuild→SSG
 • S3 → CloudFront
 • Route 53

  6. 実装時の注意・悩み
 Nuxt 3を採用したが、RC版では思わぬ不具合が出る可能性があったため、
 いつでもNuxt 2に切り替えられるように対策する
 • Nuxtの初期ディレクトリ構造は変更しない
 ◦ nuxt.config.tsで極力設定変更しない、pages、components等はそのまま 


    ◦ 追加するプラグインも最低限に抑える方針 
 • <script setup>は使うが、できるだけSFCに収める
 ◦ 極端に分割せず、Nuxt 2 + Composition APIプラグイン構成に移植しやすく 
 Nuxt 2でも動く、を意識
 

  7. 受託のJamstack開発でもNuxt 3(RC)は使える
 ただし、
 • Nuxt 2でのJamstack実績があり、万が一の際はNuxt 2でも対応できたこと
 • Beta →

    RCのリリース時点から開発環境の検証をしていたこと
 • 開発しながら、リアルタイムでNuxt 3対応状況を追っていたこと
 • プロジェクト担当ディレクターやクライアントに対応状況を説明し、
 安心して任せてもらったこと
 これらの条件がうまく重なり、チーム内で準備や声かけがあってこそ
 RC版でもうまくいったと言える