ソフトウェアとは

公開: 2021年7月21日

更新: 2021年9月7日

あらまし

中世が終わって、近代ヨーロッパの思想家たちは、「計算」が「人間にしかできないこと」だとは考えなくなりました。最初は、簡単な足し算、引き算の計算から始まり、掛け算、割り算も機械でできると考えるようになりました。その始まりは、古代ギリシゃの天文学者が考え出した、星の動きを真似る機械にあります。その歯車式の機械は、ヨーロッパ中世の時代には、アラビア世界に伝えられ、中世が終わる頃、ヨーロッパ社会にもたらされました。

フランスの哲学者、パスカルは歯車を組合わせて、数の足し算、引き算、掛け算、割り算をする機械を作りました。その後、ライプニッツなど、多くの発明家がこの問題に取り組みました。18世紀末になって、イギリスの数学者、バッベージは、歯車式計算機械を改良して、数値表を自動的に作る「階差機関」と呼ばれる機械を試作しました。これは、ある程度決まっているやり方で、計算を行い、その結果を目盛りに表示するものでした。この階差機関の開発に成功したバッベージは、様々な計算を、人間の指示に従って行う、「解析機関」の開発に取り組みました。

この解析機関は、「最初から決まっている計算だけ」を行う階差機関とは違って、人間が機械にやらせたい計算の手順を機械に指示し、機械はその指示に従って計算を行い、計算結果を印刷機で印刷する自動機械でした。当時、ヨーロッパ社会には、「自動人形」や「オルゴール」、「時計」などが発明されており、歯車を使った「からくり」を使えば、そのような計算は可能であると考えられました。計算のやり方を機械に指示する方法としては、産業革命で発達した自動織物機で、模様を織るために使われていた、ジャカード織のためのパンチカード方式が利用されました。

バッベージの計算機械は、計算手順が記録されているパンチカードの読み取り装置、計算を実行するための歯車装置、計算結果を一時的に蓄えておくための記憶装置、計算結果を文字で出力するための印刷装置から成っていたと伝えられています。残念ながら、当時の機械工作精度の制約から、試作された機械が動くことはありませんでした。実際に、計算機械が動いて、人間が指示した計算に基づいて、正しい計算結果が出力されるようになったのは、電気を自由に使えるようになった20世紀に入ってからでした。そのような計算機械に、計算のやり方を人間が指示するものが、「プログラム」です。

現代数学の歩みとコンピュータ

フランスの数学者デカルトは、人間が行う計算も、機械が行えると考えました。それは、彼が人間の脳が、「ものごと」を考えるための精巧に作られた機械に違いないと考えたからであったと考えられています。デカルト以外にも、フランスの医師、ラ・メトリのように人間は一種の機械であると考えていた人々も存在していました。ラ・メトリは、そのことが原因で、ローマ教会によって火あぶりの刑に処せられました。それは、当時のカトリック教会の教義に反した考え方だったからです。イタリアの物理学者のガリレオも、地動説を唱え、カトリック教会の教義に反した主張をしたため、ローマ教会から宗教裁判にかけられました。ガリレオは、カトリック教会の主張を受け入れ、「天動説」が正しいと認めたため、火あぶりになることからは逃れました。

フランスの数学者、パスカルは、人間にしかできない数の計算を行う機械の作成に取り組み、実際に動く手回しの機械式計算機を作り上げました。その後も、このパスカルが考えた計算機械を改良した機械が、何人かのヨーロパの科学者によって作り出されました。ドイツの哲学者・数学者でニュートンと同じように微分を考え出した、ライプニッツも、パスカルのやり方とは少し違うやり方で、計算機械を作りました。ライプニッツの機械は、パスカルの機械が人間と同じように10進法で加減乗除を行うのに対して、現代のコンピュータと同じ2進法を使って計算を行う方法を採用していた点が特別であったと言われています。

古代バビロニアの数学者たちは、自然数の足し算、引き算だけでなく、掛け算や割り算を理解しており、その割り算の考え方を使って分数を発明したのでした。このことも関係して、古代バビロニアでは、現代の私たちが使っている「十進数」ではなく、簡単に割り算ができる「60進数」を使っていたことが分かっています。60は、12の5倍の数です。12は、2、3、4、で割ることができます。さらに、60であれば5でも割ることもでます。つまり、割れる数である「約数」が多い数が60であることが、主たる理由であると考えられています。この古代バビロニア時代の60進数は、現代の社会でも角度を測り、時間を表すために使われています。不思議なことに、古代中国でも暦を表すために、同じように60進法が使われていました。甲、乙、丙、などの十干と、十二支を合わせたものです。

ライプニッツは、10進法や12進法、60進法などの人間が昔から使っていた数の数え方ではなく、2進法と言う新しい方法で、機械に計算させることを考えました。この方法の方が簡単な仕掛けで計算ができたからです。ちなみに、現代のコンピュータでも、2進法で計算を行うのが普通です。これは、電流が流れているか、流れていないかで、2進法のゼロか1かに対応させることができ、足し算をする時も、それを行う回路を簡単な仕掛けで作ることができるからです。しかし、ライプニッツの後、2進法を使う試みに挑戦する人は、イギリスの数学者、ブールが出現するまでいませんでした。

ライプニッツの後、機械的に計算を行う機械の開発に挑戦した人として最も有名なのが、イギリスのケンブリッジ大学で数学を教えていたバッベージです。バッベージは、その頃、数学の分野以外の研究者も使っていた数表を、それまでのように人間の手計算で行い、その結果を表にまとめて印刷する方法では、誤りが入り込むこと多くあり、正確な数表をつくることが難しいという問題に注目しました。最初に、バッベージは、「階差機関」と名付けた歯車式の計算機を作りました。これは、数字の列で、ある数に一定の数を足した数を求めるための表を、機械的に計算する機械でした。10進法の計算で、1に1を足すと2が答えとなります。その答えの2に、同じ1を加えると、3になります。表の行に1から始まる数を並べ、列にも同じように1から始まる数を並べて、行で与えられた数に列で指定された数を足した計算結果を表にまとめたものが、簡単な数表です。このような計算を自動的に行う機械が階差機関です。

この階差機関の仕組みは、パスカルが使った歯車式の「からくり」を使えば計算ができます。階差機関を作ったバッベージは、簡単な機械でできる、決まりきった計算だけでなく、途中の計算結果に基づいて、次の計算を変えることができるような新しい計算機械をつくることを考えつきました。バッベージのこの野心的な計画は、大英帝国のビクトリア女王からの経済的援助も受けて、実際に動く計算機械を作り出す試みとして始まりました。イギリスで産業革命が進んでいた時代のことです。日本では、江戸時代後期のことで、19世紀になったばかりの頃でした。その頃のイギリスの機械加工技術は、現在ほど精巧な機械加工ができるものではありませんでした。新しい、バッベージが「解析機関」と呼んだ機械では、歯車を何十段と組み合わせる必要がありました。そのような「からくり」を問題なく動かすためには、大変精巧な歯車を作り出すことが必要でした。現代であれば、(走査型)電子顕微鏡などを作り出すために、1000分の1ミリ単位で歯車を削ることもできますが、当時はそのような精密な加工をする技術と道具はありませんでした。

バッページの解析機関は、硬いポール紙を並べて、糸で結んだ、「紙テープ」と呼ばれる短冊を帯状につなげ、それぞれの短冊に開けられた、小さな穴の位置によってどんな機械を動かすかを決める方法を利用していました。この仕組みは、産業革命で発明されたレース編みの機械で、模様を記録する「紙テープ」と同じものでした。日本では、西陣織や博多織で帯を作る時に、帯の模様を決めて、織機を動かす方法として使われています。西陣織などでは、帯の文様を考えるデザイナーが描いたデザイン画に基づいて、織機のパンチカードに何色の横糸を、どの縦糸と交差させて模様を作るのかを決めて、パンチカードに穴を開ける職人がパンチカードを作ります。そのパンチカードを機械にかけ、織機に経糸(たていと)と横糸を準備して、機械を動かし、その動作を監視する職人がいます。これと同じように、解析機関では、どのような計算をどうやって行わせるかを考え、パンチカードにそれを記録して、機械にかけなければならない。このどのような計算を、どのように行わせるかを決め、パンチカードのどの部分に穴を開ければよいかを考えることをプログラミングと呼びます。解析機関は、プログラムで計算のやり方を変えることができる計算機械でした。

この計算方法を、プログラムによって、後から決められるやり方は、現在のコンピュータでも採用されています。ところで、バッベージの解析機関でも、それを使って計算ができることを示すためのプログラムが必要でした。そのプログラムを作成する役割を引き受けたのが、有名なイギリスの詩人、バイロン卿の娘で、ラブレス公の婦人であった、エイダ・アウグスタ・バイロンでした。貴婦人のエイダが、世界最初のプログラマであったとされているのは、このためです。しかし、バッベージの解析機関は、実際に動くことはありませんでした。

バッベージは、解析機関を作り出すために、いくつかの独創的な考えを生み出していました。特に、プログラムによって、計算の途中結果によって計算手順を自由に変えるための仕掛け、計算の途中結果の値を憶えておくための仕組み、計算に必要な数値をプログラムに与えるための入力装置、そして計算結果を人間が読めるようにして出力するための印刷装置などです。出力装置には、活字印刷機を使うことを考えていました。このように計算機械をいくつかの装置に分けて設計し、それらを互いに接続することで、入力から、計算、そして出力までの全ての過程を自動的に行えるようにする考え方でした。このやり方は、現代の多くのコンピュータにも受け繋がれています。

19世紀の中頃。英国のイングランドの貧しい家庭に生まれたジョージ・ブールは、それまでの論理学とは違う、ブール代数を考え出しました。論理学では、A「かつ」B、A「または」B、Aの「否定」などの3つの基本的な演算を組合わせて、論理的にある推論が正しいかどうかを判定します。ブール代数では、論理学の変数であるAやBなどに。値の1か0(ゼロ)かのどちらかの値を割り当てます。そして、2つの変数をxとyであわらすと、x∧y(かつ)、x∨y(または)、¬x(否定)などの基本的な演算を考えます。ここで、「かつ」は、xもyも1の時だけ1になる計算です。「または」は、xかyのどちらか、または両方とも1の時1になる計算です。「否定」は、xが1ならば0、0ならば1になる計算です。このブール代数を使うと、論理学の推論を、1と0の計算に置き換えることができます。

20世紀になると、このブール代数の計算を、電気の流れに置き換えて、「かつ」、「または」、「否定」の計算を電気的に行う、スイッチを組合わせた回路が研究されるようになりました。そのような回路を組合わせて、xかyの「どちらか片方だけが1の時だけ、1になる計算」をする「排他的論理和」の回路も作られるようになりました。これを利用すると、2つの1桁の信号を入力にして、その『和(足し算)』を計算して、2桁の信号を出力する回路を作ることができます。1と0だけを使うフール代数の計算は、2進数の計算に似ているので、2つの1桁の2進数の和を計算して、2桁の2進数を計算するのと同じことになります。例えば、0と0ならば、00を出力にします。1と0か、0と1ならば、01を出力にします。そして、1と1の場合は、10を出力します。2進数の10は、10進数にすると、2になります。このように、ブール代数を電気的に計算できれば、計算機は作れるのです。

このように、人間が行っている計算を自動的に行うことができるようになったのは、20世紀に入ってからです。その試みに最初に成功したのは、ハーバード大学の教授であったエイケンが、事務機器製造会社であったIBMの協力を得て開発した、電磁石の原理を使った電気式計算機でした。当時、電磁石の原理で動く電磁リレーは、グラハム・ベルが開発した電話のための回線を人間の手ではなく、ダイヤルが発生する電気信号の数によって、自動的に話したい相手の電話番号を認識して、依頼されている相手の電話に回線をつなげ、話ができるようにする自動回線接続装置(スイッチング装置)に使われ始めていました。電話網の回線接続に利用するためには、故障が発生する確率を10万分の1回から、100万分の1回にしなればなりません。そのような「信頼性」が十分に高い電磁リレーが生産できるようになっていました。

そのような電磁リレーを使ったエイケン達の電気式計算機は、人間の計算と同じように、10進法に基づく計算を行いました。つまり、数は、0、1、2、3、…、9、10、...のように、0から9までの数字を使って表される数字です。9の次の数字は、1文字ではなく、2文字を使って、10、11、12、…のように表されます。そして、99まで進むと、今度は3文字を使って、100、101、102、…、999まで進みます。この10進法による計算は、人間には分かり易いのですが、機械にとっては都合がよくありません。それは、1桁(1文字の数)から2桁の数に進むときの、桁上がりが複雑で難しいからです。人間は、それを何度も練習することで、学びます。桁上がりの計算が難しいと言うことは、それを機械的に行うための機械の仕掛けが「ごちゃごちゃ」になり、作るのが難しくなることを意味しているのです。

歯車を使った機械式計算機の時代に、ドイツのライブニッツは、全ての数字を0と1だけの2つの文字で表す2進法を使うことを考えました。第2次世界大戦後の研究者達は、この問題を解決するために、ライプニッツと同じように、2進法を使って計算機に計算させる方法を使うようになりました。そのようにして作られた米国ペンシルベニア大学のエッカートとモークリーらによって開発された計算機、エニヤックは、2進法を採用した真空管式の電子計算機でした。真空管を利用することで、計算は、電磁リレー式の電気計算機に比べて、随分、早くなりました。しかし、真空管は真空に密封されたガラス管に取り付けられた金属のフィラメントに電気を通して熱を生み出し、それによって金属板から飛び出してくる電子を、もう1枚の金属板で受けることで、電子とは逆方向に流れる電流を作り出します。

この2枚の金属板の間にはさまれた金属の網に電気を流して、網に飛んでくる電子を捕らえさせたり、網に流れる電気を切って電子をそのまま通過させたりして、電気の流れを、流したり、止めたりします。問題はその電子を発生させるために使われるフィラメントは、長時間使っていると、熱によって金属の表面が焼けて、金属の線が切れてしまうことです。このような現象は、電磁リレーを使った電気式計算機では起こらないことでした。真空管は、数千時間から数万時間使うと、フィラメントが焼き切れて、使えなくなるのです。エニヤックには、約2万本の真空管が使われていたそうです。つまり、エニヤックの場合、いつでも1本から数本の真空管が切れており、動き始めると、ちゃんと計算ができる状態にはなかったようです。

第2次世界大戦が終わって、少し経つと、米国のベル研究所の研究員であったショックレー達は、ガラス板の上に張った特殊な金属で作った小さな板に、細い銅線をつなげ、その金属板と銅線の上を、薄いガラス板で覆い、その上に金属板を置いて、その金属板に電気を流すと、ガラス板に挟まれた金属板に電気が流れたり、流れにくくなったりする現象が起こることを発見しました。これは人類が初めて見た、「半導体」の動作現象でした。これは、上に述べた真空管の中で起きている現象を、ガラス板の上で起こしているのと似ています。つまり、真空管を使わなくても、電子的に動く計算機が作れることが分かりました。この場合、フィラメントのような熱を発生させる部品がないので、熱の発生による故障の発生を防ぐことができるのです。

この半導体を使った電子的な計算機は、フィラメントのように熱を使わないため、真空管に比べて、故障が起こりにくいはずであると考えられました。そのため、米国のIBMなど、計算機の開発に取り組んでいた計算機製造会社は、半導体を使った計算機の開発に着手しました。そのような電子式の計算機は、2進法で計算し、半導体で計算をするものでした。さらに、計算結果を一時的に覚えておくために、鉄の粉を固めてドーナッツ状にした、フェライトコアと呼ばれる部品が開発されました。これは、「磁性体」と呼ばれる陶磁器のようなもので、このドーナッツ状の輪の中に3本の細い銅線を通し、一本の線に電気を通したときに、フェライトコアを磁化させて、1を憶えこませます。憶えこませた値を呼び出すためには、別の線で呼び出します。さらに、一度、磁化されたフェライトコアを元の状態に戻すためには、もう1本の線に逆向きの電気を流して0に戻します。各フェライトコアがどちら向きに磁化されているのかで、1か0のどちらが記憶されているのかを決めることができます。

この半導体とフェライトコアの2つの新技術の開発によって、電子的な計算機の価格を急激に低下させるとともに、信頼性を大幅に向上させたことで、その大量生産と販売を可能にして、コンピュータを一般社会へ急速に普及させました。それは、コンピュータと呼ばれるようになった高速な計算機械を、企業が買い、それを利用して事務作業の大幅な効率化をできるようになったからです。それまで、数多くの、主として女性の事務員を使って、日本の企業であればソロバンを使い、米国などの企業であれば、モーターを使って動く電動機械計算機を使って、全従業員の給与などの集計を行っていた事務作業などを、新しいコンピュータ1台で置きかえることができたからです。この事務作業に携わっていた事務員全員の給与を削減することができたからです。コンピュータであれば、社員の給与の計算だけでなく、別の事務作業を行うためにも利用できることも重要な理由の一つでした。

つまり、コンピュータは1台でも、給与計算のためだけではなく、在庫管理や生産管理などの事務作業を行うためにも利用できます。コンピュータの価格が低下してきたことで、大企業でなくても、事務処理のための事務系社員を減らし、高速に事務処理を行うためにコンピュータを利用することが現実的な考え方と言えるような時代が到来していました。そのためには、コンピュータにどのような計算をさせるのかを指示するための、プログラムが必要になりますが、コンピュータそのものは、1台だけでも処理をすることができます。つまり、プログラムと呼ばれるソフトウェアを変えるだけで、様々な目的で利用できるのがコンピュータの利点です。このため、社会ではプログラムの開発を担うソフトウェア技術者のニーズが急激に増えて、プログラムを作成できる人々に対する求人が増えました。

(つづく)