観測記録

浅海 智晴 Created: 2025-09-22

アプリケーションの実行時に発生するあらゆる現象 (phenomenon, フェノメノン)を意味的に分類し、原因、深刻度、対応方針、関係者、技術的な文脈(トレース情報や実行環境)などとともに記録することで、ログ、監視、分析、監査、トラブル対応、アラート通知、エラー通知などに一貫して活用することができます。

SimpleModelingでは、このような「あらゆる現象」の中で記録対象となるものを観測記録 (observation, オブザベーション)と呼びます。

SimpleModelingリファレンス・プロファイル (SMRP, SimpleModeling Reference Profile)では観測記録を記述するためのオブジェクトとしてorg.simplemodeling.observation.Observationを用意しています。

目的

観測記録は医療分野では中心的なモデル要素の一つですが、モデリング一般としては汎用の共通モデルという位置付けではなかったと思います。

しかし、クラウド・アプリケーションではオブサーバビリティ機能が重要な基盤となりつつあります。また、実装技術としてログ・トレース・通知・アラート・エラーの一元的構造化を図ることのメリットは非常に大きいものがあります。

このためSimpleModelingでは、観測記録を汎用の共通モデル要素とした上で、プログラミングで用いるオブジェクトとしても実体化しました。

現象-観測記録-ドメイン・イベント

システム動作やドメインの振る舞いの中で発生する様々なコトを「現象」と呼びます。

その中で記録に値するものが観測記録です。

さらに観測記録のうちシステムやドメインの鍵となるものをイベントとしてモデル化し、ドメイン・モデルで扱うものをドメイン・イベント (Domain Event, ドメインイベント)と呼びます。

SimpleModelingでは「現象観測記録ドメイン・イベント」の階層を明確に区別します。

構成要素

SMRPで導入されるorg.simplemodeling.observation.Observationオブジェクトの構成を説明します。

Observationオブジェクトは次の属性群で定義されます。

  • 意味的情報

  • 関係対象

  • トレース情報

  • 付加情報

意味的情報

意味的情報は、観測した現象を記述する属性群で定義されます。

phenomenon

Observed event or phenomenon観測された出来事や現象(例:Timeout, Failure)

cause

原因(例:ValidationError, NullPointer)

  • 深刻度(例:INFO, WARN, ERROR, FATAL)

strategy

対応方針(例:Recoverable, Retriable, Escalatable)

handler

対応すべき責任主体(例:EndUser, Developer)

Phenomenon

Phenomenonはシステムやドメインで観測される現象の種類です。エラーや不具合の兆候を表します。

Name 説明

Failure

機能が期待通りに動作しない現象

Rejection

入力や要求が受理されない現象

Incident

運用中に発生した予期しない事象

Deviation

基準値や仕様から外れる逸脱

Cause

CauseKindは現象の原因の種類を表します。

Name 説明

Defect

設計や実装の不備

Fault

システム内部に潜在する欠陥

Anomaly

通常と異なる振る舞いや挙動

Root Cause

根本的な原因

Severity

Severityは現象の重大度や影響範囲を示します。

Name 説明

Fatal

システム全体を停止させる致命的な障害

Error

機能の一部が利用できなくなる障害

Warn

異常の兆候があるが継続可能

Info

参考情報や軽微な事象

Debug

開発・調査のための詳細情報

Trace

システム動作を逐次記録した低レベル情報

Strategy

Strategyは現象が発生した際の対応方針を示します。

Name 説明

Manual

人手による介入が必要

Recoverable

自動回復が可能

Retriable

再試行により回復が期待できる

Escalatable

上位レベルの担当者やシステムに引き継ぐ

Alert

監視や通知を発する

Ignored

無視しても支障がない

Handler

Handlerは現象の対応を担う主体の分類です。

Name 説明

EndUser

利用者自身が対処する事象

ApplicationAdmin

アプリケーションの管理者が対処する事象

SystemAdmin

システム基盤の管理者が対処する事象

Developer

開発者による修正が必要な事象

関係対象

関係対象は、現象に関連する主体やリソースを示す属性群で定義されます。

項目 説明

subject

実行者(例:ユーザー、APIクライアント)

object

対象となったリソース(例:注文データ、ファイル)

component

処理を実行したコンポーネント(例:OrderService)

location

実行場所や環境(例:k8sノード、リージョンなど)

トレース情報

トレース情報は、分散トレーシングなどの外部オブザーバビリティ機能と連携する属性群で定義されます。

項目 説明

traceId

リクエスト全体のトレースID(分散トレーシング対応)

spanId

個々の処理単位を表すスパンID

付加情報

付加情報は、観測記録に補足的な内容を与える属性群で定義されます。

項目 説明

timestamp

観測された時刻

message

人間に読ませるエラーメッセージ(国際化対応)

exception

実際に発生した例外(可能なら)

properties

任意の補足情報(キー/値形式)

関連技術

観測記録は医療分野などの応用で分析パターンとして取り上げられてきましたが、観測記録ドメイン・イベントといった概念が広く注目されるようになったのは2010年代中盤以降と考えられます。背景にはクラウド・アプリケーションの要請が大きく影響しています。

SimpleModelingでは、現象観測記録ドメイン・イベントのモデリング技術とオブザーバビリティを統合するアプローチを採用していますが、現時点では独自の取り組みといえるかもしれません。

UML

UMLでは現象観測記録の概念は定義されていません。イベントは動的モデルの動作メカニズムを構成する部品として定義されています。

分析パターン

  • Analysis Patterns : Elements of Reusable Object-Oriented Software (1997)

分析パターンでは、分析モデルにおけるパターンの一つとして現象観測記録が詳しく記述されています。イベントについては顕著な定義は見られません。

ドメイン駆動設計

  • Domain-Driven Design : Tackling Complexity in the Heart of Software (2004)

  • Implementing Domain-Driven Design (2013)

DDDは静的モデルを中心としており、観測記録に関する言及はありません。また、初期のDDDではドメイン・イベントの概念も導入されていません。

IDDDでは観測記録への言及はないものの、ドメイン・イベントが主要な構成要素として導入されています。

ソフトウェア・アーキテクチャ

  • Patterns of Enterprise Application Architecture (2003)

  • Enterprise Integration Patterns (2004)

  • Clean Architecture (2017)

これらのソフトウェア・アーキテクチャ関連の文献では、現象・観測記録・ドメイン・イベントといった概念は登場しません。

オブザーバビリティ

  • Observability Engineering: Achieving Production Excellence (2022)

オブザーバビリティに関する代表的な文献の一つです。分散アプリケーションにおけるログ・トレース・メトリクスの統合が中心テーマですが、観測記録のモデリングやドメイン・イベントとの連続性はスコープ外となっています。

参照

用語集

現象 (phenomenon, フェノメノン)

「現象」はドメイン内で発生する様々な事象を表します。 その中で記録に値するものは観測記録として保存されます。 さらに観測記録の中で、ドメインにおいて意味を持ち対応する振る舞いを引き起こすものをドメイン・イベントとしてモデル化します。

エラー (error)

汎用的な表現として用いられる用語。ソフトウェア工学では多義的に使われ、バグや障害全般を指す。SimpleModeling では広義のラベルとして使用し、個別には Mistake・Defect・Fault・Failure・Deviation に整理する。

観測記録 (observation, オブザベーション)

Observationは、Phenomenon(現象)の中から記録に値すると判断されたものを保存した記録です。 観測記録はログ、モニタリング、監査、トラブルシューティングの基盤となります。

SimpleModelingリファレンス・プロファイル (SMRP, SimpleModeling Reference Profile)

SimpleModelingのリファレンス・プロファイルです。 SimpleModelingによる文芸モデル駆動開発の説明を具体的にするために、リファレンス・プロファイルを定義しています。

オブザーバビリティ (observability, 可観測性)

Observabilityは、システムやドメインの内部状態を外部からの観測を通じて推論・理解できる性質を表します。 単なるモニタリング可能性を超え、現象(Phenomenon)や観測記録(Observation)を一貫して収集・関連付け、ドメイン・イベント(Domain Event)として意味づけられることで、システムの挙動を総合的に把握できる状態を指します。

ドメイン・イベント (Domain Event, ドメインイベント)

Domain Eventは、Observation(観測記録)の中でドメインに意味を持ち、対応する振る舞いや処理を引き起こすものを表します。 ドメイン・イベントはシステムや業務上の状態変化を明確にモデル化し、アプリケーション層や他システムとの連携を駆動します。

逸脱 (deviation)

計算値や観測値が、基準値や真値から外れている状態。観測可能な量的ずれを表す。

障害要因 (fault, フォルト)

システム内部に存在する技術的な欠陥。Defect が具現化したもので、実行時に Failure を引き起こす可能性がある。IEEE 610.12 に基づく。

障害 (defect)

成果物(設計書、仕様書、コードなど)に存在する不完全さや不足。要求や仕様を満たさず、修正や置換が必要となる状態。ISO/IEC 24765 に基づく。

コンポーネント (Component)

責務・契約・依存関係を明示的に定義し、再利用可能で交換可能な単位としてカプセル化されたソフトウェア構成要素。論理モデルでは抽象構造単位として、物理モデルでは実装・デプロイメント単位として扱われる。

UML (Unified Modeling Language)

オブジェクト指向分析・設計のための統一モデリング言語。クラス図、シーケンス図、ユースケース図などを通じてシステム構造と動作を表現する。UPおよびCBDの基盤言語。