0Pricing
Vue Academy · レッスン

ボトルネックの特定と解消

プロファイリングを行い、パフォーマンスのボトルネックを解消します。

「ボトルネックの特定と解消」はCoddyKit上の無料Vue Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはVue Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Vue Academyコースには全3レッスンが含まれています。

最適化の前に測定する

アプリの遅い箇所を推測しても時間を無駄にします。プロフェッショナルな進め方は、まず測定して実際のボトルネックを見つけ、修正してからもう一度測定することです。主なツールはVue DevToolsとブラウザーのプロファイラーです。

Vue DevTools

Vue DevToolsのブラウザー拡張機能を使うと、コンポーネントツリー、リアクティブな状態、イベントを調べられます。Performanceタブでは、コンポーネントのレンダリングにかかった時間を記録できるため、遅いコンポーネントを見つけられます。

Performanceタブを使う

記録を開始してアプリを操作し、その後停止してください。DevToolsには、コンポーネントのレンダリングのタイムラインが表示されます。レンダリングバーが長い、または頻繁に表示されるコンポーネントが、まず調べるべき候補です。

ブラウザープロファイラー

ブラウザーのDevToolsにあるPerformanceパネルでは、スクリプト処理、レンダリング、ペイントを含むページ全体を記録できます。黄色いスクリプト処理ブロックが長い場合は、レンダリング中に負荷の高いJavaScript処理が行われている可能性があります。

過剰な再レンダリングを見つける

よくあるボトルネックは、コンポーネントが想定以上の頻度で再レンダリングされることです。小さな変更によって大きなサブツリーが再レンダリングされる場合は、共有されたリアクティブな状態や、コンポーネントの境界が不足していないか確認してください。

大きなリストのレンダリング

何千ものDOMノードを一度にレンダリングすると、処理が遅くなりメモリも大量に消費します。リストの行数が数百、数千に及ぶ場合は、データのロジックではなくDOM自体がボトルネックになります。

<!-- rendering 10,000 rows like this is expensive -->
<li v-for="row in tenThousandRows" :key="row.id">{{ row.name }}</li>

仮想スクロールの考え方

仮想スクロールでは、ビューポート内で現在見えている行と少量の余裕分だけをレンダリングし、ユーザーのスクロールに合わせてDOMノードを再利用します。10,000項目のリストでも、DOM内に保持されるノードは数十個だけです。

仮想リストライブラリを使う

vue-virtual-scrollerのようなライブラリを使えば、この処理を任せられます。全データと1行の高さを渡すだけで、表示範囲の管理を行ってくれます。

import { RecycleScroller } from "vue-virtual-scroller"

// in template:
// <RecycleScroller :items="rows" :item-size="40" v-slot="{ item }">
//   <div>{{ item.name }}</div>
// </RecycleScroller>

キーが原因の再レンダリングバグ

動的なリストで配列のインデックスを :key に使うと、項目の追加、削除、並べ替えが行われたときにVueがDOMノードを誤って再利用することがあります。その結果、内容が誤ったり、余分な再レンダリングが発生したりします。

<!-- buggy: index keys break on reorder -->
<li v-for="(item, i) in items" :key="i">{{ item.name }}</li>

キーに関するバグを修正する

安定した一意の識別子をキーとして使うと、更新の前後でVueが要素とデータを正しく対応付けられます。

<!-- correct: stable id key -->
<li v-for="item in items" :key="item.id">{{ item.name }}</li>

実践的なワークフロー

手順をまとめると、DevToolsで記録し、最も遅いコンポーネントを見つけ、過剰な再レンダリングや巨大なリストがないか確認し、適切な修正(computedによるキャッシュ、v-memo、仮想スクロール、安定したキー)を適用して、改善を確認するために再測定します。

確認テスト

ボトルネックの見つけ方についての知識を確認しましょう。

まとめ

まずVue DevToolsとブラウザーのプロファイラーで測定し、実際のボトルネックを対象に最適化します。対象となるのは、過剰な再レンダリング、巨大なリスト(仮想スクロールで改善)、インデックスをキーに使うバグ(安定したキーで改善)です。必ず再測定して効果を確認してください。次はVueアプリケーションのテスト方法を学びます。

よくある質問

「ボトルネックの特定と解消」レッスンは無料ですか?

はい。「ボトルネックの特定と解消」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Vue Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Vue Academyコースには全3レッスンが含まれています。

「ボトルネックの特定と解消」で何を学びますか?

プロファイリングを行い、パフォーマンスのボトルネックを解消します。 ブラウザで直接実行するハンズオンコードでVue Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Vue Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのVue Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。

「ボトルネックの特定と解消」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このVue Academyレッスンでコードを書いて実行できますか?

はい。すべてのVue Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 遅延ロードとコード分割
  2. メモ化のテクニック
  3. ボトルネックの特定と解消
← Vue Academyに戻る