このレッスンでは、コンピュータについて基礎から学びます。コンピュータの中身を理解することで、その仕組みや特徴を深く知ることを目指します。
コンピュータは、ハードウェアとソフトウェアで構成されます。それぞれの役割や構成について詳しく説明します。
さらに、プログラムとは何か、どのように動くのか、コンピュータ内部でのデータ処理の仕組みについても学びます。なぜコンピュータは2進数を使うのか、それがどのように文字や画像を表現するのかを理解することで、コンピュータの本質をつかむことができます。
このレッスンを通じて、コンピュータの仕組みに対する理解を深め、正しいイメージを持つことができるようになることを目指しましょう。
コンピュータの中身について正しいイメージを持っていること
コンピュータ とは、あらゆる種類の情報を受け取り、その情報に対して計算や分析、変換といった「処理」を行ない、その結果を役立つ形で示してくれる特別な機械です。

ここでいう「情報」とは、私たちが日常生活で扱う文字や数字、音声、画像、動画など、かたちの有無を問わず、さまざまな形で存在するデータのことを指します。
コンピュータはこの情報を保存しておくだけではなく、計算によって答えを導き出したり、複数の情報を比較して整理したり、必要に応じて別の表現形式へ変換したりします。
たとえば、計算機としてのコンピュータは、複雑な数値計算を正確かつ高速に行ない、瞬時に結果を出すことができます。さらに数字を扱うだけでなく、文章を書いたり、インターネットを通して世界中の情報を検索したりと、極めて多彩な活動を行ないます。つまり、コンピュータは「情報をさまざまなかたちに処理する」ことにより、人々の仕事や生活を支える幅広い機能を実現しているのです。

コンピュータと聞くと、デスクトップパソコンやノートパソコンが思い浮かびます。しかし、それだけがコンピュータではありません。私たちが普段何気なく使っているスマートフォンは、小型でありながら高性能なコンピュータの一種です。また、家電製品や自動車、オフィス機器、工場の生産ラインに至るまで、目に見えるかたちではなくとも、内部には必ずといっていいほど小さなコンピュータチップが組み込まれています。
いくつか例をあげましょう。

このようにコンピュータは私たちが直接「コンピュータを使っている」と意識しない場面でも、その背後で絶えず動いており、生活を支える土台となっています。
コンピュータの本質は「情報処理装置」であるという点にあります。
情報処理 とは、何らかのデータ(情報)を受け取り、そのデータを「変換・計算・整理・検索・分析」などの処理を行ない、結果を有益な形で返すことです。この「入力→処理→出力」という一連の流れが、コンピュータをただの箱ではなく、私たちが求める結果や機能を提供する存在にしています。
たとえば、オンラインショップで商品を検索するとき、私たちは検索キーワードを入力します。ショップのコンピュータは、そのキーワードをもとに商品データベースを調べ、条件に合う商品を抽出し、画面上にリストとして表示します。この一連の動作が「情報処理」であり、私たちは結果として、自分が欲しい商品を簡単に見つけることができます。
コンピュータが行なう情報処理は、「入力(Input)」と「処理(Process)」、「出力(Output)」の3つのステップから成り立っています。

入力 は、コンピュータが外部から何らかのデータを受け取る段階です。入力は人間がキーボードを通じて文字情報を与える、センサーが温度情報を検出する、インターネットからデータを受信するなど、さまざまなかたちで行なわれます。
処理 の段階では、コンピュータ内部の仕組みが与えられた情報を計算や分析、並べ替えなど、必要な操作を加えて整理します。処理はさらに「記憶・演算・制御」で構成されます。
出力 では、処理した結果を人間や他のシステムへ渡します。出力には画面に表示する、スピーカーから音を鳴らす、印刷機で紙に文字を記録する、インターネットを通して別のコンピュータに結果を送るなど多様な手段があります。
この「入力→処理→出力」の流れは、どのような複雑な操作を行なうコンピュータであっても変わらない基本的なモデルです。私たちが普段使うコンピュータやスマートフォン、数千台~数万台のコンピュータがネットワークで連動して複雑な計算を行なうクラウドサービスまで、この原理は共通しています。
処理は「記憶・演算・制御」で構成されます。
それぞれの役割について、そろばんや電卓と比較しながら確認しましょう。

そろばんは、珠(たま)を上下させることで計算過程を目で追いつつ、人間が頭で演算を行ないます。
そろばんは、計算状態を「記憶」する役割を持ちますが、「演算」や「制御」を行なうのは人間です。
電卓はそろばんより進化し、「記憶」だけでなく「演算」も自動で行ないます。たとえば 1 + 3 + 3 を計算するには「1 → + → 3 → + → 3 → =」の順番にキーを押すだけで、演算結果が表示されます。
電卓は、「記憶と演算」は機械が自動で行ないますが、計算手順を決める「制御」は人が行ないます。たとえば「3を何回足すか」は、人間が都度ボタンを押して指示します。
コンピュータは、与えられた プログラム(手順書)に基づいて、処理の手順を自動的に「制御」します。たとえば「1に3を5回足す」処理をさせたいとき、電卓は何度も「+ 3」と押す必要がありますが、コンピュータは「3を5回加算せよ」というプログラムを与えることで、自動的に計算が可能です。
プログラム(手順書)のイメージ
コンピュータは「記憶+演算+制御」をすべて自動的に行なえるのです。
コンピュータは、ハードウェアとソフトウェアで構成されています。ハードウェアは「モノとしての実態」、ソフトウェアは「ハードウェアを動かす手順書」の関係にあり、それぞれが相互作用し合うことで、「入力→処理(記憶・演算・制御)→出力」の基本モデルを実現しています。
ハードウェア(hardware)は、コンピュータを形づくる「物理的な機器」や「装置」です。実際に手で触れることができる「モノ」の部分で、以下のような要素で構成されています。
「演算装置、制御装置、記憶装置、入力装置、出力装置」のことを、コンピュータの5大装置 と呼びます。

それぞれが「入力→処理(記憶・演算・制御)→出力」の基本モデルに対応していることを再確認しておきましょう。
ソフトウェア(software)とは、ハードウェアを「どう動かすか」を決める手順や命令が詰まった「プログラム(処理の手順書)」のことです。実際に目で見たり手で触れたりできる「物理的な形」はありませんが、コンピュータ内部に記録され、CPUがこれを読み取って命令を実行します。
ソフトウェアには以下の種類があります。
ハードウェアとソフトウェアが適切に組み合わされることで、コンピュータは膨大な情報を処理し、私たちが望む多彩な機能を実現します。ハードウェアの性能が上がれば、より複雑で高度な処理が可能になり、より洗練されたソフトウェアを動かすことができます。逆に、優れたソフトウェアによってハードウェアの潜在能力を十分に引き出すことも可能です。こうした相互作用によって、コンピュータは絶えず進化し、さまざまな分野で新たな価値を生み出しているのです。

ハードウェア(コンピュータ本体)とソフトウェア(アプリ・システム)の関係
それでは、ハードウェアのなかでも中心的な存在である「CPU」から、詳しく確認していきましょう。
CPU(中央処理装置:Central Processing Unit) は、コンピュータの「頭脳」にあたる部品で、命令の処理や計算、制御を担う中心的な役割を持つ装置です。コンピュータの内部で、プログラムを実行し、データを処理する核となっています。

CPUは、大きく分けて「制御装置」と「演算装置」の2つから構成されます。
この2つの装置が一体となって働くことで、コンピュータは与えられた命令を次々に実行して、さまざまな処理や計算を行なうことが可能になります。
制御装置 はCPUで、プログラムに書かれた命令を1つずつ読み取り、それらをどのような手順で実行するかを「制御」する部分です。簡単に言えば、CPU全体をまとめる「司令塔」のような役割を担っています。プログラムで指定された処理の流れに従って、どの命令を次に実行すべきかを決定し、演算装置やレジスタ(後述)、記憶装置などへ指示を出します。
制御装置には、「プログラムカウンタ」と呼ばれる特別なレジスタ(後述)があります。プログラムカウンタ は、現在CPUが実行中の命令がメモリ上のどこにあるかを示す アドレス(場所)を記憶しておくためのもので、制御装置の中核的な役割を果たします。
たとえば、1+2 を計算するプログラムでは、以下のように処理が進みます。

CPUはプログラムカウンタの値を参照し、そのアドレスに格納されている命令を取り出して実行します。そして命令を1つ実行するごとに、プログラムカウンタを次の命令のアドレスへ更新することで、処理を順番に進めていきます。
命令サイクル は、CPUが命令を実行する際に繰り返す以下の流れです。
この一連の「取り出し → 解読 → 実行 → 書き戻し」というサイクルを繰り返しながら、CPUはプログラムに書かれた命令を順々に処理していきます。
演算装置 はCPUで、指定されたメモリアドレスからデータを読み込み、加減算などの計算を行ない、その結果を再びメモリへ書き戻すという「計算や処理」を行なう部分です。
制御装置が「次に実行する命令」を決定すると、実際の計算や処理は「演算装置」が行ないます。たとえば、1+2 の計算は以下の手順で進みます。
1 を取り出す2 を足す3 をメモリに戻す
このように制御装置と演算装置は連携し、制御装置が命令を指示し、演算装置が計算を実行することで、プログラムは円滑に処理されます。
CPUの性能は、どれだけ高速に命令を実行できるか、どれだけ多くの計算を一度に並行して実行できるか、といった観点で評価されます。一般的に、以下の要素がCPU性能を左右します。
クロック周波数(Clock Frequency) はCPUが1秒間に行なえる動作回数を表し、単位は Hz(ヘルツ) です。1GHzは1秒間に10億回の動作を意味します。たとえば、2GHzのCPUなら1秒間に20億回(2,000,000,000回)の処理が可能です。ただし、クロック周波数が高いだけで性能が決まるわけではなく、CPU設計やコア数、効率性とのバランスが重要です。
コア(Core) は、CPU内部にある命令処理ユニットです。1つのCPUに複数コアがある「マルチコアCPU」が一般的で、コア数が増えるほど同時に実行できる処理が増えます。以下はコア数の例です。
コア数が多いと、動画編集しながらブラウジングなど、複数のタスクを同時に円滑に進められます。
レジスタ はCPU内で高速にデータを扱う作業用メモリです。レジスタのビット数は、同時に扱えるデータ量やアクセスできるメモリ空間を決定します。
現在は多くのCPUが64ビットに対応しており、大量のメモリや高速なデータ処理、最新ソフトウェアへの対応が可能です。
2025年モデルのLenovo ThinkPad X1を例に挙げると、プロセッサ欄に以下のような表記があります。
プロセッサ
インテル® Core™ Ultra 7 プロセッサー 258V (LPEコア 最大 3.70 GHz Pコア 最大 4.80 GHz / 32 GB MOP)
表記の意味は以下のとおりです。
参考:
ただし高性能なCPUであっても、プログラムが複雑な処理を要求したり、膨大なデータへのアクセスが必要な場合は、それなりに時間がかかります。また、他のプログラムと資源を共有する状況では、処理がさらに遅くなることもあります。それでも、現在のCPUは一般的な作業を非常に短時間でこなせるほど高性能です。
記憶装置 は、データやプログラムを保存するための装置です。
コンピュータが多様な処理を実行できる理由の1つは、大容量のデータやプログラムを格納し、必要に応じて活用できる「記憶装置」が存在するからです。記憶できる容量が小さければ、画像や動画のような大容量データを扱うことは困難になります。
記憶装置は、以下の2種類に大別できます。
この分類は、CPUが直接アクセス可能か、または長期保存を目的としているかという観点で区分したものです。CPUが直接アクセス可能な「主記憶装置」に該当するのは「メモリ」のみです。ハードディスクや光学ディスク、USBフラッシュメモリなどはすべて「補助記憶装置」に分類されます。
コンピュータ内部では、複数の記憶装置が「記憶階層(メモリ階層)」という構造で整理されています。この階層は、アクセス速度と容量に応じたピラミッド構造を形成しており、最上位に高速・小容量のメモリ、下位に低速・大容量のストレージを配置します。この構造により、必要なデータを上位の高速メモリへ段階的に引き上げ、CPU(中央処理装置)の処理効率を高めることが可能です。
この観点では、キャッシュメモリが主記憶装置よりさらに上位に位置づけられ、次のような3階層構造となります。

CPUはまずキャッシュメモリにアクセスし、それでも足りないデータがある場合は主記憶装置へ、さらに必要があれば補助記憶装置へと、徐々に低位の階層からデータを引き出します。
キャッシュメモリ は、CPUと主記憶装置(メインメモリ)の間に位置する超小容量・超高速のメモリです。CPUがよく使うデータを一時的に保存し、主記憶装置へのアクセスを減らして処理を高速化します。
キャッシュメモリには通常SRAM(Static RAM)が使用されます。SRAMは高速ですが高価で大容量化が難しいため、キャッシュメモリは少量しか搭載されません。
主記憶装置(メインメモリ) は、CPUが直接読み書きを行なう「作業スペース」です。ここには今実行中のプログラムや処理中のデータが格納されます。
主記憶装置には主にDRAM(Dynamic RAM)が使用されます。DRAMは容量を大きくできて安価ですが、定期的なリフレッシュが必要であり、SRAMほど高速ではありません。
補助記憶装置は、プログラムやデータを長期的に保存する装置です。主記憶装置より大容量かつ非揮発性(電源OFFでもデータ保持)ですが、アクセス速度は遅くなります。
主な補助記憶装置には次のものがあります。
主記憶装置と補助記憶装置の違いを整理しましょう。
| 主記憶装置(メモリ) | 補助記憶装置(HDD, CD/DVD/BD, USBメモリなど) | |
|---|---|---|
| データ読み書き速度 | 高速 | 低速 |
| データ保存容量 | 小さい | 大きい |
| データ保存期間 | 電源を切ると消える(揮発性) | 電源OFFでも保持(非揮発性) |
| CPUとの関係 | CPUが直接アクセス可能 | 一度メモリへコピーしてからCPUがアクセス |
CPUは超高速で動作するため、極端に遅い装置から直接データを読み書きするとほとんど待ち時間になってしまいます。そのため、CPUはまず高速な主記憶装置(メモリ)とやり取りし、必要に応じて補助記憶装置からデータを取り出してメモリ上に展開します。
主記憶装置は高速ですが高価で容量が小さく、揮発性であるため電源を切るとデータが消えます。この欠点を補うため、安価で大容量かつ非揮発性の補助記憶装置が活躍します。コンピュータの電源を入れると、CPUとメモリが起動し、補助記憶装置から必要なプログラムやデータがメモリへ読み込まれます。処理が終われば、再び補助記憶装置に結果を保存します。
人間に例えると以下のようなイメージです。
作業をする人(CPU)は、本棚(補助記憶装置)から必要な本(プログラムやデータ)を取り出し、机(メモリ)に広げ、必要な処理を行ないます。処理が終わったら本を本棚に戻します。メモリはこのように「CPU専用の作業机」として機能します。
メモリにはさまざまな種類があり、それぞれ揮発性や速度、用途が異なります。
| 種類 | 揮発性 | 特徴 | 用途 |
|---|---|---|---|
| RAM(SRAM) | 揮発性 | 非常に高速、高価、容量小 | キャッシュメモリ |
| RAM(DRAM) | 揮発性 | 安価で大容量、リフレッシュが必要 | 主記憶装置 |
| フラッシュメモリ | 非揮発性 | 高速で耐久性が高く長期保存可能 | SSD、USBメモリ、SDカード |
| ROM | 非揮発性 | 読み出し専用 | BIOSやファームウェア |
キャッシュメモリとして用いられ、フリップフロップ回路でデータを保持するためリフレッシュ不要で高速です。
主記憶装置によく使われるメモリです。コンデンサに電荷を蓄えてデータを保持し、漏電を防ぐために定期的なリフレッシュが必要です。
非揮発性メモリの一種で、電源OFFでもデータを保持します。高速読み書き、耐久性があり、SSDやUSBメモリ、SDカードで広く使われます。
読み出し専用の非揮発性メモリ。BIOSやファームウェアなど、コンピュータの起動に必要なプログラムが格納されます。
たとえば2024年モデルのApple MacBook Proの「16GB 4,200MHz LPDDR5Xメモリ」という仕様は、以下を意味します。
「LPDDR5X」は低消費電力メモリ規格で、高速かつ省エネ性能に優れています。「統合メモリ」は、CPUやGPUなどすべてのコンポーネントが同じメモリを共有して使用する設計で、処理の効率性を高めています。
メモリ内のデータやプログラムは、すべて「アドレス(住所)」によって管理されます。メモリ空間は細かい区画に分かれており、それぞれに番地が割り当てられています。CPUはこのアドレスを使って、どの場所に特定のデータや命令があるかを特定できます。
たとえば 1+2 の計算を行なう場合、実際にはメモリ上の特定のアドレスに命令やデータが配置され、CPUはそのアドレスを順番に読み込み、処理を実行して結果を別のアドレスに書き込みます。

コンピュータが起動している間、メモリ上には常になんらかのプログラムやデータが存在しています。たとえば、コンピュータ起動中にブラウザを開くと以下の流れが発生します。
これら一連の動作は、CPUの制御装置がタイミングよく制御します。
入出力装置(Input/Output Devices)は、コンピュータと外部のユーザーやデバイスとの間で情報をやり取りするための装置です。入力装置はコンピュータに情報を送信する役割を、出力装置はコンピュータから情報を受信してユーザーに伝える役割を担います。
入力装置 は、ユーザーがコンピュータにデータや命令を送るための装置です。主な入力装置には以下があります。
出力装置 は、コンピュータが処理した結果をユーザーに伝えるための装置です。主な出力装置には以下があります。
ディスプレイは、RGB(Red:赤、Green:緑、Blue:青)の3色の組み合わせで色を表現します。各色は通常0~255の256段階で表現され、フルカラーの場合、16,777,216色(256×256×256)を表示できます。

解像度(かいぞうど)とは、ディスプレイやプリンターなどで画像やテキストを表現する際に、どれだけ細かい点(ピクセルやドット)で描写できるかを示す指標です。
ディスプレイの解像度は、画面上に表示されるピクセル数で表します。
プリンターの解像度は、用紙上に印刷されるドットの密度を示し、通常 DPI(Dots Per Inch) で表します。
一部の装置は、入力と出力の両方の機能を持っています。
主な入出力装置:
入出力インタフェース とは、コンピュータの内部(CPUやメモリなど)と外部の入出力装置(キーボード、モニター、プリンターなど)の間でデータをやり取りするための仕組みや規格を指します。

さまざまな入出力インタフェース
入出力インタフェースには、以下のような役割があります。
主な入出力インタフェースには、以下のようなものがあります。
USBは、現代の標準的な入出力インタフェースです。
映像と音声をやりとりするインターフェイスです。
映像用のインターフェイスです。
有線でネットワークに接続するためのインターフェイスです。
ヘッドホンやスピーカーを接続するための音声用ポートです。
電波を利用して無線でデータを読み書きするための技術です。
デバイスドライバ は、入出力装置をコンピュータで利用するためのソフトウェアです。
キーボードやマウス、プリンター、IoTデバイスなど、さまざまなハードウェアは、それぞれ特有の動作方法があります。そのため、コンピュータ本体がそれらの装置を正しく認識し、使いこなすためにデバイスドライバが必要です。
デバイスドライバは、「通訳」のような役割をします。
たとえば、新しいプリンターを導入するときに「ドライバのインストール」を必要とする場合がありますが、これがまさにデバイスドライバに当たります。

Windowsのデバイスマネージャー
その他のハードウェアには、以下のようなものがあります。
CPUやメモリ、補助記憶装置、入出力装置などを物理的につなぐ基板です。マザーボード上には回路が走り、各部品がデータをやり取りできるようにしています。
電源ユニットは各装置に安定して電気を供給し、ファンは熱を逃がして装置が適温で動作できるようにし、ケースはこれらの部品を保護します。故障を防ぐためにも必要な要素です。
IoT(Internet of Things)デバイスは、あらゆるモノに小型コンピュータやセンサーが内蔵され、ネットワーク経由でデータのやり取りができる装置です。IoTデバイスは以下のような使われ方をします。
IoTデバイスは、基本的に入力装置(センサー)と出力機能(無線通信など)が一体となったようなものと考えることができます。これらも当然ハードウェアであり、その小型化や多様化が進んでいます。

IoTデバイスの例
ハードウェアの説明は以上です。次はソフトウェアについて説明します。最初は、ハードウェアとアプリケーションソフトウェアをつなぐ土台となる基本的なソフトウェアである「OS」から確認していきましょう。
OS(オペレーティングシステム:Operating System)は、ハードウェアとアプリケーションソフトウェアをつなぐ土台となる基本的なソフトウェアで、コンピュータ全体を管理・統制します。

ハードウェア・OS・アプリケーションの構成イメージ
コンピュータを使ううえで、ユーザーが毎回ハードウェアの細かな動作を一から理解し、直接コントロールしなければならないとしたら、非常に複雑な作業となります。
OSが存在するおかげで、ユーザーはキーボード入力やマウス操作、ファイルを開く・保存するといった行為を、複雑な裏側の仕組みをほとんど意識することなく行なうことができます。
OSには、以下のような機能があります。
OSは、CPU、メモリ、ストレージ、プリンター、ネットワークなどのハードウェアを効率良く管理します。
シングルタスクとマルチタスク:
初期のコンピュータでは、OSは一度に1つのタスク(プログラム)しか実行できない「シングルタスク」方式が一般的でした。しかし、現代のOSは複数のタスクを同時並行(ユーザーから見ると同時進行しているように見える)で実行する「マルチタスク」に対応しています。これにより、ユーザーはブラウザでWebページを見ながら、音楽プレイヤーで音楽を再生するといった操作が同時に行なえるようになりました。
データを「ファイル」という単位で保管し、それを階層的に整理します。この仕組みは「ファイルシステム」(後述)を通じて提供されます。
デスクトップやアイコン、ウィンドウ、メニューなど、ユーザーが直感的にコンピュータを操作できる環境を提供します。
パスワード認証やアクセス権限設定で、ユーザーやデータを保護します。
OSには用途やデバイスごとにさまざまものがあります。

ファイルシステム は、コンピュータのストレージにあるデータを整理して保存し、取り出すための仕組みです。ファイルシステムは「ファイル」と「フォルダ(ディレクトリ)」を使用してデータを管理します。
ファイル は、データを保存する単位のことを指します。具体的には、テキスト、画像、動画、プログラムなど、さまざまな種類のデータがファイルとして記録されます。
フォルダ は、ファイルや他のフォルダを格納する入れ物です。
フォルダとディレクトリの違い:
「フォルダ」と「ディレクトリ」は基本的には同じ概念を指します。
多くの場合、日常的な操作では「フォルダ」という言葉が使われ、システム内部や技術的な説明では「ディレクトリ」という言葉が使われます。
ファイルシステムは多階層のフォルダ構造を持ち、ツリーのような形で整理されます。

ファイルシステムの階層イメージ
C:\、LinuxやmacOSでは / がルートフォルダです。ファイルやディレクトリを指定する方法には2種類あります。
C:\Users\Taro\Documents\report.txt/home/taro/documents/report.txtC:\Users\Taro の場合、Documents\report.txt と書けば C:\Users\Taro\Documents\report.txt を指せます。ファイルを安全に保管するため、バックアップは欠かせません。
バックアップ はデータを別の場所や手段で複製しておき、万一ハードディスクが故障したり、誤ってファイルを消したり、ウイルスに感染したりしたときにデータを復旧できるようにする対策です。
バックアップには以下の種類があります。
バックアップには、以下のような手段があります。
アプリケーション(Application) とは、コンピュータ上で動作する「特定の目的を持ったソフトウェア(プログラム)」のことを指します。アプリケーションはOSの上で仕事をしたり、遊んだり、情報を処理したりするといった、実用的な機能を提供する道具です。
たとえば、以下のようなものはすべてアプリケーションに当たります。
アプリケーションはOS上で動作し、OSが提供する機能(ファイル管理や画面表示、入出力制御など)を利用して、ユーザーが必要とする作業を実現します。
オフィスツール とは、オフィス(職場)や家庭でも日常的に使われる文書作成・編集・発行などの作業を支援するアプリケーション群のことです。仕事や学習、家庭での文書整理や表計算などにもよく使われます。
オフィスツールは個々のソフトがバラバラに存在する場合もありますが、多くは以下のようなソフトウェアパッケージとしてまとめて販売・配布されます。
ワープロソフトと呼ばれる文書作成用のアプリケーションです。
これらは文章を入力・編集し、文字フォント、色、段落、ページレイアウトなどを整え、最終的に印刷したりPDFで書き出したりできます。
データを表形式で扱い、数値計算やグラフ作成を得意とするアプリケーションです。
数値の集計、統計、計算式の適用、データの可視化(グラフ)などが簡単にできます。
スライド資料を作成するためのツールで、会議や発表会で使う資料作りに役立ちます。
画像やテキスト、表、グラフ、アニメーション、動画などを組み合わせて、効果的なプレゼン資料を作成できます。
オープンソースソフトウェア(OSS) とは、ソースコード(プログラムの設計図)が公開され、誰でも自由に利用・改良・再配布できるライセンスを持ったソフトウェアのことです。
OSSの例をいくつかあげます。
OSSは無料で利用でき、ユーザーコミュニティや開発者によって改良が進められています。企業や組織、個人が自由に参加できるため、機能改善やバグ修正が活発に行なわれます。また、OSSはコスト削減やカスタマイズの自由度といった点から、教育機関や自治体、企業でも多く利用されています。
情報デザイン とは、ユーザーが情報を「わかりやすく」「使いやすく」理解・利用できるように計画・構築することを指します。たとえば、アプリケーションの画面設計や、Webサイトのレイアウト、メニュー構成など、情報を伝達するあらゆる場面で情報デザインの考え方が用いられます。読み手が理解しやすい文章構成、適切な図解や色使い、情報量の最適化などが重要なポイントです。
ここでは情報デザインで重要な、2つの観点について説明します。
ユニバーサルデザイン は、年齢・性別・障がいの有無などに関わらず、誰もが快適に利用できる設計を目指す考え方です。アプリケーションやWebサイトで、文字サイズを変更しやすくする、コントラストを高めて見やすくする、音声読み上げに対応するなどが例として挙げられます。これにより、より多くの人が情報や機能へ等しくアクセスできるようになります。
インタフェース設計 は、アプリケーションを使いやすくするために、人間が理解しやすい視覚や・操作上の工夫を盛り込むことです。一貫した、わかりやすい設計がユーザーの快適な体験を生みます。
ソフトウェアの説明は以上です。
ここまでの学習で、コンピュータが情報処理装置であり、ハードウェアとソフトウェアが連携し、OSがその基盤として機能していることを理解しました。また、OS上で動作するアプリケーションが、ユーザーが必要とする作業を実現していることも学びました。次は、コンピュータで実行される「プログラム」について、その本質と動作の仕組みを詳しく解説します。
プログラム は、コンピュータに対して「何を、どのように行なうか」を明示的に伝える設計図のような存在です。
コンピュータは、自分で考えて行動できるわけではなく、人間があらかじめ示した手順(命令)に忠実に従います。プログラムは、これら「コンピュータに実行させたい命令」を文字や記号でまとめたものであり、その中には「この数値を計算する」「この条件を満たしたら別の処理を行なう」「ファイルからデータを読み込む」といった具体的な手順が記述されています。
プログラムが存在することで、人間は自分の意図をコンピュータに正確かつ効率的に伝えることができます。こうして、プログラムは人間が考えた手順をコンピュータで再現する媒介になり、コンピュータはプログラムに従って複雑な処理を正確かつ高速に、実行できるようになります。
プログラムは、人間が読みやすい形で記述することが望まれます。このため、プログラムは通常、高水準言語 と呼ばれる、人間にとって理解しやすい表現を用いるプログラミング言語で書かれます。高水準言語には、英単語やわかりやすい記号が組み込まれ、C言語、Java、Pythonなどがその代表例です。高水準言語は、人間に理解しやすい一方で、コンピュータにとっては直接実行しづらい形式です。
Pythonのプログラムの例:
a = 5 b = 3 result = a + b print(f"足し算の結果: {result}")
プログラムを実行するために、コンピュータは最終的に「0」と「1」のビット列で構成された「マシンコード(機械語)」を理解し、実行します。マシンコード はCPUが直接読み取り、命令として実行できる形式であり、人間には非常に扱いにくい「低水準」の表現です。

手順→高水準言語→マシンコードへの変換イメージ
マシンコードが用意されると、チャプター3で学んだように、CPUは命令サイクルを繰り返してプログラムを高速に処理します。

プログラムはOSと連携して動作します。プログラムが実行されると、OSはプログラムに必要なメモリ領域を確保し、CPU時間を割り振ります。プログラムがファイル操作やネットワークアクセスを要求した場合は、対応するハードウェアを正しく扱う処理を提供します。
「プログラムとは何か、どのように動くのか」の説明は以上です。ハードウェアとソフトウェア、OS、プログラムの基本的な役割と関係性について理解が深まりました。
次は、コンピュータが内部で「データ」をどのように扱っているのかを説明します。抽象的な「0と1」の世界から、具体的なデータ(数値、文字、画像、音声など)へと変換される過程を示します。
コンピュータ内部では、すべての情報が「0」と「1」という2つの状態の組み合わせで表現されます。これは、コンピュータが電気信号の「有無」や「オン・オフ」という単純な二値状態をもとに動作しているためです。「0」は電圧が低い状態、「1」は電圧が高い状態といった具合に、物理的なレベルでは非常にシンプルな仕組みが土台にあります。

たった2つの値しか使えないように見えますが、この0と1並びは、膨大な表現力を持っています。
それを理解するために、ここでは最初に数値を表現する「基数」について学んでから、情報を扱う単位である「ビットやバイト」、具体的なデータの表現方法へと話を進めていきましょう。
基数(きすう)とは、数を表すときに「1桁で使える数字の種類がいくつあるか」を示す考え方です。
たとえば「基数が10」の場合、0から9までの10種類の数字を1桁として使えます。このような数え方を「10進数」と呼びます。同じように、「基数が2」の場合は0と1の2種類しか使わないので「2進数」、「基数が16」の場合は0~9とA~Fの16種類を使うので「16進数」と呼びます。
10進数(じゅっしんすう)は、普段、私たちが使っている「0, 1, 2, 3, …, 9」までの数字を用いた数え方です。
10進数は、1桁で使える数字の種類が0から9までの10種類あります。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2進数(にしんすう)は「基数が2」の数え方です。0と1の2種類の数字しか使わないため、1桁で表せる数は0と1のみになります。
0, 1
コンピュータ内部ではすべてのデータが2進数で表されます。たとえば、2進数の 101 は10進数の 5 に相当します。
16進数(じゅうろくしんすう)は、「基数が16」の数え方です。16進数は、0~9までの10種類に加え、A~Fという英字を用いて16種類の数字を1桁で表します。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
「A」は10進数の10、「B」は11、「C」は12、「D」は13、「E」は14、「F」は15に対応します。
16進数は、2進数との相性が非常に良いことから、コンピュータでのメモリアドレスや機械語の表現などでよく使われます。2進数は桁数が長くなりやすいという欠点がありますが、16進数では1桁で2進数4桁分を表現できるため、見通しが良くなります。
たとえば、16進数の 1A は、10進数の 26 に相当します。
基数変換 とは、数値をある基数(進数)から別の基数に変換することを指します。以下に2進数、10進数、16進数の対応例を示します。変換方法に慣れておきましょう。
| 2進数 | 10進数 | 16進数 |
|---|---|---|
| 1010 | 10 | A |
| 110101 | 53 | 35 |
| 1111111 | 127 | 7F |
| 100000 | 32 | 20 |
| 11001001 | 201 | C9 |
| 10101010 | 170 | AA |
| 11101111 | 239 | EF |
| 100111000 | 312 | 138 |
| 1010101111 | 687 | 2AF |
| 1111111111 | 1023 | 3FF |
論理演算 は、真偽値(0または1)を入力として、真偽値(0または1)を出力する演算方法です。コンピュータでのデータ処理は、すべて論理演算として行なわれます。
論理演算子には AND、OR、XOR、NOT の4種類があります。論理演算の結果は「真理値表」で表します。真理値表 は、すべての入力組み合わせに対する出力結果を示す表です。
論理演算の表現には「集合」と「ベン図」が良く使われます。集合 とは、物の集まりのことです。例えば、「A = {1, 2, 3}」は、1, 2, 3という要素を持つ集合Aを表します。ベン図 は、集合を図で表す方法です。
AND (論理積)
∧, &, ·
A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1
OR (論理和)
∨, +
A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1
XOR (排他的論理和)
⊕
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
NOT (論理否定)
¬, !, '
A NOT A
0 1
1 0
さらに、NOT と AND を組み合わせた NAND、NOT と OR を組み合わせた NOR も使用されます。
NAND (否定論理積)
¬(A∧B), A NAND B真理値表:
A B A NAND B
0 0 1
0 1 1
1 0 1
1 1 0
NOR (否定論理和)
¬(A∨B), A NOR B真理値表:
A B A NOR B
0 0 1
0 1 0
1 0 0
1 1 0
具体的な例:
A = 1 (真), B = 0 (偽) とすると、
A AND B = 1 AND 0 = 0A OR B = 1 OR 0 = 1A XOR B = 1 XOR 0 = 1NOT A = NOT 1 = 0A NAND B = 1 NAND 0 = 1A NOR B = 1 NOR 0 = 0これらの論理演算は、コンピュータの回路設計やプログラミングにおいて基礎となる重要な概念です。 理解を深めるには、さまざまな入力値を代入して真理値表を自分で作成してみることをお勧めします。
ビット(bit)は、コンピュータが扱う情報量の最小単位です。1ビットは0または1の情報を表します。
0, 1
バイト(byte)は、複数のビットをまとめて扱う単位です。1バイトは通常「8ビット」をまとめた単位として扱われます。8ビットで表現できる情報は、2進数でいうと8桁分の0/1組み合わせを表せるため、 通りの状態を表現できます。
00000000 ~ 11111111(256通り)
コンピュータの世界では、データの大きさや容量を表す際に「バイト」を基本単位として、その大きさが大きくなるにつれてキロ(K)・メガ(M)・ギガ(G)・テラ(T)といった接頭辞(プレフィックス)を用いることがよくあります。これらは、バイトの「集合体」の大きさや容量をわかりやすく示すために使われます。
「キロ(K)」は本来「1000倍」を意味しますが、コンピュータの分野では一般的に「1キロバイト(KB)」を「1024バイト」と定義します。これは2進数が基本であるコンピュータにおいて、1024が「2の10乗」と扱いやすいためです。
以降、メガ(M)・ギガ(G)・テラ(T)と、同様の考え方で定義します。
| 単位 | 一般的な意味 | コンピュータでの定義 | バイト数の計算 |
|---|---|---|---|
キロバイト (KB) |
1000倍 | 1024バイト |
2の10乗(1024バイト) |
メガバイト (MB) |
100万倍 | 1024キロバイト |
2の20乗(約1,048,576バイト) |
ギガバイト (GB) |
10億倍 | 1024メガバイト |
2の30乗(約1,073,741,824バイト) |
テラバイト (TB) |
1兆倍 | 1024ギガバイト |
2の40乗(約1,099,511,627,776バイト) |
このように、2進数や16進数、ビットとバイトといった概念を理解することで、「コンピュータ内部ではすべてが0と1で表される」という抽象的な事実を、実用的でわかりやすい枠組みに当てはめることができます。具体的な例で確認しましょう。
データはメモリ上に0または1の値で保持されます。つまり、メモリは膨大なスイッチで構成されており、それらのスイッチのON/OFFによって、すべてのデータが表現されているのです。
最近のメモリの容量は、ギガバイト(GB)単位のものが普通です。たとえば、16GB = 160億バイト = 1,280億ビットとなるので、1,280億個のスイッチで構成されていることがわかります。それだけのスイッチが小型化されて、小さいチップの中に敷き詰められているのです。

文字コード とは、コンピュータで文字を扱うために、文字や記号に数字を割り当てた対応表のことです。人間は文字を見て理解できますが、コンピュータは数字しか理解できません。そこで、文字に数字を対応させることで、コンピュータでも文字を処理できるようになります。
たとえば「A」という文字には、対応する文字コードが割り当てられており、その数値が2進数で表されて格納されます。
歴史的にはASCIIコードという文字コード表が基本として使われ、A~Z、a~z、0~9などの英数字や一般的な記号が特定の数値に割り当てられました。ASCIIは1バイト(8ビット)の範囲で扱えるため、最大256種類の文字や記号を表せます。
ASCIIコード表の例
0x0? 0x1? 0x2? 0x3? 0x4? 0x5? 0x6? 0x7?
0x?0 NUL DLE SP 0 @ P ` p
0x?1 SOH DC1 ! 1 A Q a q
0x?2 STX DC2 " 2 B R b r
0x?3 ETX DC3 # 3 C S c s
0x?4 EOT DC4 $ 4 D T d t
0x?5 ENQ NAK % 5 E U e u
0x?6 ACK SYN & 6 F V f v
0x?7 BEL ETB ' 7 G W g w
0x?8 BS CAN ( 8 H X h x
0x?9 TAB EM ) 9 I Y i y
0x?A LF SUB * : J Z j z
0x?B VT ESC + ; K [ k {
0x?C FF FS , < L \ l |
0x?D CR GS - = M ] m }
0x?E SO RS . > N ^ n ~
0x?F SI US / ? O _ o DEL
しかし、世界中の言語をカバーするためにはASCIIでは不十分であり、現在ではUnicodeというより包括的な文字コード体系が主流となっています。Unicodeでは数万以上の文字が定義されており、UTF-8やUTF-16といった方式で、あらゆる言語や記号を統一的な規格で扱うことが可能です。
なお、文字コードが異なる環境でデータのやり取りをすると、文字化けを発生することがあります。これは、同じ数字が異なる文字に対応しているために起こる現象です。

文字化けの例
※出典:LINEヤフー株式会社
コンピュータは数値計算をする際も0と1で表現されたビット列を使います。
整数は比較的単純で、2進数で表した数値をそのままビット列として格納します。
一方、小数点を含む実数(浮動小数点数)は、より複雑な表現が必要です。浮動小数点数は、科学的記数法のような形式を2進数で実現し、符号ビット、指数部、仮数部といった構成要素に分けて表します。
IEEE 754という標準規格が有名で、これによってコンピュータは非常に大きな数から非常に小さな数まで、ある程度の精度で扱うことができます。IEEE 754では、単精度(32ビット)と倍精度(64ビット)などが定義されており、それぞれビットの割り当てが異なります。以下は単精度(32bit)の構成例です。
| 符号ビット | 指数部 | 仮数部 |
|---|---|---|
| 1bit | 8bit | 23bit |
文字や数値だけでなく、画像、音声、動画といったメディアデータもすべて0と1のビット列で表されます。
画像はピクセルと呼ばれる微小な点の集まりで表され、それぞれのピクセルが「赤・緑・青(RGB)」などの色成分を数値で示します。これらの数値も0と1からなるビット列です。

音声は空気の振動をマイクが電気信号に変換し、その信号を一定間隔でサンプリングして数値化(デジタル化)します。こうして得られた数値列がビット列として保存され、再生時にはスピーカーで再びアナログ信号(音波)に戻します。
動画は画像が連続して並んだもので、それに音声が組み合わさったものとして表すことができます。
このように、一見すると全く異なる種類の情報であっても、コンピュータ内部ではすべてがビット列として統一的に処理されています。どんなデータも「数値化」できさえすれば、0と1の世界で取り扱えるのです。
このレッスンでは、コンピュータの基礎をハードウェアとソフトウェアの両面から説明しました。
CPU、メモリ、入出力装置といったハードウェアがどのように連携し、OSがそれらを制御してアプリケーションを実行するのか、その仕組みを学びました。
さらに、プログラムがコンピュータへの指示書であり、すべてのデータが0と1のビット列で表現されることも理解しました。
これらの知識は、今後のITスキル習得の基盤となります。以降のレッスンでさらに知識を深め、ビジネスの現場でITを効果的に活用していくための第一歩を踏み出しましょう。
このレッスンで学んだことを振り返り、理解度を確認しましょう
下記の5つの質問に答えてください。「回答フォーマット」を参考にして、コメント欄に記入して提出してください。
回答フォーマット
1.
2.
3.
4.
5.
この付録では、電子計算機、つまり電気で動作するコンピュータの歴史を解説します。必須学習内容ではありませんが、コンピュータへの理解を深めるための読み物としてご活用ください。
※出典元の記載およびリンクのない写真は、著作権の切れたものを掲載しています。
世界ではじめて、実用的かつ汎用的な電子計算機として広く認められているのは、ペンシルバニア大学で開発された ENIAC (Electronic Numerical Integrator and Calculator) です。アメリカ陸軍の資金提供を受け、1946年に発表されました。
ENIACはU字型で、長さ約30メートル、高さ約2.4メートル、幅約0.9メートルという巨大なものでした。CPUの役割を果たしていたのは真空管で、なんと約18,000本も使用されていました。
ENIACは加算、減算に加え、乗算、除算も可能でしたが、その性能は現代の基準から見ると非常に限られていました。例えば、加算処理は1秒間に約1,900回しか実行できませんでした。さらに、プログラミングはケーブルの差し替えやスイッチの設定を手作業で行なう必要があり、データ入力にはパンチカードを使用していました。そのため、簡単な計算プログラムを作成するだけでも30分~1日かかったと言われています。
ENIACのプログラミングの煩雑さを改善するため、研究者たちはプログラムをデータとして記憶装置に格納し、順番に読み込んで実行する「プログラム内蔵方式」を考案しました。この方式に基づき、EDVAC(Electronic Discrete Variable Automatic Computer)の設計が開始されました。
EDVACに関する文書を数学者のジョン・フォン・ノイマン氏が執筆・発表したことから、このプログラム内蔵方式は ノイマン型アーキテクチャ と呼ばれるようになりました。現代のコンピュータのほとんどがこのノイマン型アーキテクチャを採用していることから、ノイマン氏は「コンピュータの父」と呼ばれています。
諸説ありますが、はじめて商業的に成功したコンピュータは、1951年に販売開始されたUNIVAC I(UNIVersal Automatic Computer)とされています。UNIVAC Iは合計48台製造されました。
その後、IBM社が1952年にIBM 701(19台販売)、1954年に701よりも小型・低価格のIBM 601を発売しました。しかし、IBM 601でさえ、大きさは約1.5m×0.9m×1.8m、重量は約650kg、価格は現在の価値で約441万ドルと、一般には手の届かないものでした。そのため、1950年代半ばまではコンピュータの将来を悲観的に見る意見も多かったようです。
コンピュータの心臓部であるCPUは、真空管からトランジスタへと進化しました。
トランジスタは真空管に比べて小型、低消費電力、低発熱、高信頼性、長寿命といった多くの利点を持っていました。トランジスタを採用したコンピュータの1つであるIBM 1401は、1960年から1964年にかけて10万台以上販売されました。
トランジスタの小型化が進み、多数のトランジスタを1つの部品に集積することが可能になりました。これが 集積回路 (IC) です。 LSI (Large Scale Integration) とも呼ばれます。
集積回路をCPUに用いたコンピュータの登場は、コンピュータの爆発的な普及のきっかけとなりました。代表例として、IBM社が50億ドルもの投資の末、1964年に発表したSystem/360が挙げられます。System/360はアーキテクチャを統一した6モデルを上位機種から下位機種まで展開し、大きな成功を収めました。
集積回路技術は、スーパーコンピュータ(ILLIAC IV、Cray 1など)やミニコンピュータ(DEC PDP-8など)の開発も促進しました。
1971年、Intel社が世界初のマイクロプロセッサであるIntel 4004を開発しました。
マイクロプロセッサは、それまで多数の真空管、トランジスタ、集積回路で構成されていたCPUの機能を1つの集積回路に集約したものです。
マイクロプロセッサの登場により、家庭でも購入できる安価なパーソナルコンピュータの開発が進みました。初期のパーソナルコンピュータとしては、Apple社が1976年に発表したApple I、1977年に発売したApple IIが挙げられます。
しかし、パーソナルコンピュータが爆発的に普及するきっかけとなったのは、1981年にIBM社が発売した IBM PC です。IBM PC は他社によって多数コピー・互換機が製造され、部品価格の低下と IBM PC互換機 の市場シェア拡大につながりました。
2007年のiPhone、2008年のAndroidスマートフォンの登場は、コンピュータの歴史における新たな転換点となりました。それ以前にもPDA(携帯情報端末)と呼ばれる小型機器は存在しましたが、処理能力や機能は限定的でした.
スマートフォンはパソコンに匹敵する処理性能を備え、ウェブブラウジング、メール、音楽再生、写真撮影、電話機能など多様な機能を提供することで、急速に普及しました.
近年では、家電製品にも高性能なCPUが搭載され、インターネットに常時接続したスマート家電が登場しています。冷蔵庫、洗濯機、エアコン、テレビなど、さまざまな家電がインターネットに接続され、スマートフォンや音声アシスタントを通じて制御できるようになりました。CPUやコンピュータの小型化・高性能化は、私たちの日常生活をより便利で豊かに変化させています。
現代では、コンピュータ技術の進化に伴い、さまざまなサービスが登場してきています。
2010年代以降、クラウドコンピューティング が急速に普及しました。クラウドコンピューティングとは、インターネット経由でアクセスできる、共有のリソースプール(サーバー、ストレージ、アプリケーションなど)を利用するコンピューティングモデルです。ユーザーは必要なときに必要なだけリソースを利用でき、初期投資や運用コストを削減できます。クラウドコンピューティングの普及により、ソフトウェアやデータへのアクセス方法が大きく変化し、SaaS(Software as a Service)、PaaS(Platform as a Service)、IaaS(Infrastructure as a Service)といったサービスモデルが広く利用されるようになりました。
近年、AI(人工知能) 技術、特に深層学習(ディープラーニング)が急速に進歩しています。深層学習は、人間の脳の神経回路を模倣したニューラルネットワークを多層構造にすることで、大量のデータから複雑なパターンを学習できます。画像認識、音声認識、自然言語処理など、さまざまな分野で高い精度を達成し、自動運転、医療診断、金融取引など、さまざまな応用が進んでいます。GPU(Graphics Processing Unit)の性能向上や、大量のデータセットの整備が、深層学習の発展を支えています。
量子コンピュータ は、量子力学の原理に基づいて動作するコンピュータです。従来のコンピュータとは異なり、量子ビットと呼ばれる情報単位を使用し、重ね合わせや量子もつれといった量子力学的な現象を利用することで、特定の種類の計算を従来のコンピュータよりもはるかに高速に実行できます。創薬、材料科学、金融モデリングなど、さまざまな分野への応用が期待されていますが、実用化にはまだ多くの技術的課題が残されています。
データ処理をクラウドではなく、データが発生する場所に近い「エッジ」で行なう エッジコンピューティング も注目されています。IoTデバイスの普及により、生成されるデータ量が爆発的に増加しており、すべてのデータをクラウドに送信して処理することは現実的でなくなってきています。エッジコンピューティングは、データ処理の遅延を低減し、ネットワーク帯域幅の負担を軽減できるため、自動運転、工場の自動化、遠隔医療など、リアルタイム性が求められるアプリケーションで特に重要となります。
これらの技術革新は相互に関連し合い、コンピュータ技術は今後も進化を続けていくでしょう。これらの進歩は、私たちの社会や生活に大きな影響を与え、新たな可能性を切り開いていくと考えられます。