1章 — プログラミングとは・Java とは

コンピュータの基本的な仕組み

この節は LLM を活用して執筆しています

本節の本文は LLM(大規模言語モデル)を活用して執筆しています。 技術的な内容は執筆者が検証していますが、誤りに気付かれた際は リポジトリの Issue やプルリクエストでご指摘いただけると助かります。

執筆に使用したモデル: Claude Opus 4.7

コンピュータの基本的な仕組み

前の節で、プログラムとは「コンピュータへの命令の集まり」だと学びました。

では、その命令を受け取って実行するコンピュータは、どのような仕組みで動いているのでしょうか。

プログラミングを学ぶうえで、コンピュータの内部構造に詳しくなる必要はありません。しかし、おおまかな仕組みを知っておくと、これから学ぶ多くのことが理解しやすくなります。

たとえば、

  • なぜプログラムは「実行する」と動き、閉じると消えるのか
  • なぜデータを「保存」しないと次に開いたとき消えてしまうのか
  • なぜ大きなデータを扱うと動作が遅くなることがあるのか

といった疑問は、コンピュータの仕組みを知ることで、すっきりと理解できます。

この節では、コンピュータを動かしている主要な部品を、料理の現場にたとえながら見ていきます。


コンピュータは「3つの役割」で動いている

コンピュータには非常に多くの部品が使われていますが、プログラムを動かすという観点では、次の3つが特に重要です。

前の節で、プログラムを料理のレシピにたとえました。その例えを続けると、コンピュータは次のような料理の現場に見立てられます。

この3つの関係を図にすると、次のようになります。

CPU・メモリ・ストレージの関係。ストレージ(冷蔵庫・倉庫)からメモリ(調理台)へデータを読み込み、CPU(料理人)がメモリ上で処理する。

それぞれを順番に見ていきましょう。


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

  1. Oxford English Dictionary, "computer, n." 初期の用例(17世紀以降)では「計算を行う人」を指す。Grier, David Alan, When Computers Were Human (Princeton University Press, 2005) も歴史的経緯を詳述している。

  2. 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 ラングレー研究所では、女性たちが「人間コンピュータ」として弾道計算などに従事していた歴史が公式に紹介されている。

  3. 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 も参照。