監視の話をしているとオブザーバビリティという言葉が出てきます
オブザーバビリティは日本語にすると可観測性です
大学時に制御工学の授業で可観測性という言葉を学んだので、それを思い出しながら自分なりに整理してみます
監視
監視というと「ログを取るんだな」「CPU とか メモリの値を取るんだな」と思うかもしれません
しかし、それだけでは監視とは言えないと思っています
自分の考える監視を身近な例で整理してみます
監視できていないパターン
家の中に温度計、湿度計を置いている人は10人いれば数人くらいはいるでしょう
これは室温と室内湿度のデータを取得していると言えます
しかし、「なんで監視してるん?」と聞かれて回答できる人はどれくらいいますか?
「掛け時計でたまたま温度と、湿度が測定できただけ」
「くじ引きの景品でもらったから置いてるだけ」
なんて人もいるんじゃないでしょうか?
graph LR
A[温度を測る]
B[湿度を測る]
C[何しよう。。?]
A --> C
B --> C
これは意味もなくデータを収集しているので自分の中では監視しているとは言えないです
監視できているパターン
「ペットを飼っていて、外出中でも室内環境を一定に保ちたい」
「在宅勤務で日中も家にいるので、室内環境を良くしたい」
など、何かしらの目的があったとしましょう
その場合、夏場であればエアコンや扇風機を利用したり、冬場では暖房を利用すると思います
また加湿器や除湿器を利用することもあるでしょう
このとき「風量はどうしよう」「設定温度は何度にしよう」という疑問が出てきます
それを判断する材料として、「室内温度を測ろう」「湿度を測ろう」と考えるのは自然なことです
graph LR
A[室内環境を良くしたい]
B[エアコンの設定値を決めたい]
C[加湿器の設定値を決めたい]
D[室内温度を測る]
E[湿度を測る]
F[エアコンを設定する]
G[加湿器を設定する]
A --> B
A --> C
B --> D
C --> E
D -- 人が判断をして --> F
E -- 人が判断をして --> G
このように、監視の目的があることで、データを収集することが意味を持つと言えます
自分が考える監視はこのようなパターンです
もっと言うと、室内環境だけじゃなくて「雨だったら湿度が高くなる」という特徴を踏まえて、下記のように改善されるかもしれません
graph LR
A[室内環境を良くしたい]
B[エアコンの設定値を決めたい]
C[加湿器の設定値を決めたい]
D[室内温度を測る]
E[湿度を測る]
F[エアコンを設定する]
G[加湿器を設定する]
H[天気予報を確認する]
A --> B
A --> C
B --> D
C --> E
D -- 人が判断をして --> F
E -- 人が判断をして --> G
C --> H
H -- 人が判断をして --> G
これが監視の改善になると思います
最近では IoT 家電が普及しているので、エアコンや加湿器の設定は自動化できる場合もあるでしょう
graph LR
A[室内環境を良くしたい]
B[エアコンの設定値を決めたい]
C[加湿器の設定値を決めたい]
D[室内温度を測る]
E[湿度を測る]
F[エアコンを設定する]
G[加湿器を設定する]
H[天気予報を確認する]
A --> B
A --> C
B --> D
C --> E
D -- IoT 家電で自動化 --> F
E -- IoT 家電で自動化 --> G
C --> H
H -- IoT 家電で自動化 --> G
これが応答の自動化です
オブザーバビリティ (可観測性)
オブザーバビリティは日本語に翻訳すると「可観測性」です
制御工学でも可観測性が出てきます
可観測生徒は「システムの出力を有限時間観測することで、システムの状態変数を推測できること」です
例えば原点に点Pがあったとします
quadrantChart
%%{init: {"quadrantChart": {"pointLabelFontSize": 50} }}%%
title 原点 に点 P がある
x-axis " " --> " "
y-axis " " --> " "
P: [0.5, 0.5]
この点Pが距離 1 だけ進んだという出力だけ観測した場合、点Pがどこにあるかはわかりません
(1, 0) か (0, 1) か (cos(π/4), sin(π/4)) はたまた (cos(-π/4), sin(-π/4)) か。。。
可観測のための十分な出力がない と判断ができるでしょう
quadrantChart
%%{init: {"quadrantChart": {"pointLabelFontSize": 50} }}%%
title 原点から距離 1 だけ進んだが、点 P の位置はわからない
x-axis " " --> " "
y-axis " " --> " "
P???: [1, 0.5]
P?: [0.5, 1]
P?: [0.85, 0.15]
P?: [0.85, 0.85]
しかし、点P が 45度 (π/4) の方向に進んだという出力も観測できた場合、点Pがどこにあるかわかります
quadrantChart
%%{init: {"quadrantChart": {"pointLabelFontSize": 50} }}%%
title 原点から 45度の方向に距離 1 だけ進んだ点 P
x-axis " " --> " "
y-axis " " --> " "
P: [0.85, 0.85]
この場合、可観測のための出力が得られたので点Pは可観測性をもっています
graph LR
距離の情報に関する出力 --> 点Pの状態
角度の情報に関する出力 --> 点Pの状態
点Pの状態 --> 可観測性がある
室内環境の例
監視のところで使った室内環境で可観測性を考えてみたいと思います
先ほどは室内環境を温度、湿度の2つの要素で考えました
しかし、それだけで室内環境の良しあしの状態を推測できるでしょうか?
graph LR
温度 --> A[室内の状態?]
湿度 --> A
例えばロボット掃除機の稼働頻度を見ることで、室内が綺麗かどうかを推測できます
また、窓の開閉状況を見ることで換気がされているかどうかを推測できます
このように、監視ができていても可観測性がない場合はあります
graph LR
温度 --> A[室内の状態]
湿度 --> A
ロボット掃除機の稼働頻度 --> A
窓の開閉状況 --> A
B[その他多くの情報] --> A
A --> 可観測性がある
制御工学では可観測性と可制御性を一緒に学びます
可観測性は先に書いた通り「出力を有限時間観測することで、システムの状態変数を推測できること」です
可制御性は「システムの状態を任意の状態に制御できること」です
室内環境の例で言うと、エアコンや暖房器具の設定値を変えれば好きな室温にできるかどうかが可制御性です
まとめ
制御工学で学んだことを思い出しながら、監視とオブザーバビリティ (可観測性) を整理してみました
大学で学んだことは直接業務に結びつかないことが多かったので、関係する子があって嬉しかったです