外部ライブラリなしでPythonのHTMLレポートを作る
CSVの集計結果をブラウザで見られる静的HTMLに変換
情報表示・学習目的の解説です。安全上重要な設備の制御や保証には使用しないでください。
オフラインで完結する利点
研究や小規模な設備ログでは、CSVを毎回クラウドへ送らずに結果を確認したい場合があります。Pythonの標準ライブラリだけでも、CSV読み込み・時間差計算・HTMLの書き出しは実装できます。HTMLを出力した後は、通常のブラウザで開くだけで閲覧できます。
これはデータの送信を減らす設計であり、PC本体の保護やバックアップを保証するものではありません。
帯グラフの仕組み
総観測時間を画面上の900pxに割り当て、区間の長さ ÷ 総観測時間 × 900 を四角形の幅に使います。SVGのrect要素を区間順に並べれば、RUNNING・STOPPED・UNKNOWNを色分けした帯グラフが作れます。
表示を見やすくする色だけでは状態を識別できない人もいるため、文字の凡例も表示するようにします。
HTMLへ書き込む前の注意
CSVのセル値をHTMLに埋め込むときは、標準ライブラリのhtml.escape()で文字をエスケープします。これはHTML構文の混入を防ぐ基本対策です。データの信頼性チェックやその他の脅威への対策が不要になるわけではありません。
長期運用や大量ログでは、レポートを静的HTMLにする方法が適切か、データベースなどが必要かを別途判断します。
確認用メモ・例
from html import escape
from pathlib import Path
name = escape('工場A <テスト>')
page = f'<h1>{name}</h1>'
Path('report.html').write_text(page, encoding='utf-8')一次資料
記事の説明と、個別環境で動作保証されることは異なります。実機の仕様・状態を確認して使ってください。