自らの計算機と食い違った計算例
住宅リフォームの費用計算ツールを提供するウェブサイトを運営しています。
各ページでは、同じ費用が以下の4つの異なる場所で表示されます:
- インタラクティブなウィジェット
- 静的な参照テーブル
- 文章による具体例
- FAQセクション
あるバグを見つけました。文章による例ではプロジェクト費用が62,300ドルとなっていましたが、計算機ウィジェットでは同じプロジェクトの費用が56,779ドルとなっていました。
その差は5,500ドルでした。
このエラーの原因は、私が数値を手入力していたことにあります。テキストで使用した前提条件と、コードで使用した前提条件が異なっていたのです。テキストでは新しいHVAC(空調)ユニットを想定していましたが、コードでは既存のシステムを想定していました。どちらも間違いではありませんでしたが、一致していませんでした。
これはよくある失敗です。同じ事実を2カ所に保存すると、それらは乖離していきます。
私は2つのルールを設けることで、これを解決しました。
ルール1:ソース・ファーストのロジック
数値が生まれる唯一の場所は、計算関数とします。もはやテーブルや段落に数値を直接入力することはありません。代わりに、ビルド時にその関数を使用して、テーブルや例を生成するようにしました。
関数が変われば、ページ全体が変わります。同じロジックを使用しているため、テーブルとウィジェットは常に一致します。
ルール2:プロベナンス(由来)を追加する
数値は、それがどこから来たのかが分かって初めて役に立ちます。現在、すべての計算には以下が含まれています:
- 使用された具体的なシナリオ
- データソース
- アクセスした日付
- データの有効期限
費用データは永続的な事実ではありません。それは鮮度が重要な、期限のある事実です。レビュー日を追加することで、データが誤ったものになる前に更新することを忘れないようにしています。
「信頼できる唯一の情報源(Single Source of Truth)」は一貫性をもたらします。「プロベナンス(由来)」を追加することは、誠実さをもたらします。
同じ数値を2カ所に表示する場合、再入力してはいけません。インポートしてください。重複の処理はビルドプロセスに任せましょう。
出典: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9