見出し画像

7. 現実世界のダイナミクスと概念振舞モデルに関する考察

はじめに

5. 概念モデリングに関する圏論的考察 ‐ 議論のとっかかりとして” では、数学の圏論の観点から、概念モデルについて考察してみました。読み返すと、概念情報モデルについては、まぁ十分と言える考察になっているかなと自画自賛ですが、振舞のモデルについてはかなり曖昧なままに思えます。
どこが曖昧かというと、現実世界のダイナミクスを、”概念クラス”に紐づいた”状態モデル”と”状態モデル”の”状態”に紐づいた”アクション”で記述する事の妥当性が語られていないという点です。暴露すると、前出の記事を書いた時点では、私自身まだ良く判っていなかっただけなので、記事で言及していなかった、ただそれだけなのですが。
その後、更に考察を深めて、ようやく、自分が納得できるレベルの説明ができるようになったので、今回は、この点について解説していく事にします。

状態モデルの妥当性

5. 概念モデリングに関する圏論的考察 ‐ 議論のとっかかりとして”では、

  • モデル化対象の現実世界 → 圏W

  • 概念モデル → 圏C

  • 概念インスタンス群とリンク群 → 圏I

としていました。更に、圏W と圏I は自然同値で、圏C は圏I のスキーマ圏であるとしました。

W、圏I、圏C

この定義を元に考察を進めていく事にします。
現実世界(圏)に存在する何かがある場合、必ず、それに1対1で対応する何かが圏I が存在し、その何かの雛形(分類)となる何かが圏C に存在するという事を忘れずに読み進めてくださいね。

事象(Event)

現実世界では、様々な時点で”出来事”が発生します。何らかの”きっかけ”で、”出来事”が発生することにより”物事が進行していく”と考えるのは自然でしょう。
物事が進行していく”という事は、現実世界に存在する”何か”が変化するという事を意味します。これを自然同値の圏I側に写すと、概念インスタンスが新たに生じたり消えたり、特徴値の値が変わったり、リンクが生じたり消えたりする事に対応します。
W と圏I は自然同値なので、この”きっかけ”の事を、概念モデリングでは、”事象(Event)”と呼んでおり、圏W に存在するそれぞれの”きっかけ”に対応するものが、圏I 上にそれぞれの”事象”として存在することになります。更に、圏C は圏I のスキーマ圏なので、概念インスタンスが雛形とする概念インスタンスが必ず1つ存在するのと同様、圏I 上のそれぞれの”事象”の雛形となる”事象”が必ず一つあるという事になります。どちらも同じ”事象”という言葉を使うと紛らわしいですね。大抵の場合、それを用いている文脈で自然に区別が出来るので、あまり問題はないのですが、敢えて区別する際には、前者を”事象インスタンス”、後者を”事象”と呼ぶことにします。

状態(State)、遷移(Transition)、そして、アクション(Action)

繰り返しになりますが、圏I は、モデル化対象の現実世界に存在する何かに1対1で対応する、”概念インスタンス”、概念インスタンスの値が確定した”特徴値”、二つの概念インスタンスを両端に持つ”リンク”が要素になっている圏であり、現実世界のその時点での”状態”を記述します。
つまりは、現実世界で何らかの”きっかけ”が発生した時点の状態は、圏I のそれらで記述されるという事ですね。現実世界圏Wにおける”きっかけ”によって引き起こされた変化は、圏I でもその変化に対応した状態の変化が生じることになります。
この変化は連続しているはずですが、その状態変化を人間が認識する場合には、各時点でのスナップショット、つまり、複数の連続する時点事で、確定した状態を想定して認識していると考えます。そもそも、”きっかけ”が起きた時点の”状態”も、また、ある時点でのスナップショットとしての認識なので、こう考えるのは妥当でしょう。
このように考えれば、現実世界(圏)の、ある”きっかけ”を元にした一連の”物事の進行”は、圏I においては、”事象”発生をトリガーに、ある”状態”から別の”状態”への”遷移”の発生として記述できることになります。
更に、圏 における”物事の進行”は何らかの作用が働いていて変化を起こしているので、それに相当するものが圏I にも1対1で存在することになり、それは、概念モデリングの”状態”に紐づいた”アクション(の実行、もしくは、のインスタンス)”であると考えて良いでしょう。
ここまでの考察から、現実世界のダイナミクスを構成する、圏W の要素を

  • 事象インスタンス

  • 状態

  • 遷移

  • アクションの実行

の4種類の要素で圏I 側でモデル化する事は妥当であると考えられます。
論理的には、この4種類の全ての要素を集めると、現実世界を対象にした、ただ一つの状態遷移図を、圏I において記述することができるはずです。

概念インスタンスを元にしたダイナミクスの分割

I のモデルは、圏W 側の要素がちょっとでも変われば、それに伴って変わってしまいます。現実世界のものの構成が変わったり、複数の”事象インスタンス”に対応する”きっかけ”が起こる順番がちょっとだけ入れ替わっても、現実の世界を対象にした、圏I のモデルである、ただ一つの状態遷移図は書き換えなければならなくなります。
概念モデリングにおいては、圏I のスキーマ圏である圏C のモデルとして、この”ただ一つの状態遷移図”を、どのように記述するかが問題になります。

改めて、”事象”について考えてみます。圏I 側の”事象”に対応する、圏W 側の”きっかけ”は、それをトリガーとして何かが始まったり、既に始まっている何かの変化を生みます。これを圏論的に眺めれば、それぞれの”きっかけ”が、圏W の何か一つへの、ただ一つの射を持っている事になります。そうすると、圏I側のその”きっかけ”に対応する”事象”も、それに紐づく”何か”が一つだけある事になります。この”何か”は、それぞれを区別できて、それそのものがアイデンティティを持っていなければならないので、それに対応するのは、”概念インスタンス”か”リンク”のはずです。”リンク”の場合、その”リンク”の雛形である圏C の関係(Relationship)に対して”関係クラス”が定義されていれば(う~む…リンクが振舞を持つ場合は、関係クラスを定義しなければならないという定義にした方が自然か?)、その”リンク”に紐づいた”概念インスタンス”が必ず一つ存在することになるので、それぞれの”事象”に紐づくのは、圏I においては、唯一つの”概念インスタンス”であるといって差し支えないでしょう。つまりは、圏I において、

  • ひとつの”事象”は唯一つの”概念インスタンス”が受信する

という定義は自然であり、圏I の圏C においては、その”概念インスタンス”の雛形の”概念クラス”に対して、”事象インスタンス”の分類(ドメインにおいて同じ意味を持ち、かつ、同じ引数の組を持つ)である”事象”が定義されることになります。ついでに言っておくと、発生した”きっかけ”による物事の進行は、

  • 既に存在する何かが進行する → 概念インスタンスが事象インスタンスを受信する

  • 何かが新しく生まれる → 概念インスタンスが新しく一つ生成される

という対応があるといえるでしょう。後者の場合、概念振舞モデルでは、そのような事象のことを、”生成事象(Event)”と呼んでいます。

圏W 側に戻って、更に”きっかけ”について考察を進めます。
現実世界の”きっかけ”は、ある時点で局所的に発生します。前述の議論から、”きっかけ”は、圏I の”概念インスタンス”に対応付けられる”何か”が反応することになります。そして、その”何か”もまた、局所的な存在です。その結果として、”物事が進行していく”様子を、その局所的な存在に紐づけることは自然であると考えられます。これは、人が世界のダイナミクスを観察する場合、現実世界全体を把握することは現実的には不可能なので、結果的に、局所的な部分を切り出して認識を行っているに過ぎないという事実にも合致しているように思えます。

観察対象の切り出し

前の方で説明した考察に従えば、局所的に切り出した部分の時間経過を、それぞれの時点の様を認識して理解し、記述する場合、各時点におけるスナップショットは、状態が確定したものとして扱われることになります。結果として、前のスナップショットと次のスナップショットの間で状態変化(概念インスタンス、特徴値の値、リンクの変化)があれば、その状態変化を引き起こした”事象”による局所的な状態遷移が発生したと考えて良いでしょう。加えて、状態を変えるアクション実行が発生しているのは間違いなく、そのアクション実行を、遷移先の状態に紐づいたものであると考えるのも問題ないでしょう。
一点だけ注意深く言及しておきますが、このアクション実行によって変化する状態は、観察するために切り出した局所的な部分だけにはとどまらず、新たな”事象”を発生させたり、切り出している部分の外側の概念インスタンスの生成削除、特徴値の更新、リンクの生成削除を行っても、今の議論には影響しません。圏W の写しである圏I は、圏C によってその存在要素を規定されているので、その規定を破らなければ、圏W と圏I の整合性を破壊することは無いからです。

ここで、一旦立ち止まって、各時点における圏I 全体のスナップショットについて考えてみます。それぞれのスナップショットは、単なる圏I の記述にすぎません。前のスナップショットを S1、次のスナップショットを S2 と呼ぶことにすると、S1、S2 は、単なる圏C をスキーマ圏とする、独立した圏I のモデル記述にすぎません。S2 が S1 の時間経過(状態変化)の結果であるというためには、S2 に存在する全ての概念インスタンス群とリンク群が、S1 に存在する全ての概念インスタンス群とリンク群が1対1対応する射をただ一つだけ持って(状態遷移の過程で削除されたり生成されたものは除く)いなければなりません。これを保証するのが、概念モデリングにおいては、概念インスタンスを識別可能にする、識別用特性値です。
要するに、時間経過における、ものごとの同一性を保証しているのは、概念インスタンスが識別可能であること、という事ですね。

以上の考察を踏まえると、局所的に切り出した(そもそも、その切出しも観察者の恣意的な活動なのですが)、確定した状態としてのスナップショットは、概念インスタンスに紐づいた状態として考えて良いだろうと、いうのが結論です。

これで漸く材料が揃いました。圏W のダイナミクスを描写した圏I の状態遷移図は、概念インスタンスに紐づく

  • 事象

  • 状態

  • 遷移

  • アクション実行

で記述された”状態機械”の集まりに分割して記述できる、という事です。
更に、圏I を規定する圏C においては、そもそもが同じ”概念クラス”を雛形とする全ての”概念インスタンス”は意味的に同じ分類なので、当然、ダイナミクスやライフサイクルといったダイナミクスも同じでなければなりません。結果として、”概念インスタンス”群の”事象(インスタンス)”、”(その時々の)状態”、”(その時々の)遷移”、”(その時々の)アクション(の実際の)実行”を分類整理して、

  • 事象(イベント)

  • 状態

  • 遷移

  • アクション

を定義し、”概念クラス”の”状態モデル”を記述し、それぞれの”概念インスタンス”が、”状態モデル”を雛形にした”状態機械”を一つだけ伴って状態変化を記述していくというモデリング体系は、圏W の在り様を規定するモデルとして妥当であろうと判断してよかろうでしょう。

オブジェクト指向プログラミングの”隠蔽”に毒された技術屋さん向けに、老婆心ながら書いておきますね。前述の通り、概念インスタンスに紐づいた状態機械の、状態遷移の過程で発生するアクション実行は、その概念インスタンスの特徴値の値更新にとどまらず、モデル全体の状態更新を行います。
これ、私も Shlaer-Mellor 法を理解し始めていく過程で、凄く気持ち悪かった感覚を覚えています。「え?カプセル化とか気にしないの?」ってやつです。オブジェクト指向プログラミングに慣れていると、直ぐこういう感覚を持ってしまうんですね。しかし、概念モデリングはプログラミングではないんですね。あくまでも対象世界を理解する為の道具なんです。自分が仕事をするときのことを考えてみてください。各自の肉体の内部に閉じた状態変化では、仕事が全く進まないという事は、直ぐに分かると思います。パソコンにデータを入力したり、メールを書いたり、同僚達とディスカッションしたりと…つまりはそういう事です。概念モデリングを行う時は、プログラミングの一切を忘れて、現実世界をありのままに観察する事、それが概念モデリングを実践する時の要諦です。

アクション影響範囲に関する老婆心

アクション記述の妥当性

次は、事象をきっかけにした状態遷移発生時の、状態確定前のアクション実行について考察します。
何度も書いてきた通り、圏I における状態とは、

  • 概念インスタンス群

  • 確定した特徴値の値

  • リンク群

の集合で記述されます。これは、遷移前、遷移後どちらの状態も同じです。圏I と圏W は自然同値なので、対応する遷移前の状態と遷移後の状態が圏W にも存在し、それぞれの状態毎に概念インスタンスやリンク群に対応する何かが存在することになります。

データフローモデル

この状態と状態をつなぐのは、事象に伴うデータ群と、状態を構成する概念インスタンス群、特徴値の値、リンクの参照と、それらに対する局所的なデータ変換の連なりです。データ変換には、四則演算、論理演算、ドメインの文脈に起因するデータ変換(演算)、等が相当します。これらのデータ変換群は、前節の状態でも述べた通り、概念インスタンスに紐づいた状態機械の遷移先の状態に紐づけてはいますが、圏W においては、複数の地点に散らばっていて、変換の元となるデータが出現した時に同時並行的なデータ変換が実行されます。この様な実行形態が実際に発生しているので、それに対応する圏I のモデルは、データの流れとデータ変換を描写するデータモデルでの記述が自然であるといえるでしょう。

データフローモデルによるアクション実行の記述

一応念のために上図の圏I のデータフローについて注意を述べておきます。”←実行中のプロセス群→”と指示されているデータフローは、圏W のスナップショットの間をつなぐ実行中のデータフローをモデル化している事にご注意ください。
圏I の状態機械は圏C の状態モデルを雛形にしているので、圏I のデータフローも、圏C の状態モデルの各状態に紐づいたアクションとしてのデータフローモデルが定義されることになります。

状態モデルのデータフローモデルによるアクションの記述

個々のデータ変換のことを”プロセス”と呼ぶことにします。
C のデータフローによるアクション定義は、状態遷移の間で生じるデータの流れと、プロセスの入出力関係のみを記述するものです。これは、圏W における実際のデータ変換の積み重ねが実行されるときのプロセスの実行順序までは規定していないということを意味しています。現実の世界では、物理的・論理的な制約により、プロセス実行になんらかの時間がかかるものです。圏WI における実際のプロセスの実行順序は、都度都度変わる場合があります。そういう意味では、圏I のアクションの実行状況の記述には、データフロー図よりも、実行の順序の流れを明確に記述できる”シーケンス図”が適しているのかもしれません。概念モデリングでは、圏C に重きをおくので、圏I のモデルを記述する際、”シーケンス図”を含む、判りやすい別の種類の図を使う事を否定するものではありません。

アクションを状態のエントリに紐づける

概念モデリングでは、状態遷移で生じるアクションを状態のエントリに紐づけます。UML では許されている、遷移中のアクション、状態のエグジットのアクションは使用しません。
これまでの考察には、アクションが状態のエントリに紐づいていなければならない必然性は含まれていないように思えるので、ここでさらなる考察を加えることにします。

先ず、状態のエグジットにアクションを紐づける場合を考えてみます。この場合、状態を出る時にアクションが実行されるという定義上、その概念インスタンスは、未だ遷移前の状態にあるにも拘らず、概念インスタンスや特徴値、リンクの更新、つまり世界の状態の変化が始まってしまっていて、状態が確定しているという仮定に反するので、現実世界の自然な記述であるとは言い難いと考えられます。なんとなく屁理屈な感じもしますが、そういうことで、この段階では、状態のエグジットにアクションを紐づけるのは悪手だと結論付けておきます。

次にアクションを遷移に紐づける場合を考えてみます。この場合、アクションが実行されるのは、状態遷移中という事になるので、特に論理的な問題は生じないように思えます。
しかし、現実世界のダイナミクスをどのよう認識していたか、そこに立ち返ってみると、ある時点で発生したきっかけによって引き起こされた状態変化を、ものの識別可能性による時系列的な同一性をベースに、状態が確定したスナップショットとして認識するという方法が、そもそもの出発点でした。ということは、ダイナミクスの観察においては、確定した状態が主役であって、状態から状態への遷移は従であるということになります。加えて、変化を観察するという観点からは、主な興味の対象は、遷移前のスナップショットよりも、遷移後の状態でどう変化したか方に、より重点が置かれると考えることは妥当でしょう。この二つを合わせると、現実世界の圏W の状態変化の過程で発生するアクション実行を、圏I のモデルである状態機械を構成する状態のエントリアクションとして対応付けるのは、自然であるように思えます。
以上の考察を元に、圏I の状態機械において、遷移前の状態から遷移後の状態への変化を起こすアクション実行は、遷移後の状態のエントリアクションに紐づけることは妥当だと判断することにして、更に考察を進めることにします。
繰り返しになりますが、概念モデリングの目的は、圏I の状態機械の雛形となる圏C の状態モデルを記述する事でした。同様な考察から、状態モデルにおいても、遷移に伴うアクションを状態のエントリアクションとして紐づけることは妥当だと考えれるでしょう。
複数の状態から一つの状態への遷移(それぞれ異なる事象が遷移を引き起こす)が記述されているような状態モデルの場合は、どの遷移によっても、その遷移先の状態に紐づけられた、同じエントリアクションが実行されることになります。
前述の考察では、状態機械からの状態モデルの導出については

…結果として、”概念インスタンス”群の”事象(インスタンス)”、”(その時々の)状態”、”(その時々の)遷移”、”(その時々の)アクション(の実際の)実行”を分類整理して、
・ 事象(イベント)
・ 状態
・ 遷移
・ アクション
を定義し、”概念クラス”の”状態モデル”を記述し…

前述の、状態機械を基にした状態モデルの作成に関する説明

と、シンプルに”分類整理して”で済ませ、どの様な観点で分類するかについては全く触れてはいませんでした。勘の良い読者の中には、「そこ、スルーかよ」と思った方がいるかもしれませんね。
どの遷移によっても同じエントリアクションが実行されるという特徴は、圏I の状態機械の状態の”分類整理”の際、実行されるアクションの同一性を、圏C の状態モデルの状態を分類する基準として使えるということを意味します。より具体的に言い換えると、アクション実行の内容が同一の圏I の状態群を、圏C の一つの状態として分類し定義すればよい、ということです。
アクション実行の同一性も基準の一つとして加味しながら、状態モデルの状態を類推し定義していく事により、その状態が現実世界においてどんな意味を持っているのかが確定されていく、これが Shlaer-Mellor 法をベースにした概念モデリングにおける、状態モデル記述作業の自然な流れであり、これまでの私自身の状態モデル作成における思考の流れを振り返ってみても、確かにその通りのことをやっていたなというのが素直な感想です。

現実世界のダイナミクスの認識の考察から始めて、最後に状態の定義の基準が導き出されるというのは興味深いところですね。

実行セマンティクスの妥当性

前節まで、概念モデリングにおける、

  • 概念クラスに紐づけた状態モデル

  • 状態のエントリに紐づけたアクション記述

  • データフローモデルによるアクション記述

というモデリング体系の妥当性について考察してきました。
これで現実世界のダイナミクスをモデル化するツールは揃ったのですが、それらのツールを使って記述したものが、”実際にどう動くか”というルールが明確に決まっていないと、記述した内容は単なる絵に描いた餅にすぎなくなってしまいます。”実際にどう動くか”というルールの事を、”実行セマンティクス”と呼びます。詳細は、”概念振舞モデル”で解説していますが、ルールのほとんどは、この記事で考察してきた、

  • W の写しとしての圏I のモデル

  • I をスキーマとして規定している圏C のモデル

を根拠に決められています。”概念振舞モデル”の”実行セマンティクス”の解説と、この記事の内容を比較しながら読んでみてください。

状態遷移確定前の中間状態

概念モデリングでは、状態が確定する前のエントリアクション実行中は、”中間状態”であり、その間は、概念情報モデルで定義された制約が一時的に破れても良いとしています。もちろん、エントリアクションの実行が完了して状態が確定した時点では、概念情報モデルで定義された制約が満たされていなければならないのですが。
お客さんから電話を受けて、商品の注文内容を注文書に書き込んでいる様を想像してみてください。この場合、”電話による商品注文受注”が”事象”発生で、その”事象”をトリガーに”注文”という概念インスタンスが一つ生成されるものとします。

現実世界の一シーン

この絵の中の個数の記載はまだ確定していません。注文したい商品ID もまだ未記載です。概念情報モデルの規定に従えば、概念インスタンスの特徴値は確定していなければならないので、このルールに従えば、この状況は許される状況ではありません。しかし、現実の世界では、この例に限らず、当たり前に発生しうる状況なのは間違いありません。状態遷移が発生して状態が確定するまでの間を中間状態とし、中間状態の間は、概念情報モデルの制約が破れても良いとしているのは、この現実の、当たり前に起こり得る状況に対応するためです。

しかし一方で、別の状態機械(この例でいえば、配送担当者の状態機械としましょうか)からの、この”注文”インスタンスの参照は、例え中間状態だったとしても参照することは可能だとしています。その結果、本当は個数が273個(実はその後Back spaceキーが押されて修正される可能性もある)にもかかわらず、27個での発注プロセスが発生してしまう、そんなモデルも記述できてしまいます。

”As-Is”のモデルと”To-Be”のモデル

W と圏I は自然同値であるという事は、現実世界で不具合や論理的矛盾があれば、圏I のモデルも、その不具合や論理的矛盾を包含しているという事です。論理的帰結として、圏I を元に作成されたスキーマとしての圏C もまた、現実世界の不具合や論理的矛盾を包含したモデルになってしまいます。
そんな間違ったモデルを元にシステムを実装したら、不具合や論理的矛盾を垂れ流すシステムが出来上がってしまいます。
モデリングにおいては、現実世界をそのままモデル化すれば話は終わりではないという事です。
現実世界に間違いがあれば、当然その不具合を正さねばなりません。
現時点での現実世界のモデルを、”As-Is”のモデルと呼び、不具合を修正したモデルを”To-Be”のモデルと呼ぶことにします。

”As-Is”から”To-Be”へ

As-Is”の概念モデルは、現実世界に即した実行セマンティクスに沿って記述された概念情報モデルと状態モデル、アクション記述を動かしてシミュレーションすることにより、不具合を発見できます。
発見した不具合が排除をもとに概念モデルの修正を行い、”To-Be”の概念モデルを記述します。”To-Be”の概念モデルを使って、シミュレーションを行い不具合が起きない事を確かめます。
ある程度厳密な実行セマンティクスが決まっているからこそ可能な作業であるといえるでしょう。

特徴値の更新

部屋の壁に設置された温度計を思い浮かべてみてください。その部屋の環境が安定していなければ、温度計が表示する温度の値は見るたびに変っていきます。現実世界の圏W と自然同値な圏I のモデルで、かつ、圏C のモデルで、その圏I のモデルが規定されている場合にこの事実を当てはめると、

  • C において”温度”という特徴値を持つ”部屋”という概念クラスが記述される

  •  圏I では、圏C の”部屋”を雛形にして、圏W の部屋に対応する概念インスタンスが存在し、その概念インスタンスの特徴値である”温度”の値が、圏W の部屋に設置された温度系の値に一致している

と、モデルを記述することは妥当でしょう。
であれば、論理的帰結として、

  • 圏I の概念インスタンスの”温度”の特徴値は見るたびに変る場合がある

ということになります。概念インスタンスの特徴値が変化するという事は、状態変化が発生していることを意味します。この状態変化は、先に述べた、事象発生をトリガーにして起こる状態遷移の変化なのでしょうか?
答えはケースバイケースで Yes だったり No だったりします。
概念モデリングに関する一連の記事を注意深く読むと、圏W に相当する世界を、”現実世界”や”対象世界”、”モデル化対象の世界”などと、微妙な言い回しの違いで書いているのに気付くでしょう。正確性を持って書くならば、”モデル化対象となる現実の世界”と毎回書くのが本来なら正しい説明なのですが、長ったらしいのでその時々の文脈や読みやすさを加味して、ショートスタイルとして使い分けています。”現実世界”と大上段に書くと、我々が存在している世界の森羅万象がモデル化の対象であるとミスリードしてしまう可能性がありますが、概念モデリングにおけるモデル化の対象は、あくまでも、モデル化する意図や目的に対応した主題領域(ドメイン)の世界です。その世界において、

  • 部屋の温度計測の仕組みに観点を当てる必要がある

    • → Yes であり、変化のきっかけを起こす”事象”と、遷移前と遷移後の”状態”と状態の”エントリアクション”を認識し記述する

  • 単に、部屋の温度が知りたいだけ

    • → No であり、状態の各スナップショットで、その時点での温度が確定しているもの認識し記述する

とモデル化すれば十分でしょう。我々人類は、この世界を成り立たせている究極の仕組みである素粒子論も未だ理解はしていません。素粒子論なんて大げさな話を持ち出さなくても、インターネットの仕組みを知らなくてもチャットはできるし、運送屋がどんなルート、どんな手段で荷物の配送を行っているか知らなくても、発注した商品は手元に届きます。全てを認識してモデルを作成するなんてことは、そもそも無理な話です。時間の経過についても何故時間が進むのか、その正確な理由を知っている人は誰もいません。

特徴値の定義は一見簡単そうに見えますが、深堀すると深遠な世界が広がっています。妥当な圏C のモデルを構築するには、常に、”モデル化する意図や目的に対応した主題領域(ドメイン)の世界”を意識して、モデルの要素として定義すべきか否かを吟味しなければなりません。

時間経過に伴う連続的な変化

状態モデルによる現実世界のダイナミクスのモデル化は、前述の通り、事象発生に伴う、遷移前・遷移後の状態それぞれのスナップショットと、遷移を確定させる状態アクションという、離散的な認識に基づいています。
例えば、手に持った鉄球から手を離せば、その鉄球は時々刻々と万有引力の法則に従って速度が増して落ちていき、温源に接している液体は時々刻々と温度が変化していきます。これらの物理現象は時間の経過に伴った連続的な変化です。この様な連続的に変化するものが含まれるようなドメインをモデル化するのに、各時点のスナップショットとしての状態を認識する様な離散的なモデルは妥当なのでしょうか。
特に問題ないというのが私の見解です。
何故なら、モデル化するという事は人間が対象をどう認識するかの問題であり、単に同じ時間間隔でスナップショットを採って状態を確定させて認識しているのが実質的な認識の方法をとっていると思われるからです。
そう考えれば、一定時間経過したという事実を、”事象”として認識・記述し離散モデルである状態モデルを記述すればよいだけのことになります。
物理現象を、モデル化対象のドメインにおいて十分な精度で記述できる方程式があるならば、それをモデルの記述として活用しても構いません。その場合は、その物理方程式の変数が、いずれかの概念クラスのいずれかの特徴値になるようなモデルが出来上がります。

このケースをモデル化する場合には、もう一つ重要な観点が必要です。そもそも、”何故連続的に変化すると捉えるのか”というモデル作成の動機にかかわる観点です。
連続的に変化する特徴値がある場合、その”モデル化する意図や目的に対応した主題領域(ドメイン)の世界”において、一つ前の”特徴値の更新”のセクションで考察した、スナップショットの状態で、その値が確定していると考えれば十分であれば、特に連続的に変化すると捉える必然性はそもそもないはずです。にもかかわらず、連続的に変化する値の確定方法が気になっているのであれば、値が確定していれば十分という世界観の中に、その値を確定するための手段に関わる世界観が紛れ込んでいる可能性があります。
そんな時は、値を確定していれば十分な世界と、値を確定する手段に関する世界を、異なるドメインと考えて、それぞれ独立した”モデル化する意図や目的に対応した主題領域(ドメイン)の世界”に分離したうえで、モデルを作成しなければなりません。
値が確定していれば十分という世界のモデルから見れば、必要な種類のデータを、必要十分な精度と分解能で値を確定してくれればよいだけの話です。逆に、値を確定する手段の世界は、その種類のデータを要求された精度と分解能で供給すればよいだけの話になります。

最後に

以上で、現実世界のダイナミクスを記述する概念振舞モデルの考察は終わりです。いかがだったでしょうか。論理の展開で一部雑なところはありますが、概念モデリングの基礎に関する解明(説明ではない)としては十分ではないかと思っています。
哲学的な考察に関しては、フッサールの現象学だけでなく、フレーゲ、ラッセル、ウィットゲンシュタインあたりの言語哲学的考察もやった方が良いかなとも感じているので、ただいま学習中。
それはまたの機会に考察の予定。

この記事が気に入ったらサポートをしてみませんか?