Googleによって作られたAngularは、最新のウェブアプリケーションを構築するための素晴らしいツールです。高速で効率的、そして使いやすいシングルページアプリ(SPA)を作成するのに役立ちます。さらに、スマートフォン、タブレット、さらにはコンピュータ上で動作するアプリも構築できます!

Angularは整理された構造を備えており、素晴らしい出発点を提供します。これにより、クリーンでメンテナブルなコードの記述が容易になります。アプリのさまざまな部分をブロックのように簡単に組み合わせることができ、アプリケーションの設計や更新がシンプルになります。

高速性 Angularは素晴らしいアプリを構築するのに役立ちますが、パフォーマンスに注意して、アプリが迅速に読み込まれ、スムーズに動作するようにする必要があります。

  • 効率的なコードを書く:コードを整理し、Angularの最新機能を活用してアプリの動作を高速化しましょう。
  • ビルドプロセスの最適化:アプリが迅速にビルドおよびデプロイされ、遅延を最小限に抑えるようにしましょう。
  • アプリの監視:実際の環境でのアプリのパフォーマンスを監視し、遅くなる可能性のある問題を特定して修正しましょう。

これらのヒントに従うことで、素晴らしいユーザー体験を提供する高性能なAngularアプリを作成できます。

 

アプリケーションのパフォーマンスや読み込み時間の判定に関する課題

Angularは動的なウェブページを提供するモダンなTypeScriptベースのフレームワークであるため、そのパフォーマンスや読み込み時間の監視には課題があります。SPAはページが既に読み込まれた後にブラウザ内で新しいナビゲーションをトリガーしないため、ウェブページのロード完了後に新しいコンテンツがいつ描画されたかを正確に測定するのは困難です。そのため、HTTP監視ツール(およびAPI監視ツールも)は、Angularがサーバーへの新しいブラウザリクエストをトリガーしないため、読み込み時間の最適化に役立つ重要なメトリクスを提供しません。

さらに、HTTPレスポンスはウェブページから送信されたリクエストの結果を示しますが、埋め込まれたJavaScriptファイルおよび関連リソースが解析、実行、レンダリングされ、ユーザーがページと完全に対話できるまでの真の読み込み時間を把握することはできません。クライアント側から正確な読み込み時間を取得するためには、ブラウザ内のJavaScriptイベントをテストおよび監視する異なるアプローチが必要です。

 

読み込み時間を最適化するためのツール

Angularは、アプリケーションの読み込み時間を短縮し、特に複数の重い計算に対応するためにアプリケーションが大規模化した後にパフォーマンスを監視するのに役立つツールと技術のリストを提供しています。アプリケーションの初期読み込み時間を短縮し、ページナビゲーションを高速化するのに役立つ技術には、Ahead-of-Time (AoT) コンパイルコード分割、およびモジュールのプリロードがあります。これらの技術について詳しく説明します。

Ahead-of-Time コンパイル

Angularアプリケーションをコンパイルする主な方法は2つあります。実行時にウェブブラウザ内でコンパイルするJust-in-Time (JiT) と、名前の通りビルド時にコンパイルするAhead-of-Time (AoT)です。AoTコンパイラは、ビルドプロセス中にHTMLとTypeScriptコードを組み立ててからウェブブラウザにダウンロードさせます。

これにより、アプリケーションのブートストラップにかかる時間が大幅に短縮され、レンダリングプロセスが速くなります。ウェブブラウザは実行可能なコードを読み込むため、アプリがコンパイル完了を待つことなく即座にレンダリングできるようになります。さらに、事前コンパイルされたコードは、HTMLテンプレートや外部CSSなどのリソースをアプリ内部に取り込むことで、外部への非同期リクエストの数を削減します。このため、分離されたAJAXリクエストが減り、ユーザーエクスペリエンスがよりスムーズかつ高速になります。

 

コード分割

簡単に言うと、コード分割とはアプリケーションのJavaScriptバンドルを機能に支障を来さない形で分割することです。初期読み込み時にはメインのJavaScriptコードをコントロールしつつ、エントリーポイント、動的に読み込むモジュール、共有コードなどを利用してSplitChunksPluginの助けを借りてコードの重複を防ぎながらコード分割を行います。

Angularアプリケーションにおけるコード分割には主に2つの方法があります:コンポーネントレベルのコード分割ルートレベルのコード分割です。2つの違いは、コンポーネントレベルはルートナビゲーションなしでも個別のコンポーネントを遅延読み込みするのに対し、ルートレベルは個別のルートを遅延読み込みすることです。いずれの場合も、アプリのTTI(Time to Interactive)を考慮してテストできます。TTIは、アプリがユーザーの操作に応答可能になるまでにかかる時間を測定する優れたパフォーマンス指標です。

 

モジュールのプリロード

モジュールのプリロードは、Angularアプリケーションで提供される技術で、定められたルールに従い可能な限り早くモジュールを読み込むことを可能にします。モジュールはすべて一度にプリロードすることも、特定のイベント発生時にプリロードすることも、状況に応じて選択的にプリロードすることもできます。開発者はモジュールの読み込みにかかる時間やプリロード戦略を使う価値を評価できます。Angularのモジュールのプリロードは、レイジーロードに似ていますが、すべてのイーガーロードモジュールが正常に読み込まれた直後にプリロードされる点が異なります。この方法により、ユーザーがレイジーロードされたモジュールに移動するときの遅延を排除しつつも、アプリの初期モジュールが先に読み込まれるため初期読み込みが速くなります。

Angularのデフォルトのプリロード戦略はPreloadAllModulesNoPreloadingです。前者はすべてのレイジーロード可能なモジュールをプリロードし、後者はプリロードを無効にします。PreloadAllModulesを使用すると、モジュール数が多い場合にボトルネックになる可能性があります。その際はカスタムプリロード戦略を検討するのが有益です。

カスタムプリロード戦略の利用は特に企業環境で有効です。例として、リソース負荷の高いモジュールを先にプリロードし、それほど負荷の高くないものを後にするアプローチがあります。さらに、モジュールのプリロードを行うタイミングも読み込み時間の短縮に重要な役割を果たします。

 

LoadViewによるAngularアプリケーションの負荷テスト

LoadViewは、HTTP監視ツールの制約に対応し、Angular開発者がクライアント側でアプリケーションを制御、監視、最適化するためのツールを強化する革新的かつ包括的なソリューションを提供します。LoadViewはクラウドベースの負荷テストプラットフォームで、リアルタイムに何千もの同時接続をシミュレートし、ウェブサイト、ウェブアプリケーション、およびAPIのストレステスト監視を行い、ボトルネックを特定して全体のパフォーマンスを検証します。

アカウント作成後、開発者はテストしたいウェブサイトやアプリケーションを格納するデバイスを作成してテストができます。Websiteオプションを選択すると、Angular開発者はアプリケーションのランディングページやログインページの初期読み込み時間を、同時に数千ユーザーがアクセスするシナリオを構成してテストできます。一方、Web Applicationオプションを選択すると、Angular開発者はアプリケーションの特定ユースケースのスクリプト作成と読み込み時間テストが可能です。

例として、フォーム入力、アプリ内ルートのナビゲート、サーバーからの読み込みデータのソート、そして一般的にアプリのTTI測定などが挙げられます。LoadViewは、3種類の異なる負荷曲線と接続数を時間軸に沿って設定する実行プランを使って、テスト負荷のタイプをカスタマイズできます。さらに、LoadViewは仮想ユーザーの地理的分散も設定可能です。

LoadViewは従来の方法と比べて、負荷テストプロセスの自動化を効率的かつコスト効果高く実現します。高額な設備投資や手間のかかる手順は不要で、開発者やテスターは予算やインフラ設定に悩むことなく、テストの実行に専念できます。リアルブラウザベースのテストにより、結果とインサイトはユーザージャーニーに直接結びつき、ピーク時負荷シナリオに対応可能なアプリケーション構築を支援します。

最後に、LoadViewはシミュレーションの結果を詳細なレポートで表示する能力があります。仮想ユーザー接続のシナリオ実行計画のグラフィカル表現、ユーザー別の平均応答時間、シナリオ実行中に発生したセッションごとのエラー数を示します。これらのグラフとパフォーマンスデータにより、シミュレーションの特定時点でページにレンダリングされたすべての要素の読み込み時間に関する重要な洞察を得られます。これはAngularアプリケーションにとって非常に有益で、開発者がアプリのTTIを遅延させている可能性のある特定要素に対処する手助けとなります。この点で、LoadViewはクライアント側のJavaScriptイベントの正確なテストと監視における欠落部分を補完し、フロントエンド開発者にとって強力な武器となります。

 

結論:Angularウェブアプリケーションのパフォーマンス

現代のユーザーはウェブアプリが瞬時に読み込まれることを期待しています。だからこそ、Angular開発者はスピードに注力する必要があります!Ahead-of-Time (AoT) コンパイルやコード分割などの技術は、アプリの読み込み速度を大幅に向上させます。しかし、速度は初期読み込みだけでなく、多くのユーザーが使用している時でもアプリが高速かつ応答性を保つことが重要です。ここでLoadViewが役立ちます。LoadViewは実際のユーザートラフィックをシミュレートし、パフォーマンスのボトルネックを特定できます。これはアプリへのストレステストのようなもので、負荷に耐えられることを保証します。

アプリが稼働したら、常にそのパフォーマンスを監視し、スムーズな動作を保つ必要があります。そこでDotcom-Monitorの出番です。Dotcom-Monitorは実際のブラウザからリアルユーザーのように継続的にアプリを監視します。問題が発生すると即座にアラートを受け取り、詳細なレポートでパフォーマンス問題の特定を支援します。さらに素晴らしいのは、LoadViewで使用したテストスクリプトをDotcom-Monitorで簡単に再利用できる点です。まさにアプリパフォーマンスにおけるワンツーパンチと言えます!

準備はできましたか?

  • LoadViewを無料で試そう:無料トライアルにサインアップして、圧力下でAngularアプリがどのように動作するかを最大5回の無料負荷テストで確認しましょう。
  • Dotcom-Monitorを体験しよう:当社のウェブアプリケーション監視ソリューションを試して、アプリがすべてのユーザーに対して高速かつ信頼性を保つことを保証しましょう。