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