この節は LLM を活用して執筆しています
本節の本文は LLM(大規模言語モデル)を活用して執筆しています。 技術的な内容は執筆者が検証していますが、誤りに気付かれた際は リポジトリの Issue やプルリクエストでご指摘いただけると助かります。
執筆に使用したモデル: Claude Opus 4.7
コンピュータの基本的な仕組み
前の節で、プログラムとは「コンピュータへの命令の集まり」だと学びました。
では、その命令を受け取って実行するコンピュータは、どのような仕組みで動いているのでしょうか。
プログラミングを学ぶうえで、コンピュータの内部構造に詳しくなる必要はありません。しかし、おおまかな仕組みを知っておくと、これから学ぶ多くのことが理解しやすくなります。
たとえば、
- なぜプログラムは「実行する」と動き、閉じると消えるのか
- なぜデータを「保存」しないと次に開いたとき消えてしまうのか
- なぜ大きなデータを扱うと動作が遅くなることがあるのか
といった疑問は、コンピュータの仕組みを知ることで、すっきりと理解できます。
この節では、コンピュータを動かしている主要な部品を、料理の現場にたとえながら見ていきます。
コンピュータは「3つの役割」で動いている
コンピュータには非常に多くの部品が使われていますが、プログラムを動かすという観点では、次の3つが特に重要です。
前の節で、プログラムを料理のレシピにたとえました。その例えを続けると、コンピュータは次のような料理の現場に見立てられます。
この3つの関係を図にすると、次のようになります。
それぞれを順番に見ていきましょう。
CPU ― 計算と判断を行う頭脳
CPU(Central Processing Unit、中央処理装置)は、コンピュータの中心となる部品です。日本語では「中央処理装置」と呼びますが、ふだんは CPU(シーピーユー)と呼ぶことがほとんどです。
CPU の仕事は、プログラムに書かれた命令を、1つずつ取り出して実行することです。
- 数値を足したり引いたりする
- 2つの値が等しいかどうかを比べる
- 条件によって次に行う処理を変える
- データをある場所から別の場所へ移す
こうした細かい作業を、CPU はものすごい速さで繰り返します。
CPU が1秒間にどれだけの作業をこなせるかは、クロック周波数という値でおおまかに表されます。単位は Hz(ヘルツ)で、たとえば「3 GHz(ギガヘルツ)」の CPU は、1秒間におよそ30億回ものペースで動作します。
料理人にたとえると、CPU はレシピを読みながら実際に手を動かす料理人です。ただし、この料理人は1つずつしか作業できない代わりに、人間とは比べものにならないほど高速に手を動かします。
補足: コアとは
最近の CPU には「4コア」「8コア」といった表記があります。コア(Core)とは、CPU の中にある「実際に作業をする部分」のことです。コアが複数あると、料理人が複数人いるように、いくつもの作業を同時に進められます。並行処理については後の章であらためて学びます。
メモリ ― 作業中のデータを広げる場所
メモリ(Memory)は、CPU が作業をするときに、データや命令を一時的に置いておく場所です。「主記憶装置」や RAM(Random Access Memory、ラム)とも呼ばれます。
CPU は、ストレージ(保管庫)から直接作業するのではなく、いったんメモリにデータを広げてから作業します。なぜなら、メモリはストレージよりもずっと高速に読み書きできるからです。
料理にたとえると、メモリは調理台です。
料理をするとき、冷蔵庫の前で作業はしませんよね。必要な材料や道具を冷蔵庫から取り出し、調理台に広げてから調理を始めます。調理台が広ければ広いほど、たくさんの材料を同時に扱えて、効率よく料理ができます。
メモリには、次のような特徴があります。
- 高速 : CPU がすばやく読み書きできる
- 容量は比較的小さい : ストレージに比べると、置けるデータの量は少ない
- 電源を切ると消える : 一時的な作業場所なので、電源を切ると中身は失われる
この「電源を切ると消える」という性質を、揮発性(きはつせい、Volatile)と呼びます。
調理台は、料理が終わって片付ければ何も残りません。メモリも同じで、作業が終わったり電源を切ったりすると、内容は消えてしまいます。
だからこそ、作った文章や画像などを残しておきたいときは、次に説明するストレージに保存する必要があるのです。
ストレージ ― データを長期間しまっておく保管庫
ストレージ(Storage)は、データを長期間しまっておくための場所です。「補助記憶装置」とも呼ばれます。
代表的なストレージには、次のようなものがあります。
- SSD(Solid State Drive) : 半導体を使った高速なストレージ。現在の主流
- HDD(Hard Disk Drive) : 円盤を回転させて記録する、昔から使われているストレージ
料理にたとえると、ストレージは冷蔵庫や倉庫です。
材料は、ふだん冷蔵庫や倉庫にしまっておきます。料理をするときだけ調理台(メモリ)に出してきて、終わったらまたしまいます。
ストレージには、次のような特徴があります。
- 大容量 : 写真、動画、書類など、たくさんのデータを保存できる
- メモリより低速 : 読み書きの速さはメモリにおよばない
- 電源を切っても消えない : 保存したデータは、電源を切っても残り続ける
この「電源を切っても消えない」という性質を、不揮発性(ふきはつせい、Non-volatile)と呼びます。
倉庫にしまった荷物は、扉を閉めても、次に開けたときにそのまま残っています。ストレージも同じように、電源を切ったあとも、保存したデータをずっと保ち続けます。
メモリとストレージの違い
メモリとストレージは、どちらも「データを置く場所」です。そのため、初めて学ぶときには混同しやすいところです。
両者の違いを、表で整理してみましょう。
| メモリ(調理台) | ストレージ(冷蔵庫・倉庫) | |
|---|---|---|
| 役割 | 作業中のデータを置く | データを長期間しまっておく |
| 速さ | 速い | メモリより遅い |
| 容量 | 比較的小さい | 大きい |
| 電源を切ると | 消える(揮発性) | 残る(不揮発性) |
ここで、よくある体験を思い出してみましょう。
文章を書いているとき、保存をしないままアプリを閉じてしまい、書いた内容が消えてしまった、という経験はないでしょうか。
これは、書いている途中の文章がメモリ(調理台)の上にしかなかったために起こります。保存という操作をして、はじめて文章はストレージ(冷蔵庫・倉庫)にしまわれ、次に開いたときも残っているのです。
「こまめに保存しましょう」と言われるのは、この仕組みがあるからです。
プログラムが動くときの流れ
ここまでの内容をふまえて、プログラムが実行されるときの流れを見てみましょう。
たとえば、あなたがあるアプリを起動したとします。このとき、コンピュータの中では、おおまかに次のことが起こっています。
料理にたとえると、
という流れになります。
このように、CPU・メモリ・ストレージは、それぞれ役割を分担しながら協力して動いています。
コンピュータは 0 と 1 だけで動いている
ここまで、CPU・メモリ・ストレージという部品を見てきました。
では、これらの部品が扱っている「データ」とは、実際にはどのようなものなのでしょうか。
実は、コンピュータの内部では、すべての情報が 0 と 1 の組み合わせだけで表現されています。
文字も、数値も、画像も、音声も、プログラムそのものでさえ、最終的にはすべて 0 と 1 の並びになっています。
この 0 と 1 のひとつひとつを ビット(bit)と呼びます。そして、ビットを8個まとめたものを バイト(byte)と呼びます。
なぜ 0 と 1 なのかというと、コンピュータが電気で動いているからです。「電気が流れている/流れていない」「電圧が高い/低い」という2つの状態を、0 と 1 に対応させているのです。
2つの状態しか使わないので一見不便に思えますが、0 と 1 を組み合わせれば、どんな情報でも表現できます。たとえば 1 バイト(8 ビット)あれば、2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 256 通りのパターンを表せます。
ファイルの大きさを表す「KB(キロバイト)」「MB(メガバイト)」「GB(ギガバイト)」といった単位も、このバイトをもとにしています。
補足: いまは深く覚えなくて大丈夫
0 と 1 やビット・バイトの話は、最初はピンとこないかもしれません。いまは「コンピュータの中では、すべてが 0 と 1 で表されている」とだけ知っておけば十分です。数値や文字が実際にどう表現されるかは、後の「変数とデータ型」の章でくわしく学びます。
Java を学ぶうえでの安心材料
ここまで読んで、「コンピュータの仕組みは複雑そうだ」と感じたかもしれません。
しかし、安心してください。
Java でプログラムを書くとき、私たちは CPU の細かい動きや、メモリ上のデータの並びを、ひとつひとつ意識する必要はありません。
たとえば、
- メモリのどこにデータを置くか
- 使い終わったメモリをどう片付けるか
- CPU がどの命令をどの順で実行するか
といったことの多くは、Java が自動的に面倒を見てくれます。
私たちは「何をしたいか」を Java の言葉で書くことに集中できます。そして、それを CPU が理解できる形に変換し、適切に実行する役割は、後の節で学ぶ JVM(Java 仮想マシン)が担ってくれます。
このように、難しい部分をうまく隠してくれることは、Java という言語の大きな魅力のひとつです。
まとめ
この節では、コンピュータの基本的な仕組みを学びました。
- コンピュータは、CPU・メモリ・ストレージという部品が協力して動いている
- CPU は、命令を1つずつ高速に実行する「頭脳」である(料理人にあたる)
- メモリ は、作業中のデータを置く高速な場所だが、電源を切ると消える(調理台にあたる)
- ストレージ は、データを長期間しまっておく大容量の場所で、電源を切っても残る(冷蔵庫・倉庫にあたる)
- メモリは揮発性、ストレージは不揮発性という違いがある
- だからこそ、残したいデータは「保存」してストレージに書き込む必要がある
- プログラムは「ストレージから読み込み → CPU が実行 → 結果を出力」という流れで動く
- コンピュータの内部では、すべての情報が 0 と 1(ビット)で表されている
- Java では、こうした細かい仕組みの多くを言語が自動的に面倒を見てくれる
コンピュータの仕組みがわかると、これから学ぶ内容の「なぜ」が理解しやすくなります。
次の節では、本書で学ぶ Java という言語が、いつ、どのように生まれ、どのように発展してきたのかを見ていきます。
Footnotes
-
Oxford English Dictionary, "computer, n." 初期の用例(17世紀以降)では「計算を行う人」を指す。Grier, David Alan, When Computers Were Human (Princeton University Press, 2005) も歴史的経緯を詳述している。 ↩
-
NASA, "When the Computer Wore a Skirt: Langley's Computers, 1935–1970," https://www.nasa.gov/centers-and-facilities/langley/when-the-computer-wore-a-skirt-langleys-human-computers-1935-1970/。NASA ラングレー研究所では、女性たちが「人間コンピュータ」として弾道計算などに従事していた歴史が公式に紹介されている。 ↩
-
IEC 80000-13:2008, "Quantities and units — Part 13: Information science and technology." 国際電気標準会議は2進接頭辞 KiB(=1024 バイト)と SI 接頭辞 kB(=1000 バイト)を明確に区別している。NIST, "Prefixes for binary multiples," https://physics.nist.gov/cuu/Units/binary.html も参照。 ↩