この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/app/app-events/

翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930

App Events

ステータス: Development

この文書では、クライアント側アプリケーション(Webアプリやモバイルアプリなど)に関連するイベントを定義します。

Click Events

Event: app.screen.click

Status: Development

イベント名は app.screen.click でなければなりません(MUST)。

このイベントは、アプリケーションの画面上での瞬間的なクリックを表します。

app.screen.click イベントは、ユーザーがアプリケーションの画面領域をクリックまたはタップしたことを示すために使用できます。アプリケーションのアクティブな領域外でのクリックは、このイベントを発生させるべきではありません(SHOULD NOT)。このイベントは、タッチ/マウスのダウンとタッチ/マウスのアップを区別しません。実装は、通常タッチのリリース時またはマウスのアップ時である、クリックが完了した時点でこのイベントを発生させることを優先すべきです(SHOULD)。クリックイベントの位置は、絶対的な画面ピクセルで提供しなければなりません(MUST)。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
app.screen.coordinate.xDevelopmentRequiredint画面座標のx(水平)座標。画面ピクセル単位。0; 131
app.screen.coordinate.yDevelopmentRequiredint画面座標のy(垂直)成分。画面ピクセル単位。12; 99
app.screen.idDevelopmentRecommendedstring同じアプリケーション内の他の画面からこの画面を一意に区別する識別子。[1]f9bc787d-ff05-48ad-90e1-fca1d46130b3; com.example.app.MainActivity; com.example.shop.ProductDetailFragment; MyApp.ProfileView; MyApp.ProfileViewController
app.screen.nameDevelopmentOpt-Instringアプリケーション画面の名前。[2]MainActivity; ProductDetailFragment; ProfileView; ProfileViewController

[1] app.screen.id: 画面は、アプリが描画するデバイスディスプレイの一部分のみを表します。通常、複数のウィジェットやUIコンポーネントを含み、個々のウィジェットよりも大きな範囲を持ちます。同じディスプレイ上に複数の画面が同時に存在できます(例: タブレットの分割ビュー)。

[2] app.screen.name: 画面は、アプリが描画するデバイスディスプレイの一部分のみを表します。通常、複数のウィジェットやUIコンポーネントを含み、個々のウィジェットよりも大きな範囲を持ちます。同じディスプレイ上に複数の画面が同時に存在できます(例: タブレットの分割ビュー)。

Event: app.widget.click

Status: Development

イベント名は app.widget.click でなければなりません(MUST)。

このイベントは、アプリケーションのウィジェットがクリックされたことを示します。

このイベントは、視覚的なアプリケーションコンポーネントがクリックされたこと、通常はユーザーの手動操作によるものを示すために使用します。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
app.widget.idDevelopmentRequiredstring同じアプリケーション内の他のウィジェットからこのウィジェットを一意に区別する識別子。[1]f9bc787d-ff05-48ad-90e1-fca1d46130b3; submit_order_1829
app.screen.idDevelopmentRecommendedstring同じアプリケーション内の他の画面からこの画面を一意に区別する識別子。[2]f9bc787d-ff05-48ad-90e1-fca1d46130b3; com.example.app.MainActivity; com.example.shop.ProductDetailFragment; MyApp.ProfileView; MyApp.ProfileViewController
app.screen.coordinate.xDevelopmentOpt-Inint画面座標のx(水平)座標。画面ピクセル単位。0; 131
app.screen.coordinate.yDevelopmentOpt-Inint画面座標のy(垂直)成分。画面ピクセル単位。12; 99
app.screen.nameDevelopmentOpt-Instringアプリケーション画面の名前。[3]MainActivity; ProductDetailFragment; ProfileView; ProfileViewController
app.widget.nameDevelopmentOpt-Instringアプリケーションウィジェットの名前。[4]submit; attack; Clear Cart

[1] app.widget.id: ウィジェットは、通常画面上に表示される視覚的なGUI要素であるアプリケーションコンポーネントです。

[2] app.screen.id: 画面は、アプリが描画するデバイスディスプレイの一部分のみを表します。通常、複数のウィジェットやUIコンポーネントを含み、個々のウィジェットよりも大きな範囲を持ちます。同じディスプレイ上に複数の画面が同時に存在できます(例: タブレットの分割ビュー)。

[3] app.screen.name: 画面は、アプリが描画するデバイスディスプレイの一部分のみを表します。通常、複数のウィジェットやUIコンポーネントを含み、個々のウィジェットよりも大きな範囲を持ちます。同じディスプレイ上に複数の画面が同時に存在できます(例: タブレットの分割ビュー)。

[4] app.widget.name: ウィジェットは、通常画面上に表示される視覚的なGUI要素であるアプリケーションコンポーネントです。

Crash Event

Event: app.crash

Status: Development

イベント名は app.crash でなければなりません(MUST)。

このイベントは、例外や、より低いレベルでエラーが発生したことを示す信号など、回復不能なプログラミングエラーによってユーザー向けアプリケーションが終了したことを表します。

クラッシュイベントは、クラッシュが発生したアプリケーションインスタンス内で実行されていないOTel SDKインスタンスによって、非同期に生成されることがあります。例えば、計装は、ディスク上のtombstoneに記録された情報に基づいて、以前のアプリインスタンスのクラッシュを報告する場合があります。クラッシュの報告者がクラッシュしたアプリケーションインスタンス自身でない場合、報告者のリソースの属性が代わりに使われないようにするため、クラッシュしたアプリケーションインスタンスを識別する関連するリソース属性をイベント属性として提供しなければなりません(MUST)。計装がクラッシュのインスタンスがすでに報告済みかどうかをどのように判定し、必要なデータをどのように取得するかは、計装に委ねられています。重複排除に十分なデータを提供することは必須ではありません(NOT REQUIRED)。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
app.build_idDevelopmentConditionally Required [1]string特定のアプリケーションのビルドまたはコンパイルを識別する一意の識別子。6cff0a7e-cefc-4668-96f5-1273d8b334d0; 9f2b833506aa6973a92fde9733e6271f; my-app-1.0.0-code-123
os.nameDevelopmentConditionally Required [2]string人間が読めるオペレーティングシステム名。iOS; Android; Ubuntu
os.versionDevelopmentConditionally Required [3]stringバージョン属性で定義されている、オペレーティングシステムのバージョン文字列。14.2.1; 18.04.1
service.versionStableConditionally Required [4]stringサービスコンポーネントのバージョン文字列。フォーマットはこれらの規約では定義されません。2.0.0; a01dbef8a
app.crash.idDevelopmentRecommendedstringエンドユーザー向けアプリのクラッシュの1つのインスタンスを表す一意の識別子。[5]083d3d2d-9a0e-47f8-be3d-bc3c5538ba38
exception.messageStableRecommendedstring例外メッセージ。[6]Division by zero; Can't convert 'int' object to str implicitly
exception.stacktraceStableRecommendedstring言語ランタイムにおける自然な表現形式での文字列としてのスタックトレース。表現形式は各言語のSIGが決定し、文書化するものとします。[7]Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)
exception.typeStableRecommendedstring例外の型(該当する場合は完全修飾クラス名)。この型をサポートする言語では、静的な型よりも例外の動的な型を優先すべきです。[8]java.net.ConnectException; OSError
session.idDevelopmentRecommendedstringセッションを識別する一意のID。00112233-4455-6677-8899-aabbccddeeff

[1] app.build_id: 報告者がクラッシュしたアプリケーションインスタンス自身ではなく、かつ利用可能な場合。

[2] os.name: 報告者がクラッシュしたアプリケーションインスタンス自身ではなく、かつOS名が利用可能な場合。

[3] os.version: 報告者がクラッシュしたアプリケーションインスタンス自身ではない場合。

[4] service.version: 報告者がクラッシュしたアプリケーションインスタンス自身ではない場合。

[5] app.crash.id: その値は意味を持つことがあり(MAY)、同じ計装によって記録されたテレメトリーとメタデータの参照として使用されることがあります(例えば、クラッシュを捕捉した外部ソースが生成したIDである場合)。計装以外の外部ソースから来ることがあり(MAY)、それによって他のソースから追加データを検索したり、重複排除を容易にしたりできます。

[6] exception.message: これに難読化されたシンボルが含まれる場合、それらの復号ができるように app.build_id を提供すべきです(SHOULD)。

[7] exception.stacktrace: これに難読化されたシンボルが含まれる場合、それらの復号ができるように app.build_id を提供すべきです(SHOULD)。

[8] exception.type: これに難読化されたシンボルが含まれる場合、それらの復号ができるように app.build_id を提供すべきです(SHOULD)。

Jank Event

Event: app.jank

Jank(ジャンク)とは、UIレンダリングの乱れであり、表示がぎこちなく感じられたり、応答不能・フリーズしたように感じられたりする現象です。ジャンクを検知できるアプリケーションは、次のイベントで報告できます。

Status: Development

イベント名は app.jank でなければなりません(MUST)。

このイベントは、アプリケーションが標準以下のUIレンダリング性能を検知したことを示します。

ジャンクは、UIのレンダリングが遅く、ユーザーが何らかの乱れやぎこちなさを感じるほどになったときに発生します。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
app.jank.frame_countDevelopmentRecommendedintジャンクが発生したフレームレンダリングの回数。[1]9; 42
app.jank.periodDevelopmentRecommendeddoubleこのジャンクが報告される対象の時間帯(秒単位)。1.0; 5.0; 10.24
app.jank.thresholdDevelopmentRecommendeddoubleこのジャンクの最小レンダリング閾値(秒単位)。0.016; 0.7; 1.024

[1] app.jank.frame_count: プラットフォームの制約によっては、提供される値が近似値であることがあります(MAY)。

Attributes

テレメトリー項目に現れる可能性のあるアプリケーション関連の属性については、appの属性レジストリを参照してください。