コンピュータのしくみ初心者向け基本コース

LESSON 01 ・ INPUT

入力装置のいろいろ

入力装置は、人の操作や現実世界の変化を検出し、コンピュータが保存・計算できるデータへ変える「入口」です。

BIG PICTURE

現実世界からプログラムまで

ノイマン型コンピュータの5大機能では「入力」に当たります。装置が意味を判断するのではなく、検出した変化を決められた形式で渡します。

人・周囲押す、動かす、話す、光や温度が変わる
検出スイッチやセンサーが物理的な変化を電気信号へ変える
符号化回路が信号を数値、位置、コードなどへ整える
OS・アプリ入力データを受け取り、プログラムの処理に利用する

大切な区別:キーを押した事実、文字「G」、画面に描かれたGは別の段階です。入力装置、OS、アプリ、出力装置が順に役割を分担します。

INSIDE AN INPUT DEVICE

入力装置の中にある四つの役割

装置の形が違っても、検出から送信までの考え方は共通しています。

1. 検出する

やスイッチが、光、音、力、位置などの変化を電圧や電気的なON/OFFへ変えます。

2. 信号を整える

小さな信号を増幅し、不要な揺れを減らします。機械式スイッチでは、一度押しただけなのに細かくON/OFFするも除きます。

3. データへ変える

連続した電圧はA/D変換し、キーやボタンには識別番号を付けます。カメラなら画素ごとの明るさと色の値になります。

4. まとめて送る

装置内のコントローラが値を一時保持し、USB、Bluetooth、内部バスなどの決められた通信方式でコンピュータへ送ります。

DEVICE TYPES

何を測るかで、装置が変わる

入力データの形、送る頻度、必要な正確さを比べると、各装置の違いが見えてきます。

装置検出するもの主なデータ送られ方
キーボードキーのON/OFFキーの識別情報、押す/離す変化が起きたとき
マウス移動、ボタン、ホイール移動量または位置、ボタン状態短い間隔で繰り返す
タッチパネル触れた位置や圧力X・Y座標、指の数触れている間、連続的
マイク空気の振動時刻ごとの音の大きさ一定の標本化周波数
カメラ画素へ届く光画素ごとの明るさと色1秒に複数の画像
温度・加速度センサー温度、加速度、回転など測定値と時刻定期的または変化時

位置を表す方法も二つある

マウスは「前回からどれだけ動いたか」という相対量、タッチパネルは「画面のどこか」という絶対位置を主に送ります。アプリはこの違いをOSから統一された入力イベントとして受け取れます。

ANALOG TO DIGITAL

連続した変化を、有限個の数値へ

音、光、温度のような量はなめらかに変化します。コンピュータで扱うには「いつ測るか」と「どの数値に丸めるか」を決めます。

標本化

一定の時間間隔で値を測ります。1秒に測る回数をと呼びます。

量子化

測った値を最も近い段階へ丸めます。8ビットなら通常256段階、16ビットなら65,536段階を表せます。

符号化

丸めた数値をビット列にします。装置の種類、値、時刻などを決められたデータ形式で送ります。

A/DはAnalog-to-Digital(アナログ・デジタル)変換の略です。値を細かく表すほどデータ量は増えますが、センサー自体の精度や雑音も結果に影響します。

SMALL EXPERIMENT

8ビットA/D変換を観察する

つまみを連続的に動かし、「測定」した瞬間の値が0〜255の整数と8個のビットへ変わる様子を見ます。

ここでは0%を0、100%を255へ対応させます。実際の装置では基準電圧、増幅、雑音除去なども必要です。

変換された入力データ

10進数:107 / 16進数:0x6B

42%に最も近い8ビット値として107を記録しました。

DEVICE TO APPLICATION

入力は、装置からアプリへ直接届くとは限らない

現在のコンピュータでは、複数の回路とソフトウェアが入力を安全で扱いやすい形へつなぎます。

  1. 装置内コントローラが測定値やボタン状態を小さなデータのまとまりへ整える。
  2. USBなどの接続を通り、コンピュータ側のI/Oコントローラへ届く。
  3. デバイスドライバが装置固有のデータをOSの共通形式へ変える。
  4. 割り込みでCPUへ到着を知らせるか、一定間隔で状態を調べる。大量データではDMAにより主記憶へ転送することもある。
  5. OSの入力イベントやバッファを通して、現在入力を受け付けているアプリへ渡す。
装置ごとの違いを吸収し、OSから利用できるようにします。
入力が来るまでCPUが装置を見張り続ける必要を減らします。
カメラや音声などのまとまったデータを、CPUの負担を抑えて主記憶へ移します。
バッファ
到着時刻のばらつきや、装置とプログラムの処理速度の差を埋める一時置き場です。

FOLLOW ONE KEY

「G」キーを押してから文字になるまで

キーボードが最初から文字「G」を完成させて送るわけではありません。

  1. キーマトリクスを調べるキーボード内のコントローラが行と列を順に調べ、どのスイッチが閉じたかを見つけます。
  2. 押したキーの識別情報を送るUSB HIDなどの形式で、押した/離した状態とキーの位置に対応する情報を送ります。
  3. OSがキー入力として解釈するキーボード配列、Shiftなどの修飾キー、入力方式を確認します。
  4. アプリが文字を文書へ加える文字コードで表したGを文書データへ加え、主記憶上の内容を更新します。
  5. 出力処理へ進むフォントから文字の形を作り、GPUや表示回路を通してディスプレイへ表示します。

HOW TO COMPARE

入力装置の性能を見る四つの観点

分解能位置や大きさを、どれだけ細かい段階で区別できるか。
測定頻度1秒間に何回、変化を捉えて送れるか。
遅延変化が起きてからプログラムへ届くまでの時間。
精度・雑音真の値にどれだけ近く、不要な揺れがどれだけ少ないか。

入力は、信頼してよいとは限らない

故障したセンサー、誤操作、不正なUSB機器、カメラやマイクのプライバシーなども考える必要があります。OSの権限確認や入力値の検査は、入力を安全に使うための重要な処理です。

よくある誤解

入力装置はキーボードやマウスだけではありません。マイク、カメラ、温度計、ゲームコントローラ、ネットワークから受け取るデータも、システムにとっての入力です。また、タッチパネルのように入力と出力の両方を行う装置もあります。

CHECK

確かめてみよう

マイクが音を入力するとき、標本化と量子化は何をしますか?

標本化は一定の時間間隔で音の信号を測り、量子化は測った大きさを有限個の数値のどれかへ丸めます。

キーボードが送る情報と、アプリに入る文字はなぜ同じとは限りませんか?

キーボードは主にキーの位置と状態を送り、OSが配列、修飾キー、入力方式を使って文字や操作へ解釈するからです。

割り込みとDMAは何のために使われますか?

割り込みは入力の到着をCPUへ知らせます。DMAはカメラ画像などのまとまったデータを、CPUが1項目ずつ運ばずに主記憶へ転送します。

入力装置の「分解能」と「遅延」は何が違いますか?

分解能は値を区別できる細かさ、遅延は現実の変化からプログラムへ届くまでの時間です。