ソリューションのパフォーマンス、安定性、信頼性を向上
ソリューションは、アプリ、テーブル、フロー、Webリソース、プラグインなどのオブジェクトを配布するために使用されます。 Power Platform この記事では、ソリューション チェッカー機能について説明します。これは、一連の ベスト プラクティス ルールに照らしてソリューション オブジェクトの包括的な静的分析を実行する強力なツールです。 ソリューション チェッカーを使用すると、コンポーネント内の問題のあるパターンをすばやく特定し、問題や影響を受けるコンポーネントを強調表示し、各問題を解決する方法に関するドキュメントへのリンクを提供する詳細なレポートを受け取ることができます。 これにより、ソリューションのパフォーマンス、安定性、信頼性が最適化されます。
ソリューション チェッカーは、環境からエクスポートできるアンマネージド ソリューションを使用します。
ソリューション チェッカーは、 Power Apps (make.powerapps.com) から、または PowerShellを使用して実行できます。
ソリューションチェッカーがどのように役立つか
複雑なビジネス要件を満たすために、メーカーは多くの場合、 Power Platform をカスタマイズおよび拡張する高度なソリューションを導入することになります。 高度な実装により、パフォーマンス、安定性、信頼性の問題が生じるリスクが増加し、ユーザーの作業に悪影響を与える可能性があります。 これらの問題を解決する方法を特定して理解することは、複雑で時間がかかることがあります。 ソリューション チェッカー機能を使用すると、ベスト プラクティス ルールのセットを使用して問題のあるパターンを迅速に特定し、ソリューションのチェックを数秒以内に実行できます。 チェックが完了すると、特定された問題、影響を受けるコンポーネントとコード、および各問題を解決する方法を説明するドキュメントへのリンクが記載された詳細なレポートが、 Power Apps および電子メール メッセージで送信されます。
ソリューション チェッカーは、これらのソリューション コンポーネントを分析します:
- Dataverseユーザー定義のワークフロー活動
- Dataverse Web リソース (HTML および JavaScript)
- SDK メッセージ手順などの Dataverse 構成
- Power Automate フロー (フローチェッカーを使用する)
- Power Fx 式 (アプリ チェッカーを使用する)
注意
- ソリューション チェッカーは、ECMAScript 2015 (ES6) 以降、ECMAScript 2018 (ES9) 構文までのグローバル変数をサポートします。 ES6 以降のグローバル変数、または ES9 以降の構文を使用して JavaScript を検出する場合、Web リソースの Web 非サポート構文の問題が報告されます。
- ソリューション チェッカーを使用しても、ソリューションのインポートが成功することは保証されません。 ソリューションに対して実行される静的分析チェックでは、宛先 環境 の構成状態が認識されないため、インポートの成功は 環境 内の他のソリューションまたは構成に依存する可能性があります。
ソリューション チェッカーを実行する
Power Apps にサインインします。
左側のウィンドウで、ソリューションを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
分析するアンマネージド ソリューションの横で、... を選択し、ソリューション チェッカーをポイントして実行を選択します。
ソリューションチェッカー コマンド ボタンには読み込みインジケーターがあり、実行中… と表示されます 状態と、ソリューション リストの ソリューション チェック 列に表示されます。
注意
- ソリューション チェッカーが分析を完了するまで、数分間かかる場合があります。
- チェックが完了したら、電子メール通知を受け取り、Power Apps サイトの 通知 領域に通知が表示されます。
- チェックが完了したら、レポートを表示します。
チェックを取り消す
環境でソリューション チェックを送信すると、ソリューションページの右上領域の状態ウィンドウでチェックを取り消すことができます。
チェックを取り消すと、ソリューション チェックが実行を停止し、ソリューション チェック状態が以前の状態に戻ります。
ソリューション チェッカーの状態
環境にソリューション チェッカーをインストールすると、ソリューション チェック 列が ソリューション リストで使用可能になります。 この列には、ソリューションのソリューション分析状態が表示されます。
都道府県 | 説明 |
---|---|
実行されていない | ソリューションはまったく分析されていません。 |
実行中 | ソリューションが分析されています。 |
完了できなかった | ソリューションの分析が要求されましたが、分析が正常に完了しませんでした。 |
日時 現在の結果 | ソリューションの分析が完了し、結果をダウンロードできます。 |
完了できなかった。 日時 現在の結果 | 最新の分析要求が正常に完了しませんでした。 最後の正常な結果をダウンロードできます。 |
Microsoft がチェック | これは、Microsoft の管理ソリューションです。 ソリューションの分析は、これらのソリューションで使用できません。 |
発行元がチェック | これはMicrosoft以外の 管理ソリューション です。 現在、ソリューション分析は、これらのソリューションで利用できません。 |
ソリューション チェッカー レポートを確認
解析チェックが完了すると、ポータルで解析レポートを表示したり、Webブラウザからレポートをダウンロードすることができます。 ポータルでは、問題、場所、重大度 別に結果を並べ替え、ソリューションで検出された問題の詳細情報を表示することができます。
左側のウィンドウで、ソリューションを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
ソリューション チェッカーレポートを表示する非管理ソリューションの横に配置されている、 ... を選択し、 ソリューション チェッカー をポイントして 結果を表示する を選択します。
問題を選択すると、解決方法の詳細およびガイダンスが表示されます。
ソリューションチェックの結果は、ダウンロードすることも可能です。 ソリューション チェッカーの ZIP ファイルは、Web ブラウザーによって指定されたフォルダーにダウンロードされます。 ダウンロードできるレポートは、Excel 形式であり、ソリューションで検出された各問題の影響、種類、場所を識別するのに役立ついくつかのビジュアル化と列が含まれています。 問題の解決方法に関する詳細なガイダンスへのリンクも提供されます。
- 左側のウィンドウで、ソリューションを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
- ソリューション チェッカー レポートをダウンロードするアンマネージドソリューションの横に配置されている、 ... を選択し、 ソリューション チェッカー をポイントして 結果のダウンロード を選択します。
- ソリューション チェッカーの ZIP ファイルは、Web ブラウザーによって指定されたフォルダーにダウンロードされます。
レポート内の各列の概要を以下に示します。
レポート列 | 内容 | コンポーネントに適用 |
---|---|---|
問題点 | ソリューションで識別される問題のタイトル。 | すべて |
カテゴリ | 識別される問題の分類: パフォーマンス、メンテナンス性、使用法、サポート性、設計、安全、アクセシビリティ、またアップグレードの準備状況。 | All |
重大度 | 検出された問題の潜在的な影響を表します。 使用可能な影響の種類は、重大、高、中、下、および情報です。 | All |
ガイダンス | 問題、影響、推奨されるアクションの詳細が記載された記事へのリンク。 | すべて |
コンポーネント | 問題が特定されたソリューション コンポーネントです。 | すべて |
Location | アセンブリや JavaScript ファイル名など、特定された問題が発生したコンポーネントの場所やソース ファイルです。 | すべて |
行番号 | 影響を受ける Web リソース コンポーネントの問題の行番号参照。 | Web リソース |
モジュール | アセンブリで特定された問題が検出されたモジュール名。 | ユーザー定義ワークフロー活動 |
タイプ | アセンブリで識別された問題の種類。 | ユーザー定義ワークフロー活動 |
メンバー | アセンブリで識別された問題のメンバー。 | ユーザー定義ワークフロー活動 |
ステートメント | 問題が発生したコード ステートメントまたは構成。 | すべて |
コメント | 高レベルな解決手順が含まれる問題に関する詳細。 | All |
ソリューション チェッカー ルールをローカルで実行する
開発環境でソリューション チェッカー ルールを実行すると、ソリューション リソースを作成するときに問題をより早く検出できます。 これは現在、Web リソース (JavaScript および TypeScript) をサポートしています。 詳細については、NPM パッケージにアクセスしてください (@microsoft/eslint-plugin-power-apps)。
PowerShellを使用してソリューション チェッカーを実行する
サービスと直接対話するために使用できるPowerShellモジュールが利用可能です。 Microsoft.PowerApps.Checker.PowerShell モジュールは、Power Apps 環境に関するアンマネージド ソリューションの分析用途でのみ使用でき、自動化またはサービスをお使いのビルドに統合してパイプラインを解放することができます。 詳細: Microsoft.PowerApps.Checker.PowerShell の概要
ソリューション チェッカーにより使用される推奨事項ルール
次の表に、コンポーネントの種類、ルールの説明、重要度、カテゴリを示します。 マネージド環境でのソリューション チェッカーが強制されるように構成されている場合、重大な違反はブロックまたは警告されます。 詳細情報: マネージド環境でソリューション チェッカーを使用する
ソリューション コンポーネント | ルール名 | ルールの説明 | 重大度 | カテゴリー |
---|---|---|---|---|
プラグインまたはワークフロー活動 | meta-remove-dup-reg | 重複する Dataverse プラグインの登録を避けてください。 | 重大 | 実績 |
プラグインまたはワークフロー活動 | meta-avoid-reg-no-attribute | Dataverse プラグイン登録にフィルター属性を含めます。 | ミディアム | 実績 |
プラグインまたはワークフロー活動 | meta-avoid-reg-retrieve | Retrieve および RetrieveMultiple メッセージ用に登録された Dataverse プラグインを使用するときは注意してください。 | ミディアム | 実績 |
プラグインまたはワークフロー活動 | meta-remove-inactive | Dataverse で非アクティブ構成を削除します。 | 安 | メンテナンス性 |
プラグインまたはワークフロー活動 | meta-avoid-crm4-event | Microsoft Dynamics CRM 4.0 プラグイン登録ステージを使用しないでください。 | ミディアム | アップグレードの準備状況 |
プラグインまたはワークフロー活動 | meta-avoid-retrievemultiple-annotation | アノテーションの RetrieveMultiple でプラグインを登録しないでください。 | 高 | 使い方 |
モデル駆動型アプリ | meta-license-sales-entity-operations | ソリューションには、有効な Dynamics 365 ライセンスを必要とする制限付き SDK メッセージと操作のエンティティが含まれています。 | 安 | ライセンス |
モデル駆動型アプリ | meta-license-fieldservice-customcontrols | ソリューションには、有効な Dynamics 365 Field Service ライセンスを必要とするカスタム コントロールが含まれています。 | 安 | ライセンス |
モデル駆動型アプリ | meta-license-fieldservice-entity-operations | ソリューションには、有効な Dynamics 365 Field Service ライセンスを必要とする制限された SDK メッセージと操作を持つエンティティが含まれています。 | 安 | ライセンス |
Web リソース | use-async | HTTP および HTTPS リソースを非同期に操作します。 | 重大 | 実績 |
Web リソース | avoid-modals | モーダル ダイアログを使用しないでください。 | 高 | サポート性 |
Web リソース | avoid-dom-form | 高 | サポート性 | |
Web リソース | avoid-dom-form-event | 高 | サポート性 | |
Web リソース | avoid-crm2011-service-odata | Microsoft Dynamics CRM 2011 OData 2.0 エンドポイントをターゲットにしないでください。 | 重大 | アップグレードの準備状況 |
Web リソース | avoid-crm2011-service-soap | Microsoft Dynamics CRM 2011 SOAP サービスをターゲットにしないでください。 | 重大 | アップグレードの準備状況 |
Web リソース | avoid-loadtheme | loadTheme Fluent v8 API は使用しないでください。 |
安 | サポート性 |
Web リソース | avoid-browser-specific-api | Internet Explorer レガシー API またはブラウザーのプラグインを使用しないでください。 | 重大 | アップグレードの準備状況 |
Web リソース | avoid-unpub-api | 高 | サポート性 | |
Web リソース | avoid-window-top | 高 | サポート性 | |
Web リソース | avoid-2011-api | 廃止された Microsoft Dynamics CRM 2011 オブジェクト モデルを使用しないでください。 代わりに、Dataverse Web API の説明書に従ってください。 | 高 | アップグレードの準備状況 |
Web リソース | use-relative-uri | 絶対 Dataverse エンドポイント URL を使用しないでください。 | ミディアム | メンテナンス性 |
Web リソース | use-cached-webresource | ミディアム | 実績 | |
Web リソース | use-client-context | クライアント コンテキストを使用してください。 | ミディアム | アップグレードの準備状況 |
Web リソース | use-navigation-api | ナビゲーション API パラメーターを使用します。 | ミディアム | アップグレードの準備状況 |
Web リソース | use-offline | ミディアム | アップグレードの準備状況 | |
Web リソース | do-not-make-parent-assumption | 高 | 設計 | |
Web リソース | use-org-setting | 組織設定を使用します。 | ミディアム | アップグレードの準備状況 |
Web リソース | use-global-context | ミディアム | アップグレードの準備状況 | |
Web リソース | use-grid-api | グリッド API を使用します。 | ミディアム | アップグレードの準備状況 |
Web リソース | use-utility-dialogs | ミディアム | 使い方 | |
Web リソース | avoid-isActivityType | Xrm.Utility.isActivityType メソッドを新しい Xrm.Utility.gettableMetadata に置き換えます。リボン ルールは使用しないでください。 | ミディアム | アップグレードの準備状況 |
Web リソース | meta-avoid-silverlight | Silverlight Web リソースの使用は廃止されました。 | ミディアム | アップグレードの準備状況 |
Web リソース | remove-debug-script | 非開発環境ではデバッグ スクリプトを含めないようにしてください。 | ミディアム | 使い方 |
Web リソース | use-strict-mode | 可能な場合は厳密なモードを使用します。 | ミディアム | 使い方 |
Web リソース | use-strict-equality-operators | 厳密等価演算子の使用。 | ミディアム | 使い方 |
Web リソース | avoid-eval | eval 関数またはそれと同等の機能を使用しないでください。 |
重大 | セキュリティ |
Web リソース | avoid-with | 'with' オペレーターを使用しないでください。 | 高 | 実績 |
Web リソース | remove-alert | 'alert' 関数、またはその機能に相当するものは使用しないでください。 | ミディアム | 使い方 |
Web リソース | remove-console | コンソールでメソッドを使用しないでください。 | ミディアム | 使い方 |
Web リソース | avoid-ui-refreshribbon | フォーム onload および EnableRule で refreshRibbon を使用することは避けてください。 | 重大 | 実績 |
Web リソース | use-getsecurityroleprivilegesinfo | userSettings.securityRolePrivileges は使用しないでください。 代わりに userSettings.getSecurityRolePrivilegesInfo 使用してください。 | 高 | 実績 |
Web リソース | use-appsidepane-api | Xrm.Panels.loadPanel の代わりに Xrm.App.sidePanes.createPane を使用します。 | ミディアム | アップグレードの準備状況 |
Web リソース | web-sdl-no-cookies | HTTP Cookie は、内在するリスクと制限を伴う旧クライアント側のストレージ メカニズムです。 代わりに、Webストレージ、IndexedDB、またはその他の最新の方法を使用してください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-document-domain | 送信元が同じチェックのバイパスを避けるために、document.domain プロパティへの書き込みを確認する必要があります。 azurewebsites.net などのトップレベルのドメインの使用は固く禁止されています。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-document-write | document.write または document.writeln の呼び出しは、サニタイズなしで DOM を直接操作するため、避ける必要があります。 代わりに document.createElement() または同様のメソッドを使用してください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-html-method | html() メソッドを直接呼び出すと、多くの場合 (たとえば、jQueryフレームワーク内)、サニタイズなしでDOMが操作されるため、回避する必要があります。 代わりに document.createElement() または同様のメソッドを使用してください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-inner-html | innerHTML または outerHTML プロパティの割り当ては、サニタイズなしで DOM を直接操作するため、避ける必要があります。 代わりに document.createElement() または同様のメソッドを使用してください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-insecure-url | セキュリティが脆弱な HTTP や FTP などのプロトコルは、暗号化プロトコル (HTTPS、FTPS) に置き換えることで、機密データがプレーンテキストの状態で、信頼性の低いネットワークで送信されるのを防いでください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-msapp-exec-unsafe | MSApp.execUnsafeLocalFunction() を呼び出すと、スクリプト インジェクションの検証が省略されるため、呼び出さないでください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-postmessage-star-origin | postMessage を使用して他のウィンドウにデータを送信する場合は、データが信頼境界線の外部に漏れるのを防ぐために、(* ではなく) ターゲットの生成元を必ず指定してください。 | ミディアム | セキュリティ |
Web リソース | web-sdl-no-winjs-html-unsafe | WinJS.Utilities.setInnerHTMLUnsafe() や同様のメソッドの呼び出しでは入力検証は実行されないため、避ける必要があります。 代わりに WinJS.Utilities.setInnerHTML() を使用してください。 | ミディアム | セキュリティ |
キャンバス アプリ | app-formula-issues-high | 詳細については、 Power Apps 数式リファレンス を参照してください。 | 重大 | 設計 |
キャンバス アプリ | app-formula-issues-medium | 追加の詳細については、Power Apps 計算式リファレンスを参照してください。 | ミディアム | 設計 |
キャンバス アプリ | app-formula-issues-low | 追加の詳細については、Power Apps 計算式リファレンスを参照してください。 | 安 | 設計 |
キャンバス アプリ | app-use-delayoutput-text-input | 一部のシナリオでは、遅延ロードを使用してパフォーマンスを向上させます。 | ミディアム | 実績 |
キャンバス アプリ | app-reduce-screen-controls | パフォーマンスを向上させるために、アプリ コントロールの数を制限します。 | ミディアム | 実績 |
キャンバス アプリ | app-include-accessible-label | 明示的なラベルを使用して、アプリのアクセシビリティを向上させます。 | ミディアム | アクセシビリティ |
キャンバス アプリ | app-include-alternative-input | すべてのインタラクティブ要素が代替入力にアクセスできることを確認します。 | ミディアム | アクセシビリティ |
キャンバス アプリ | app-avoid-autostart | アプリ内のプレーヤーで自動起動を使用することは避けてください。 | ミディアム | アクセシビリティ |
参照
Dataverseに関するベスト プラクティスとガイダンス
モデル駆動型アプリのベスト プラクティスとガイダンス
ソリューション チェッカーの一般的な問題と解決策
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。