- ブラウザURL入力
- DNS名前→IP
- ルータ経路選択
- ロードバランサ振り分け
- Nginx受け口
- アプリ処理今ここ
- DB保存
この第1期では、アプリケーションが動いている「機械そのもの」を扱います。まずは全体像の一番土台、コンピュータが何をしている装置なのかから始めます。
まず結論
コンピュータは「電気が流れているか、いないか」しか区別できません。それだけで文字も画像も計算も表現しています。
そして、処理する手順(プログラム)そのものも、データと同じ場所に同じ形で置かれています。この一点が、コンピュータを「計算する機械」から「何にでもなる機械」に変えました。
コンピュータの内部で、あなたが書いたプログラム(命令の並び)は、どこに置かれているでしょうか。
当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。
区別できるのは「オンかオフか」だけ
コンピュータの話は、ここから始めるのが一番の近道です。コンピュータは、電気が流れているか流れていないかしか区別できません。
文字も、写真も、動画も、金額の計算も、すべてこの2つの状態の並びで表現されています。「0と1で動いている」という言い方を聞いたことがあると思いますが、その0と1の正体は、電圧が低い状態と高い状態です。
なぜ2種類なのでしょうか。10種類の状態を使えば、もっと効率よく数を表せそうに思えます。理由は間違えにくいからです。電圧は温度やノイズで常に多少ゆらいでいます。「高いか低いか」の2択なら、多少ゆらいでも判定を間違えません。しかし10段階に分けると、わずかなゆらぎで隣の値に化けてしまいます。正確さのために、あえて表現力を捨てているのです。
実際に見てみる
自分のPCがどんな部品でできているかは、コマンドで確認できます。Linuxでは /proc という特殊な場所に、機械自身の情報が置かれています。
Architecture: x86_64CPU op-mode(s): 32-bit, 64-bitAddress sizes: 39 bits physical, 48 bits virtualByte Order: Little EndianCPU(s): 8On-line CPU(s) list: 0-7Vendor ID: GenuineIntelModel name: Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz
CPU(s): 8 は、計算する装置が8個あるという意味です。3.00GHz は、1秒間に30億回のペースで動作の刻みを刻んでいるという意味です。この「刻み」が、次のレッスン以降で出てくるクロックです。
コンピュータが2種類の状態しか使わないのは、なぜでしょうか。
手順もまた、データと同じ場所に置かれている
ここからが、コンピュータという発明の核心です。
コンピュータには「何をするか」の手順、つまりプログラムが必要です。ではその手順はどこに置かれているのでしょうか。答えは、データと同じメモリの中に、同じ0と1の並びとして置かれているです。
当たり前に聞こえるかもしれませんが、これは当たり前ではありませんでした。初期の計算機は、別の計算をさせるために物理的に配線をつなぎ替える必要がありました。計算のたびに、人が何時間もかけてケーブルを差し替えていたのです。
手順をデータと同じメモリに置くようにしたことで、配線を触らずに、メモリの中身を入れ替えるだけで全く別の仕事をさせられるようになりました。あなたのPCで文書作成ソフトもゲームもブラウザも動くのは、この設計のおかげです。ハードウェアは何も変わっていません。メモリに置かれた0と1の並びが違うだけです。
- ・初期の計算機は、これを物理的な配線のつなぎ替えでやっていた
- ・手順をデータと同じ形でメモリに置く、という発想が汎用機械を生んだ
3つの装置の役割分担
コンピュータの中身は、ざっくり3つに分かれます。それぞれ「速さ」と「消えるかどうか」が違い、その違いが役割分担を決めています。
装置 役割 電源を切ると 速さCPU 計算する — —メモリ 今使っている命令とデータ 消える 速いストレージ 消えては困るものを保管 残る 遅い
メモリは作業机、ストレージは書庫と考えると分かりやすいです。今開いている資料は机の上(メモリ)に広げておき、使わないものは書庫(ストレージ)にしまいます。机は取り出しが速いけれど狭く、しかも帰宅時(電源オフ)に片付けられてしまいます。書庫は広くて残りますが、取りに行くのに時間がかかります。
アプリを起動すると時間がかかるのは、書庫から机へ資料を運んでいるからです。一度起動したアプリの切り替えが速いのは、すでに机の上にあるからです。
PCの電源を切ると、メモリの内容はどうなりますか。
この章のまとめ
- コンピュータが区別できるのは「電圧が高いか低いか」の2状態だけ。正確さのために表現力を捨てている。
- 処理の手順(プログラム)は、データと同じメモリに同じ0と1として置かれる。これがコンピュータを汎用機械にした。
- CPUが計算し、メモリが作業中のものを保持し、ストレージが消えては困るものを保管する。
- メモリは速いが電源で消える。ストレージは遅いが残る。この性質の違いが役割分担を決めている。
自分の現場で確かめる
読んだだけでは身につきません。手元の環境で実際に見てみてください。
理解度チェック
読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。
コンピュータが内部で区別できるのは、突き詰めると何種類の状態でしょうか。
用語集(5語)
- ビット (bit)
- コンピュータが扱う情報の最小単位。0か1のどちらかを表す。物理的には「電圧が低いか高いか」に対応する。
- プログラム内蔵方式
- 処理の手順(プログラム)を、データと同じメモリ上に同じ形式で置く設計。配線を変えずにメモリの中身を変えるだけで別の処理をさせられる。現代のほぼ全てのコンピュータがこの方式。
- CPU (中央処理装置)
- メモリから命令を取り出して解釈し、計算を実行する装置。コンピュータの中で実際に「処理」をしている部分。
- メモリ (主記憶)
- CPUが今まさに使っている命令とデータを置く場所。高速だが電源を切ると内容が消える(揮発性)。
- ストレージ (補助記憶)
- 電源を切っても残したいものを保管する場所。SSDやHDD。メモリより遅いが大容量で、電源を切っても消えない(不揮発性)。