Visual Basicはこうして生まれた。

# はじめに
これは、[Visual Basic Advent Calendar 2021](https://qiita.com/advent-calendar/2021/vb)の25日目の記事となります。

2021年は Visual Basic の30周年となります。

https://qiita.com/yaju/items/3a4dd40c40554eb5d283

Visual Basic がどのようにして誕生したのか気になったので調べてみました。
Visual Basicが人気になったのは、プログラミング初心者に優しいBASIC言語が使えることに加えて、フォーム上にマウスでボタンやエディタなどのGUIパーツを配置していくスタイルで開発ができることが挙げられます。

Visual Basicの父と呼ばれる[アラン・クーパー](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%BB%E3%82%AF%E3%83%BC%E3%83%91%E3%83%BC)のインタビュー記事を見つけたので、アラン・クーパーの視点からVisual Basicの誕生までを書いていきます。

【2023/04/01追記】
Something Pretty Right: A History of Visual Basic | Retool
https://retool.com/visual-basic/

Gigazineにて上記サイトを要約して日本語に訳した記事が出ました。自分が知らなった部分を一部取り込みました。
[Microsoftが開発し一時期は絶大な人気を誇った「Visual Basic」の誕生秘話 - Gigazine](https://gigazine.net/news/20230401-visual-basic-history/)

# アラン・クーパー
1952年6月3日にカリフォルニア州マリン郡に生まれる、4歳時に列車に興味を持つようになり、設計することと組み立てることが当時から好きな少年だった。13歳時に将来は建築家になることを目指し、高校やマリン大学でも建築学を学ぶことを選んだ。

## コンピューターとの関わり
クーパーは大学中に自分自身を探す旅としてヨーロッパの放浪の旅に出かけた時だった、スイス最大の都市のチューリッヒをぶらつきながら窓から銀行の地階を見下ろしたときに見えた [IBM360](https://ja.wikipedia.org/wiki/System/360) を見て、コンピューターを学ぶことを決意する。放浪の旅から帰宅後にコミュニティカレッジに入学、プログラミングの授業をとる。ソフトウェアは美しかった。ただ面白いことに、それでもなお、建築家でいたかった。
学費を稼ぐために、アメリカン・プレジデントライン社というサンフランシスコにある海運関連企業で「貨物輸送の標準見積もりシステム」のIBM 370-135のプログラミングの仕事を開始した。そこでは、4時間かかっていたプログラムの不具合を発見し、4分にまで縮めたことで一躍会社のヒーローになることができた。

たった、1行コメントアウトしただけなんだけどね。

## 会社設立と人の出会い
1975年にマリン大学を卒業してすぐに友人であるキース・パーソンと最初の会社ストラクチャード・システム・グループ(SSG)社を設立した。

カリフォルニアのモントレにある海軍大学院で教授をしていた[ゲイリー・キルドール](https://ja.wikipedia.org/wiki/%E3%82%B2%E3%82%A4%E3%83%AA%E3%83%BC%E3%83%BB%E3%82%AD%E3%83%AB%E3%83%89%E3%83%BC%E3%83%AB)が教える院生の1人で若い海軍将校だったゴードン・ユーバンクスが、1977年にWCCF(ウエスト・コースト・コンピューター・フェア)でBASIC言語のコンパイラー「EBASIC-E」を展示していると、クーパーとキース・パーソンは EBASIC を少し改造してビジネス・アプリケーションを書こうとしていると告げた。3人は意気投合し一緒に仕事をすることになった。ゴードン・ユーバンクスは BASIC-Eの拡張版 [CBASIC](https://en.wikipedia.org/wiki/CBASIC)の開発を開始した。

この当時キルドールはインテルのコンサルティングをしており、8080用の「[CP/M](https://ja.wikipedia.org/wiki/CP/M)」というOSを作っており、1974年にキルドールと妻ドロシーは、CP/Mの開発の継続と販売のためにIntergalactic Digital Research（1977年11月に[デジタルリサーチ(DRI)](https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%81)に改称）を設立していた。

ストラクチャード・システム・グループ(SSG)社では、OSとして CP/M を採用し、CBASICを動くようにしたのです。SSGが CBASIC の最初のディストリビュータとなり、ビジネス・アプリケーション「ジェネラル・レッジャー」を開発、次第に売り上げを伸ばしビジネスは軌道に乗っていった。

1980年にクーパーはSSGの所有権をパートナーに売却し退くことにしました。キルドールは CBASIC を高く評価し、ユーバンクスのコンパイラ・システムズ社を1981年夏に買収した。1982年5月ユーバンクスとキルドールからデジタルリサーチ社の研究開発部門に誘われ2年間ほど勤務した。

### ゲイリー・キルドールとビル・ゲイツ
IBMは1980年7月、ジョブズとウォズニアックが開発したパーソナルコンピュータ「Apple Ⅱ」を見て、パーソナルコンピューター市場へ本格参入することを決める。IBMにはコンピューターを動かすためのOSがなかったのためBASICを作っていたビル・ゲイツに協力を依頼、当時のMicrosoftにはIBMのハードウェアで動作するOSがなかったので、ビル・ゲイツと西和彦氏は「CP/M」を開発したデジタルリサーチ社のゲイリー・キルドールを紹介したが、IBMの密使が向かうも本人が留守でチャンスを逃したというのは有名な話である([諸説あり](https://ja.wikipedia.org/wiki/86-DOS#IBM_%E3%81%AE%E9%96%A2%E5%BF%83))

https://qiita.com/yaju/items/a932d5975b4d5163a3c7

https://www.bigtech.jp/bill-gates/

## 人生の転機
1980年前後、クーパーはビル・ゲイツやスティーブ・ジョブズが経験したのと同じ、人生を大きく変える出来事と遭遇しました。それは、[Xerox パロアルト研究所](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%AD%E3%82%A2%E3%83%AB%E3%83%88%E7%A0%94%E7%A9%B6%E6%89%80)を訪問してしまったのです。[Alto](https://ja.wikipedia.org/wiki/Alto)を見て自宅に戻ってから、ソフトウェアを開発するやり方が変わりました。
なぜなら、マウスとメニューとウィンドウ、そして、そこにあるものを「指し示す」というアイデアに出会ってしまったからです。もはや頭の中は黒い画面上の緑色の文字ではなくなっていたのです。

デジタルリサーチ社退社後、デスクトップアプリケーションソフトウェアの開発に専念した。ここでインタフェースの問題に焦点を当てて取り組みました。当時のコンピュータ業界では、まだ「インタフェース」という呼び名はありませんでした。
ソフトウェアを開発しては発行元に販売することで生計を立てていました。ワープロソフトをいくつか開発し、初期のスプレッドシートといえるものも生み出しました。当時は極めて先進的なことでした。1984年にクリティカルパスを扱うプロジェクト管理プログラムを作り、[コンピューター・アソシエイツ社](https://ja.wikipedia.org/wiki/CA%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC%E3%82%BA)に販売し「SuperProject」という製品になったのです。これは「Microsoft Project」のひな型ともいえる製品です。

当時はマウスは使えなかったのですが、Altoに魅入られていたため、画面や紙の上にクリティカルパスの絵を描く用にするなど、まさしく緑色の画面上のGUIを作っていたのです。
1986年にサンタクララのどこかで行われていた「Microsoft Windows 1.0」の発表会に連れていかれ、「これこそ、君が求めているものだろう？」と友人は言いました。そのプレゼンテーションを見たとき「そうだ。これが、私がずっとやってきたことだ。私がほしいものなんだ…」と思わずつぶやきました。

この頃プライベートでは、クーパーは1985年にスーザンと結婚した。奥さんのスーザンは1994年にクーパー・インタラクション・デザインに入社しており、最高経営責任者に就任した。仲の良い夫婦で、子どもは2人いる。

### Windows 1.0 Demo
<iframe width="560" height="500" src="https://www.youtube.com/embed/NdLpAc7nYj4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 突然のひらめき
クーパーは、Windows 1.0をアプリケーション開発として採用したが、GUIをサポートしていたからではなく、ダイナミック・リンク・ライブラリ（DLL）機能が採用されていたことに注目したからだ。その頃から、ソフトウェアの様々な部品をいじり始めました。

Windows 1.0はMS-DOSよりパワフルだけどユーザーシェルがひどすぎるのは、誰の目にも明らかでした。それを使ってなんとかしなければならいことは分かっていても、ものすごく扱いにくいのです。クーパーは、どうにかしてそれに代わるものを作れないか、時間の合間に考えにふけったものでした。

ある日、友人のクライアントのバンク・オブ・アメリカに同行した際にIT担当者が「3万人の従業員に Windows をうまく使ってもらわなければならない」という大きな課題を抱えていました。従業員には、実際にコンピューターをいつも使っている上級アナリストや、使い方は知っているが主な業務としてそれを使うことはない中間管理職クラスの銀行員、大多数の従業員は高卒の出納係でした。

そこで突然ひらめいたのです。

Windows シェル問題の解決策として、「組み立て式の建築物セット」を提供し、自分だけのシェルを構築してもらってはどうかと思いつきました。
アナリストたちは、高機能なプログラムを実行するシェルを自分のために組み合わせ、中間管理職クラスの人々には複雑なことを全て見えないようにしたシェルを与え、出納係には極めて単純かつ厳密に固定されたシェルを組み合わせたものを与えれば良いと。つまり、使う人によって異なるユーザーインタフェースを用意するのです。

その日、自宅に戻ってからプログラムに着手し、頭と手を同時に動かして作りました。これは基本的に、フローティングメニューのことです。そのメニューにはプッシュボタンとリストボックス、チェックボックス、ラジオボタンがあって、それらはすべて Windows のコントロールとして馴染みがあるものでした。

当時、クーパーはリモート・マニピュレーターの愛称にちなんで「ウォルド」と呼んでいたのですが、開発協力者のマイケル・ギアリーは「ウォルド」という名前は難解すぎるとして「gizmos(小道具、ちょっとした機械などの意)」に改名しました。その後「gizmos」は、Microsoftによって「コントロール」に改められました。

## トライポッド(Tripod)の誕生
Windows を起動した後、上部の小さな[ウィジェット](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88_(GUI))（GUI部品）のパレットが置かれている部分で、メニューボタンの絵をクリックし、それを下のほうにドラッグし、ウィンドウの上でドロップします。すると新しいボタンがウィンドウの中に現れます。そして画面の上部から、今度はテキストボックスをドラッグしてきてウィンドウの上でドロップし、それからボタンの上で右クリックして、ラバーバンドをテキストボックスまでドラッグしてきて放す。するとプッシュボタンがテキストボックスとつながる。それからプッシュボタンを押せば、テキストの一部がテキストボックスに送られます。

ドラッグ&ドロップができる Windows アプリケーションは、これが最初でした。何かをドラッグしたときにそれが動いているように見えるようにもしました。Windows の画面上で、まだ誰もアニメーションを見たことがなかった時代です。

ユーザーが「ボタンをクリック」などのアクションを起こすと特定のコードを実行するという機能も組み込まれていました。このコード実行機能の名前を考えていた際に、ギアリーはイライラしながらモニター画面に向かって輪ゴム鉄砲を発射(fire)したり、葉巻を吸うためにライターの火(fire)を付けたりしていたとのこと。そして、頭の中に「fire an event(イベントの発火)」という現代まで使われている開発用語が浮かんできたとクーパーは語っています。

このシェルをトライポッド(Tripod)と名付けました。

## ビル・ゲイツに実演
クーパーはC言語を使ってトライポッドの新しいバージョンを書いた。その後ロータス社のような大企業も含め、ソフトウェア業界の人々何人かにそのプログラムを見せたところ、「ほおー、これはちゃんとできているソフトウェアだね。一種のシェルとして、Microsoftに売り込んだらどうだい？」と言われたのです。
Microsoftで仕事をしていた友人が何人かいたので、彼らにビル・ゲイツに会わせてくれるよう頼むとビルの側近の1人から招待を受けることができました。クーパーがコンピュータを取り出してソフトウェアのデモを始めると3分くらい眺めた後に椅子の背もたれに寄りかかり、「ビルがこれを見ないといけないな」とつぶやきました。
この時クーパーにビルとの会談をセッティングしてくれた友人は、後にゲームプラットフォーム「Steam」を開発するValveを設立することとなる[ゲイブ・ニューウェル](https://ja.wikipedia.org/wiki/%E3%82%B2%E3%82%A4%E3%83%96%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%A6%E3%82%A7%E3%83%AB)だった。

### 魔法をかける
1988年3月、プログラムのデモをしに再びシアトルに行きました。画面上でドラッグのアニメーションを見せたとき、ビルはクーパーを見て「これは、いったいどうやっているんだ？」と聞き、Windows 上で動くそのようなアニメーションはかつて一度も見たことがないと話してくれました。「魔法を使っています」と言いました。デモを続けていると、ビルはそこにいた人たちを振り返って、「僕たちこそが、こういうことをやっていないといけないんじゃないか？」と言ったのです。とても嬉しいことでした。

その部屋の中にいた1人、[タンディ・トロワー](https://en.wikipedia.org/wiki/Tandy_Trower)は「これを欲しがる人なんているのでしょうか？　これが何の役に立つのですか？」と言ったとたん、ビルが振り返り、世間の人々がこのプログラムを欲しがる理由を説明し始めたのです。それからビルはクーパーの方を向いて、「これを購入したい。これは、人々がコンピュータを使って仕事をするやり方を変えるだろう」と言ってくれました。

ビルは、クーパーと契約を結び1990年に発売予定の「Windows 3.0」にTripodを組み込むことを求めました。

## ルビー(Ruby)の誕生
買い取り交渉は数カ月続いた後、交渉は成立しトライポッド(Tripod)はルビー(Ruby)へと名称を変更した。なぜなら、トライポッドはロータス社や他の会社に見せてしまっていたからです。これは特に深い意味のないプロジェクト名称でした。いま現在「[Ruby](https://ja.wikipedia.org/wiki/Ruby)」という名のプログラム言語が存在していますが、当時の Ruby はこの製品のコードネームだったのです。

本格的なルビー(Ruby)の開発に入るとクーパーの書いたプログラム・コードは廃棄され、新たにプログラムが書き起こされた。18カ月後に完成し、C言語で2万5000行にまで膨れ上がっていた。1990年、ルビーは早々とマイクロソフトに納品されている。

それ以降、クーパーはルビーに一切触れていない。クーパーは、Microsoftとの間に機密保持契約を結んでいた都合上、Visual Basicについては、1992年までの4年間、何も話せなかった。

## シェルからプログラミング言語に変更
1990年5月、クーパーはルビーが [Windows 3.0](https://ja.wikipedia.org/wiki/Microsoft_Windows_3.x#Windows_3.1_2)とともに出荷されると思って期待したが、MicrosoftのWindows 3.0のシェルには、OS/2のシェルとそっくりなものをリリースし、ルビーの出番はなかった。この頃は、MicrosoftとIBMは共生関係にあった、MicrosoftとIBMが決別したのは1993年秋である。Windows 3.1は1992年５月に出荷。

ルビーが世に出ないことを不満に思ったクーパーはビルにルビーの買い戻しを提案します。しかし、ビルはRubyの権利をクーパーに返すことを拒否し、代わりにプログラミング言語「BASIC」にルビーの機能を組み込んで、BASICをビジュアルプログラミング言語化することを決定しました。

もともとルビーはWindowsのシェルの構築セットであったが、シェルに関するクーパーのアイデアを採用し、そのすべてをプログラマー向けに提供したのです。
Microsoftはルビーに[QuickBASIC](https://ja.wikipedia.org/wiki/QuickBASIC)を組み合わせてビジュアルなプログラミング言語に変更することを決め、Windowsチームが言語を扱う部門にルビーを委譲した。ルビーには簡単なシェル言語が付加されていたが、Microsoftはシェル言語の部分をQuickBASICに書き換えた。

## Visual Basicの誕生
ルビーをQuickBASICに組み込むプロジェクトは、当初は6カ月の短期プロジェクトとして始まったのですが、プロジェクトは難航し完成までに18カ月を要することとなりました。完成したビジュアルプログラミング言語は「Visual Basic」と名付けられ、1991年5月20日にVisual Basic バージョン1.0がリリースされました。

1991年にビル・ゲイツ(36歳当時)がVisual Basic 1.0を2分10秒あたりから3分間ほどカレンダーを使用した説明をしています。
<iframe width="560" height="500" src="https://www.youtube.com/embed/bMz2Mgs7UU0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

クーパーは、Microsoftとの間に機密保持契約を結んでいた都合上、クーパーがやった開発について知る人は誰もいない状態でした。
1991年、ある人がMicrosoftの製品発表会にクーパーを招待してくれました。発表会が行われるワシントン州レドモンドに出向いてイベントの最前列に座り、その製品を見たとき、クーパーは本当に激怒しました。でも、本音を言わずに「いい出来だね」と言うようにしました。

### VBX(VisualBasic拡張機能)
クーパーがルビー用に発明した動的にインストール可能な制御機能は、「[Visual Basic Extension(VBX)](https://en.wikipedia.org/wiki/Visual_Basic_Extension)」インターフェイスとして有名になった。この技術革新により、サードパーティの開発者がカスタムコントロールをDLLとして記述し、プログラムの一部としてユーザーに提示することが可能となった。

1990年代には、Microsoftは再利用可能なソフトウェアコンポーネントの最初の商業的に実行可能な市場を生み出し、サードパーティは再販のためのカスタムコントロールの大規模な市場を形成されました。

Visual Basic 4.0からは、新しいOLEコントロールまたはOCX(ActiveXコントロール)のサポートを追加し、VBXコントロールは暗黙的に非推奨となりました。

## Visual Basicの父
1992年のある日、[ミッチェル・ウェイト](https://en.wikipedia.org/wiki/Mitchell_Waite)からクーパーの元へ電話があった。彼はVisual Basic に一目ぼれしてしまった人物で当時、「Visual Basic How To」という初の Visual Basic 関連書籍を執筆した人物でもあります。彼はVB上にあった「VBについて」という記述の中に私の名前を見つけ電話をかけてきました。2人でランチを食べながら、長い長いストーリーを話しました。話の最後に彼は、あきれ顔になってこう言いました。

「君こそ Visual Basic の父といえる人間なんじゃないか」

こうして、アラン・クーパーはVisual Basicの父と呼ばれるようになった。
彼は私の経歴をたった一言にまとめてくれたのです。それ以来、自分のことを「Visual Basic の父」と称するときはいつでも、ミッチェル・ウェイト氏の言葉だと説明しています。

### ウィンドウズパイオニア賞の授与
1994年5月、ジョージア州アトランタで開催されたウィンドウズワールドにおいて、ビル・ゲイツはクーパーにウィンドウズパイオニア賞を授与した。これにより、Visual Basicの父であることが公的に認知されることになる。

クーパーは、BASICがあまり好きではありませんでした。BASICは100行程度のプログラムを書く際には優れた言語ですが、大規模なソフトウェアを作る際には使えないものでした。クーパーの業績がBASICと少しでも関係があるというのが恥ずかしかった。
そのため、クーパーは、「Visual の部分を開発したのが私で、Basic の部分を開発したのは Microsoft だ」という言い方を好んでいます。

<iframe width="560" height="500" src="https://www.youtube.com/embed/qz2j0q-pzGo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

## その後
1992年、クーパー・ソフトウェアを設立、1人でデザインコンサルティングだけを手掛けました。
1995年、クーパーの1冊目の著書「About Face: The Essentials of User Interface Design」を出版した。
1999年、クーパーの２冊目の著書「The Inmates are Running the Asylum」を出版した。この本でペルソナ概念が広く知られるようになった。
2002年、クーパー社はインタラクションデザイン、サービスデザイン、ビジュアルデザイン、デザインリーダーシップなどのトレーニング課程を一般に提供し始めた。
2017年、クーパー社は、ウィプロ・デジタル社の戦略的デザイン部門である[Designit](https://www.designit.com/)の一部となった。

### ペルソナ法を考案
クーパーがペルソナ(persona)の概念を考案、ユーザー中心設計やマーケティングにおいて、サイト、ブランド、製品を使用する典型的なユーザーを表すために作成された仮想的な人物像のことである。
「ペルソナ法」は、事実上、世界中で利用されるインタラクションデザインのツールの一つとなっています。
頭が良く、才能ある人が度々くだらないソフトウェアを作ってしまう原因を検証する中で、この効果に言及しました。彼はデザイナーの偏見を取り除き、ユーザーの深層心理を反映するべく、ペルソナベースドデザインという手法を生み出しました。

https://www.itmedia.co.jp/im/articles/0809/02/news132.html

# 最後に
クーパー自身はプログラム言語ではなく、ずっとシェルとして作られていたと思っていた。今でいう Mac Finder や Windows デスクトップのインタフェースみたいなのを想定してたんでしょう。それ用に開発された動的にインストール可能な制御機能は、VBXとして発展して大きな市場が生まれている。
クーパーが Visual の部分を手がけて、Microsoft がBASICに書き換えてしまったのは面白いですね。この当時はQuickBASICがWindows向けのビジネスアプリケーション開発に広く使われていたんですよね。
あと、ペルソナの考案者だったのは知らなかったです。調べてみるもんだ。

# 参照
* [第58回　Visual Basicの父](https://jibun.atmarkit.co.jp/ljibun01/rensai/adventurer/058/01.html)
* [UX Pioneers：アラン・クーパー氏インタビュー](http://www.designit.jp/archives/2009/07/ux_pioneers_alancooper.html)