Show HN:Instruments にするための Pypi ライブラリ「Instrumation」のご紹介

2026/07/13 0:29

Show HN:Instruments にするための Pypi ライブラリ「Instrumation」のご紹介

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Instrumation は、Python ベースのハードウェア抽象化層(HAL)であり、PyVISA の boilerplate コードを抽象化することで RF テストステーションの自動化を簡素化し、Keysight、Rigol、Tektronix、Siglent、R&S、Anritsu など多様なメーカーのインスルメントで動作する移植可能なソフトウェアを提供することを目的としています。その最も重要な特徴は、「すべてのものに統一された API(One API for everything)」を提供することであり、生の SCPI コマンドをより安全な型付きの Python メソッドに置き換え、USB または LAN 経由で接続されたデバイスのスマートな自動検出をサポートし、手動設定なしに正しいドライバーをロードします。

ユニークなのは、「デジタルツインモード」と呼ばれるオフラインでの開発およびデバッグを支援する機能であり、リアルな高斯雑音(Gaussian noise)を出力するシミュレーションされたインスルメントを用いることで、物理機器なしでロジックのテストが可能です。実際のハードウェアによる検証は、Tektronix AFG3022C + Keysight DSOX2002A のループバック構成、Keysight N9030A を用いたバイナリ・トレース転送、N5183B を用いたパルス変調、および N5232A を用いた S パラメータ測定などのセットアップで実証されています。

PyVISA、PySerial、SCPI スタンダードに基づき構築された Instrumation は、Windows、Linux、macOS、Android(Termux 経由)で動作します。内部に搭載されている DataBroadcaster(UDP ベース、ゼロ設定)による遅延ゼロのライブデータストリーミングをダッシュボードへ可能にし、HTML、Excel、PDF などの構造化レポートを生成するためのツールを提供することでワークフローを効率化します。インストールは

pip install .
または GitHub からクローンを行うことで行い、Windows 上では物理アクセスのために NI-VISA または Keysight IO Libraries Suite の設置が必要です。高度なテストステーションは
station.toml
ファイル(Station Manager)を用いて管理でき、パッケージには診断および迅速測定用の CLI(
instrumation scan
)も含まれています。エコシステムはさらに、自動化されたパス/フェイル評価を行う関連プロジェクト
instrumation-report
によって拡張されています。

Text to translate:

Instrumation is a Python-based Hardware Abstraction Layer designed to simplify Radio Frequency (RF) test station automation by abstracting PyVISA boilerplate and enabling portable software that works across diverse instrument brands including Keysight, Rigol, Tektronix, Siglent, R&S, and Anritsu. Its most critical feature is providing a unified API ("One API for everything") that replaces raw SCPI commands with safer, typed Python methods and supports smart auto-detection of connected devices via USB or LAN, loading the correct driver without manual configuration.

Uniquely, it supports offline development and debugging via "Digital Twin mode" (simulated instruments emitting realistic Gaussian noise), allowing developers to test logic without physical equipment. Real hardware validation has been demonstrated using setups like a Tektronix AFG3022C + Keysight DSOX2002A loopback, Keysight N9030A for binary trace transfers, N5183B for pulse modulation, and N5232A for S-parameter measurements.

Built on PyVISA, PySerial, and the SCPI standard, Instrumation runs on Windows, Linux, macOS, and Android (via Termux). It streamlines workflows by enabling zero-lag live data streaming to dashboards via its built-in DataBroadcaster (UDP-based, zero-config) and offering tools to generate structured reports in HTML, Excel, or PDF. Installation is done via

pip install .
or cloning from GitHub; on Windows, NI-VISA or Keysight IO Libraries Suite are required for physical access. Advanced test stations can be managed using a
station.toml
file (Station Manager), and the package includes a CLI (
instrumation scan
) for diagnostics and quick measurements. The ecosystem is further extended by the related
instrumation-report
project for automated pass/fail evaluation.

本文

Instrumation:RF テストステーション用ハードウェア抽象化レイヤー (HAL)

情熱を込めて作成されたプロジェクトです ❤️。 PyVISA のテンプレートコードに振り回されることなく、テストロジックの記述に集中できる環境を提供します。


Instrumation とは?

RF テストステーション向けの上位層 ハードウェア抽象化レイヤー (HAL) です。 接続処理よりも、本質的なテストロジックを書くことにリソースを割きたい場合に最適です。

採用理由:3 つの主要問題を解決

RF テストベンチの自動化において発生しうる課題を一括で解消します。

  • 何でも一つの API
    • Keysight、Rigol、およびサポートされているすべてのブランドで 同じコード が動作します。
  • デジタルツインモード
    • リアルな正規分布ノイズを発生させるシミュレーション環境により、オフラインでの開発とデバッグが可能です。
  • 賢い自動検出
    • 接続されたデバイスをスキャンし、適切なドライバーを自動的に読み込みます。手動設定は不要です。

実ハードウェアによる検証実績

実際のラボ環境で以下のようなデバイスとの互換性を確認済みです:

  • 🔬 AFG ↔ DSOX ループバック検証
    • Tektronix AFG3022C と Keysight DSOX2002A を使用したプラグ&プレイ式 AUTO 検出。
  • 📡 PXA N9030A スペクトラムアナライザ
    • 高速な 32 ビットバイナリトレース転送に対応。
  • 🎛️ MXG N5183B シグナルジェネレータ
    • パルス変調と周波数スキャンの制御。
  • 📊 PNA N5232A ネットワークアナライザ
    • S パラメータ測定および-Smith チャート機能の確認。

PyVISA と Instrumation の違い

信号ジェネレータをプログラミングする際、従来の PyVISA(生 SCPI)と Instrumation を比較します。

項目PyVISA (生 SCPI)Instrumation
検出手動 — リソース文字列を手探りで探し、ResourceManager を管理する必要あり自動
"AUTO"
を渡すだけで、HAL が USB および LAN をスキャン
接続
rm.open_resource("...")
— ハードコーディされたアドレス
connect_instrument("AUTO", "SG")
— タイプに配慮したルーティング
設定
sg.write(":FREQ:CW 2.4e9")
— 生 SCPI、検証なし
sg.set_frequency(2.4e9)
— バインドチェック付きの typed メソッド
片付け手動
sg.close()
— 見落としがち
コンテキストマネージャ — ブロック終了時に自動処理
オフライン開発実際のハードウェア接続必須デジタルツイン
INSTRUMATION_MODE=SIM
でどこからでも開発可能
ポータビリティベンダ固有の SCPI — 各ブランドで書き換えが必要一つの API — Keysight, Rigol, Tektronix など全ブランド共通

サイドバイサイドコード比較

PyVISA:8 行分のテンプレートコード(冗長)

import pyvisa
rm = pyvisa.ResourceManager()
# 正しいリソースを手動で見つける...
sg = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")
sg.write("*RST")
sg.write(":FREQ:CW 2.4e9")
sg.write(":POW:AMPL -10")
sg.write(":OUTP ON")
sg.close()

Instrumation:5 行、ゼロ設定(シンプル)

from instrumation import connect_instrument

with connect_instrument("AUTO", "SG") as sg:
    sg.set_frequency(2.4e9)
    sg.set_amplitude(-10)
    sg.set_output(True)
  • ResourceManager 不要
  • SCPI 文字列不要
  • ハードコーディされたアドレス不要
  • ただあなたのテストロジックだけです

リアルタイムデータストリーミング

UDP を介したライブ読出しのための内蔵

DataBroadcaster
を備えています。外部依存関係なしに、リアルタイムダッシュボードやロッガーを構築可能です。

  • ゼロレイグ — UDP デリバリーはテストフローをブロックしません
  • ゼロ設定 — JSON パケットとして任意のホスト/ポートへブロードキャストします
  • ゼロ依存 — Python 標準ライブラリのみで動作

詳細な使い方例:examples/broadcast_demo.py および examples/dashboard.py をご覧ください。


主な特徴

  • 自動検出 — VISA とシリアルバスの接続機器をスキャンし、現状の接続状況を識別します。
  • スマートファクトリー — 楽器ブランドを検出し、正しいドライバーを読み込みます。
  • デジタルツイン — オフライン開発や CI パイプライン向けのフルシミュレーションモードを提供します。
  • 統一された API — 一度書くだけで、サポートされているあらゆるハードウェアで動作します。
  • 内蔵 CSV ロギング — テスト結果を標準装備でログ出力できます。

インストール

ソースコードからインストールしてください:

git clone https://github.com/abduznik/instrumation.git
cd instrumation
pip install .

注意: Windows ユーザーの場合、物理ハードウェアへのアクセスには

NI-VISA
または
Keysight IO Libraries Suite
のインストールが必要な場合があります。


クイックスタート

実ハードウェア使用時

import instrumation

# USB アドレスなど具体的なアドレスを指定
sa = instrumation.connect_instrument("USB0::0x2A8D::...")

peak_power = sa.get_peak_value()
print(f"ピーク電力:{peak_power} dBm")

デジタルツイン(ハードウェア不要)

Linux/macOS

export INSTRUMATION_MODE=SIM

Windows PowerShell

$env:INSTRUMATION_MODE="SIM"

コード例:

from instrumation.factory import get_instrument

# コンテキストマネージャを使用したより安全な使い方
with get_instrument("DUMMY_ADDRESS", "DMM") as dmm:
    print(dmm.get_id())
    result = dmm.measure_voltage()
    print(f"電圧:{result}")

駅長マネージャー (TOML)

複数の楽器を備えた複雑なテストステーションは、

station.toml
ファイルを使用管理します。

station.toml 設定例:

[instruments.sa_main]
driver = "SA"
address = "USB0::0x2A8D::0x0101::MY12345678::0::INSTR"

[instruments.psu_dut]
driver = "PSU"
address = "TCPIP0::192.168.1.100::inst0::INSTR"

Python での利用:

from instrumation import Station

station = Station("station.toml")
station.connect()

# ドット記法で楽器にアクセス
res = station.instr.sa_main.get_peak_value()
print(f"ピーク:{res}")

station.disconnect()

コマンドラインインターフェース (CLI)

Instrumation は素早い操作と診断用の強力な CLI を内蔵しています。

  • 接続されたハードウェアをスキャン
    instrumation scan
    
  • 素早い測定を実行
    instrumation measure USB0::... DMM measure_voltage
    
  • station.toml に定義された楽器の一覧を表示
    instrumation station list
    
  • Station オブジェクトを使って測定実行
    instrumation station measure sa_main get_peak_value
    

API リファレンス

コマンド説明
scan()
接続されたシリアルおよび VISA デバイスのすべてをリストします
connect()
ジェネリックテストステーション(ボックス+楽器)に自動接続します
connect_instrument(addr)
特定の楽器に接続し、自動ドライバー検出を行います

プラットフォームサポート

プラットフォームステータス
Windowsサポート済み
Linuxサポート済み
Termux (Android)サポート済み
macOSサポート済み

開発環境のセットアップ

テストがローカルの変更を検出できるようにして編集モードでインストール(必須):

pip install -e .

このプロジェクトは

pyproject.toml
(PEP 517/518) を使用しています。
setup.py
は不要です。

テストの実行(シミュレーションモード):

# テスト依存関係をインストール
pip install pytest flake8

export INSTRUMATION_MODE=SIM # Linux/macOS
pytest

関連プロジェクト:instrumation-report

測定データからユニットテスト (UUT) のテストレポートを生成するための軽量 Python ライブラリです。Instrumation と連携して使用することも、単独でも動作します。

特徴:

  • HTML、Excel、PDF レポート出力
  • 設定可能な条件に基づく自動パス/フェイル評価
  • 構造化されたセクションとテストテーブル
  • Instrumation 測定との簡単な統合
pip install instrumation-report
from instrumation_report import Report, Section, TestTable, Measurement

report = Report(header=ReportHeader(
    title="RF サブシステム検証",
    engineer="ヤン",
    uut_serial="SN-2024-001",
))

section = Section(number="1", title="電圧テスト")
table = TestTable(title="電源チェック", sub_number="1.1")
table.add(Measurement("3.3V レール", 3.31, "V", condition=(3.2, 3.4)))
section.add_table(table)
report.add_section(section)

report.generate_html("report.html")
report.generate_excel("report.xlsx")

テクノロジースタック

  • 言語: Python 3.7+
  • ライブラリ: PyVISA, PySerial
  • アーキテクチャ: スマートファクトリーパターン、多態性
  • 規格: SCPI (プログラマブル機器用標準コマンド)

プロジェクトの支援について

Instrumation は、フルタイムで働く RF 技術者の隙間時間に維持されています。 テンプレートコードの削減テストベンチの自動化に貢献したい方はご検討ください。

  • 商用サポートまたはカスタムドライバー開発のご希望がある場合は、GitHub Issues または Discussions からご連絡ください。
  • 寄付については、プルリクエストおよびドライバーへの貢献を歓迎します。大規模な変更については事前に Issue で議論することをお勧めします。

同じ日のほかのニュース

一覧に戻る →

2026/07/18 7:26

カイザー看護師が語る、AI や職場監視が看護業務とケアの質を悪化させていることへの懸念

## Japanese Translation: カイザーパーマネンテの看護師たちは、AI 駆動による職場の監視が患者の安全を危険にさらすと非難し、通話時間の短縮や同情に基づいたケアの抑制を強いるとしている。カイザーはこれらのツールをウェルビーイングの促進に資すると擁護するが、批評家たちは過度な監視が士気を損ない誤りのリスクを高めるとの見解を示している。調査により、現在のおよび元看護師 7 名が、通話が 15 分を超えた場合に批判を受けたりパフォーマンス評価が下されるなどしたと報告されたことが明らかになっている。ソフトウェアはトーン分析、非生産性の予測、共感度の評価、および月次スコアへの通話指標の統合を実行する。特筆すべきは、これらの短時間に関連する患者からの苦情は一切記録されていないことである。この controvers は抗議運動を刺激し、3 月に 1 日間のストライキや昨年の秋のパイケティングを引き起こした。これはカリフォルニア看護師協会による新契約(コールセンターの看護師を含む約 2.5 万人のスタッフに適用)の交渉と一致しており、その中で AI が中心的役割を果たすと予想されている。カイザーは、すべてのコンタクトセンターツールには人間の審査と監督が含まれているとし、セキュリティ上の理由から詳細は非公開としている。2024 年の公記録請求により、通話時間に関連する患者からの苦情は一切見つかっていないが、看護師たちは安全上のリスクが依然として現実であると主張している。批評家たちは、厳格な時間制限の実施がバーンアウトや士気の低下、高リスク環境におけるエラーを招く可能性を警告している。カリフォルニア州では、AI を規制し、自動化された推奨事項を上回る従業員に対する報復を防ぎ、感情的状態の AI 予測を禁止する法案(元々 SB 7 の後継である上院法案 947)などの検討が行われている。ゴブナーニュースームは以前に同様の措置(SB 7)を拒否した。カイザーパーマネンテは現在、カリフォルニア州で最大の民間雇用主であり、カリフォルニア人 900 万人以上とその他の地域に住む 300 万人以上の人のサービスを提供している。

2026/07/17 18:42

AWS:誤った見込見積もりデータの件、被害額 17 億ドル

## Japanese Translation: 7 月 16 日 Pacific Daylight Time 午後 7 時 38 分、AWS は重大なソフトウェアの誤作動により、請求見積もりが数十億ドル〜数兆ドルという異常値を表示し始めました。この問題の原因は、価格計算が「バイト」単位ではなく「ギガバイト」単位で行われていた単位の不一致によるものです。この影響を受けたアカウントには、支出ゼロのアカウントも含め、推計課金額として 4 億 3000 万ドルが表示された例もあります。当初これらの警告はフィッシング攻撃に見えましたが、AWS はそれが本物の表示誤りであることを確認しており、実際の顧客請求に変更はなく、即時対応が必要な事態でもないとしています。この問題は請求計算サブシステムの更新失敗後に発覚し、単純なロールバックでは不十分で、適切な単位価格を用いて履歴の計量データを再計算する必要があったためです。エンジニアたちは内部計算エラーを修正するため、数時間以内に完全に解決できると予想しています。過去の重大な AWS 障害(2011 年の「フィールド内のコンマ」バグなど)に類似したこの出来事は、より厳格なエンドツーエンドの統合テスト(実際のお金での課金検証や XTS などのテスト通貨を使用するテストを含む)の実施、ならびに将来のバグや誤設定による爆発的なコスト増を防ぐための堅牢な支出上限の設定への要請を再び喚起しています。

2026/07/18 1:57

HN を感謝し、人生の職に導いてくれた 15 年間のお陰様です。

## Japanese Translation: Recurse Center は明日、設立から 15 周年を迎えます。これは YC Summer 2010 の発案「OkCupid for jobs」から誕生したもので、当初は失敗しましたが、組織はその後、他の不十分なコンセプトを数年間検討した後、自己主導型のプログラミングリトリートとして開始されました。2 つの小規模なバッチを実施した後、Hacker News に掲載され、素晴らしい反応を受けました。口コミとともに HN は応募者の 2 つ目の最大sources(第二の主要な申請者獲得源)となり、個人ネットワークを越えて世界中のプログラマーと親交を持つことが可能になり、彼らは互いに親友となりました。現在までに、これらの無料のリトリートは 3,000 人以上の方々にポジティブな影響を与えています。数十億円規模のビジネスではありませんが、創設者たちは、このような福祉志向の組織を運営することは非常に報われることであると考えており、ポール・グラハム氏の「価値は直接的な利益を必要としない」という観察例を挙げています。このモデルは、サービスの提供を通じて全球的な友情とオープンソース協力を育むことが、スケールよりもコミュニティの成長を優先する起業家にとって依然として持続可能で鼓舞的な道であることを証明しています。

Show HN:Instruments にするための Pypi ライブラリ「Instrumation」のご紹介 | そっか~ニュース