コンピューターに関する幅広い分野について、様々なトピックスをまとめました。
「コンピューター豆知識」というタイトルから想像できるとおり、「豆知識」、つまり専門書とは違った角度からのトピックス(トリビア)が中心です。
ですから、勉強モードで読むよりも、「ああ、そうなのか。」と軽い気持ちで読んでいただきたいと思います。そうすれば、コンピューターの世界の面白さを見つけるための一つのきっかけになることと思います。
本書の目次は、以下のとおりです。
はしがき
目次
序章 身近になったコンピューター
(序‐1)当初のコンピューターは、「電子計算機」と呼ばれていた。
(序‐2)パソコンは、「コンピューター」とは呼ばれたが、「電子計算機」とは呼ばれなかった。
(序‐3)スマホは、「コンピューター」とさえも呼ばれない。
【表記について】:「コンピューター」と「コンピュータ」
第1章 コンピューターの仕組みについて
(1‐1)ストアドプログラム方式について
(1‐1‐1)私たちがコンピューターに対して持っているイメージの多くは、実は「ストアドプログラム方式」に由来する。
(1‐1‐2)コンピューターを立ち上げることを「ブートする」というのは、靴ひもから連想した言い方であり、これもストアドプログラム方式に由来する。
(1‐1‐3)ストアドプログラム方式は、大変に便利である一方、マルウエアの活動の余地を生じさせた。
【解説】:ストアドプログラム方式でないコンピューター
(1‐2)記憶装置について
(1‐2‐1)主記憶装置は、必ずしも最も高速な記憶装置とは限らない。
(1‐2‐2)主記憶装置は、電源を切ると中身が消える。
(1‐2‐3)外部記憶装置は、必ずしも「外部」にあるとは限らない。
(1‐2‐4)パソコンでは主記憶容量が大切だが、スマホでは外部記憶容量の方が重視される。
【表記について】:kB(キロバイト)とMB(メガバイト)
(1‐3)ネットワークについて
(1‐3‐1)「インターネット(the Internet)」という名前は、ネット間通信規約のことを「internet protocol」と称するところから発生した。
【解説】:ハブとルーター、L2スイッチとL3スイッチ
(1‐3‐2)ややこしいが、家庭用のルーターは、実はルーターとハブが合わさったものである。
(1‐3‐3)「専用ネットワーク」でも、拠点と拠点を結ぶ通信回線は、他のユーザーと共用している。
(1‐3‐4)当初のコンピューターには「ネットワーク」という概念がなく、中心のコンピューターに通信回線をつなぐという発想だった。
(1‐4)仮想化について
(1‐4‐1)仮想化その1「仮想記憶」:ハードウエアはソフトウエアより速い。仮想記憶では随分と複雑な処理を行うが、ハードウエアで行うのでほとんど遅くならない。
(1‐4‐2)仮想化その2「仮想マシン」:クラウドサービスで割り当てられるサーバーは、仮想マシン、つまり孫悟空の毛の一本である。
【解説(Advanced)】:ハイパーバイザーの動作
(1‐4‐3)仮想化その3「仮想ネットワーク」:仮想ネットワークには、VLAN、IP-VPN、IPsec-VPN、SSL-VPNなど、紛らわしい名称のものが多い。そして、使われる利用局面もそれぞれ異なっている。
第2章 IT業界での製品・サービスの移り変わりについて
(2‐0‐1)ソフトウエアは、当初はハードウエアのおまけだった。ソフトウエアがそれ自身で独立した価値を持つようになったきっかけは、System/360シリーズだった。
(2‐0‐2)SEサービスは、ハードウエア、ソフトウエアのおまけだった。そもそもサービスなのだから無料と考えられていた。
【解説】:「メインフレーム」と「オープン」
(2‐0‐3)「クラウドサービス」という商品が登場し、コンピューターは買うものから使うものになってきた。
(2‐0‐4)IT業界は、長らく企業を相手にしてきたが、最近では個人を相手にするようになっている。
第3章 コンピューターの応用分野について
(3‐1)数値計算について
(3‐1‐1)世界最初のコンピューターは、「スーパーコンピューター」だった。
(3‐1‐2)微分方程式:本来、微分方程式を解いた答えは、数ではなくて関数である。しかし、コンピューターでは、数値を扱う。
(3‐1‐3)常微分方程式と偏微分方程式:月食が起こることは10年前からでも正確に予測できるが、その時に晴れているかどうかは前日になっても正確には分からない。
(3‐2)Webシステムについて
(3‐2‐1)世の中のWebシステムには、情報を表示するものとデータ入力を行うものの二つのタイプがある。対応する技術者も異なる。
(3‐2‐2)最近のWebサイトでは、通信内容を暗号化することが既に当たり前になっている。
(3‐3)AIについて
(3‐3‐1)最初のAIブームのキーワードは、「LISP」だった。この時代の人工知能では、その知恵・知識は、あらかじめプログラムされるものだった。
(3‐3‐2)2回目のAIブームのキーワードは、「知識工学」だった。この時代の人工知能では、その知恵・知識は、人間が作り出してコンピューターに与えるものだった。
(3‐3‐3)今のAIのキーワードは、「ディープラーニング」である。今の人工知能では、その知恵・知識は、コンピューターが自ら作り出す。
第4章 組込み系システムについて
(4‐0‐1)「マイコン」:マイコンを組み込んだ機械は、従来よりもずっと複雑な動作ができるようになる・・・鉄道の切符の自動販売機は、当初は運賃ごとに別々だった。
(4‐0‐2)「制御用コンピューター」:制御用コンピューターは、プラントを安全・効率的に制御し、省力化に貢献する。・・・圧延機の制御用コンピューターは、業務系システムとも連携する。
(4‐0‐3)組込み系システムは、スマホ、自動車、家電で急拡大した。
第5章 業務系システムについて
(5‐1)座席予約システムについて
(5‐1‐1)旧国鉄が開発した座席予約システム(MARS)ができる前は、座席の予約は回転テーブルを使って管理していた。
(5‐1‐2)航空機の座席指定法:当初の航空予約システムでは、座席は予約時に決めず、チェックイン時に決めていた。
(5‐1‐3)日米の航空予約システムの違い①:米国の当初の航空予約システムは、情報システムに起因する意図しないオーバーブッキングを容認する設計だった。
【解説(Advanced)】:排他制御
(5‐1‐4)日米の航空予約システムの違い②:初期の航空予約システムは、その形態が日本と米国で異なり、日本では、旅行代理店には航空会社ごとに別々の端末が置かれていた。
(5‐2)銀行システムについて
(5‐2‐1)銀行の勘定系システムは、全銀システム、日銀システムと連携して仕事をしている。
(5‐2‐2)銀行の勘定系システムはオンラインリアルタイムシステムの代表格だが、夜間バッチでの処理も大切である。それには業務的な意味合いがある。
(5‐2‐3)業務系システムは、背景としての文化・社会の違いを反映する:米国のある銀行では、週末にATMでお金をおろしても残高が週明けまで減っていないことがあった。
(5‐3)課金システムについて
(5‐3‐1)課金システムは、単なる事務処理だけでなく、企業における戦略的な意味も持つようになってきた。
(5‐3‐2)業務系システムは、背景としての文化・社会の違いを反映する:日本の課金システムは請求ごとの支払の有無を管理し、米国の課金システムはcurrent balanceを管理する。
第6章 高性能化の歴史について
(6‐0‐1)コンピューターは、1980年代半ばから急速に小さくなった。
(6‐0‐2)スーパーコンピューターの計算速度は、40年で7億倍になった。
(6‐0‐3)IBM360アーキテクチャでは、記憶場所を表すアドレスは3バイト、つまり実装できる主記憶装置は16MBだった。
第7章 暗号とセキュリティについて
(7‐1)公開鍵暗号について
(7‐1‐1)公開鍵暗号の登場:公開鍵方式では、暗号鍵を公開しても暗号通信ができる。
(7‐1‐2)Webサイトでの公開鍵暗号の使われ方①:公開鍵方式の暗号は処理速度が遅いため、Webサイトでは共通鍵方式の暗号と組み合わせた方式を使用する。
(7‐1‐3)Webサイトでの公開鍵暗号の使われ方②:公開鍵が本人のものであることを確認するため、Webサイトではサーバー証明書を使用する。
【表記について】:「暗号化」と「復号」
(7‐2)セキュリティについて
(7‐2‐1)パスワードは、多くのシステムでは暗号化されて保持されており、システムといえども暗号化されたパスワードを復号することはできない。
(7‐2‐2)高いセキュリティが必要なシステムでは、二要素認証が必須である。このことは、自然な感覚として身に付けておくことが大切である。
(7‐2‐3)社内ネットワーク、メール、予定表、リモート会議等を行うシステムでは、セキュリティについての適切な設計が最重要の検討ポイントになっている。
第8章 プログラミング言語について
(8‐1)1960年代の大きな失敗:PL/Iについて
(8‐1‐1)PL/Iは、COBOLとFortranを包含した非常に大きな言語だった。そして、大きすぎたことが使いづらさの原因となった。
(8‐1‐2)PL/Iは、予約語がないことを特徴とした。
(8‐1‐3)PL/Iコンパイラは、優れた最適化の機能を持っていた。
(8‐2)1970年代の小さな成功:Pascalについて
(8‐2‐1)「文脈自由文法」とは、自由奔放な文法という意味ではない。
(8‐2‐2)「再帰呼出し」を使うプログラムは、少し敷居が高いが、これを自然に読めることは、一人前のプログラマーへの第一歩である。
(8‐3)その後のプログラミング言語について
(8‐3‐1)1980年代の失敗例:Adaは、鳴り物入りで登場したが普及しなかった。
(8‐3‐2)1980年代の成功例:C言語は、広く使われてC++やJavaの土台となった。
(8‐3‐3)JavaとJavaScriptでは、使われる環境が違う。JavaScriptのプログラムは、パソコンで動作するので、サーバーの場合ほど性能が厳しく要求されない。
(8‐3‐4)「マークアップ言語」は、データのやり取りに使われる言語であり、普通のプログラミング言語とは少し異なる。
おわりに
著者について
本書について