as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

Vega ESLintプラグインを使用してパフォーマンスの問題を検出する方法

Vega ESLintプラグインを使用してパフォーマンスの問題を検出する方法

eslint-plugin-keplerは、Vegaアプリ用の自動リンティングルールを提供して、パフォーマンスと互換性の問題の検出と修正を支援します。

プラグインのインストールと構成

  1. Vega ESLintプラグインとその依存関係をインストールします。

    クリップボードにコピーしました。

    npm install --save-dev @amzn/eslint-plugin-kepler jsonc-eslint-parser
    
  2. .eslintrc構成ファイルのextendspluginsoverridesの各セクションを更新します。

    クリップボードにコピーしました。

    {
       "extends": [
          "@react-native",
          "eslint:recommended",
          "plugin:@amzn/eslint-plugin-kepler/kepler" // 拡張機能追加します。
       ],
       "plugins": [
          "@typescript-eslint",
          "@amzn/kepler" // プラグイン含めます。
       ],
       "overrides": [
          {
             "files": ["**/*.ts", "**/*.tsx"],
             "parser": "@typescript-eslint/parser",
             "parserOptions": {
                "project": "./tsconfig.json"
          },
          {
             "files": ["package.json"],
             "parser": "jsonc-eslint-parser" // このパーサーpackage.jsonチェックするために必要です。
          }
       ]
    }
    
  3. (任意)ESLintのConfigure Rulesガイドに従ってLintルールをカスタマイズします。このプラグインで提供されるすべてのルールについては、ESLintのルールを参照してください。

  4. package.jsonでカスタムフォーマッターを指定します。

    クリップボードにコピーしました。

    {
    "scripts": {
       :
       "lint": "eslint src test package.json --ext .ts,.tsx --format node_modules/@amzn/eslint-plugin-kepler/dist/formatters/default.js",
       :
       }
    }
    
  5. リンターを実行します。

    クリップボードにコピーしました。

     npm run lint
    

    結果はコンソールで確認できます。

    リンターの実行後のコマンドプロンプト出力を示す画像
    リンターの実行後の結果が表示されたコンソール

    リンターはHTMLレポートも生成します。

    Vegaプロジェクトに対するESLintの分析レポートを示す画像。パフォーマンスに関する警告が2つ表示されています。1つは描画完了までの時間の指標を測定するためのuseReportFullyDrawn()の実装がないこと、もう1つはスプラッシュ画面を最適化するためのusePreventHideSplashScreen()がないことを示す警告です。このレポートは、コードベースに重大なエラーがないことを示しています。
    VegaのESLintパフォーマンスレポート

    VS Codeでは、コードの編集中にこれらのリンターの警告を確認できます。

    VS Codeでのリンターの警告を示す画像
    リンターの警告

ESLintのルール

VegaESLintプラグインには次の3つの構成があります。

  • kepler - すべてのKeplerルール(パフォーマンスとシステム分散ライブラリチェック)
  • performance - パフォーマンス関連ルールのみ
  • system-distributed-libs - システム分散ライブラリチェックのみ(package.jsonの検証とインポートの情報フラグ)

    次のように複数の構成を使用できます:javascript module.exports = { plugins: ["@amazon-devices/eslint-plugin-kepler"], extends: [ "plugin:@amazon-devices/eslint-plugin-kepler/performance", "plugin:@amazon-devices/eslint-plugin-kepler/system-distributed-libs" ], }

次のルールを使用すると、Vegaアプリの一般的なパフォーマンス問題を特定し、最適なランタイムパフォーマンスを実現するためのベストプラクティスを実施できます。

ルール名 デフォルトの重大度 説明 ベストプラクティス
@amazon-devices/kepler/flat-list 警告 - 問題が報告されますが、ビルドは失敗しません。 FlatList要素に十分なプロパティが設定されているかどうかをチェックします。 FlatList
@amazon-devices/kepler/check-subscription 警告 - 問題が報告されますが、ビルドは失敗しません。 useAddVegaAppStateListenerCallbackとuseAddUserInputListenerCallbackによってインストールされたコールバックが正しく登録解除されているかどうかをチェックします。 リスナー、イベントサブスクリプション、タイマー
@amazon-devices/kepler/animated エラー - 問題が報告され、ビルドは失敗します。 Animated要素のコンポーネントでネイティブドライバーを使用しているかどうかをチェックします。 Animatedライブラリ
@amazon-devices/kepler/detect-report-fully-drawn 警告 - 問題が報告されますが、ビルドは失敗しません。 コードがuseReportFullyDrawn()を正しく呼び出すかどうかをチェックします。 描画完了マーカー
@amazon-devices/kepler/detect-splash-screen 警告 - 問題が報告されますが、ビルドは失敗しません。 コードがusePreventHideSplashScreen()とuseHideSplashScreenCallback()を正しく呼び出すかどうかをチェックします。 SplashScreenManager

システム分散ライブラリルールとVS Codeの構成

次のルールは、システム分散ライブラリの使用状況を検出し、適切な実装方法を示します。| ルール名 | デフォルトの重大度 | 説明 | ベストプラクティス | | ———————————————- | —————- | ——————————————————————————————————————————————————————————————————— | ————————— | | @amzn/kepler/sdl-package-version-check | エラー | package.jsonのシステム分散ライブラリの依存関係が、適切なセマンティックバージョニングを使用していることを確認します(オプションについては以下を参照)。 | | | @amzn/kepler/sdl-package-version-check-imports | 警告 | システム分散ライブラリインポートにフラグを設定し、標準のReact Nativeライブラリの動作とは異なることを開発者に伝えます。| |

どちらのルールにも、セマンティックバージョンのガイダンスレベルを設定するためのオプションパラメーターがあります。

  • パッチのみモードsemverGuidance: "patch"): ~プレフィックスを使用するパッチのみにアップデートを制限します。
  • マイナーおよびパッチモードsemverGuidance: "minor"): ^プレフィックスを使用してマイナーアップデートを許可します。
  • 自動モードsemverGuidance: "auto"): プロジェクトリポジトリ内のプロジェクト署名に基づいて設定を検出します。これがデフォルトです。

デフォルトでは自動モードが実行されますが、semverGuidanceオプションを構成することでオーバーライドできます。

module.exports = {
  plugins: ["@amazon-devices/eslint-plugin-kepler"],
  rules: {
    "@amzn/kepler/sdl-package-version-check": [
      "error",
      { semverGuidance: "patch" },
    ], // 「auto」がデフォルトです
    "@amzn/kepler/sdl-package-version-check-imports": [
      "warn",
      { semverGuidance: "patch" },
    ],
  },
};

システム分散ライブラリルールには、package.jsonファイル用のESLint JSONパーサーが必要です。次のようにパーサーをインストールします。

npm install -D jsonc-eslint-parser

VS Codeのpackage.jsonでエラーや警告を確認したい場合は、jsonを次のsettings.jsonエントリに追加してください。

"eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    // 以下の行を追加します
    "json"
  ],
  "eslint.probe": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    // 以下の行を追加します
    "json"
  ],

Last updated: 2025年11月13日