最初のプログラマー
エイダ・ラブレス
さて、以上は、基礎に関する話でした。今度は、19世紀の数学者チャールズ・バベッジ(Charles Babbage、図表13)からスタートして、歴史を細かく振り返っていきましょう。
バベッジは、ソフトウェアについては何も理解していませんでした。彼はハードウェアの人だったのです。実際、彼はいくつか非常にクールな実績を残しています。彼には、明らかにすばらしい洞察力がありました。
図表14は、彼が作った解析機関(Analytical Engine)の設計図です。
図表13 チャールズ・バベッジ(Charles Babbage) *Wikipedia
図表14 バベッジの解析機関(Analytical Engine)設計図 *history-computer.com
ただし、洞察力があったのは、実はチャールズではなく、同時代のエイダ・ラブレス(Ada Lovelace、図表15)という女性のほうでした。彼女は、ソフトウェアそれ自体が重要なものである、ということを理解していたのです。
このときはまだソフトウェアというものはありません。しかし彼女は、おそらく最初のアルゴリズムであろうと思われるものを書き、チャールズの機械はその方向で使えると提案しました。それがどうなったのかについては、非常に現実的な形で説明できればと思います。いずれにしろ彼女は、アルゴリズムを文字どおり書き上げた、初のプログラマーだと言われています。
図表15 エイダ・ラブレス(Ada Lovelace) *Wikipedia
前で話をしたジョージ・ブール(George Boole、図表16)も、このころの人です。彼は非常に斬新なアイデアをもっていました。彼の著作『論理と確率の数学的な理論の基礎となる思考法則の研究』を見れば、彼がまさに、人間の頭脳の働き方を把握しようとしていたことがわかります。
ブール代数は、時代のかなり先を行くものでした。しかし、それがエイダ・ラブレスのアイデアと組み合わさって、基礎が築かれたのです。
図表16 ジョージ・ブール(George Boole) *Wikipedia
人から人へ
パイプライン方式の計算方法
次に出てくるのが、ハーバード大学天文台長のエドワード・ピッカリング(Edward Charles Pickering)とその同僚たちです。この写真(図表17)で、中央に立っているのがアニー・キャノン(Annie Cannon、図表18)で、左端にいるのがピッカリングです。
これは、皆さんも毎日やっている、スクラムミーティング、スタンドアップミーティングみたいなものだと思っていただければいいでしょう。座っている女性たちは、機械的計算や数学的計算を行う人たちです。
ひどい話ですが、彼女たちにデータを投げて、これを計算しておいてくれと言えば、自分は役員会に行ってしまえるのです。それが最初のコンピュータであり、そのコンピュータは人間でした。
図表17 ハーバード大学天文台長エドワード・ピッカリング(左)とアニー・キャノン(中央)
図表18 アニー・キャノン(Annie Cannon) *Wikipedia
アニーは、最初のコンピュータの1人であるとされています。彼女と一緒に仕事をしていた人たちのなかには、ヘンリエッタ・リービット(Henrietta Leavitt、図表19)もいました。
なぜこの2人の女性の名前を挙げるのかというと、彼女たちは聴覚に障害を抱えていたにもかかわらず、恒星の分類という分野にいまだに影響を与えている素晴らしい発見をしたからです。彼らのコーディングシーケンスはすでに使われていたものでしたが、彼女たちが最初のコンピュータであったと考えていいと思います。
図表19 ヘンリエッタ・リービット(Henrietta Leavitt) *Wikipedia
問題が複雑になるにつれ、ある程度の自動化が見られるようになってきました。そして機械的な計算方法が登場します。それも、すべて女性が担っていた仕事です。パイプライン方式で、パターン的な計算が行われていました。
写真(図表20)の手前にある小さな箱は何かというと、たとえば、何かの生データをコピーしてこの箱に入れるとします。そうすると手前の女性が計算を書いて、次の人に渡します。その作業を繰り返し繰り返し続けていくのです。こうしたプログラムを用いたパイプラインプロセスで、最終的には全体的な計算値が得られます。
このプロセスの問題点は、当たり前のことですが、うまくスケールアップできないことです。しかも間違いが起こりやすい。エラーチェックがないからです。どこかで間違いがあると、それが波及していきます。これは、チャールズ・バベッジが指摘していた問題でした。
図表20 手動によるパイプライン式計算 *米国議会図書館所蔵
フローチャートを考案した
ギルブレス夫妻
ここで、私のちょっとした秘密をお話ししましょう。実は私は幼いころ、沢山の舞台に出ていました。子役をやっていたのです。
作業研究の先駆者とされるリリアンとフランクのギルブレス夫妻(Frank Bunker and Lillian Gilbreth Sr、図表21)によって書かれた『Cheaper by the Dozen(一ダースなら安くなる)』(図表22)という素晴らしい書籍と脚本があります。
彼らには12人の子供がいました。私が演じたのは、そのうちの小さな子供の1人、ビルです。ギルブレス夫妻は、機械工場がその能率を向上させようとしていた時代の人でした。たしかジェームズ・エヴァンス(James Evans)が時間の研究を、そしてギルブレス夫妻が動作の研究をしていたのだと思います。
当時は、インダストリアル・エンジニアリングにおいて、時間動作研究が注目されていた時代でした。たとえば、煉瓦積みの作業を観察して、道具をこういうふうに使えば数秒の節約になる、というようなことを指摘するのです。
彼らは、今でいうフローチャートを考案しました。ステップごとに表すプロセスチャートを思いついたのです。このギルブレス夫妻のアイデアが後にどのように使われるようになったのかは、また後でお話しします。
図表21 フランク&リリアン・ギルブレス夫妻(Frank Bunker and Lillian Gilbreth Sr) *Wikipedia(Frank) *Wikipedia(Lillian)
図表22 『Cheaper by the Dozen(一ダースなら安くなる)』表紙 *Amazon
分析の基礎を築いた
エディス・クラーク
エディス・クラーク(Edith Clarke、図表23)という女性は、1930年代に米国公共事業促進局(WPA)の対数表プロジェクトに携わっていました。
当時は世界中が不況の真っただ中にありました。米国では、政府が資金を拠出した公共事業促進局(WPA)が専門家たちを雇用し、仕事をさせていたのです。
対数表プロジェクトでは数千人もの数学者が雇われ、新しい数学的な表、対数、サイン、コサイン、タンジェントなどの表を、すべて手作業で作り上げることになりました。この対数表プロジェクトの成果の1つには、実は私たちが今でも書籍などで目にするCRCテーブルがあります。
エディス・クラークは、分析という考え方、すなわち、どのように問題を受け止め、それをどのように基本的な要素に分解していくかという基礎を築いたのです。彼女は、この先の話にもまた出てきます。
図表23 エディス・クラーク(Edith Clarke) *Wikipedia
そしてIBMがこの後に登場し、私たちはさまざまなことを自動化し始めます。機械式計算機だけでなく、別の計算機やソーター(カード分類機)といったものも使うようになりました。
そうして、前に紹介したような組み立てライン方式は、ある程度自動化されることになりました。ライン上の小さな場所それぞれで、より多くのことができるようになったのです(図表24)。 [第4回へ続く]
図表24 IBMの組み立てライン
・・・・・・・・
◎グラディ・ブーチ氏講演 「ソフトウェアエンジニアリングの歴史」
第1回 エンジニアリングは高級神官イムホテプから始まる
第2回 ソフトウェアエンジニアリングのさまざまな定義
第3回 Adaから始まりエンジニアリングの基礎が築かれる
第4回 ソフトウェアエンジニアリングへ
第5回 サブルーチン、コンパイラ、FORTRANの誕生
第6回 ソフトウェアが現実のものになる
第7回 アルゴリズムからオブジェクト指向へ
第8回 ソフトウェアエンジニアリングの第3の黄金時代
第9回 ソフトウェアは、ハードウェアの可能性の物語を囁く
・・・・・・・・
◎グラディ・ブーチ(Grady Booch)氏
グラディ・ブーチ(Grady Booch)氏は1955年、米国テキサス州生まれ。オブジェクト指向ソフトウェア開発方法論Booch法とソフトウェア開発モデリング言語UMLの開発者。現在、IBM フェロー。ACM フェローおよびIEEEのフェローでもある。*Wikipedia
●グラディ・ブーチ氏講演会 会場風景
[IS magazine/i Magazine]