【HLR Engine開発日記】⑨ 同じ答えが出ても、計算した記録は残したい

同じ計算をもう一度実行したら?

前回は、入力条件を変えて計算した場合に、別のCalculationとして記録するという話を書きました。では、入力条件を変えずに、同じ計算を2回、3回と実行したらどうなるでしょうか。

例えば、ある橋のHLRを計算して、30人年という結果が出たとします。翌日、まったく同じ条件で再計算しても、やはり30人年でした。このとき、この二つの結果は、異なる二つの計算なのでしょうか。


CalculationとExecutionを分けて考える

ここで、次の二つを区別して考えることにしました。

Calculation(計算)とは、どのような条件とルールで、何を計算するのかという計算の内容です。Execution(実行)とは、その計算を、実際にいつ動かしたのかという記録です。

同じCalculationを3回実行した場合、Calculationは1つのままですが、Executionの記録は3件になります。

内容結果
Calculation A橋長50m・評価期間100年・計算ルールVer.1
Execution 1(1回目)Calculation Aを実行30人年
Execution 2(2回目)Calculation Aを実行30人年
Execution 3(3回目)Calculation Aを実行30人年

※説明用の架空例です。同じ条件・同じルールで実行した場合を示しています。

「計算の内容」と「実際に動かした記録」は別のものだ、という点を押さえていただければ十分です。


なぜ実行記録を残す必要があるのか

同じ答えが出るのなら、実行記録は一つだけでもよいように思えます。

しかし、計算プログラムを改修した後などに、同じ計算を再実行して、以前と結果が一致するかを確認したい場面があります。もし結果が違っていたら、どの実行で差が生じたのかを調べなければなりません。

そこで、実行した日時、プログラムのバージョン、実行結果などを記録しておくことが役に立ちます。同じ答えが出たことだけでなく、いつ、どのような環境で確認したのかまで残す。それが実行記録の役割です。


再現性と、後から検証できること

HLR Calculation Engineでは、二つの考え方を大切にしています。

一つは再現性です。同じ条件と計算方法なら、同じ結果が得られることを指します。もう一つは監査性です。計算結果について、どの条件やルールを使い、いつ実行したのかを、後から追跡して確認できることを指します。

CalculationとExecutionを分けて管理すると、この二つを実現しやすくなります。ただし、記録を残すだけで計算の正確性が保証されるわけではありません。結果が妥当かどうかを検証することは、別に必要です。

なお、今回の前提は、入力条件・係数・計算ルールがすべて同じであることです。同じ入力条件でも、計算ルールや係数のバージョンが変われば、同じCalculationとして扱えるとは限りません。


計算エンジンは、答えを出すだけではない

HLR Calculation Engineを作り始めた頃は、計算条件を入力して答えを出すことが中心でした。しかし開発を進めるうちに、計算結果だけでなく、計算条件や実行の履歴まで管理する必要があると見えてきました。

同じ計算を何度実行しても、計算条件そのものは変わりません。しかし、実行したという事実は、その都度新しく生まれます。計算と実行を分けて管理することも、信頼できるHLR Calculation Engineを作るために必要な仕組みだと分かってきました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次