v1.2.0 (2025-10-27)#
このリリースは、Mock デバイスの閾値書き込み機能を実装した重要なアップデートです。 レスポンスキュー(Response Queue)パターンにより、ハードウェアなしで閾値設定機能をテストできるようになりました。
✨ v1.2.0 での改善点#
このマイルストーンは、以下を実現します。
Mock デバイスのレスポンスキュー: BaseMocker にレスポンスキューを追加し、デバイスシミュレーション機能を拡張
閾値書き込み Mock 対応:
write_threshold()関数が自動的に Mock デバイスを検出しレスポンスをシミュレートハードウェア不要なテスト:
--mockフラグで実デバイスなしに閾値設定コマンドを実行可能完全な後方互換性: 既存の DAQ 機能は一切変更なし、既存テスト 95 件すべてが引き続き合格
🎯 Mock デバイスによる閾値書き込み(User Story 1 - MVP)#
新機能: シングルチャンネル閾値設定#
threshold write --mock: Mock デバイスでの閾値書き込みが可能にhaniwers-v1 threshold write --thresholds "1:100" --mock
リアルタイムデバイスと同じプロトコルをシミュレート
チャンネルエコーレスポンス(
"1"など)を自動生成デバイス拒否レスポンス(
"dame")の注入テストに対応
レスポンスキューの実装#
BaseMocker にレスポンスキュー追加:
_response_queue: deque- 閾値レスポンス専用のキューFIFO(先入先出)方式でレスポンスを管理
通常のデータ取得には影響なし
新メソッド
set_next_response():閾値書き込み操作用のレスポンスをキュー登録
Mock デバイスの動作をシミュレート
例:
mocker.set_next_response("1")でチャンネル 1 の成功レスポンスを予定
readline()の拡張:Mocker と RandomMocker の両者で対応
キューにレスポンスがある場合は優先的に返却
キューが空の場合は通常のセンサーデータを返却
Mock デバイス自動検出#
write_threshold()の改善:isinstance(device, BaseMocker)で Mock デバイスを自動検出検出時は自動的にチャンネルエコーレスポンスをキュー登録
API 変更不要 - 既存コードはそのまま動作
🧪 テスト強化#
新規ユニットテスト(18 件)#
レスポンスキュー機能テスト(9 件):
単一応答のキュー登録と取得
複数応答の FIFO 順序確認
キュー空時のセンサーデータ取得
クローズデバイスでのレスポンス返却
特殊文字・ホワイトスペースハンドリング
Mock デバイス閾値書き込みテスト(10 件):
Mock デバイス自動検出
成功レスポンスでの書き込み成功
拒否レスポンス(
"dame")での書き込み失敗チャンネル・閾値バリデーション
マルチチャンネル順序処理
プロトコル準拠性確認
テスト成功率#
テストスイート |
結果 |
詳細 |
|---|---|---|
新規テスト |
✅ 18/18 |
レスポンスキュー + Mock 閾値書き込み |
v1 ユニットテスト全体 |
✅ 409/409 |
後方互換性確認済み |
既存 Mocker テスト |
✅ 95/95 |
既存機能影響なし |
コード品質 |
✅ Pass |
ruff format, pre-commit OK |
🔧 内部実装の改善#
設計パターン: レスポンスキュー#
# Mock デバイス初期化
mocker = RandomMocker(config)
# 閾値書き込み(自動レスポンスキュー)
success = write_threshold(mocker, ch=1, vth=100)
# → 内部で自動的に set_next_response("1") がコール
# 拒否レスポンスをシミュレート
mocker.set_next_response("dame")
success = write_threshold(mocker, ch=1, vth=100) # False を返却
後方互換性保証#
✅ レスポンスキューは完全に追加的(既存コードへの影響ゼロ)
✅ Mock デバイス検出は
isinstance()で非侵襲的✅ DAQ 機能は一切変更なし
✅ 既存テスト 95 件すべて継続成功
📋 今後の拡張(User Story 2, 3)#
User Story 2: バッチ閾値設定#
haniwers-v1 threshold write --thresholds "1:100;2:120;3:110" --mock
User Story 3: Mock デバイスでのスキャン#
haniwers-v1 threshold scan --mock
📦 インストール#
pip install haniwers==1.2.0
または最新版:
pip install --upgrade haniwers
🔗 関連リンク#
リリース担当: shotakaha リリース日: 2025-10-27 MR: !100 - feat: add response queue to mocker for threshold write operations