
📝 2026年10月7日に全面リライトしました
2023年7月に公開した記事を、「つくって学ぶ」の趣旨に合わせて書き直した。自分のPCに接続されている機器を実際に調べながら、入出力インターフェイスを体験できる内容になっている。
はじめに
キーボードやマウス、ディスプレイ、イヤホンなど、PCにはさまざまな機器がつながっている。機器同士をつなぐ「ケーブルの接続口の形状」や「データをやり取りする方式」が、入出力インターフェイスである。
規格が統一されているから、メーカーが違う機器でも、正常に接続できる。基本情報技術者試験のシラバスにも、USB、HDMI、Bluetooth、NFCなどのインタフェースが載っている。
今回は、身近な4つ(USB、HDMI、Bluetooth、RFID)を、自分のPCで調べながら学ぶ。コードは、GitHubリポジトリ pc-labo-hands-on の io-interface/ フォルダにまとめてある。
有線と無線
- 有線:USB、HDMI
- 無線:Bluetooth、RFID
USB
USB(Universal Serial Bus)は、周辺機器をPCにつなぐ代表的な規格である。特徴は3つある。
- バスパワー:PCから機器へ電力を供給できる。ポータブルHDDやUSBメモリなど、消費電力が小さい機器は、ACアダプターが不要である
- ホットプラグ:データの送受信中でなければ、PCの電源が入ったまま抜き差しできる
- USBハブ:ポートが足りなくても、ハブで複数の機器をつなげる

体験1:つながっているUSB機器を調べる
自分のPCで実行すること。CodespacesやWSLでは、実機のUSBは見えない。
Windows(PowerShell)
Get-PnpDevice -Class USBLinux:lsusb(lsusb -t で、つながり方がツリーで見られる)
lsusb
lsusb -t # つながり方がツリーで見られるUSBメモリを挿す前後で実行し、一覧の違いを見てみよう。ホットプラグで、抜き差しした機器が認識される様子がわかる。
HDMI
HDMI(High-Definition Multimedia Interface)は、映像・音声・制御信号を、1本のケーブルで送る規格である。以前は、映像用と音声用のケーブルを何本も使っていたが、HDMIでは配線がシンプルになり、接続間違いも減る。テレビ、PC、ゲーム機などで広く使われている。

Bluetooth
Bluetoothは、近距離でデータをやり取りする無線規格である。世界で仕様が統一されているため、対応機器なら国が違っても通信できる。イヤホン、スピーカー、マウス、キーボードなどで使われている。
Wi-Fiとの違い
| Bluetooth | Wi-Fi | |
|---|---|---|
| 主な用途 | 周辺機器との接続 | ネットワーク接続 |
| 通信距離 | 比較的短い | 比較的広い |
| 消費電力 | 比較的小さい | Bluetoothより大きい傾向 |
| 速度 | Wi-Fiより低い傾向 | Bluetoothより高い傾向 |
消費電力が少ないので、長時間使うマウスやキーボードに向いている。
体験2:Bluetooth機器を調べる
Windows(PowerShell)
Get-PnpDevice -Class BluetoothLinux(実機でアダプターがある環境のみ)
bluetoothctl devicesNo default controller available と表示されたら、そのbashからアダプターが見えていない(WSLなどではこの表示になる)。
RFID
RFID(Radio Frequency Identification)は、情報が書き込まれたICタグと、電波で通信して読み書きする仕組みである。一定範囲のタグをまとめて読み取れるため、カゴを置くだけで合計金額が出るセルフレジなどに使われている。
Suicaなどの交通系ICカードも、この仕組みを使ったサービスの一つである。また、RFIDに関連する近距離無線通信の規格にNFCがある。スマートフォンのかざす決済などで使われている。

体験3:Pythonで機器を調べるプログラムを作る
OSごとにコマンドが違うなら、それを自動で切り替えるプログラムを作ってみよう。list_devices.py として保存しよう。
※ファイルはUTF-8で保存しよう。
VS Code:右下の文字コード表示(Shift JIS)をクリック → 「エンコード付きで保存」→ UTF-8メモ帳:「名前を付けて保存」→ 文字コードを UTF-8 にして保存
import platform
import subprocess
commands = {
"Windows": ["powershell", "-Command", "Get-PnpDevice -Class USB"],
"Linux": ["lsusb"],
}
os_name = platform.system()
print(f"OS: {os_name}")
if os_name not in commands:
print("このOSには対応していません(Windows と Linux に対応)")
raise SystemExit(1)
try:
result = subprocess.run(commands[os_name], capture_output=True, text=True)
except FileNotFoundError:
print(f"コマンドが見つかりません: {commands[os_name][0]}")
print("Linuxの場合は usbutils パッケージが必要です")
raise SystemExit(1)
print(result.stdout)実行する。
python3 list_devices.pyWindowsでは、python list_devices.py で実行する。
platform.system() でOSを判定し、その環境に合ったコマンドを実行する。Linuxで lsusb が見つからない場合は、usbutils パッケージが必要である。
sudo apt install usbutilsまとめ
- 入出力インターフェイスは、接続口の形状とデータ方式の規格である
- USBは、バスパワー、ホットプラグ、ハブが特徴である
- HDMIは、映像・音声・制御信号を1本にまとめる
- Bluetoothは、近距離・低消費電力。RFIDは、ICタグと電波で通信する(関連規格にNFCがある)
- OSのコマンドで、つながっている機器を実際に確認
更新履歴
- 2026年10月7日:全面リライト(手を動かす内容に刷新)
- 2023年7月7日:初版公開




コメント