Office アドインのリソースの制限とパフォーマンスの最適化Resource limits and performance optimization for Office Add-ins

ユーザーのベスト エクスペリエンスを実現するために、Office アドイン実行時の CPU コア、メモリの使用量、信頼性、および Outlook アドインの正規表現の評価の応答時間を一定以内に保つ必要があります。これらの実行時のリソース使用量の制限は、Windows と OS X 用の Office クライアントに適用され、モバイルアプリやブラウザーでは適用されません。To create the best experience for your users, ensure that your Office Add-in performs within specific limits for CPU core and memory usage, reliability, and, for Outlook add-ins, the response time for evaluating regular expressions. These run-time resource usage limits apply to add-ins running on Office clients for Windows and OS X, but not Office Online, Outlook Web App, or OWA for Devices.

また、デスクトップやモバイル デバイス上のアドインについても、アドインの設計と実装でリソース使用量を最適化することによって、そのパフォーマンスを最適化できます。You can also optimize the performance of your add-ins on desktop and mobile devices by optimizing the use of resources in your add-in design and implementation.

アドインのリソース使用量の制限Resource usage limits for add-ins

実行時のリソース使用量の制限は、すべての種類の Office アドインに適用されます。このような制限は、ユーザーのパフォーマンスの向上およびサービス拒否攻撃の影響緩和にも役立ちます。想定される一連のデータを使用して対象のホスト アプリケーションで Office アドインをテストし、次に示す制限の範囲内でパフォーマンスを調整してください。Run-time resource usage limits apply to all types of Office Add-ins. These limits help ensure performance for your users and mitigate denial-of-service attacks. Be sure to test your Office Add-in on your target host application by using a range of possible data, and measure its performance against the following run-time usage limits:

  • CPU コアの使用率: 単一の CPU コアの使用率しきい値 90%、既定の 5 秒間隔で 3 回観測。CPU core usage - A single CPU core usage threshold of 90%, observed three times in default 5-second intervals.

    CPU コアの使用率を確認するホスト リッチ クライアントの既定の間隔は、5 秒間隔です。ホスト クライアントでアドインの CPU コアの使用率がしきい値を超えたことを検知した場合、ユーザーがアドインの実行を継続するかどうかを確認するメッセージが表示されます。ユーザーが継続することを選択した場合、編集セッション中にホスト クライアントがユーザーにもう一度確認することはありません。ユーザーが CPU を集中的に使用するアドインを実行する場合、この警告メッセージの表示を減らすには、管理者は AlertInterval レジストリ キーを使用する必要がある可能性があります。The default interval for a host rich client to check CPU core usage is every 5 seconds. If the host client detects the CPU core usage of an add-in is above the threshold value, it displays a message asking if the user wants to continue running the add-in. If the user chooses to continue, the host client does not ask the user again during that edit session. Administrators might want to use the AlertInterval registry key to raise the threshold to reduce the display of this warning message if users run CPU-intensive add-ins.

  • メモリ使用量: デバイスの利用可能な物理メモリに基づいて動的に決定される、既定のメモリ使用量しきい値。Memory usage - A default memory usage threshold that is dynamically determined based on the available physical memory of the device.

    既定では、ホスト リッチ クライアントが、デバイスの物理メモリの使用率が利用可能なメモリの 80% を超えたことを検知した場合、クライアントはコンテンツ アドインおよびタスク ウィンドウ アドインのドキュメント レベル、および Outlook アドインのメールボックス レベルで、アドインのメモリ使用率の監視を開始します。既定の 5 秒間隔で、ドキュメントまたはメールボックス レベルでアドインのセットの物理メモリの使用率が 50% を超えた場合、クライアントはそのユーザーに警告します。このメモリ使用量の制限では、タブレットなど、限られた RAM が搭載されたデバイスのパフォーマンスを確保するために、仮想メモリよりも物理メモリを使用します。管理者は、グローバル設定として MemoryAlertThreshold Windows レジストリ キーを使用して、この動的設定を明示的な制限で上書きできます。また、グローバル設定として AlertInterval キーを使用して、警告の間隔を調整することもできます。By default, when a host rich client detects that physical memory usage on a device exceeds 80% of the available memory, the client starts monitoring the add-in's memory usage, at a document level for content and task pane add-ins, and at a mailbox level for Outlook add-ins. At a default interval of 5 seconds, the client warns the user if physical memory usage for a set of add-ins at the document or mailbox level exceeds 50%. This memory usage limit uses physical rather than virtual memory to ensure performance on devices with limited RAM, such as tablets. Administrators can override this dynamic setting with an explicit limit by using the MemoryAlertThreshold Windows registry key as a global setting, ir adjust the alert interval by using the AlertInterval key as a global setting.

  • クラッシュ許容度: 既定の制限は、1 つのアドインにつき 4 回。Crash tolerance - A default limit of four crashes for an add-in.

    管理者は、RestartManagerRetryLimit レジストリ キーを使用して、クラッシュのしきい値を調整できます。Administrators can adjust the threshold for crashes by using the RestartManagerRetryLimit registry key.

  • アプリケーションのブロッキング: アドインが応答しないままになる時間のしきい値は 5 秒間。Application blocking - Prolonged unresponsiveness threshold of 5 seconds for an add-in.

    これは、アドインとホスト アプリケーションのユーザー エクスペリエンスに影響します。このような場合、ホスト アプリケーションは、自動的にドキュメントまたはメールボックス (該当する場合) のアクティブなアドインをすべて再起動し、ユーザーに応答しなくなったアドインに関する警告を行います。アドインが時間のかかるタスクを実行していて定期的に処理を発生させないときに、このしきい値に到達する場合があります。ブロッキングが発生しないようにする手法があります。管理者は、このしきい値を上書きすることはできません。This affects the user's experiences of the add-in and the host application. When this occurs, the host application automatically restarts all the active add-ins for a document or mailbox (where applicable), and warns the user as to which add-in became unresponsive. Add-ins can reach this threshold when they do not regularly yield processing while performing long-running tasks. There are techniques to ensure that blocking does not occur. Administrators cannot override this threshold.

Outlook アドインOutlook add-ins

Outlook アドインが前述の CPU コア使用率、メモリ使用量、またはクラッシュ許容度のしきい値を超えると、そのアドインは Outlook で無効化されます。Exchange 管理センターにはそのアプリの無効状態が表示されます。If any Outlook add-in exceeds the preceding thresholds for CPU core or memory usage, or tolerance limit for crashes, Outlook disables the add-in. The Exchange Admin Center displays the disabled status of the app.

注意

Outlook on the web やモバイル端末ではなく、Outlook リッチ クライアントによってのみ、リソース使用量をモニターする場合でも、リッチ クライアントが Outlook アドインを無効化すると、このアドインは Outlook on the web やモバイル端末でも無効化されます。Even though only the Outlook rich clients and not Outlook Web App or OWA for Devices monitor resource usage, if a rich client disables an Outlook add-in, that add-in is also disabled for use in Outlook Web App and OWA for Devices.

CPU コア、メモリ、および信頼性ルールだけでなく、Outlook アドインは次のアクティブ化のルールを監視する必要があります。In addition to the CPU core, memory, and reliability rules, Outlook add-ins should observe the following rules on activation:

  • 正規表現の応答時間: Outlook で Outlook アドインのマニフェスト内のすべての正規表現を評価する時間の既定のしきい値は 1,000 ミリ秒。このしきい値を超えると、Outlook は後で評価を再試行します。Regular expressions response time - A default threshold of 1,000 milliseconds for Outlook to evaluate all regular expressions in the manifest of an Outlook add-in. Exceeding the threshold causes Outlook to retry evaluation at a later time.

    Windows レジストリでグループ ポリシーまたはアプリケーションに固有の設定を使用すると、管理者は OutlookActivationAlertThreshold 設定でこの既定のしきい値の 1,000 ミリ秒を調整することができます。Using a group policy or application-specific setting in the Windows registry, administrators can adjust this default threshold value of 1,000 milliseconds in the OutlookActivationAlertThreshold setting.

  • 正規表現の再評価: Outlook でマニフェスト内の正規表現を再評価する既定の制限は 3 回。適用されるしきい値 (既定の 1,000 ミリ秒、または Windows レジストリに OutlookActivationAlertThreshold 設定が指定されている場合はその値) を 3 回とも超えて評価に失敗すると、その Outlook アドインは Outlook で無効化されます。Exchange 管理センターには無効状態が表示され、そのアドインは Outlook リッチ クライアント、Outlook on the web、およびモバイル端末で使用できなくなります。Regular expressions re-evaluation - A default limit of three times for Outlook to reevaluate all the regular expressions in a manifest. If evaluation fails all three times by exceeding the applicable threshold (which is either the default of 1,000 milliseconds or a value specified by OutlookActivationAlertThreshold, if that setting exists in the Windows registry), Outlook disables the Outlook add-in. The Exchange Admin Center displays the disabled status, and the add-in is disabled for use in the Outlook rich clients, Outlook Web App and OWA for Devices.

    Windows レジストリでグループ ポリシーまたはアプリケーションに固有の設定を使用すると、管理者は OutlookActivationManagerRetryLimit 設定の評価を再試行する時間の数字を調整することができます。Using a group policy or application-specific setting in the Windows registry, administrators can adjust this number of times to retry evaluation in the OutlookActivationManagerRetryLimit setting.

作業ウィンドウ アドインとコンテンツ アドインTask pane and content add-ins

コンテンツ アドインまたは作業ウィンドウ アドインが前述の CPU コア使用率、メモリ使用量、またはクラッシュ許容度のしきい値を超えると、対応するホスト アプリケーションにユーザーへの警告が表示されます。この時点で、ユーザーは次のどちらかの処理を実行できます。If any content or task pane add-in exceeds the preceding thresholds on CPU core or memory usage, or tolerance limit for crashes, the corresponding host application displays a warning for the user. At this point, the user can do one of the following:

  • アドインを再起動します。Restart the add-in.
  • しきい値を超えたというそれ以降の警告をキャンセルします。理想的な対処としては、ユーザーはそのアドインをドキュメントから削除する必要があります。そのアドインの使用を続行すると、さらにパフォーマンスと安定性の問題が発生する可能性があります。Cancel further alerts about exceeding that threshold. Ideally, the user should then delete the add-in from the document; continuing the add-in would risk further performance and stability issues.

テレメトリ ログでリソース使用量の問題を確認するVerifying resource usage issues in the Telemetry Log

Office には、Office アドインでのリソースの使用に関する問題も含めて、ローカル コンピューター上で実行される Office ソリューションの一定のイベント (読み込む、開く、閉じる、およびエラー) の記録を保守するテレメトリ ログが用意されています。テレメトリ ログを設定してある場合は、Excel を使用して、ローカル ドライブ上の次の既定の場所にあるテレメトリ ログを開くことができます。Office provides a Telemetry Log that maintains a record of certain events (loading, opening, closing, and errors) of Office solutions running on the local computer, including resource usage issues in an Office Add-in. If you have the Telemetry Log set up, you can use Excel to open the Telemetry Log in the following default location on your local drive:

%Users%\<Current user>\AppData\Local\Microsoft\Office\15.0\Telemetry

それぞれのアドインについてテレメトリ ログで追跡されるイベントごとに、そのイベントの発生日付/時刻、イベント ID、重大度、および短い説明的なタイトル、そのアドインのフレンドリ名と ID、イベントをログに記録したアプリケーションが記入されています。テレメトリ ログをリフレッシュすれば、現在の追跡済みイベントを確認できます。次の表は、テレメトリ ログで追跡された Outlook アドインの例を示しています。For each event that the Telemetry Log tracks for an add-in, there is a date/time of the occurrence, event ID, severity, and short descriptive title for the event, the friendly name and unique ID of the add-in, and the application that logged the event. You can refresh the Telemetry Log to see the current tracked events. The following table shows examples of Outlook add-ins that were tracked in the Telemetry log.

日付/時刻Date/Time イベント IDEvent ID 重大度Severity タイトルTitle ファイルFile IDID アプリケーションApplication
10/8/2012 5:57:10 PM10/8/2012 5:57:10 PM 77 アドインのマニフェストが正常にダウンロードされましたadd-in manifest downloaded successfully 重要人物Who's Who 69cc567c-6737-4c49-88dd-123334943a2269cc567c-6737-4c49-88dd-123334943a22 OutlookOutlook
10/8/2012 5:57:01 PM10/8/2012 5:57:01 PM 77 アドインのマニフェストが正常にダウンロードされましたadd-in manifest downloaded successfully LinkedInLinkedIn 333bf46d-7dad-4f2b-8cf4-c19ddc78b723333bf46d-7dad-4f2b-8cf4-c19ddc78b723 OutlookOutlook

次の表は、通常、Office アドインについてテレメトリ ログで追跡されるイベントを示しています。The following table lists the events that the Telemetry Log tracks for Office Add-ins in general.

イベント IDEvent ID タイトルTitle 重大度Severity 説明Description
77 アドインのマニフェストが正常にダウンロードされましたAdd-in manifest downloaded successfully Office アドインのマニフェストがホスト アプリケーションによって正常に読み込まれ、読み取られました。The manifest of the Office Add-in was successfully loaded and read by the host application.
88 アドインのマニフェストがダウンロードされませんでしたAdd-in manifest did not download 重大Critical ホスト アプリケーションは Office アドインのマニフェスト ファイルを、SharePoint カタログ、コーポレート カタログ、AppSource のいずれからも読み込めませんでした。The host application was unable to load the manifest file for the Office Add-in from the SharePoint catalog, corporate catalog, or AppSource.
99 アドインのマークアップを解析できませんでしたAdd-in markup could not be parsed 重大Critical ホスト アプリケーションは Office アドインのマニフェストを読み込みましたが、アプリの HTML マークアップを読み取れませんでした。The host application loaded the Office Add-in manifest, but could not read the HTML markup of the app.
10 個10 アドインの CPU 使用率が高すぎますAdd-in used too much CPU 重大Critical Office アドインは、限定された時間内に CPU リソースの 90% 超を使用しました。The Office Add-in used more than 90% of the CPU resources over a finite period of time.
1515 アドインは文字列検索のタイムアウトのため無効になっていますAdd-in disabled due to string search time-out Outlook アドインは電子メールの件名とメッセージを検索して、それらを正規表現で表示するかどうかを決定します。 [File] 列に記された Outlook アドインは、正規表現での一致を試みている最中に繰り返しタイムアウトしたため、Outlook によって無効にされました。Outlook add-ins search the subject line and message of an e-mail to determine whether they should be displayed by using a regular expression. The Outlook add-in listed in the File column was disabled by Outlook because it timed out repeatedly while trying to match a regular expression.
1818 アドインは正常に終了しましたAdd-in closed successfully ホスト アプリケーションによって Office アドインが正常に閉じられました。The host application was able to close the Office Add-in successfully.
1919 アドインで実行時エラーが発生しましたAdd-in encountered runtime error 重大Critical Office アドインに、エラーの原因となる問題がありました。詳細については、エラーが発生したコンピューター上で Windows イベント ビューアーを使用して Microsoft Office Alerts ログを確認してください。The Office Add-in had a problem that caused it to fail. For more details, look at the Microsoft Office Alerts log using the Windows Event Viewer on the computer that encountered the error.
2020 アドインでライセンスを確認できませんでしたAdd-in failed to verify licensing 重大Critical Office アドインのライセンス情報を確認できないか、有効期限が切れている可能性があります。詳細については、エラーが発生したコンピューター上で Windows イベント ビューアーを使用して Microsoft Office Alerts ログを確認してください。The licensing information for the Office Add-in could not be verified and may have expired. For more details, look at the Microsoft Office Alerts log using the Windows Event Viewer on the computer that encountered the error.

詳細については、「テレメトリ ダッシュボードを展開する」および「テレメトリ ログを使用した Office ファイルおよびカスタム ソリューションのトラブルシューティング」を参照してください。For more information, see Deploying Telemetry Dashboard and Troubleshooting Office files and custom solutions with the telemetry log.

設計および実装上のテクニックDesign and implementation techniques

CPU 使用率、メモリ使用量、クラッシュ許容度、UI の応答性に対するリソース制限は、リッチ クライアント上で実行される Office アドインにのみ適用されますが、サポートするすべてのクライアントおよびデバイス上でアドインが十分なパフォーマンスを発揮するためには、これらのリソース使用量およびバッテリーの使用量を最適化することが重要になります。アドインで長時間実行される処理があったり、大規模なデータ セットを処理したりする場合は、最適化が特に重要です。ここでは、CPU 使用率の高い操作やデータを大量に処理する操作を小さなチャンクに分割して、アドインで過度にリソースが消費されることを回避し、ホスト アプリケーションの応答性が保たれるようにするためのテクニックをいくつか紹介します。While the resources limits on CPU and memory usage, crash tolerance, UI responsiveness apply to Office Add-ins running only on the rich clients, optimizing the usage of these resources and battery should be a priority if you want your add-in to perform satisfactorily on all supporting clients and devices. Optimization is particularly important if your add-in carries out long-running operations or handles large data sets. The following list suggests some techniques to break up CPU-intensive or data-intensive operations into smaller chunks so that your add-in can avoid excessive resource consumption and the host application can remain responsive:

  • 制限のないデータセットからの大量のデータをアドインで読み取る必要があるシナリオでは、テーブルからデータを読み取る場合にページ付けを適用したり、またはより小さいサイズの読み取り操作に分割して 1 回の操作で処理するデータ量を小さくし、1 回の操作ですべてのデータを読み取ることがないようにします。In a scenario where your add-in needs to read a large volume of data from an unbounded dataset, you can apply paging when reading the data from a table, or reduce the size of data in each shorter read operation, rather than attempting to complete the read in one single operation.

    For a JavaScript and jQuery code sample that shows breaking up a potentially long-running and CPU-intensive series of inputting and outputting operations on unbounded data, see How can I give control back (briefly) to the browser during intensive JavaScript processing?. This example uses the setTimeout method of the global object to limit the duration of input and output. It also handles the data in defined chunks instead of randomly unbounded data.For a JavaScript and jQuery code sample that shows breaking up a potentially long-running and CPU-intensive series of inputting and outputting operations on unbounded data, see How can I give control back (briefly) to the browser during intensive JavaScript processing?. This example uses the setTimeout method of the global object to limit the duration of input and output. It also handles the data in defined chunks instead of randomly unbounded data.

  • アドインで CPU 使用率の高いアルゴリズムを使用して大量のデータを処理する場合は、Web Workers を使用してバックグラウンドで時間のかかるタスクを実行しつつ、フォアグラウンドで別のスクリプト (ユーザー インターフェイスへの進行状況の表示など) を実行できます。Web Workers は、ユーザー アクティビティをブロックせず、HTML ページの応答性を維持します。Web Workers の例については、「ウェブ ワーカーの基本」を参照してください。Web Workers API の詳細については、「Web Workers」を参照してください。If your add-in uses a CPU-intensive algorithm to process a large volume of data, you can use web workers to perform the long-running task in the background while running a separate script in the foreground, such as displaying progress in the user interface. Web workers do not block user activities and allow the HTML page to remain responsive. For an example of web workers, see The Basics of Web Workers. See Web Workers for more information about the Internet Explorer Web Workers API.

  • アドインで CPU 使用率の高いアルゴリズムを使用しているが、データの入出力を小さなセットに分割できる場合は、Web サービスの作成を検討します。データを Web サービスに渡して CPU の負荷をオフロードし、非同期コールバックを待機します。If your add-in uses a CPU-intensive algorithm but you can divide the data input or output into smaller sets, consider creating a web service, passing the data to the web service to off-load the CPU, and wait for an asynchronous callback.

  • 想定する最大量のデータでアドインをテストして、アドインにおける処理をその最大量までに制限します。Test your add-in against the highest volume of data you expect, and restrict your add-in to process up to that limit.

関連項目See also