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
Nuxt.js移行プロジェクトの話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tic40
October 24, 2018
Technology
2.9k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nuxt.js移行プロジェクトの話
note engineer meetup#1
2018/10/23
tic40
October 24, 2018
Other Decks in Technology
See All in Technology
Pavlokで始める電撃駆動開発
sgrsn
0
140
ガバメントクラウドでのランサムウェア対策
techniczna
1
530
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
110
システム監視を 「システムを監視するだけ」で 終わらせないために
seiud
0
160
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
4
670
CloudWatchから始めるAWS監視
butadora
0
310
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
240
Claude Mythos、Fable...フロンティアAIの最新動向と企業のセキュリティ対策
flatt_security
0
180
検索技術知識0のエンジニアが広告検索システムを内製化して運用するまで
lycorptech_jp
PRO
0
180
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
900
「待ち時間」の消滅と「自我消耗」の加速:生成AI時代のエンジニアを救うメンタル・リソース管理
poropinai1966
0
400
DevOps Agentで運用判断をチーム資産にする~Agent InstructionsとAgent Skillを継続的に育てる~
fujioka6789
0
190
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
560
The Curse of the Amulet
leimatthew05
2
13k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Marketing to machines
jonoalderson
1
5.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
420
Designing for humans not robots
tammielis
254
26k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
420
How STYLIGHT went responsive
nonsquared
100
6.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
780
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/
ありがとうございました