Booch法やUMLの開発で知られるIBMフェローのグラディ・ブーチ(Grady Booch)氏が、「ソフトウェアエンジニアリングの歴史」と題する講演を昨年6月12日に行った(TEC-J主催)。紀元前27世紀から現在に至るまでのソフトウェアエンジニアリングの歩みを、人を軸にエピソードたっぷりに語る講演は、一般に知られていない事柄も多く、参加者を魅了した。本サイトでは、ブーチ氏の講演全文を9回に分けて掲載する。
なお、ブーチ氏が2018年4月25日に行った同題のWebinarがACMサイトで公開されている。そのスライドは日本講演のスライドと同じなので、参照していただければ幸いである。日本講演の内容は、アイマガジン編集部で英文に起こしたものをブーチ氏に確認していただき翻訳したものであることをお断りしておく。
◎グラディ・ブーチ(Grady Booch)氏
グラディ・ブーチ(Grady Booch)氏は1955年、米国テキサス州生まれ。オブジェクト指向ソフトウェア開発方法論Booch法とソフトウェア開発モデリング言語UMLの開発者。現在、IBM フェロー。ACM フェローおよびIEEEのフェローでもある。*Wikipedia
◎
今夜は、プロフェッショナルな開発者でも学校でほとんど教わらないことをお話ししたいと思います。私たちがどうやってここまでたどり着いたのかについて、議論していきましょう。
今夜、皆さんが家路に着かれるときには、今日私たちにもたらされている、何世紀もかけて解き明かされてきたさまざまなアイデアやそれに関わってきた人々への感謝の気持ちを、皆さんが感じてくださればと思います。
それから、きょうは最後に、次に来るのは何かという議論を提起したいと思います。それは、皆さんや皆さんの子供たち、そしてそのまた子供たちが将来にわたって取り組んでいくだろう事柄です。
元祖エンジニア
高級神官イムホテプ
エンジニアリングについて、はるか昔にまで遡って考えてみると、元祖エンジニアと言えるのは、紀元前2690年ころに生まれた古代エジプトの高級神官イムホテプ(図表1)だったのではないでしょうか。彼は、「われこそは太陽神ラーの高級神官」という最高にクールな称号をもっていました。私たちが、イムホテプこそ元祖エンジニアではないかと考えるのは、彼が、巨大構造物であるピラミッドのエンジニアリングを指揮した人物だとされているからです。
図表1 イムホテプ (ルーブル美術館蔵) *Wikipedia
ピラミッドの種類の1つに、屈折ピラミッドと呼ばれる素晴らしい構造物があります。ピラミッドの傾斜の角度が途中から変わるのが特徴です。地面からもち上がる最初の部分は急な勾配ですが、途中から全体的に緩やかになっていきます(図表2)。
エンジニアリングというのはかなりの試行錯誤を要するものですが、そうした試行錯誤のなかで、ピラミッドが安定する理想的な角度がわかったのでしょう。それ以上角度が大きくなると不安定になるし、角度が小さくなると安定性が増していきます。屈折ピラミッドは、彼らがまず急な勾配を試してみて、それでは上手くいかなかったので途中でやり方を変更した、ということを示しているのです。
図表2 屈折ピラミッド *Wikipedia
エンジニアリングを位置づけた
ハンムラビ法典
紀元前19世紀にはハンムラビ法典が制定されました。この法典で、エンジニアリングが現実社会のなかで位置づけられました。要するに、あなたがエンジニアとして建てた家が倒れたら、あなたを殺します、ということが書かれているのです(図表3)。
図表3 ハンムラビ法典 (ルーブル美術館蔵)*Wikipedia
それから、イスラムの黄金時代であった12世紀には、アル=ジャザリーという男性がいたこともわかっています。『巧妙な機械装置に関する知識の書』という素晴らしい本を書いた人物です(図表4)。
彼は、エンジニアリングのパターンを初めて把握した人でした。彼は自著のなかで、問題解決のために作成される機械装置のさまざまなパターンを特定したのです。われわれは、エンジニアリングと呼ばれるための条件と、そのプロフェッショナリズムについて理解し始めたのです。
図表4 アル=ジャザリー 『巧妙な機械装置に関する知識の書』 *Wikipedia
システムエンジニアリングという
考え方の登場
公的に認可される学問分野としてのエンジニアリングは、興味深いことに、1907年ごろまで存在していませんでした。
システムエンジニアリングという考え方が登場したのは、第2次世界大戦前の1940年、アレクサンダー・ベルの研究所でのことです。ただし、ここでの発見は、ソフトウェアやハードウェアの分野での話ではありません。当時はまだ、ソフトウェアという言葉すら発明されていませんでした。
このときのシステムエンジニアリングの考え方は、いろいろな機械関係のものと、電気関係のものなどがあって、それらをどうにかして1つのシステムに収めよう、というものでした。
そしてこのころ、こうした経験から、INCOSE(International Consortium of Systems Engineering)という組織が設立されました(図表5)。
図表5 INCOSE(International Consortium of Systems Engineering) *Wikipedia
エンジニアリングというのは、概して閉鎖的な職業集団が担うと言えるでしょう。つまり、人々が集団となって協力し合い、エンジニアになるにはこういうことをしなければならない、ということが決められているのです。それができないならばエンジニアとは呼べない、というわけです。
一部の国では、ソフトウェアエンジニアリングの分野で、実際にそうしたことが行われています。ソフトウェアエンジニアと呼ばれるようになるには、認定してくれるグループに認められなければならないのです。
私の親しい友人、フィリップ・クルーシュテン(Philippe Kruchten、図表6)は、カナダで初めて認定を受けたソフトウェアエンジニアの一人です。そして彼は、先述したような閉鎖的な職業集団の1つとして、ソフトウェアエンジニアとはかくあるべきであるという基準を確立したグループの一員でした。
こうした基準を設けている国はそう多くありません。私は、ソフトウェアエンジニアリングという分野の重要性がますます高まっているなか、こうした取り組みは避けて通れないのではないかと思っています。
図表6 フィリップ・クルーシュテン(Philippe Kruchten) *Philippe Kruchten’WebLog(英語) *Wikipedia
女性たちが
コンピューティングを誕生させた
女性たちは、非常にリアルな意味で、コンピューティングを誕生させました。
コンピュータという言葉はもともと、「計算をする人」を意味していました。コンピュータとは物理的なデバイスではなく、人間のことだったのです。実際、最初のコンピュータというのはおそらく、20世紀はじめにハーバード大学天文台で働いていたアニー・キャノン(Annie Cannon、図表7)とそのチームの女性たちでした。
彼女たちは非常に高い能力をもった女性たちでしたが、計算はつまらない仕事と思われていたことが、この分野での性差別を物語っています。つまり、男性がそのつまらない仕事を女性たちにやらせていたのです。
しかしアニー・キャノンこのプロセスを改善しました。彼女は、私たちが今も使っている、恒星の明るさの分類法を確立した人物として高い評価を受けています。彼女たちは、いくつかの素晴らしいブレイクスルーを起こしました。彼女たちはそれを日常的にやっていたのです。今のプログラミングの仕事と非常に似ています。
図表7 アニー・キャノン(Annie Cannon) *Wikipedia
「デジタル」という言葉を発明した
ジョージ・スティビッツ
もう一人、このころに登場し、エンジニアリングを一段上へと進化させた人物がジョージ・スティビッツ(George_Stibitz、図表8)です。彼は、アナログと区別するために「デジタル」という言葉を発明しました。というのも、このころのシステムのほとんどが、当時使われていたコンピュータの一種でさえ、アナログの性質をもつものだったからです。
スティビッツは1937年、シンプルな「Model K」というシステムを作成しました。Kというのは、キッチンテーブルのKです。彼はまさにキッチンのテーブルでこれを作り上げたのでした。
スティビッツは、19世紀の数学者ジョージ・ブール(George Boole)による「ブール代数」を、機械的な領域にもち込みました。理論的アイデアをハードウェアで活用できるという発見が、突然、この世界に登場したのでした。
図表8 ジョージ・スティビッツ(George_Stibitz) *Wikipedia
「ソフトウェア」という言葉を編み出した
ジョン・テューキー
私たちがハードウェアと区別するために「ソフトウェア」という言葉を使い始めたのは、1935年のことです。つまり、ソフトウェアという言葉は比較的新しいものなのです。
また1965年に高速フーリエ変換を発明したジョン・テューキー(John Tukey、図表9)が、さまざまなハードウェアと区別する意味で、「ソフトウェア」という言葉を編み出しました。これは、機械を作ることと、その機械のなかに入っているものを作ることとは違うのだ、という認識に合わせて生まれた言葉でした。
図表9 ジョン・テューキー(John Tukey) *Wikipedia
ソフトウェアエンジニアリングに関する
NATOカンファレンス
では、「ソフトウェアエンジニア」という言葉自体はどこから生まれたのでしょうか? エンジニアリングとソフトウェアという言葉が一緒になったわけですが、この2つはどこで出会ったのでしょうか。
一部では、この言葉は、1968~69年のNATOカンファレンスで生まれたと言われています。「ソフトウェアエンジニアリングに関するNATOカンファレンス(NATO Conference on Software Engineering)」(図表10)のことです。
この会議には非常に野心的な意図がありました。あとでも少し触れますが、このころは、いわゆる「ソフトウェア危機(Software Crisis)」が起こった時期でした。人々はさまざまなソフトウェアを作りたいと思っていたのですが、それをやり遂げるのは、そのために用意されていた人員では単純に不可能だったのです。ですから、文字どおりの危機がありました。
それはともかく、ソフトウェアエンジニアという言葉が生まれたのはNATOカンファレンスのとき、と言う人たちがいたわけですが、それは間違いだったことが、後にわかりました。
図表10 ソフトウェアエンジニアリングに関するNATOカンファレンス *Wikipedia
ACM学会長の手紙、
ソフトウェアエンジニアの求人広告
1966年の8月、コンピュータサイエンス分野の国際学会「ACM」(Association for Computing Machinery)の学会長が、ある編集者に手紙を書いているのですが、その手紙のなかで彼は、エンジニアリングのなかでも、ソフトウェアエンジニアリングとハードウェアエンジニアリングを区別しています。そこにはこう書かれていました。
「私たちは、それがハードウェアエンジニアリングであろうと、ソフトウェアエンジニアリングであろうと、自分たちはエンジニアリングを職業としているという認識を持たなければなりません」と。これは、ソフトウェアエンジニアリングという言葉が使われた初期の例の1つです。
しかし、これが最初ではありませんでした。これについては後で詳しく触れますが、1960年代にはコンピューティングが台頭してきました。そして、コンピューティング用のマシンに合ったソフトウェアを作るサードパーティが登場してきました。そして、1965年のこの案内広告、これが最初だったのではないかという話もあります(図表11)。
この広告では、ニューヨーク市のシステムエンジニアリング企業が、コンピュータプログラミングのシステムと分析、ソフトウェアエンジニアリングにおける実現可能性を担当できる人物を求めています。これが最初だったのでしょうか?
図表11 システムズ・ソフトウェア・エンジニアの募集広告(Computer Automation誌 1965年6月号掲載)
「ソフトウェアエンジニアリング」を作った
マーガレット・ハミルトン
実は違うのです。ソフトウェアエンジニアリングという言葉を作ったのは、マーガレット・ハミルトン(Margaret Hamilton、図表12)でした。
図表12 マーガレット・ハミルトン(Margaret Hamilton) *Wikipedia
マーガレットは、これも後で出てきますが、SAGE(Semi-Automatic Ground Environment:半自動式防空管制組織)システムに関わっていました。その後、チャールズ・スターク・ドレイパー研究所に移り、初期のジェミニ計画やアポロ計画の研究を始めました。アポロの誘導制御システムに使われたソフトウェアのほとんどは、彼女が手がけたものです。
最近、彼女はソフトウェア工学国際会議で基調講演を行い(講演ビデオ)、素晴らしい話を聞かせてくれました。当時は男性エンジニアばかりで、女性エンジニアは彼女1人しかおらず、仕事のことで随分批判されていました。そこで彼女は男性エンジニアたちに、「私はあなたたちがやっていることと全然違うことをやっている。あなたたちが設計しているのは宇宙船のハードウェアであり、私がやっているのはそのソフトウェアなのだ」と述べたそうです。
それがおそらく1963年、1964年あたりのことでしょう。彼女が、NASA敷地内部にあるドレイパー研究所で「ソフトウェアエンジニアリング」という言葉を積極的に使い始めたのは、このころのようです。
つい最近、マーガレットが口述した歴史資料を読んだのですが、そこには、彼女がソフトウェアエンジアリングという用語を発明した人物であることを示す強力な証拠がありました。[第2回に続く]
・・・・・・・・
◎グラディ・ブーチ氏講演 「ソフトウェアエンジニアリングの歴史」
第1回 エンジニアリングは高級神官イムホテプから始まる
第2回 ソフトウェアエンジニアリングのさまざまな定義
第3回 Adaから始まりエンジニアリングの基礎が築かれる
第4回 ソフトウェアエンジニアリングへ
第5回 サブルーチン、コンパイラ、FORTRANの誕生
第6回 ソフトウェアが現実のものになる
第7回 アルゴリズムからオブジェクト指向へ
第8回 ソフトウェアエンジニアリングの第3の黄金時代
第9回 ソフトウェアは、ハードウェアの可能性の物語を囁く
[IS magazine/i Magazine]