Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nuxt.js移行プロジェクトの話
Search
tic40
October 24, 2018
Technology
4
2.8k
Nuxt.js移行プロジェクトの話
note engineer meetup#1
2018/10/23
tic40
October 24, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
AIと二人三脚で育てた、個人開発アプリグロース術
zozotech
PRO
0
570
Design System Documentation Tooling 2025
takanorip
2
990
新 Security HubがついにGA!仕組みや料金を深堀り #AWSreInvent #regrowth / AWS Security Hub Advanced GA
masahirokawahara
0
130
Bakuraku Engineering Team Deck
layerx
PRO
12
6.6k
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
1
460
eBPFとwaruiBPF
sat
PRO
4
2.4k
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
190
21st ACRi Webinar - Univ of Tokyo Presentation Slide (Shinya Takamaeda)
nao_sumikawa
0
120
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
180
ML PM Talk #1 - ML PMの分類に関する考察
lycorptech_jp
PRO
1
650
第4回 「メタデータ通り」 リアル開催
datayokocho
0
100
AWS Bedrock AgentCoreで作る 1on1支援AIエージェント 〜Memory × Evaluationsによる実践開発〜
yusukeshimizu
4
280
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Code Review Best Practice
trishagee
73
19k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
4 Signs Your Business is Dying
shpigford
186
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Being A Developer After 40
akosma
91
590k
Practical Orchestrator
shlominoach
190
11k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Transcript
Nuxt.js移行プロジェクトの話 Taishi Inoue note engineer meetup #1
Taishi Inoue / @tic40 2018/06〜 piece of cake, inc note.muの
フロントエンドリプレイスを担当 Who am I
In progress
note.mu/konpyu/n/n9b7bf4343514 Background
Agenda プロジェクト開始から今日までの取り組み/TIPSを紹介 ・フロントエンドのキャッチアップ ・コードの秩序を保つ ・コンポーネント設計方針を決める ・SSR起因のエラーを解消する ・コンポーネントを管理する ・パフォーマンス向上への取り組み
> フロントエンドのキャッチアップ ・コードの秩序を保つ ・コンポーネント設計方針を決める ・SSR起因のエラーを解消する ・コンポーネントを管理する ・パフォーマンス向上への取り組み
チーム体制 ・エンジニア3名(リモート2、オフィス1) ・UI周りの調整には都度デザイナーも加わる ・Vue.js、Nuxt.jsの社内知見は少ない。 フロントエンドキャッチアップの必要性
フロントエンドのキャッチアップ ・社内ハンズオンの開催 es2015復習-Vue.js入門-Nuxt.js入門ハンズオンを社内開催 ・社外交流 社外から知見のある人物を招いて情報交換、レビュー ・知見の共有 得られた知見は社内wikiへ集約
・フロントエンドのキャッチアップ > コードの秩序を保つ ・コンポーネント設計方針を決める ・SSR起因のエラーを解消する ・コンポーネントを管理する ・パフォーマンス向上への取り組み
コードの秩序を保つ 開始当初はVue.jsのスタイルガイドに沿っていないコードが散見 されていた。 ← v-forの要素に対して v-bind:key が指定されていない。 *ref: jp.vuejs.org/v2/style-guide/
コードの秩序を保つ ・ESLintに `vue/recommended` ルールを適用 ・CIで自動化、Vue.jsスタイルガイド違反のコードを撲滅 .eslintrc.js
・フロントエンドのキャッチアップ ・コードの秩序を保つ >コンポーネント設計方針を決める ・SSR起因のエラーを解消する ・コンポーネントを管理する ・パフォーマンス向上への取り組み
コンポーネント設計 状態管理にVuex コンポーネントデザインにAtomic Designを採用
コンポーネント設計の揺らぎ デザインパターンを取り入れたとはいえ、実装者によって設計に 差があった。 ・単一コンポーネントの再利用性と責務 ・atom vs molecule、molecule vs organism ・状態管理(vuex
state/コンポーネント内data/$emit)使い分け
設計の揺らぎをなくす 揺らぎがある部分は明確にガイドライン化 ・単一コンポーネントの再利用性と責務 再利用性のために責務を増やさない。責務が増える場合はコンポーネント を分割する ・atom vs molecule、molecule vs organism
atomは他のコンポーネントを含まない、stateless、vuexを参照しない... 等々
・フロントエンドのキャッチアップ ・コードの秩序を保つ ・コンポーネント設計方針を決める > SSR起因のエラーを解消する ・コンポーネントを管理する ・パフォーマンス向上への取り組み
SSR起因のエラー コードをそのまま移行するとSSR(server-side-rendering)起因のエラーが 多発してしまった ・window is not defined SSR時には、window関数をはじめクライアントサイドの リソースにはアクセスできない。 ・cookieの参照
これも上記と同じくSSR時に参照できないので嵌った。
エラーログの収集 sentry-moduleプラグイン github.com/nuxt-community/sentry-module slack連携してエラーが起きたら通知。クライアントサイドで予想外なことが 起こっていないかチェック
・フロントエンドのキャッチアップ ・コードの秩序を保つ ・コンポーネント設計方針を決める ・SSR起因のエラーを解消する > コンポーネントを管理する ・パフォーマンス向上への取り組み
コンポーネント把握できない問題 ← 再利用可能なコンポーネントが増 え、もはや把握ができなくなってしまっ た開発者
コンポーネントカタログの導入 Storybook: github.com/storybooks/storybook ・運用コストはかかるが、 コンポーネントが把握できなくなることによる弊害 > 運用コスト *Nuxt v2で Storybook
v3.xが動かなくなる問題があったが、現在はStorybook v4.0rc バージョンを使うことで回避
・フロントエンドのキャッチアップ ・コードの秩序を保つ ・コンポーネント設計方針を決める ・SSR起因のエラーを解消する ・コンポーネントを管理する > パフォーマンス向上への取り組み
パフォーマンス計測 gas-webpagetest: github.com/uknmr/gas-webpagetest webpagetestで定期的に自動計測 > data studioでログの可視化 *SpeedCurveも検討(将来的には導入したい)
bundleファイル分析 ・webpack-bundle-analyzerを活用 ・モジュール単位のファイルサイズを可視化。ファイルサイズの大きいも のから最適化
まだまだあります高速化施策 パフォーマンス向上は地道な取り組み ・画像サイズの最適化 ・リソースの遅延ロード ・リクエスト数を減らす ・PWA対応 ・APIパフォーマンスの向上 高速なnoteを目指して、 継続してチューニングしていきます
最後に
リリースノート公開中 note.mu/noteeng/m/me7637ba82821
; Vue Fes Japan@11/3 https://vuefes.jp/
ありがとうございました