AWS のワークショップをしていると、「インストルメント」というよく分からない用語が出てきました。

今までもインストルメンテーション、インストルメントといった用語を見た記録はありますが、文脈上でなんとなくこういう意味かな?という理解でいたので、これを機に調べてみました。
結論から言うと、アプリケーションのパフォーマンス測定やデータ収集のためのコンポーネントを配置して測定ことを指すようです。
英語の翻訳
instrumentは、「器具」「道具」「計器」など。
instrumentationは、「器具使用」「器具類」「計装」など。
ネットの情報
コンピュータプログラミングのコンテキストでは、インストルメンテーションとは、製品のパフォーマンスの測定、エラーの診断、およびトレース情報の書き込みを指します。
https://en.wikipedia.org/wiki/Instrumentation_(computer_programming)
プログラミングでは、インストルメンテーションとは次のことを意味します。
・プロファイリング:代表的な入力を使用して、トレーニング実行中の動的プログラムの動作を測定します。これは、エイリアス解析など、十分な精度で静的に解析できないプログラムのプロパティに役立ちます。
・関数にタイマーを挿入します。
・クラッシュなどの主要なイベントをログに記録します。
(機械翻訳済み)
インストルメンテーションとは、ツールで使用されるデータを収集する目的で、メソッドにバイトコードを追加することです。変更は純粋に追加的なものであるため、これらのツールはアプリケーションの状態や動作を変更しません。このような無害なツールの例には、監視エージェント、プロファイラー、カバレッジアナライザー、イベントロガーが含まれます。(機械翻訳済み)
https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html
システム ハードウェアおよびシステム ソフトウェアの状態に関するデータを報告するために使用される機構。
https://www.weblio.jp/content/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AB%E3%83%A1%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3
Visual Studio プロファイリング ツールのインストルメンテーション メソッド (方式) では、モジュールのコピーにプロファイリング コードが挿入されます。 このコードでは、プロファイリングの実行中に、モジュール内の各関数の開始、終了、および関数の呼び出しをそれぞれ記録します。 このインストルメンテーション メソッドは、コード セクションに関する詳細なタイミング情報を収集し、アプリケーションのパフォーマンスに対する入出力操作の影響を理解するために役立ちます。
https://docs.microsoft.com/ja-jp/visualstudio/profiling/collecting-detailed-timing-data-by-using-instrumentation?view=vs-2017
Dotfuscator のインストルメンテーション機能は、コードを追加することなく、事前に作成されたアプリケーション利用状況、機能の利用状況、例外の追跡、およびシステム メトリックをアプリケーションに追加します。 この処理はコードの差し込みと呼ばれています。 この処理が行われたアプリケーションは、コードが差し込まれたアプリケーションと呼ばれます。 実行時に、アプリケーションに差し込まれたコードが、PreEmptive Analytics エンドポイントに遠隔測定を送信します。
https://www.preemptive.com/dotfuscator/pro/4.41/userguide/ja/instrumentation_overview.html
Prometheusの恩恵をもっとも受けられるのは、ダイレクトインストルメンテーション(direct instrumentation)とクライアントライブラリ(client library)を使って自分自身のアプリケーションをインストルメントする(測定装置を装備する、計装する)ときである。
https://www.oreilly.com/library/view/prometheus/9784873118772/ch03.xhtml
まとめ
インストルメンテーションやインストルメントは、例えば以下を測定・送信するためにアプリケーションに何かしらの実装をすることや、実装したもの自体を意味すると理解しておけばよさそうです。
- パフォーマンス
- エラー診断
- トレース情報
- 利用状況のデータ etc