book.mynavi.jp ·...

39

Upload: others

Post on 04-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書
Page 2: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書
Page 3: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書
Page 4: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

●本書のサポートサイト

 http://book.mynavi.jp/support/pc/5067/

●本書は

「機械のコトバ」(2005年5月刊行)

を元にした電子版/オンデマンド版です。

●電子版/オンデマンド版制作にあたり、2014年1月現在での補足情報を記事として

追加していますが、基本的に本書中の情報は書籍執筆段階のものです。

●本書に登場するソフトウェアのバージョン、URL、製品のスペックなどの仕様や情報は、

すべてその原稿執筆時点でのものです。執筆以降に変更されている可能性がありますの

で、ご了承ください。

・本書中に掲載している画面イメージは、特定の設定に基づいた環境にて再現される一例

です。ハードウェアやソフトウェアの環境によっては、必ずしも本書通りの画面にならな

い場合があります。あらかじめご了承ください。

・本書に記載された内容は、情報の提供のみを目的としております。したがって、本書を用

いての運用はすべてお客様自身の責任と判断において行ってください。

・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

の内容に関してなんらかの保証をするものではなく、内容に関するいかなる運用結果につ

いてもいっさいの責任を負いません。あらかじめご了承ください。

・本書中の会社名や商品名は、該当する各社の商標または登録商標です。本書中では TM

および®マークは省略させていただいております。

Page 5: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

いきなり私事で恐縮なのですが、筆者は地方の小ソフト会社でゲームの

開発に携わっていたりします。パッケージソフトもいくつかあり、小さい

会社なのでユーザーサポートなども自分で担当していました。まあ売れた

本数が本数だけにそんなに大したことにはならなかったわけですが…とい

うのはともかく、そのときに一番困ったのが、お客様に結構言葉が通じな

いことでした。

もちろんお客様が外国人だったわけではなく、サポートするためには例

えば「ファイル」とか「ドライバ」といった基本的な用語を使わざるを得な

いのですが、それがたいてい通じないためです。そこで初心者向けのコン

ピューター解説書の必要性を常々感じていました。

そのための初心者向けの入門書などはそれこそ星の数ほど出ていますが、

そういったものはたいていがOSやアプリケーションの「使い方」の本で、

それがなぜそう動くのかといったようなことについては書かれていません。

これは作者の手抜きと言うよりは、そういった基本的なことを説明しよう

とすると実はソフトウェアやOSの仕組みなどについて1から説明すること

になってしまって、ちょっと簡単には手を出せないからです。

ソフトウェアに関する本もこれまたたくさんありますが、今度は数学の

教科書のようになってきて、興味がある人でも基本的な素養がないとまず

理解不能です。

本書はそういったコンピューターに興味のある一般の人を対象とした、

ソフトウェアの基礎の基礎に関する解説書です。

そのアプローチとして本書では、データの数値化やアルゴリズムの話と

共に、本書のタイトルにもなっている「機械のコトバ」、すなわちコンピュ

ーターの「機械語」の解説を行います。

ある程度コンピューターを知っている人だと機械語は難しいものだとい

うイメージがあるかもしれません。実際に機械語でプログラムを作成しよ

うとすれば、それは大変な作業になります。しかしコンピューターがどの

ように動作するかというイメージを掴むためには、実はこの機械語を見て

みるのが一番の早道なのです。機械語の動作が理解できれば、その上で動

く高級言語やOSなどの動作も非常に分かりやすくなるのです。

もちろん本書を読んだからといって、明日からコンピューターがバリバ

リ使えるというわけにはいかないでしょう。しかし、今まで「何だかよく

分からない箱」だったものが少しでも違ったように見えてきたならば、筆

者が本書を書いた甲斐があったというものです。

最後に、本書の原稿を見てくれた算法研究所一同に感謝します。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

はじめに

Page 6: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

プロローグ A君の悲劇....................................................................12

1-1 電卓とコンピューターの違い.............................................18ちょっと青春の気分に ....................................................................18

逃げられなかった場合 ....................................................................20

ソフトウェアがなければ….............................................................23

コンピューターがワープロになれるわけ .....................................24

果てしなき野望................................................................................26

1-2 ハードウェアの一番基本的な話.........................................27もっとも手抜きで描いたコンピューターの構成..........................27

CPUとは..........................................................................................28

メモリとは........................................................................................29

外部入出力装置とは........................................................................30

1-3 コンピューターは数しか分からない.................................32基本中の基本....................................................................................32

10進法とか2進法とか ..................................................................33

なんで2進法などを使うのか?.....................................................37

実際に扱える数の制限 ....................................................................38

数字が長すぎてうっとうしい.........................................................38

[まとめ]一番基本的なところ........................................................39

補足  ビットとバイト....................................................................41補足  10進2進16進法対応表....................................................44

2-1 様々な数を表す....................................................................48大きな整数........................................................................................48

負の数の表し方................................................................................49

実数の表し方....................................................................................51

コンピューターの数は正確ではない…こともある......................52

2-2 文字を表す............................................................................54文字コード........................................................................................54

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

CONTENTS

4

01 コンピューターとはなにか

02 みんな数字で表してみる

もくじ

Page 7: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

一番基本のコード体系:アスキーコード .....................................55

制御記号 ...........................................................................................56

たくさんあるコード体系 ................................................................57

こんなに種類があると困らないか?.............................................62

2-3 画像その1:ビットマップ.................................................64ビットマップの概念........................................................................64

色を表すには?................................................................................67

画像サイズの問題............................................................................68

解像度を減らす................................................................................68

色の数を減らす................................................................................69

カラーパレット................................................................................69

データを圧縮する............................................................................70

画像データの種類............................................................................71

動画を表す........................................................................................72

2-4 画像その2:メタファイル.................................................74メタファイルとは?........................................................................74

この方式の特長................................................................................75

この方式の欠点................................................................................76

どこに応用されているか?.............................................................78

2-5 画像その3:3次元コンピューターグラフィックス.......79物体のデータ化................................................................................79

3DCGの「描き方」...........................................................................80

2-6 音を表す ...............................................................................82音をそのままデータにする:PCM...............................................82

サンプリングレートと音質.............................................................83

MP3とは? .....................................................................................83

音の鳴らし方をデータにする:MML...........................................84

音の鳴らし方をデータにする:MIDI............................................85

GM規格............................................................................................86

[まとめ]数値化できないものは?................................................88

補足  データ圧縮について............................................................90データ圧縮とは................................................................................90

データ圧縮方法1:ランレングス .................................................90

単純なランレングスだとうまくいかない例 .................................91

データ圧縮方法2:ハフマン符号化 .............................................91

圧縮したデータをさらに圧縮したら?.........................................93

データ圧縮方法3:不可逆圧縮(JPEG)......................................94

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

CONTENTS

5

Page 8: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

3-1 プログラムとアルゴリズム.................................................98プログラムとは?............................................................................98

アルゴリズムとは?........................................................................98

3-2 迷宮からの脱出..................................................................101迷路に閉じこめられた場合...........................................................101

出口に確実に行く方法 ..................................................................102

左手の法則......................................................................................103

3-3 もっと詳しく説明しろだと?...........................................104迷宮に入った気分で......................................................................104

左手の法則完成!..........................................................................105

のはずが…......................................................................................105

3-4 大馬鹿者に噛んで含めて説明する...................................107コンピューターに分かる説明.......................................................107

(1)迷路とは? ...............................................................................107

(2)道なりとは? ...........................................................................109

(3)方向とは? 正面とは? .........................................................110

(4)来た方向とは?........................................................................110

(5)進むとは? ...............................................................................111

(6)分かれ道・行き止まりとは? ................................................112

(7)道の数の数え方は?................................................................113

(8)左とは?...................................................................................114

(9)引き返すとは?........................................................................114

(10)道なりに進むとは?..............................................................115

やっとできあがったが… ..............................................................115

[まとめ]なんだか疲れた気がする… ..........................................116

補足  全然疲れていない人へ......................................................117左手の法則が効かない場合...........................................................117

あてどなき彷徨..............................................................................117

印を付ける......................................................................................119

これではだめだった......................................................................120

だめな例1の解決 ..........................................................................121

だめな例2の解決 ..........................................................................122

確実な迷宮脱出アルゴリズム.......................................................123

アルゴリズムのシェイプアップ...................................................124

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

CONTENTS

6

03 アルゴリズム

Page 9: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

4-1 なぜ機械語なのか?..........................................................128機械語の文法..................................................................................128

どんな命令があるか......................................................................129

機械語の表記..................................................................................130

偽機械語コンピューター登場.......................................................131

偽機械語コンピューターの仕様...................................................132

偽機械語の基本文法......................................................................133

4-2 データ転送命令..................................................................135データ転送命令..............................................................................135

間接参照 .........................................................................................135

4-3 算術演算命令......................................................................137符号反転命令..................................................................................137

加算命令・減算命令......................................................................137

フラグ .............................................................................................138

比較命令 .........................................................................................140

4-4 論理演算命令......................................................................141否定.................................................................................................141

論理演算はビット単位で計算する...............................................142

論理和 .............................................................................................143

論理積 .............................................................................................144

排他的論理和..................................................................................145

2進法の数値の桁を操作する .......................................................146

ビット比較......................................................................................147

メモリの値を真偽判定に使うには...............................................147

4-5 ジャンプ命令......................................................................149無条件ジャンプ..............................................................................149

条件付きジャンプ..........................................................................150

ジャンプ命令の基本的な使い方...................................................150

4-6 入出力命令 .........................................................................153外部機器との入出力......................................................................153

4-7 その他の命令......................................................................155データ退避・復帰命令 ..................................................................155

ビットシフト命令..........................................................................155

サブルーチンコール......................................................................156

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

CONTENTS

7

04 機械のコトバその1:機械語

Page 10: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

その他の命令..................................................................................156

たったこれだけ?..........................................................................157

こんなもんが分かるかぁぁ!.......................................................159

4-8 アセンブリ言語..................................................................160アセンブリ言語の概要 ..................................................................160

よく使うアドレスを記号化する...................................................164

アセンブラ......................................................................................165

4-9 基本的な処理の例..............................................................166条件分岐とループ..........................................................................166

2つのメモリを入れ替える...........................................................167

とりあえずの掛け算プログラム...................................................168

お馬鹿な割り算プログラム...........................................................169

マルチワード計算..........................................................................171

4-10 機械語で迷宮から脱出......................................................175迷宮脱出プログラム:機械語版...................................................175

[まとめ]とにかく本気で疲れた…..............................................180

補足  賢い掛け算と割り算プログラム.......................................181高速な掛け算アルゴリズム...........................................................181

割り算のアルゴリズム ..................................................................184

補足  偽機械語の最小セット......................................................189偽機械語最小セット......................................................................189

パラメータの種類..........................................................................189

ジャンプ命令..................................................................................191

論理演算命令..................................................................................192

ビットシフト命令..........................................................................193

その他の命令..................................................................................194

算術演算 .........................................................................................195

符号反転 .........................................................................................195

足し算 .............................................................................................196

5-1 アセンブリ言語の改良......................................................202なぜアセンブリ言語が分かりにくいのか ...................................202

数値に分かりやすい名前を付ける...............................................203

アドレスを省く..............................................................................205

プログラムを修正する ..................................................................206

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

CONTENTS

8

05 機械のコトバその2:高級言語

Page 11: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

5-2 アセンブリ言語を超えて ..................................................210高級言語 .........................................................................................210

高級言語をコンピューターはどうやって理解するか................213

高級言語ってなにが高級?...........................................................214

5-3 数値やアドレスに名前を付ける.......................................216定数:数値に名前を付ける...........................................................216

変数:アドレスに名前を付ける...................................................217

変数のアドレスは?......................................................................218

変数の型 .........................................................................................219

数値以外の型..................................................................................221

5-4 よくある処理を簡便に......................................................223式の記述 .........................................................................................223

各種の演算子..................................................................................225

5-5 プログラムの流れを分かりやすく...................................227条件分岐 .........................................................................................227

関係演算子と論理演算子 ..............................................................228

ブロック .........................................................................................230

一度にたくさんの条件分岐...........................................................231

ループ処理......................................................................................232

goto文とラベル............................................................................233

それから?......................................................................................234

5-6 複雑な構造に名前を付ける ..............................................235広い範囲に名前を付ける:配列...................................................235

複雑な構造に名前を付ける:レコード型 ...................................236

さらにいろいろ..............................................................................239

5-7 サブルーチン......................................................................240同じようなところがいっぱいある...............................................240

プログラムのブロックに名前を付ける .......................................241

関数とプロシージャ......................................................................243

関数の定義例..................................................................................244

5-8 機械語でサブルーチン......................................................247サブルーチンの動作......................................................................247

データ退避・復帰命令 ..................................................................248

スタック .........................................................................................249

スタック経由でアドレスを渡す...................................................250

サブルーチンコール・復帰命令...................................................251

パラメータの引き渡し ..................................................................252

スタックの調整..............................................................................253

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

CONTENTS

9

Page 12: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

結果を返す......................................................................................255

機械語でサブルーチン呼び出し...................................................256

ややこしいぞ!..............................................................................257

5-9 サブルーチンの別な利点 ..................................................258プログラムの部品化......................................................................258

とりあえず大枠だけ作ってしまえ...............................................259

よりシンプルな構成要素に還元する...........................................261

5-10 高級言語で迷宮から脱出 ..................................................263迷宮脱出プログラム:Pascal版 ................................................263

まだまだ長いような… ..................................................................266

[まとめ]すばらしき高級言語......................................................267

補足  自分で自分を呼んでしまったら?...................................268スタックを使わない値の引き渡し...............................................268

再帰アルゴリズム..........................................................................269

再帰の例1:階乗 ..........................................................................269

再帰の例2:塗りつぶし...............................................................272

再帰が行えるためには ..................................................................274

ローカルな変数..............................................................................276

変数の退避・復帰..........................................................................277

ローカル変数とスタックフレーム...............................................277

バッファオーバーフロー ..............................................................279

6-1 本当の機械語について......................................................282なんで偽物などを?......................................................................282

本物の機械語と偽機械語はどう違う? .......................................283

レジスタ .........................................................................................285

6-2 Z-80命令の簡単な解説....................................................289データ転送命令..............................................................................289

算術演算命令..................................................................................293

シフト・ローテート命令 ..............................................................295

論理演算命令..................................................................................296

ビット演算命令..............................................................................296

ジャンプ命令..................................................................................297

入出力命令......................................................................................298

退避・復帰命令..............................................................................298

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

CONTENTS

10

06 機械のコトバその3:本当の機械語

Page 13: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

サブルーチンコール......................................................................299

割り込み処理..................................................................................300

その他 .............................................................................................301

というわけで..................................................................................301

6-3 Pentiumだとどうなっている? .....................................303x86命令セット .............................................................................303

x86命令で既存の命令はどうなった?.......................................303

仮想メモリとマルチタスク用の命令の追加................................304

もっと最新のCPUだと?.............................................................306

[まとめ]機械語はシンプルイズベスト ......................................307

補足  もう少し突っ込んだハードウェアの話...........................308もう少しまともに描いたコンピューターの構成........................308

バス.................................................................................................309

CPU←→メモリ間のデータのやりとり.......................................310

キャッシュって?..........................................................................310

CPU←→外部入出力装置間のデータのやりとりの概要............311

I/Oポートを利用するデータ入出力 ............................................312

ダイレクトメモリアクセス...........................................................312

共有メモリを利用するデータ入出力...........................................313

割り込み .........................................................................................313

7-1 全能なるプログラム..........................................................318コンピューターにあなたの意志を伝えるためには....................318

塵も積もれば神になる? ..............................................................319

不可能な問題..................................................................................320

7-2 原理的には可能だが…......................................................322有限なる存在の場合......................................................................322

やっぱり不可能な問題 ..................................................................323

人への長い道のり..........................................................................325

補足  チューリングマシンの停止問題.......................................328

付録  偽機械語エミュレータ&アセンブラ...............................334索引 .............................................................................................348

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

CONTENTS

11

07 神への長い道のり

Page 14: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

21世紀になってコンピューターは生活の中にますます浸透してきました。パソコン

本体の普及率もかなりのものですし、家電はいわゆるマイコン制御のものが当たり前

です。仕事をする場合には、少なくとも部署に一台ぐらいは間違いなくパソコンがあ

りますし、買い物をするためにコンビニやスーパーに行けばレジはPOSシステムにな

っています。なによりも、ほとんどの人が持っている携帯電話は小型のコンピュータ

ーそのものです。

このように現在の生活はもうコンピューターと切っても切れない関係になっていま

す。しかしそれにも拘わらず、必ずしもコンピューターのことが一般の人に十分に理

解されているとは思えません。多くの人はいまだコンピューターをなんとなく怪しげ

な装置だと見ているのではないでしょうか?

恐るべき悲劇に見舞われたA君も、そんな中の一人でした…。

A君は善良な一市民という言葉が特に似合うような、ごく普通の青年でした。

彼はどちらかというとアウトドア派で、得意な科目は英語と社会でした。学校で

コンピューターを使った授業もあったのですが、彼はそういったことにはあまり

興味がなかったので、友達のレポートを丸写しして切り抜けてしまいました。

ですから彼はコンピューターのことなど全然知りません。でもそれで特に不都

合もなかったのですが…。

そんな彼も学校を卒業して社会に出るときがやってきました。昨今はなにかと

不況です。とりたてて特技を持たない彼がなんとか就職できたのは、とある田舎

のちょっと怪しそうな会社でした。それでも職がないよりは遙かにましです。彼

はやる気満々でした。

ところがその会社で命じられた業務というのが、コンピューターの操作だった

のです!

彼の経歴を見れば分かる通り、A君はコンピューターのことなど毛頭分かりま

せん。ただ運がよかったことは、作業がちゃんとマニュアル化されていたことで

す。そのマニュアルはなかなか親切で、パソコンの起動の際にはこういう手順で

行い、作業のためにはこういう風に操作して…と絵入りで解説されています。そ

の通りに操作していればよかったので、しばらくはなんとかなりました。

ところが、トラブルは思いもかけないときにやってきます。

その日は休日でした。しかしA君はちょっと作業の遅れがあったのでその日も

出勤していました。もちろん、来ているのは彼一人です。

そしてA君がいつも通りパソコンを起動しようとしたときのことです。どうい

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

Prologue

12

プロローグ A君の悲劇

Page 15: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

うことでしょう? 普段ならピポッと音がしたあとは放っておけば入力画面にな

るのですが、今回はなにか違います。真っ黒な画面になにやら

Invalid System Disk(16ページ参照)

とか表示されているではありませんか!

A君は、システムディスクというのはコンピューターの中にあるなにか記憶す

る装置らしいということは知っていました。Invalid とはなんでしたっけ?

彼が慌てて辞書を引いてみると…。

invalid

1.【形】効力のない、無効な

2.【形】病弱な、病人用の、病身で

3.【名】傷病兵、病弱者、病人

ヤバいです。なんだかとってもヤバそうです。もしかして、あのウイルスって

奴かもしれません!

A君は慌ててコンピューター関連担当の先輩の家に電話をかけました。

「せ、先輩! マシンがウイルスにやられました!」

先輩は慌てました。

「なに! 本当か? 今行く。待機してろ!」

先輩の家は郊外の住宅地なので、やってくるには一時間半かかります。しかし

本当にウイルスなら事は急を要します。

そして一時間半後…。

「おい! マシンはどんな様子だ?」

「はい。見てください。ほら、システムディスクが病気だって…」

それを見た途端に先輩の顔がなにか赤黒く変色しました。

「貴様ぁぁぁ! こ、こんなことで俺を呼び付けやがったのか?」

「は?」

先輩の目はなんだか焦点が合っていません。これは例の逝っちゃってる目と言

うのでは…。

「お、落ち着いてください先輩! でも…」

「たわけが! フロッピーが入ってるだけじゃねえか!」

「??」

A君は先輩がなにを言っているのか理解できませんでした。先輩はA君ににじ

り寄ってきます。

「おい! 俺はな、デートをな、デートを断ってきたんだぞ!」

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

Prologue

13

Page 16: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

「え? そ、そうなんですか」

「今日のデートの約束を取り付けるのにどれだけかかったと思ってる?」

先輩の目には涙がにじんでいるように見えます。

「えっと、じゃあ、ウイルスじゃなかったんですか?」

「当たり前だ!」

「でも、あの、だったら、未然に防げてよかったですね。あはは」

その一言に先輩はついにキレました。

「うるさい! おまえなんか殺してやる!」

「うわああああ! やめてください! やめて!」

それから10分後…。

「どうして俺がこんな目に…?」

A君は冷たい床の上に横たわったまま力なくつぶやきました。思いっきりどつ

き回されたせいで、痛くて体を動かすこともできません。

「俺はなにもしてないのに…」

フロッピーを入れたまま帰ったのは彼ではありませんでした。というか、そん

なことをするのは先輩ぐらいしかいません。それなのに、どうしてここまでされ

なければならなかったのでしょうか? 確かに先輩は普通よりは短気な性格でした

が、これはちょっと常軌を逸しているのではないでしょうか?

そう思ったとき、A君の心にふっとある考えがよぎりました。

“もしかしたら先輩はコンピューターに操られているのでは?”

A君の脳裏に昔見た映画のシーンが浮かび上がりました。確か最初は猿が変な

鉄板の周りで踊っていて…それから宇宙になってHALとかいうコンピューター

が出てきて…変な怪物が乗組員を皆殺しにし始めて…最後は自爆装置が「光あ

れ!」って…うわあああ!

ふと上を見上げると、机上のPCが見えます。それはじっと黙ってA君を見返

しているような気がします。

「もしかしたら…こいつらは俺を監視しているのか?」

そう思った途端にA君は矢も楯もたまらなくなりました。

彼はふらふらと立ち上がると、そのまま部屋の中のコンピューターを片っ端か

らたたき壊し始めました。

物音を聞いて慌ててやってきた先輩に向かってA君はさわやかに言いました。

「これでやっと人間に戻れますよ! 先輩!」

こうして人間には戻れたA君ですが、人生は終わってしまいました。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

Prologue

14

Page 17: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

…と、もちろんこれは実話ではありません。しかし中には、これが決して他人事に

感じられない人がいるのではないでしょうか。

SF小説や映画ではコンピューターやロボットの反乱というのは非常に古典的なテー

マです。アイザック・アシモフがロボット三原則を考案したのは1940年代の話です。

それにも拘わらず、このテーマは現在に至るまで古びていません。

アイデアが古びないというのは、人の心の琴線に触れるなにかがあるからです。そ

れは人がロボットやコンピューターを便利だと思う反面、同時に常に漠然とした不安

感を抱き続けてきたからではないでしょうか。だからこそ機械が反乱するというお話

を単純には笑い飛ばせないのです。

これが宇宙人の侵略の話ならどうでしょう。本当に宇宙人がいたら、その脅威度は

ロボットやコンピューターの比ではありませんが、幸運なことに今のところ地球外に

生物が存在するという直接的な証拠はありません。近い将来、宇宙人と出くわすこと

もまずないでしょう。

しかし、これがコンピューターとなると話が違います。前述の通り現在は日常生活

の中にコンピューターは当たり前のように浸透しています。近い将来にはロボットも

また同様に生活に入ってきそうです。

それにも拘わらず、あなたはそれがどういった素性のものか分からないわけです。

これは大変まずい状況とは言えないでしょうか?

そのことに気づいたA君は、それらすべてを排斥するという手段に打って出ました。

しかしこれはあまりよいやり方とはいえません。よく分からない外国人が隣に越して

きたので、怖くなって皆殺しにしてしまったというようなものです。全然洒落になっ

てません。

こういった場合に普通の人はどうすべきかといえば、まずその相手とコミュニケー

ションをとってみることでしょう。外国人でもなんとか会話さえできれば、彼らが日

本人とかけはなれた風俗習慣を持っていたとしても、必ずや理解し合える部分も生ま

れます。

もちろん相手をある程度理解できたからといって、それで問題が解決というわけに

はいかないでしょう。しかし、少なくとも相手がまったく理解できなかったときに感

じたような不安はなくなっていることでしょう。

もうお分かりですね。相手がコンピューターだったとしても同じ手が使えるわけで

す。すなわち、コンピューターとコミュニケーションがとれればいいのです。そうや

って腹を割って話してみれば、相手が決してそんなに危険な奴ではないことが分かる

かもしれません。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

Prologue

15

Page 18: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

では、どうすればコンピューターと話し合うことができるのでしょうか?

そのためにはコンピューターに通じる言葉を知る必要があります。それがプログラ

ム言語と呼ばれる言語です。

コンピューターのプログラムもしくはソフトウェアという言葉は皆さんも聞いたこ

とがあるかもしれませんが、これはプログラム言語で書かれた文章のことです。コン

ピューターはその文章を読んで、そこに書かれていることを実行する機能を持った装

置なのです。

というわけで、これから本書はこのプログラム言語、プログラム、ソフトウェアと

いうものについてもっとも基本的なところから解説していきたいと思います。

ただひとつ注意しておいてほしいのは、本書を読了したからといって明日からコン

ピューターを自由自在に扱えるようになるなんてことはあり得ないということです。

この本はコンピューターというものを理解するための最初の一歩の手助けにしかすぎ

ません。

でも、その最初の一歩こそが重要だということはどなたにも理解していただけると

思います。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

Prologue

16

補足@2014…Invalid System Disk

本書が最初に出たのは2005年のことでしたが、新装版を出すにあたっていきなりジョークの解説が必要になってしまいました(笑)。これなんですが、まずパソコンが起動するには起動用のプログラムが入ったシステ

ムディスクが必要になります。そこで当時のパソコンは電源を入れると最初にFDD(フロッピーディスクドライブ)にシステムディスクがあるかどうかを調べて、ディスクがなければ内蔵のHDD(ハードディスクドライブ)から起動するという動作が普通でした。内蔵HDDは当然システムディスクも兼ねています。ところがここでFDDに「システムディスクではないフロッピーディスク」が入ってい

たらどうなったかというと―――パソコンはビーッと嫌な音をたてて、真っ黒な画面に「Invalid System Disk」と表示されていたのです。そこで初心者がFDDにデータディスクを入れっぱなしで電源を切ってしまって、次

回の起動時にA君のように大慌て、というのがわりと日常の風景でした。でも現在のパソコンにはもうFDDなんて搭載されておらず、もし今そんな表示が出

てきたなら本当に内蔵のHDDが壊れている可能性大です。すなわち真剣に洒落にならない事態で、先輩も本気で顔面蒼白になったことでしょうが……。―――そんなわけで、このように初版当時と状況が変わってしまったような点につい

ては補足@2014というコラムの形でコメントすることにしました。

Page 19: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0100

1010

1010

1010

1010

1010

1010

1010

1010

1010

1010

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

1010

1010

1010

1010

1010

1010

1010

1010

1010

1010

1010

0101

0101

0101

0101

0101

0101

0101

0101

0111

0101

0101

0101

0101

0101

0101

0101

0101

0101

0101

プログラム言語とかソフトウェアといったも

のに対する解説を始める前に、まず、もっと

も根元的な疑問に対して回答を与えておかな

ければなりません。

その疑問とは、「コンピューターとはいったい

なんなのか?」という疑問です。

01

コンピューターとは何か

Page 20: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

電卓とコンピューターの違い

コンピューターは日本語ではよく「電子計算機」と訳されます。すなわち「電子」の「計算機」

という意味ですが、コンピューターができる以前にも世の中に「計算機」は存在しました。た

とえば算盤とか計算尺とか手回し計算機(これを見たことのある人は相当ご年輩のはず)など

です。

この従来の計算機の最新型がいわゆる電子卓上計算機、要するに「電卓」です。それでは、こ

のコンピューターと電卓はいったいなにが違うのでしょうか? 算盤とかが相手ならばずい

ぶん違うように見えますが、電卓とコンピューターはちょっと見には結構似ているように思

えます。

でも、この両者の間には日本海溝や男と女の間並の深い溝があるのです。

ちょっと青春の気分に

それではちょっと昔に戻って、二次方程式のことを思い出してください。

え? 思い出すのもいやだって? 困りましたね。もしコンピューターのことをある

程度理解しようと思ったら、中学から高校1年程度の数学の素養がどうしても必要に

なります。

といっても、どうしてもイヤだという人に無理強いする気はありません。今まで何

千年も人はコンピューターなしで生きてきたのですから。はっきり言って、そういう

生きかたの方が人は幸せかもしれません。

ただ、そう言ってしまったらこの本はここで終わってしまいますので、これ以降は

少し我慢してでもコンピューターのことを知りたいという読者を前提として書いてい

きます。大した数式は出てきませんから安心してください。

さて、二次方程式とは以下のような式を満たすxを求めなさいという問題です。中

学校で習ったはずです(旧制中学ではどうだったかは知りませんが)。

上の式でa,b,cが例えば3,4,-1であったとすれば以下のようになります。

01コンピューターとは何か

18

01-01

Page 21: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

さて、ここでもう忘れているかもしれませんが、二次方程式には有名な解の公式と

いうのがあります。

こういった公式があると便利なことは、この式さえ覚えておけば式の中のa,b,cを上

の例ならば3,4,-1とそれぞれ置き換えて機械的に計算すれば自動的に答えが出てしま

う点にあります。

では上の式を電卓で計算してみましょう。ここで使う電卓は、その辺で売っていた

りWindowsのオマケに付いているような四則演算(+-×÷)と平方根(ルート)と簡

単なメモリ機能があるだけとします。

これを使って計算するためには、だいたい以下のようにキーを押す必要があるでし

ょう。以下の例はWindowsにおまけで付いてくる電卓ソフトを元にしています。

解1

[4][*][3][*][+/-][1][MS]

[4][*][4][-][MR][sqrt][-][4][÷][2][÷][3][=]

解2

[4][*][3][*][+/-][1][MS]

[4][*][4][-][MR][sqrt][+/-][-][4][÷][2][÷][3][=]

安い電卓にはカッコの機能がないので、足し算引き算と掛け算割り算が混在していると結構

大変です。そのため、計算の順序が式とは少し変わっています。

結構面倒ですね。二次方程式には解が2つあるので二回計算しなければいけません。

でもこのぐらいならまだいいです。以下のような問題になったらどうしますか?

解1

[4][*][3][.][2][5][6][7][4][*][+/-][.][2][9][5][8][1]

[6][MS]

[2][4][5][.][4][5][6][*][2][4][5][.][4][5][6][-][MR]

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-01電卓とコンピューターの違い

19

Page 22: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

[sqrt][-][2][4][5][.][4][5][6][÷][2][÷][3][.][2][5][6]

[7][4][=]

解2

[4][*][3][.][2][5][6][7][4][*][+/-][.][2][9][5][8][1]

[6][MS]

[2][4][5][.][4][5][6][*][2][4][5][.][4][5][6][-][MR]

[sqrt][+/-][-][2][4][5][.][4][5][6][÷][2][÷][3][.][2]

[5][6][7][4][=]

こうなると、数字の桁数が多いのでキーをたくさん押さなければなりません。その

上1カ所でもキーを押し間違っていたら大変なので、せめてもう一度は検算してみな

いと答えに安心ができません。

なんだかやる気が失せてきますね。それどころか、

でも、それどころか場合によったら

などという問題を出されることだってあるかもしれません。これを全部やれと言われ

てしまったらどうでしょう? もうほとんど拷問です。

もっとも正しい選択は、そんな羽目に陥らないようにすることなのですが…。

逃げられなかった場合

人生、運が悪いことはよくあります。上のような無理難題を吹っかけられてしまっ

たとしたら、いったいどうすればいいのでしょうか?

解決策その1:戦う

まず第一に考えるべきことは、やはり戦うことでしょう。

戦い方はいろいろあります。おもむろに立ち上がって、そんなことを言い出した上

司をぶん殴るというのも考えられますが、これはあまりお勧めできません。

せめて、こんなことをしても無駄だと主張すべきでしょう。それで運良く上司を説

得できれば問題そのものがなくなってしまうわけで、万々歳です。

しかし、たいていの場合は必要があるからそういう指示が出ているわけで、簡単に

はうまくいきそうもありません。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

20

Page 23: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

解決策その2:逃げる

次の手は逃げることでしょう。

ただその場合、中途半端な逃げ方は逆効果です。単に放り出して帰ってしまうとい

うのは一番まずいやり方です。せめて医者に診断書を書いてもらって、できれば入院

してしまうぐらいの勢いが必要です。それでも相手がしつこいようなら辞表をたたき

つけてしまいましょう。

そうやって最後まで逃げ切ってしまえれば、それはそれで勝利と言えます。

しかし、辞表を出した後の行き先がないこともよくあります。もしあなたに家族が

いたりしたら、そういった境遇にはなりたくないはずです。

解決策その3:手下を使う

逃げることにも失敗したとすれば、今度はうまいこと他人に押し付けてしまうこと

を考えてみましょう。世の中にはもしかしたらこんな計算が好きな人がいるかもしれ

ません。そうでなくともあなたより立場の弱い人がいたならチャンスです。今こそ、

その「立場」を有効利用すべきときです。

ただこれも世の常ですが、そういった「立場」とは決して恒久的なものではありま

せん。それを維持するためには、あなたは不断の努力をする必要があるでしょう。そ

れに失敗したら相手に二倍返し、三倍返しされてしまうかもしれません。

と、いろいろ策を考えてみましたが、どれも今ひとつぱっとしません。

こういった方法が使えないのならば、仕方なく自力でなんとかする他はありません。

ともかく生きていく以上は文句を言っても始まらない状況が多々あります。そんな場

合はどうしたらいいのでしょう?

絶対にまずいのは、いきなり諦めて電卓を取り出し、せこせこと計算を始めること

です。そうではなく、あなたはそこでちょっと立ち止まって、せめてどうすればこの

作業が楽になるだろうかと考えなくてはなりません。

いかに楽をするかという課題は人類の進化の原動力です。獲物を解体するためには

歯で食いちぎるよりも、石器を使った方が楽でしょう。苦労して歩き回って獲物を狩

るよりも、動物を飼育して増やした方が楽でしょう。剣で一人一人刺殺するよりも、

爆弾を使った方がとっても楽です。

人類はこうやって進歩してきたのです。すなわち、ここであきらめてしまってはご

先祖様に申しわけが立ちません。

では、どういう方法があるのでしょうか?

ここで解決策その3を思い出してください。この方法はある意味優れた方法だと言

えるでしょう。問題は「人に奴隷労働を強いたら反抗される」ということにあります。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-01電卓とコンピューターの違い

21

Page 24: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

それならば、反抗さえされなければいいのではないでしょうか? といっても人間相

手では相当に難しいことです。しかし、人間以外ならばどうでしょうか?

まず考えられるのは動物です。例えば猿を訓練してやらせてみるのはどうでしょ

う? 想像するだけで大変そうです。猿以外の動物だともっと大変そうです。

だとすれば、あとはそういった機械を作ることですが…そんなものが作れるのでし

ょうか? 作れるとしたらどんな機械でしょうか?

仮にあなたが例の二次方程式100問を解き始めたとします。はっきり言って恐ろし

く退屈な作業でしょう。なぜ退屈かというと、やってることがまったくワンパターン

だからです。個々の問題は別な問題なので、あなたはまったく同じことを繰り返して

いるわけではありません。それなのに、どうしてこうもワンパターンでつまらなく感

じるのでしょうか?

それはこの場合、各問の係数だけは変わっているものの、すべて二次方程式である

のは共通だからです。そのため、問題の解き方そのものはまったく同じです。あなた

はただひたすらなにも考えずに、ある手順に従った計算をしていくしかすることがあ

りません。だからこそ退屈なわけです。

実はこのある手順に従った計算、すなわち計算のやり方というのが大変重要です。

そこである人が考えたわけです。

計算機に、この計算のやり方を覚えさせることができないだろうか?

機械がやり方を覚えていてくれれば係数を入力するだけで、あとは機械が勝手に計

算してくれるじゃないか!

そう考えたのはフォン・ノイマンという人でした。

このフォン・ノイマンは天才だったので、本当にそういう機械を作ってしまいまし

た(ただし、彼の暗算能力は作った機械を越えていたという話ですが)。

時は二次大戦のさなか、できた機械の名前は“ENIAC”と言いました。この機械は部

屋いっぱいの真空管でできていて、一秒間に3,000回の足し算ができたそうです。彼ら

はその機械を使って大砲の弾の弾道計算をしました。

すなわち、コンピューターという機械の始まりです。

と、一昔前までは言われていました。なぜ一昔前かというと、「いや実はABCマシンこそが

真の元祖だ」とか「実はバベッジの解析機関までさかのぼる」とか主張する人が現れて、現在

おおもめにもめている最中だからです。まあどうでもいいことですけどね。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

22

Page 25: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

ソフトウェアがなければ…

以上、なにが言いたかったかというと要するに

コンピューターとは計算の手順を覚えておくことができる計算機

なのです。もう少し具体的に言うと、コンピューターとは以下のような動作をする計

算機です。

1. 計算の手順を組み込んでおく。

2. 必要なデータを入力する。

3. 手順に従って計算させる。

これだけなのです。前の例で言えば次のような動作になります。

1. 二次方程式の解き方をコンピューターに教える。

2. 問題のデータ(この場合はa,b,cの係数)を入力する。

3. 問題を解け! と命令する。

ここで重要な点は、1の計算の手順で異なった手順を入れておけばコンピューター

はまったく違った動作をするということです。

コンピューターに二次方程式を解く手順を入れておけば二次方程式を解きますが、

代わりに連立方程式を解く手順を入れておけば連立方程式が解けます。その他、統計

計算でもなんでも計算手順さえ交換すればできるようになるのです。

言い換えれば、コンピューターには計算の手順を教えることができるわけです。

この計算の手順のことをプログラムと言います。プロローグでコンピューターとコ

ミュニケーションをとるにはプログラム言語を使うと言いましたが、プログラム言語

とはこのプログラムを記述するための、言い換えれば計算の手順を記述するための言

語に他なりません。

そして、このプログラムとデータをひっくるめたものをコンピューターのソフトウ

ェアと言います。このソフトウェアこそが、コンピューターというものを理解する上

でもっとも重要かつ基本的な概念と言えます。

ソフトウェア

プログラム:計算のやり方をプログラム言語で記述したもの。

データ  :計算される値。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-01電卓とコンピューターの違い

23

Page 26: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

さて、ここでソフトウェアのないコンピューターがあったら、それはなにができる

でしょうか?

もうお分かりですね。ソフトウェアがないということは、そのコンピューターはな

んの計算のやり方も知らないわけです。言い換えればなにもできません。

皆さんも「コンピューター、ソフトがなければただの箱」という表現をご存じだと

思います。ソフトウェアを入れ替えることでコンピューターは様々な動作をしますが、

逆に言えばソフトウェアがなければコンピューターはなにもできないのです。

コンピューターがワープロになれるわけ

ここまでコンピューターは計算機だと表現してきました。しかし、普通の人はコン

ピューターをあまり計算には使っていないのではないでしょうか。たぶんほとんどの

人はワープロで文書を作ったり、ゲームをしたり、インターネットでムフフな動画を

集めたりするのに使っているだけのはずです。

実際、二次方程式のような「計算」しかできないのであればコンピューターの用途

は非常に限られたものでしかありません。それでは元が算盤の成り上がりのようなも

のが、どうしてワープロに化けることができるのでしょうか?

ここでコンピューターには計算の手順を覚えさせることができる、と説明したこと

を思い出してください。ものを覚えている以上、コンピューター内部になんらかの記

憶装置があることを意味します。

次節でもう少し詳しく解説しますが、ご存じの通りコンピューターには「メモリ」と

呼ばれる記憶装置が付いています。コンピューターは、その記憶装置に書かれたデー

タを読んだり書いたりできるのです。

読んだり書いたりできるというのはどういうことでしょう? これは、記憶装置の好

きな場所にデータを書き込むことができるし、好きな場所のデータを読むことができ

るということです。まあ当然です。この程度のことができなければ困るのは分かるで

しょう。

さて、それでは記憶装置のある場所に以下のような数字列が書いてあったとします。

この数字列に次のような操作(読んで書くだけです)をします。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

24

1 2 3 4 5 6 7 8 9

Page 27: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

1. 真ん中の"456"を読み出して、どこか遠くの見えない場所にその値を書き込む。

2. 右の"789"を読み出して、"456"が元あった場所に書き込む。

3. 読み出した"789"の場所を空にする。

4. 遠くに書いておいた"456"を読み出して、元の"789"のあった場所に書き込む。

これはなんでしょう? 操作1~3をワンセットで考えれば、ワープロなどでよくあ

る「カット」とか「切り取り」と言われる操作とそっくりです。同様に操作4の操作は

「ペースト」とか「貼り付け」と言われる操作そっくりです。これが可能ならば、同じ

ように挿入・削除や検索・置換なんかもできそうだと思うでしょう。

コンピューターがワープロになれる最大の理由は、このようにコンピューターが記

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-01電卓とコンピューターの違い

25

1 2 3 4 5 6 7 8 9 4 5 6

1 2 3 7 8 9 7 8 9 4 5 6

1 2 3 4 5 6 4 5 6

1 2 3 7 8 9 4 5 6 4 5 6

Page 28: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

憶装置を持ち、そこからのデータを読み書きできる機能を持っているからに他なりま

せん。

コンピューターが電卓のような今までの計算機以上の機能を持てるのは、この点に

尽きると言っていいでしょう。この操作ができるために、コンピューターはほとんど

無限に近い可能性を持っているのです。

果てしなき野望

かくしてうまくソフトウェアを作ってやれば、コンピューターは非常に多彩な動作

をすることができるのです。そこから極論、

コンピューターはなんでもできる!

という考え方が生まれてきます。

昔のSFにこんなのがありました。ある科学者が完璧なコンピューターを作ります。

それが完成すると、科学者はコンピューターに「神はこの世に存在するか?」と質問

しました。コンピューターはこう答えました。「然り。今こそ神は存在する」と。この

話は、そのもっとも極端な例だと言えるでしょう。

でもこれは嘘です。心配する必要はまったくありません。なぜ嘘なのか、それが今

後の重要なテーマになってきます。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

26

Page 29: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

ハードウェアの一番基本的な話

前節でソフトウェアという概念が出てきました。本書は今後それに関する話をしていきたい

わけですが、そのためにはコンピューターが具体的にどういう構造を持った装置なのかとい

うことをある程度は知っておいてもらわないと話が進みません。

そこでこの節ではもう1つの重要な概念である「ハードウェア」、すなわちコンピューターの

本体に関する簡単な解説をします。

もっとも手抜きで描いたコンピューターの構成

前節でコンピューターは次のような動作をすると書きました。

1. 計算の手順を組み込んでおく。

2. 必要なデータを入力する。

3. 手順に従って計算させる。

このような動作をさせるためには、計算機にはどういった装置が必要でしょうか?

少なくとも以下のような部品が必要だということはお分かりになると思います。そし

て上記のような動作をさせるのであれば、これだけあればあとは特に必要なさそうな

ことも分かると思います。

CPU(中央演算装置)計算機の本体、すなわち問題を解くという本命の動作をする

ための装置です。

プログラムやデータを記録しておく装置です。当然のことな

メモリがらコンピューターは教えたことを覚えておかなければなり

ません。したがって、このような「記憶装置」が必須になって

きます。

プログラムやデータを入出力するための装置。人がコンピュ

ーターになにか教えたり答えを受け取ったりするためには例

外部入出力装置(IO機器)えばキーボードとかモニタといった装置が必要なのは明らか

でしょう。通常のパソコンには他にもいろいろ装置がつなが

っていますが、それらは結局すべて外部入出力装置の一種だ

と言えます。

これらの装置のことをひっくるめてコンピューターのハードウェアと言います。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-02ハードウェアの一番基本的な話

27

01-02

Page 30: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

では、それがどのように組み合わされているのでしょうか? 次の図は世界で一番

いい加減に描いたコンピューターの図です。その横に同じぐらいいい加減に描いた人

の絵が載っています。

ハードウェアの基本はこの図に集約されます。これならすぐ覚えられますね。それ

ではそのおのおのについて説明してみましょう。

CPUとは

どんなにしぶとい人間でも、頭を潰せば生き返ってはきません。コンピューターの

頭に相当する装置、それがCPUです。それではいったいCPUとはどのような動作を

するのでしょう? それはおおむね以下のようなものです。

1. メモリ上にある計算の手順を1行読み込む。

2. 書かれている内容に従って様々な動作(計算、データの読み書き、外部機器とのデ

ータのやりとり)を行う。

3. 次の命令を読む。

4. それに書かれている命令に従って…以下略。

基本的にはこれだけです。具体的にどんな命令があるかとかは今後の話になります

ので、とりあえず置いておいてください。

CPUはこの動作を周期的な電気信号のタイミングに合わせて行います。この周期的

な電気信号が「クロック周波数」と呼ばれるもので、周期が短いほど動作は速くなり

ます。例えば「Pentium4 3ギガヘルツ」といった表記がよくありますね。この3ギガヘ

ルツというのがクロック周波数の速さです。この例だと一秒間に30億回の周期になり

ます。すなわち、このCPUは一秒間に最大30億回の命令を実行できるという意味に

なります。

ただし命令の中には1つの命令で数周期かかったり、データがやってくるの待っていたりし

なければならないこともあり、実際にはもっと回数は減ってしまいますが。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

28

Page 31: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

細かいことはともかく、一般的にはクロック周波数が高ければCPUの性能も高いと

考えてそれほど大きな間違いではありません。

この他に、CPUの性能を左右するものにデータのビット幅があります。

よくCPUの説明に16ビットCPUとか32ビットCPUとかいう表現があるのを見たこ

とがあるでしょう。これは大ざっぱに言えば、一度(=1命令で)に処理できるデータ

の量を示しています。当然ながら、一度に処理できるデータ量が増えれば性能もよく

なることが想像できるでしょう。

初めてできたCPUは4ビットでした。パソコンが出たての頃は8ビットが普通でし

た。そして現在では32ビットが主流になっています(316ページ参照)。

また同じクロック数、同じビット幅のCPUでも、そのアーキテクチャ(設計)によ

って能力は異なります。さらに今後は1台のマシン上にたくさんのCPUが乗っている

などということも普通になっていくでしょう(316ページ参照)。

ただどれほど速度が上がったとしても、CPUの動作そのものが大きく変わることは

ないでしょう。

メモリとは

コンピューターをコンピューターたらしめるもっとも大きな要素は、実はこのメモ

リの存在です。コンピューターは計算のやり方を「覚える」ことができる以上、どこ

かに記憶装置が必要なのは自明です。

それでは、このメモリにどのように記憶が保存されるのでしょうか? 概念的に書け

ば下のようなものです。

番地 0 1 2 3 4 5 6 7 8 9 10 11 …

中身  130 203 130 177 145 229 141 68 130 171 13 10 …

メモリとはこのように

数値を書くことのできる領域がずらっと一列に並んでいるもの

です。各領域には0から始まる通し番号の番地とかアドレスと呼ばれる値が付いてい

ます。上記の例であれば、メモリの3番地には177という値が入っています。

CPUはこの番地を利用してメモリの中身を読み書きできます。「345番地の中身を読

め」とか「647番地に値23を書け」といった感じです。

ちなみにこの領域に書ける数ですが、実際のコンピューターが使用しているメモリ

では0~255の範囲の整数しか書けません。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-02ハードウェアの一番基本的な話

29

Page 32: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

コンピューターのカタログを見ると「メインメモリ512メガバイト」とかいった記述

があることに気づくかもしれません。これは、このコンピューターのメモリは0~255

まで書ける領域が536,870,912個ぐらいあることを示しています。

と、これでメモリがどういうものであるかの説明は終わりなのですが…。こんな仕

組みで複雑な計算のやり方などというもの記憶することができるのでしょうか? だ

いたい数値を書くにしても、0から255って、ちょっとなんだかしょぼすぎないでしょ

うか?

でも全然そんなことはないのです。ただ、ここにその説明を書くにはスペースがな

さすぎます。それを説明するために本書の2~4章があるぐらいです。なので、ここで

はそれで問題ないのだと信じておいてください。

外部入出力装置とは

コンピューターのハードウェアの第三の要素として、外部入出力装置があります。

理論的にはこれはなくてもかまわないものですが、実際上、これがないとなにもで

きません。

データを入力したり表示したりする装置(31ページ参照)

モニタ 数値や文字、絵といった結果を表示して人の目で見えるようにする装置。

プリンタ 数値や文字、絵といった結果を紙に印刷する装置。

キーボード コンピューターに手で文字データを入力するための装置。

マウス コンピューターに手で位置データを入力するための装置。

データを保存しておくための装置(31ページ参照)

ハードディスク 様々なデータを一時的に記憶しておく装置。そこそこの容量がある。

フロッピーディスク様々なデータを一時的に記憶する上に持ち運びもできるが、容量があま

りにも少ないのでそろそろ時代遅れ。

MO様々なデータを一時的に記憶する上に持ち運びもできる。フロッピーデ

ィスク数百枚分が入るが、結局あまり普及していない。

CD-ROMCDに入っているデータを読み込む装置。読み込みしかできないが、そ

こそこの容量がある。たいていのパソコンに付いている。

DVD-ROM DVDに入っているデータを読み込む装置。CDより容量が大きい。

様々なデータを一時的に記憶する上に持ち運びもできる。しかも、なに

紙テープが書かれているのか目で読むことさえできる!! しかし、フロッピー

ディスク1枚分ぐらいのデータのために5,000メートルぐらい必要な

のが欠点。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

30

Page 33: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

面倒くさいのでほんの一部しか書いていませんが、以上を見れば分かる通り、ない

と困りますね。

というわけで、ハードウェアに関する一番基本の基本はこんなものです。簡単でし

ょう?

しかし、総論は簡単でも各論になるとややこしくなるのは世の常です。CPUといっ

ても山のように種類があるし、外部入出力機器に至っては星の数ほどあります。

その上ここでは概念しか説明していないので、それが具体的にどのような構造を持

っていてどういう原理で動作するかという点は結局不明のままです。

でもコンピューターの基本を理解するためだけなら、この程度を知っておけば十分

なのです。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-02ハードウェアの一番基本的な話

31

補足@2014…外部入出力装置の変化

時代と共に使われる入出力装置にも流行り廃りがあります。まずデータを入力する装置には今ではタブレットを加えなければならないでしょう。

またノートパソコンなどではマウスカーソルを操作するためにタッチパッドが付いているのが普通になりました。データを保存する装置については、表にあった中では紙テープは冗談として、フロ

ッピーディスクとMOも現在ではほぼ滅びてしまいました。CD-RやDVD-Rは大きな容量のデータの受け渡し用として今でも使われていて、さら

に容量の大きなブルーレイディスクもあるのはご存じだと思います。しかし何といっても現在データを持ち運ぶ際にはUSBメモリや、SDカードなどのメ

モリカードを使っているのではないでしょうか。この両者は見かけは違いますが、共に半導体ベースで、電源を切っても内容が消え

ないフラッシュメモリというもので作られています。このフラッシュメモリそのものはかなり昔からありましたが、価格が高かったこと、

データの書き込みが遅かったこと、書き込み可能な回数が限られていたことなどから、当初は各種機器の設定保存用などに使われていただけでした。しかし技術の進歩によりそういった欠点が徐々に克服され、価格も安くなってきた

ため、現在では持ち運び用のメディアとしては最も利用されているものになったといえるでしょう。それだけでなく長年パソコンのメインの記憶装置はHDD(ハードディスクドライブ)

の牙城でしたが、それに代わるフラッシュメモリベースのSSD(Solid State Drive)も普及しつつあります。

Page 34: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

000

010

010

コンピューターは数しか分からない

前にも書いた通り、コンピューターはソフトウェアがなければ粗大ゴミです。ソフトウェア

とはデータとプログラムのことだと書きました。もちろん、それだけで分かってしまったと

いう人がいるとは思えません。

ここでは、そのソフトウェアに関してもう少し詳しく説明をしましょう。

基本中の基本

まず最初に知っておかなければならないことは、コンピューターとは所詮のところ

「計算機」なのだということです。したがって以下の大原則があります。

1. そもそもコンピューターは数値しか分からない。だからソフトウェアはすべて数値で記

述される。

2. しかもコンピューターが直接理解できるのは2進法で表記された数だけである。

まず、これだけはしっかり覚えておいてください。

特に1は重要です。このあたりで本書を読むのにすっかり疲れてしまった人でも、

これだけは覚えておいてください。

と、そう言われてもすぐにはピンとこないでしょうね。なぜなら実際のコンピュー

ターでは明らかに数以外の対象も扱えているからです。

コンピューターがワープロになれる話を書いたように、コンピューターでは文字や

絵の編集をすることができます。これはコンピューターが文字や絵を理解している証

拠ではないでしょうか? なにか話が矛盾していないでしょうか?

矛盾しているわけではありません。コンピューターは確かに数しか分からないので

す。コンピューターで数以外の対象を扱えているように見えるのは、

その「対象」はあらかじめなんらかの方法で「数」に変換されていて、コンピューターは変換

後の数を扱っているだけ

だからなのです。見かけ上はコンピューターが文字や絵を操作しているようには見え

ますが、実はコンピューター本体は数値の操作を行っているだけなのです。

01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010

01010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010101110101010101

01コンピューターとは何か

32

01-03

Page 35: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

このためコンピューターを利用する際には、扱いたい対象が数でなければまず最初

にそれを数で表すという作業が必要になります。これはコンピューターを利用する際

に最初に直面する、もっとも重要な問題の1つになります。

2章で様々な対象が具体的にどうやって数で表されているかを解説していますので、

詳しくはそちらを読んでみてください。

10進法とか2進法とか

というわけで、1はそういうものだと信じてもらえればいいのですが、2はちょっと

問題です。2進法ってなんでしたっけ? 昔に習ったような微かな記憶があるかもしれ

ませんが、いきなり説明しろと言われてもなかなか難しいですね。

しかしこれはコンピューターを語る上では非常に重要なポイントなので、ちょっと

詳しく説明しましょう。

さて、下にたくさんの●があります。これはいくつあるでしょう?

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●

なんだかものすごく人を馬鹿にした問題です。もちろんこれができない人はいない

でしょう。少し我慢して数えてみれば●は237個です。

ではこの237という数ですが、各桁に2とか3とか7という数字がなぜ出てくるので

しょう? と言われたら少し頭を抱えてしまうかもしれません。先に答えを言ってしま

えば

上の●の数を10進法で表したから2,3,7という数字が出てきた

のですが…。だからどうしてと言われそうですね。でも、10進法という言葉の意味が

よく分かっていれば実は当然の話です。

そこで、上記の●を次のように並べ替えてみましょう。

010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

0101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010010101010101001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101

0101010101010101010101010101010101011101010101010101010101010101010101010101010101011101010101010101010101

01-03コンピューターは数しか分からない

33

Page 36: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

試し読みはお楽しみいただけましたか?

ここからはManateeおすすめの商品をご紹介します。

Page 37: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

「プログラミング」

1 2豊富なイラストで「なぜ?」を解消! Javaの第一歩を踏み出そう

『スッキリわかるJava入門 第2版』は、Javaの基礎から初学者には難しいとされるオブジェクト指向まで、膨らむ疑問にしっかり対応しました。Javaプログラミングの「なぜ?」がわかる解説と約300点の豊富なイラストで、楽しく・詳しく・スッキリとマスターできる構成となっています。「なんとなくJavaを使っているけれど、オブジェクト指向の理解には自信がない」「学習の途中で挫折してしまった」という方にもおススメです。

スッキリわかるJava 入門 第2版

インプレス中山清喬・国本大悟(著者)658 ページ価格:2,376 円(PDF)

Java

300ものイラストで楽しく・詳しく・スッキリとマスター!

体験型の本書でプログラミングの第1歩を踏みだそう!

『やさしくはじめるiPhoneアプリ作りの教科書【Swift 3&Xcode 8.2対応】』は、iPhoneアプリを作ってみたい初心者のための入門書です。プログラミングが初めての人、苦手意識がある人でも楽しく学んでいけるよう、なるべくやさしく、イラストや図をたくさん使って解説しています。本書では実際にサンプルアプリを作りながら学んでいきますが、イラストによる解説で、一歩ずつ丁寧に、iPhoneアプリ作りの基本と楽しさを学べます。

やさしくはじめるiPhoneアプリ作りの教科書【Swift 3&Xcode 8.2 対応】

マイナビ出版森巧尚(著者)、 まつむらまきお(イラスト)312ページ 価格:3,002 円(PDF)

Swift(iOS開発)

作成するサンプルアプリは

シンプルで、意味を理解しながら作っていける

イラストによる解説で、プログラミングがはじめての人でも学べる

会話のやりとりの中にも、

開発現場でのヒントが

詰め込まれている

2017

3.6 おすすめ電子書籍

Page 38: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

プログラミング未経験でもAndroidアプリを開発 !Android開発

JavaScriptを網羅的に取り上げた骨太の1冊JavaScript

幅広いジャンルで活躍 !C#がキホンから学べる本

C/C++

初歩から順に理解できるPHPとデータベース

PHP

PHP5.4の基本からMySQLとの連携まで!

PHP

初めてのウェブ開発も安心Rubyの文法を基礎から解説

Ruby

イラストでよくわかるAndroid アプリのつくり方

Android Studio 対応版

親しみやすいイラストや、ステップバイステップでの丁寧な解説が基本コンセプト。開発環境「Android Studio」に対応し、Android のプログラムを作りながら、自然に Java というプログラム言語の知識が身につきます。

インプレス羽山博・めじろまち(著者)

価格:2,138 円(PDF)

JavaScript 逆引きハンドブック

JavaScript の逆引きリファレンスの決定版。JavaScript の機能を網羅的に取り上げていて、骨太の 1冊になっています。JavaScript の基本的な処理や便利な Tips はもちろん、HTML5 の APIについても数多く掲載しています。

シーアンドアール研究所古籏一浩(著者)

993 ページ 価格:3,694 円(PDF)

基礎からわかる C#

本書はプログラミングの経験がある人を対象とした、プログラミング言語「C#」の入門書です。C#の概要から基本的な文法、特徴的な機能まで、わかりやすく解説しています。C# 6.0 の新機能についても解説しています。

シーアンドアール研究所西村誠(著者)

168 ページ 価格:1,944 円(PDF)

いちばんやさしいPHPの教本PHPとデータベースの基本を順番に学んで、実践的なプログラムを完成させていく PHP の入門書です。大事なポイントや勘違いしやすいポイントは講師がフォロー。セミナーを受けている感覚で読み進められます。

インプレス柏岡秀男・池田友子(著者)

240 ページ 価格:1,836 円(PDF)

PHP+MySQLマスターブックこの一冊で PHPと MySQL の基本とWeb アプリケーションの構築法について学習できる実践的なプログラミング入門です。現場必須のプログラム構築法、API の活用法から、セキュリティ技術まで詳しく解説します。

マイナビ出版永田順伸(著者)

384 ページ 価格:2,916 円(PDF)

改訂 3 版基礎 Ruby on Rails

Ruby の文法やオブジェクト指向の考え方を初歩から解説。アプリケーションのモックアップ作り、データベースを導入し、ログイン・ログアウト機能を加え、最終的にはメンバーや記事の管理ページまでできあがります。

インプレス黒田努・佐藤和人(著者)

536 ページ 価格:3,240 円(PDF)

2017

3.6「プログラミング」

& &

&&

3 4 5

6 7 8

Page 39: book.mynavi.jp · いての運用はすべてお客様自身の責任と判断において行ってください。 ・本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書

プログラミングの基本から手取り足取りじっくり解説コンテスト・学習

必ずアルゴリズムの意味がわかるようになる入門書!

はじめてプログラミングに触れる前に読んでおこうコンテスト・学習

Go 言語の基礎から応用までポイントがよくわかる

その他言語

R 言語の機能を目的から見つけ出せる!その他言語

プログラミングの初心者がPython 3を学ぶのに最適

その他言語

目指せプログラマー! プログラミング超入門

本書は Windows 開発の標準ツールとも言える「Visual Studio」を使い、C#というプログラミング言語でプログラミングの基本を学びます。最終的には、ちょっとしたアクションゲームが作れるくらいになるのが目標です。

マイナビ出版掌田津耶乃(著者)

312ページ 価格:2,074 円(PDF)

楽しく学ぶアルゴリズムとプログラミングの図鑑

図解とイラストを豊富に使ったアルゴリズムの入門書。アルゴリズムとは『問題を解決するための考え方』です。それが分かってきたら、8 種類のプログラミング言語を使ったサンプルプログラムを実際に試しましょう。

マイナビ出版 森巧尚(著者)、まつむらまきお(イラスト)300 ページ 価格:2,689 円(PDF)

プログラミングの世界へようこそ

全くの初心者がプログラミングを勉強したいとき、さまざまな疑問が湧いてきます。「どの言語を覚えればいい?」「文系でも大丈夫 ?」本書はプログラミングに触れる前に知っておきたい基本をイラスト付きで解説します。

マイナビ出版尾川一行・中川聡(著者)

192ページ 価格:1,933 円(PDF)

改訂 2 版基礎からわかる Go言語

Google が開発したプログラミング言語「Go」の基礎から応用までをわかりやすく解説した 1 冊です。最新の Go 1.4 のバージョンに対応して改訂しました。Linux、Mac OS X、Windows の各環境に対応しています。

シーアンドアール研究所 古川昇(著者)240 ページ 価格:2,138 円(EPUB)

改訂 3版R言語逆引きハンドブック

本書では、最新バージョンのR 3.3.0 に対応し、R言語の機能を目的から探すことができます。統計が注目を集めるなか、Rを利用するユーザーも増えています。初心者でも使えるように、導入から丁寧に解説しています。

シーアンドアール研究所石田基広(著者)

800 ページ 価格:4,860 円(PDF)

基礎 Python 基礎シリーズ

プログラミングの初心者を対象にした Python 3の入門書です。変数の取り扱いから、リスト、タプルといったPython 固有のデータの操作、制御構造や関数などについて、初心者でも基礎から学習できるように説明しました。

インプレス大津真(著者)

312ページ 価格:2,894 円(EPUB)

2017

3.6「プログラミング」

& &

&&

9 10 11

12 13 14

コンテスト・学習