組み込み開発のためのPython · レッスン 210 / 220
dataclassで測定レコードを表す
dataclassとEnumを使い、値の意味や状態名を明示したデータ構造を作ります。
辞書は柔軟ですが、必須項目や値の意味がコードだけでは曖昧になることがあります。安定した記録形式には、名前付きのデータクラスを使うと読みやすくなります。
レコードの形を一か所で定義する
`dataclass`は、フィールドを持つクラスを簡潔に定義できます。型注釈を付けるとIDEや静的解析が支援しやすくなりますが、不正な値を自動で拒否するわけではありません。コンストラクターや検証関数で範囲、単位、相互の整合性を確認します。
状態を文字列の寄せ集めにしない
接続状態など選択肢が限られる項目には`Enum`を使うと、表記ゆれを防ぎやすくなります。後からログやJSONに出力する場合は、安定した外部表現を別に定め、プログラム内部の名前変更で保存データが壊れないようにします。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
from dataclasses import dataclass
@dataclass(frozen=True)
class Measurement:
timestamp_ms: int
voltage_mv: int
channel: str
def __post_init__(self) -> None:
if self.timestamp_ms < 0 or self.voltage_mv < 0:
raise ValueError("時間と電圧は0以上で指定してください")
sample = Measurement(120, 3290, "A0")手を動かす課題
温度測定のデータクラスを作り、時間・値・単位の不整合を検出してください。