はじめに
ふだんプログラミングを学んでいると、コンピューターの世界は「0」と「1」でできている、という話はよく耳にすると思います。でも、その0と1は、そもそもどこからやってくるのでしょうか。
実は、その土台にあるのは「波」と「電気」という、れっきとした物理の世界です。Wi-Fiの電波、スピーカーから出る音、CPUの中を駆け巡る信号――これらはすべて、波や電気という自然現象をうまく利用したものにすぎません。
普段はソフトウェアの世界に隠れて意識することのないこの土台を、今回は少しだけのぞいてみましょう。難しい数式は使いません。身近なものに例えながら、ゆっくり進めていきます。
すべての通信は「波」から始まる
波とは何か
池に石を投げ込むと、波紋が水面に広がっていきますよね。あの現象こそが「波」の分かりやすい例です。
波とは、ある場所で発生した「揺れ」が、次々と隣に伝わっていく現象のことです。ポイントは、波そのものが「物」を運んでいるわけではないという点です。水面の波紋が広がっても、水そのものが遠くまで流されていくわけではなく、その場で上下に揺れているだけです。伝わっているのは「エネルギー」や「揺れというパターン」であって、「物質」ではありません。
波には2つのタイプがある
波は、揺れ方によって大きく2種類に分けられます。
横波:揺れる方向が、波が進む方向に対して垂直(横向き)になる波。ギターの弦をはじいたときの振動や、光がこのタイプです
縦波:揺れる方向が、波の進む方向と同じ(前後方向)になる波。音は空気の密度が濃くなったり薄くなったりしながら伝わる、縦波の代表例です
どちらの波にも、共通して押さえておきたい3つの基本要素があります。
波長と周波数は、シーソーのような関係にあります。波長が長くなるほど、1秒間に通れる波の数は少なくなるので、周波数は低くなります。逆に波長が短いほど、周波数は高くなります。そして、周波数が高い波ほど、大きなエネルギーを持っている、という特徴もあります。
電波も光もX線も、実は「同じ仲間」
ラジオの電波、目に見える光、レントゲンで使うX線――これらはまったく別物のように思えますが、実は全部「電磁波」という同じ種類の波の仲間です。違いは、ただ1つ、波長(周波数)だけです。
波長が長い順に並べると、おおよそ次のようになります。
電波(ラジオ・Wi-Fi・Bluetoothなど)→ 赤外線 → 可視光線(私たちに見える光)→ 紫外線 → X線 → ガンマ線
私たちの目に見える「光」は、実はこの広大な電磁波の世界のうち、ほんの一部の波長だけを人間の目が捉えられるようになっているに過ぎません。Wi-Fiルーターが飛ばしている電波も、電子レンジが使うマイクロ波も、レントゲン撮影のX線も、すべて「波長の違う仲間」だと考えると、世界の見え方が少し変わってくるかもしれません。
波に「情報」を乗せる仕組み
波の性質が分かったところで、次の疑問が浮かびます。ただの波が、どうやって「データ」を運べるのでしょうか。
一番シンプルな方法:波をON/OFFする
最もシンプルな方法は、波を出したり止めたりすることです。モールス信号がまさにこれで、電気信号を短く出す「トン」と、長く出す「ツー」を組み合わせて、アルファベットを表現します。遭難信号の「SOS」は、トン・トン・トン、ツー・ツー・ツー、トン・トン・トンという9回の信号の組み合わせで表されます。
ただ、この方法には限界があります。モールス信号を打つには専門の技術が必要ですし、速度にも限界があるからです。もっと速く、機械的に大量の情報を送るには、別の工夫が必要になります。
波を「変化」させて情報を乗せる:変調
そこで登場するのが「変調」という技術です。安定して発信され続けている波(これを搬送波と呼びます)に対して、伝えたい情報に応じて、波の何かしらの性質を変化させる方法です。代表的なものが次の2つです。
AM(振幅変調):波の「高さ(振幅)」を、情報に合わせて変化させる方式。日本語で言う「AMラジオ」のAMはこれです
FM(周波数変調):波の「間隔(周波数)」を、情報に合わせて変化させる方式。「FMラジオ」のFMはこちらです
たとえるなら、AMは「声の大きさ」でモールス信号を送るようなもの、FMは「声の高さ」でモールス信号を送るようなものだとイメージすると分かりやすいかもしれません。どちらも、受信側は「基準となる波」と「実際に届いた波」を見比べることで、変化した分だけを取り出し、元の情報を復元します。
現在のWi-FiやBluetoothなど、デジタルなデータを無線でやり取りする通信でも、根本の考え方はこの変調がベースになっています(実際にはもっと複雑な方式が使われていますが、「波の何かを変化させて情報を乗せる」という原理は共通です)。
電気の基本を理解する
波の次は、コンピューターのもう1つの土台である「電気」を見ていきましょう。
電気の正体は「電子の移動」
すべての物質は「原子」でできていて、原子の中心には原子核があり、その周りを「電子」が飛び回っています。銅や銀のような金属では、電子の一部が原子にしっかり縛られておらず、隣の原子へ自由に移動できる性質を持っています。
この「電子が自由に移動する現象」こそが、電気の正体です。面白いことに、電子1つひとつが動く速さそのものはそれほど速くありません。しかし、片方の端で電子を押し出すと、その「圧力」が導線の中を伝わっていく効果は、光とほぼ同じ速度(毎秒約30万km)で伝わります。導線の端でスイッチを入れた瞬間、反対側の端でほぼ一瞬で電気が流れ始めるように感じるのは、この効果のスピードのおかげです。
電気を理解する3つの単位
電気を扱ううえで、絶対に押さえておきたい3つの言葉があります。水道の水にたとえると、直感的に理解しやすくなります。
水圧(電圧)が高いほど、たくさんの水(電流)を押し出せます。逆に、パイプが細い(抵抗が大きい)と、同じ水圧でも流れる水の量(電流)は少なくなります。この3つの関係は、電子工作の世界で必ず出てくる「オームの法則」という、たった1つのシンプルな式にまとめられます。
電圧 = 電流 × 抵抗
この式さえ頭に入れておけば、「電圧を上げれば、同じ抵抗でもより多くの電流を流せる」「抵抗を大きくすれば、同じ電圧でも電流は小さくなる」といった、電気回路の基本的な振る舞いを理解できるようになります。
交流と直流
コンセントから送られてくる電気には、流れる向きが周期的に入れ替わる「交流(AC)」が使われています。一方、電池やパソコン内部の回路で使われるのは、常に同じ向きにしか流れない「直流(DC)」です。
発電所で作られた電気は交流の形で送られてきますが、パソコンの中の部品はほとんどが直流で動きます。そのためパソコンの電源ユニットの中では、コンセントからの交流を直流に変換する処理が行われています。
電気を「操る」部品たち
電気の基本が分かったところで、実際の電子機器の中で、電気を思い通りにコントロールしている代表的な部品を2つだけ紹介します。
抵抗器:電流の流れにくさ(抵抗)を意図的に作り出す部品です。電流を必要な大きさに調整するために使われます
コンデンサー:電気を一時的に蓄えたり、放出したりする部品です。カメラのフラッシュのように「一気に大きな電流を必要とする場面」や、電気の流れを滑らかにする用途などに使われます
普段は基板の上の小さな部品としか見えないこれらのパーツも、それぞれ「電気の流れをどう操るか」という明確な役割を持っているわけです。
コンピューターは、連続した世界を「0と1」にどう変えるのか
さて、ここまでの「波」と「電気」の話を踏まえて、いよいよ本題です。私たちの身の回りにある音や光、温度といった現象は、すべて滑らかに連続して変化する「アナログ」な情報です。ところが、コンピューターが理解できるのは「0」と「1」だけの「デジタル」な情報だけです。この全く性質の異なる2つの世界を、一体どうやってつないでいるのでしょうか。
アナログとデジタルの違い
昔ながらの、針がなめらかに円を描き続ける腕時計を思い浮かべてください。秒針は「3時ちょうど」だけでなく、「3時0分12.4秒」のような、無限に細かい途中の位置も理論上は取ることができます。これがアナログです。
一方、数字がパッと切り替わって表示されるデジタル時計は違います。表示される時刻は「14時03分12秒」のように、1秒刻みの飛び飛びの値として扱われ、その間の細かい状態は存在しません。
コンピューターの内部にある回路(トランジスタ)は、電気が「流れている」か「流れていない」かのどちらかの状態しか取れません。つまり、コンピューターはその性質上、アナログな連続量をそのまま扱うことができず、必ず0か1かの、飛び飛びの値に変換する必要があるのです。
アナログをデジタルに変える:サンプリング
では、連続的なアナログの情報を、どうやって飛び飛びのデジタル情報に変換しているのでしょうか。ここで使われるのが「サンプリング(標本化)」という考え方です。
たとえば、1時間ごとに気温を測って記録することを考えてみましょう。実際の気温は1日を通じてなめらかに変化していますが、「1時間ごと」という一定の間隔で区切って記録すれば、連続的な変化を、飛び飛びの数値の並びとして記録できます。これがサンプリングの基本的な考え方です。
この「区切る間隔」のことをサンプリングレート(標本化周波数)と呼びます。1時間ごとより30分ごと、30分ごとより10分ごとに測るほうが、元の気温の変化をより正確に再現できますよね。サンプリングレートが高ければ高いほど、元のアナログな情報に忠実なデータが得られます。音楽CDの音質が「44.1kHz」と表記されているのを見たことがある方もいると思いますが、これはまさに「1秒間に44,100回、音の波を測定している」という意味です。
さらに、「測定した値を、どれくらい細かい数値で記録するか」も重要です。これを量子化と呼びます。たとえば気温を「整数」だけで記録するのか、「小数点第1位」まで記録するのかで、記録の精度は変わってきます。コンピューターの世界では、この精度を「ビット数」で表現します。8ビットなら256段階、16ビットなら65,536段階というように、ビット数が多いほど、より滑らかで精密な記録が可能になります。
このサンプリングと量子化をあわせて行う処理を、専門的には「A/D変換(アナログ-デジタル変換)」と呼びます。マイクが拾った音声、カメラのセンサーが捉えた光、スマートフォンのタッチパネルが感知した指の圧力――これらはすべて、まずアナログな信号として発生し、A/D変換によってコンピューターが扱える0と1のデータに変換されているのです。
デジタルをアナログに戻す:D/A変換
逆に、コンピューターの中にある0と1のデータを、私たち人間が知覚できる音や光に戻す処理も必要です。これが「D/A変換(デジタル-アナログ変換)」です。スピーカーから音楽が聞こえるのも、ディスプレイに映像が映るのも、すべてこのD/A変換によって、デジタルデータが再びアナログな波(音や光)に変換されているおかげです。
つまり、私たちが日常的に使っているデジタル機器は、常に「アナログ→デジタル」「デジタル→アナログ」という変換を、目にも留まらぬ速さで繰り返しながら動いているというわけです。
まとめ
今回は、コンピューターの「0と1」の、さらに一歩手前にある物理の世界を見てきました。
・情報を遠くまで伝える手段の土台には「波」があり、波長・周波数・振幅という3つの基本要素で特徴づけられる
・電波も光もX線も、波長が違うだけの「電磁波」という同じ仲間である
・波に情報を乗せる技術が「変調」で、AM(振幅を変える)やFM(周波数を変える)といった方式がある
・電気の正体は「電子の移動」であり、電圧・電流・抵抗という3つの量の関係(オームの法則)で理解できる
・コンピューターは0か1かしか扱えないため、アナログな現実世界の情報を「サンプリング」と「量子化」によってデジタルデータに変換している(A/D変換)。逆に、デジタルデータを人間が知覚できる形に戻す処理がD/A変換である
ふだんコードを書いているときには意識することのない世界ですが、こうした物理の土台を知っておくと、「なぜWi-Fiは壁に弱いのか」「なぜ音楽ファイルには色々なビットレートがあるのか」「なぜアナログ回線からデジタル回線への移行が大変だったのか」といった、実務で出会う様々な疑問に対しても、一段深いところから納得できるようになるはずです。
技術の世界は、上に行けば行くほどソフトウェアの話になりますが、その一番下では、今回紹介したような、ごくシンプルな物理法則が静かに働き続けています。たまにはそんな「土台」に思いを馳せてみるのも、悪くないのではないでしょうか。
お知らせ
遂に、山ブログが完成しました。山登りブログを見てみたい方はぜひ
下のURLから見てもらえたら嬉しいです。
https:/note.com/vivid_quince8659/n/n2d417c83a103(:の後に/を付け足してもらえたら)