![](https://wirelesswire.jp/wp-content/uploads/2024/08/shibata08_ec1.jpg)
Public domain
Public domain
ソフトウエアの歴史には、何人かの女性が名を残しています。ベティ・ホルバートンもそのうちの一人です。ネットで見つかる彼女の経歴を見ると、例えば「マージソート」の考案、初期のプログラミング言語の仕様策定に関わるなど、素晴らしい経歴が並んでいます。デジタルコンピュータ黎明期に、大きな功績を残した女性です。
冒頭の写真、手前に写っているのが若き日のベティ・ホルバートンその人です。写真に写っている配線だらけの機械は「ENIAC」と呼ばれる世界最初期のプログラム内蔵型コンピュータです。
写真と同時期に、彼女とともに陸軍のために仕事をしていた女性がいました。今回は「ENIAC 6」と呼ばれるその女性たちの奇跡を、丁寧なインタビューによって解き明かす『コンピュータ誕生の歴史に隠れた6人の女性プログラマー』という書籍を紹介します。
弾道計算と計算手
ENIAC 6の物語は、第二次世界大戦中の北米から始まります。当時ENIAC 6が仕事をしていたペンシルベニア大学ムーア校では、アメリカ陸軍から「弾道計算」の仕事を請け負っていました。
大砲の弾丸を目標めがけて正確に着弾させるためには、目標までの距離だけでなく、気温や風速といった複数の要素を考慮する必要があります。要素を元に必要な数値を作り出すための「方程式の方程式」があり、それを解くことで正確な射撃が実現できます。
しかし、方程式を解けるほど数学に通じた人員を砲台ごとに配置するのは不可能です。そこであらかじめ、計算結果を表にまとめて前線に配っていました。微分方程式を解く代わりに、砲手は「弾道表」を見て数値を割り出すことで、正確な射撃ができます。
この表を作る一連の計算手順のことを「弾道計算」といいます。そのためにムーア校には、数学的な素養を持った若い女性達が集められました。彼女達は「計算手(コンピュータ)」と呼ばれ、「微分解析機」という機械式のアナログコンピュータと手回し式の計算機で弾道計算を行う仕事をしていました。
ムーア校の計算手たちの仕事は概ね素晴らしく、米軍の正確な射撃を大いに助けました。「Dデイ」は彼女達の弾道計算なしには成し遂げられなかったとまで言われています。
地域や気候条件などに合わせて、たくさんの種類の表を作ることが求められていました。問題は、計算に膨大な手間と時間がかかることでした。
ダイレクトプログラミング
計算の高速化のために、モークリーとエッカートという二人の科学者が計算機を作ることを提案します。「ENIACは弾道計算のために作られた」と言われるのはそのためです。
ハードウエアとしてのENIACが完成すると、弾道計算を行っていた女性達が軍事機密だったENIACに触れる機会が訪れます。ムーア校の中で特に数学の才に秀でた女性6人が、ENIACの「プログラミング」を担当することになるのです。
彼女達「計算手」の仕事は、単に決められた計算をするだけではありませんでした。計算や方程式の意味を数学的に理解し、手持ちの道具で実現可能な「計算手順」に分割して、最終的に答えを出すのが彼女達の仕事でした。
現代のコンピュータに比べると、ENIACには原始的な機能しか搭載されていませんでした。10進数の1桁を蓄える「ディケイド」と呼ばれるユニットは「メモリー」に相当します。他にも電気パルスを受け取って加減算、乗除算を行う演算器、繰り返し処理を行うユニットなどがありました。これらを物理的に結線することで、演算手順を作り上げる必要があったのです。
彼女達の仕事は「ダイレクトプログラミング」と呼ばれていました。現代のように文字を使って命令を組み立てるのとは異なり、回路の構築に近かったからです。
初期のENIACでプログラムを作るには、真空管で演算をする仕組みをはじめ、「回路」について理解する必要がありました。その上で弾道計算を行うのに必要な微分方程式を、プリミティブな演算に置き換えます。計算手としてきめ細かでクリエイティブな仕事をこなしていた女性達だからこそ、高度なリテラシーを求められる難しい仕事を任されたのかも知れません。
最初期のプログラマたち
ENIACには、メモリー上に記録された数値に従って手順を分岐させる簡単な「条件分岐」の機能が備わっていました。この機能を利用して計算手順の途中で演算を止め、メモリーの状態を確認する「ブレイキング・ザ・ポイント」という手法をベティ・ホルバートンが思い付きます。現代でも使われる「ブレイクポイント」はこうして誕生しました。計算手時代に検算を行っていたことから、デバッグの重要性をよく認識していたのだと思います。
複数の演算器を同時に動かせることを利用して、演算速度の改善が行われたこともありました。コンピュータ史の最初期に並列プログラミングが行われていたのです。ジーン・ジェニングスは「タイミングを合わせるのが大変だった」と当時を回想しています。書籍を読んでいると、現代のソフトウエア・エンジニアが直面するのとよく似た課題に、彼女達が立ち向かっていたことがよく分かります。
ダイレクトプログラミングで作られた弾道計算のプログラムは、軍や政府関係者、ジャーナリストの前で披露されます。そしてコンピュータの有用性が正式に認められ、ENIACは他の科学技術にも活用されるようになります。
ノイマンの第一草稿
様々な数学モデルをプログラムとして実装し、計算して結果を出すことがENIACに求められました。その時に問題になるのは、ダイレクトプログラミングの開発効率の悪さです。この課題を解決するために一役買ったのがフォン・ノイマンでした。
ノイマンはENIACの後継機に当たるコンピュータのあるべき仕様について、論文を書いていました。「EDVACに関する報告書の第一草稿」と呼ばれる著名な論文には、EDVACは当初からプログラム内蔵型計算機として描かれていました。効率を高めるための施策として、ENIACにも同じような機能を搭載する計画が持ち上がりました。
ENIACには「関数表」と呼ばれる機能が備わっていました。数値を複数蓄えておける、読み出し専用のメモリーのような機能です。三角関数のような「関数」の値を予め登録しておき、計算に利用するために使われていました。
関数表に登録する「数」を、足し算や乗算のような「命令」に見立てるようにしてはどうか、というのです。関数表をオートマトンのノードのように使う、というわけです。そうすれば、関数表を設定し直すだけで、プログラムの内容を変更できます。ケーブルを繋ぐという物理的な世界から、記号の抽象的な操作という新しい世界に向けて、プログラミングが大きな飛躍を果たしたのです。
「ソフトウエア」の誕生
ENIACに改修を行い、「プログラム変更可能なデジタルコンピュータ」として新しい命を吹き込むためには、誰かが「命令セット」を実装しなければなりません。現代のCPUでいう「機械語」に相当する部分を、ゼロから産み出す必要がありました。
ENIAC 6の一人ジーン・バーティクは、弾道研のリチャード・クリッピンガーと共にノイマンが仕事をしていたプリンストン高等研究所の一階に通いました。ENIAC 6の教官を勤めていたアデル・ゴールドスタインとともに、命令セットを考える仕事を担当したといいます。
命令セットが実装され、ENIACで最初に実行されたのは、水爆の実証を行うプログラムでした。核分裂後の原子の挙動をENIAC上でシミュレーションするという計画があったのです。このプロジェクトに関わったのもノイマンでした。
原子核物理学者のスタニスワフ・ウラムと共に「モンテカルロ法」を使い、乱数を使って原子を数学モデル化することで、プログラムで水爆の実証実験を行ったのです。このプロジェクトが評価された結果、様々な現象が確率モデルとして表現され、プログラムとして実装されていきます。前回の話に繋がる話題ですね。
現代では、様々な数学モデルがコンピュータ上のプログラムとして実装され、シミュレーションとして実行されています。人間の認知や判断を計算モデル化して実行するという意味では、AIも一種のシミュレーションと言えます。我々の暮らす現代は、ENIACと女性達が作り上げた世界の延長にあるのです。
UNIVAC、COBOL、PASCAL
ENIACが注目を集める傍らで、共同設計者ジョン・モークリーとジョン・プレスパー・エッカート(通称プレス)は新しい会社を立ち上げる準備をしていました。ベティはENIACの仕事を続けながら、週末にはフィラデルフィアにいた彼らの元を訪れるようになります。世界ではじめての商用コンピュータ「UNIVAC」に求められる機能について、ブレインストーミングを重ねるためです。
キャスリーン・マクナルティもまた、モークリーの仕事を手伝うようになります。そのうちにどうやら恋仲になったようで、二人はついに結婚してしまいます。結婚式にはENIACの技師全員が出席し、プレスが新郎介添人を務めます。キャスは結婚後も、それまでのキャリアを活かし、モークリーを支え続けます。
マリーン・メルツアーやジーン・バーティクのように、夫の転勤などをきっかけに家庭に入った女性もいました。ENIACがムーア校を離れ軍の管轄で運用されるようになってから、女性達はそれぞれの人生を歩み始めます。
ベティとジーンはその後、モークリーとプレスの会社に合流します。そして、UNIVACのソフトウエアだけでなく、ハードウエアの開発に大きな力を発揮することになります。UNIVAC 1に搭載された「C-10」という命令コードはベティが作ったものです。C-10を使ってベティが実装したマージソートのアルゴリズムは、当時「キラーアプリケーション」と呼ばれていました。
ジーンとベティは、家庭を持ち子育てをしながら仕事を続けます。ジーンは出版や教育の分野でコンピュータに関わり続けます。ベティは陸軍文官でENIACにも関わったジョン・ホルバートンと結婚します。子育てをしながら、エンジニア、研究者としてソフトウエアの世界に積極的に関わり続け、COBOLやPASCALなどのプログラミング言語の仕様策定に関わります。
1960年代になると国立標準局に入り、様々なキャリアを積み重ねます。そして特別功労賞の銀メダルを授与された後に退職し、40年にわたるキャリアに幕を閉じます。
歴史の光と闇
最初期のプログラマとして活躍し、陸軍文官の伴侶を得つつ輝かしいキャリアを積み重ねたベティでしたが、ENIACとの深い関わりが明らかになったのはずっと後になってからのことでした。著者のキャシー・クレイマンなどが調査を重ね、記録やインタビューを元に6人の女性達の活躍に陽を当てたのです。タイトルにある「歴史に隠れた」というのはそういう意味です。
彼女達がムーア校で働いていたのは激動の時代でした。世界大戦という非常事態がもたらした人手不足があったからこそ、当時の女性が国家機密に関わるような重要な職業に就けた、という事情があったのでしょう。ENIACの権利について、数多くの裁判が起こりました。そういった数数の騒動が、彼女達の活躍を覆い隠してしまったのかも知れません。
歴史は時に光を産み出し、まったく同じ仕組みで闇も生まれる、ということなのでしょう。同じく共立出版から出ている「ENIAC 現代計算技術のフロンティア」を併せて読むと、そのことが良く分かります。
「ソフトウエア」は誰が発明したのか
エンジニアリングの基礎体力になるのは「抽象化をもってして複雑さを減ずる」能力です。数学リテラシーは抽象化を行うための強力な道具となります。ノイマンが書いた「第一草稿」がコンピュータ界の経典のようにもてはやされるのも、ENIACの複雑なアーキテクチャから、コンピュータとして求められる機能を見事に抽象化して見せたからです。
コンピュータの基礎的な設計が生まれるきっかけを作ったのがノイマンの論文であることは間違いのない事実です。しかし、歴史の解像度を上げることで見えてくるのは、ノイマンと同じように数学リテラシーを以て困難な課題を乗り越えてきた人々の物語です。彼ら、彼女らがいなかったら、「ソフトウエアの時代」も、ソフトウエアが産み出した「AIの時代」も決して訪れなかったはずなのです。
ENIAC 6と呼ばれる女性達の物語は、現代を生きる私たちにの心の深くに何かを語りかけているように感じます。とりわけ、コンピュータの世界に生きる、または目指そうとする女性には、とても大きな勇気を与えるのではないかと思います。
株式会社マインドインフォ 代表取締役。東進デジタルユニバーシティ講師。著書に『Pythonで学ぶはじめてのプログラミング入門教室』『みんなのPython』『TurboGears×Python』など。理系の文系の間を揺れ動くヘテロパラダイムなエンジニア。今回の連載では、生成AI時代を生き抜くために必要なリテラシーは数学、という基本的な考え方をベースにお勧めの書籍を紹介します。