入出力インターフェイス~自分のPCで確かめる~

コンピュータのしくみ
OSくん
OSくん

📝 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ハブ:ポートが足りなくても、ハブで複数の機器をつなげる
USB Type-C

体験1:つながっているUSB機器を調べる

自分のPCで実行すること。CodespacesやWSLでは、実機のUSBは見えない。

Windows(PowerShell)

Get-PnpDevice -Class USB

Linux:lsusb(lsusb -t で、つながり方がツリーで見られる)

lsusb
lsusb -t   # つながり方がツリーで見られる

USBメモリを挿す前後で実行し、一覧の違いを見てみよう。ホットプラグで、抜き差しした機器が認識される様子がわかる。

HDMI

HDMI(High-Definition Multimedia Interface)は、映像・音声・制御信号を、1本のケーブルで送る規格である。以前は、映像用と音声用のケーブルを何本も使っていたが、HDMIでは配線がシンプルになり、接続間違いも減る。テレビ、PC、ゲーム機などで広く使われている。

HDMI

Bluetooth

Bluetoothは、近距離でデータをやり取りする無線規格である。世界で仕様が統一されているため、対応機器なら国が違っても通信できる。イヤホン、スピーカー、マウス、キーボードなどで使われている。

Wi-Fiとの違い

BluetoothWi-Fi
主な用途周辺機器との接続ネットワーク接続
通信距離比較的短い比較的広い
消費電力比較的小さいBluetoothより大きい傾向
速度Wi-Fiより低い傾向Bluetoothより高い傾向

消費電力が少ないので、長時間使うマウスやキーボードに向いている。

体験2:Bluetooth機器を調べる

Windows(PowerShell)

Get-PnpDevice -Class Bluetooth

Linux(実機でアダプターがある環境のみ)

bluetoothctl devices

No default controller available と表示されたら、そのbashからアダプターが見えていない(WSLなどではこの表示になる)。

RFID

RFID(Radio Frequency Identification)は、情報が書き込まれたICタグと、電波で通信して読み書きする仕組みである。一定範囲のタグをまとめて読み取れるため、カゴを置くだけで合計金額が出るセルフレジなどに使われている。

Suicaなどの交通系ICカードも、この仕組みを使ったサービスの一つである。また、RFIDに関連する近距離無線通信の規格にNFCがある。スマートフォンのかざす決済などで使われている。

RFID

体験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.py

Windowsでは、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日:初版公開

コメント

タイトルとURLをコピーしました