Microsoft Accessはこうして生まれた。

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

自分にとって Microsoft Access は、Windows の開発を始めた最初のアプリケーションとなります。これにより、イベントドリブンによる開発およびSQLを覚えました。

こうして生まれたシリーズ第３段となります。
* [Visual Basicはこうして生まれた。](https://qiita.com/yaju/items/eb2ef4648c73bdd5ace1)
* [Excelはこうして生まれた。](https://qiita.com/yaju/items/25777f85c80bc5509719)

# 時代背景
コンピュータ化されたデータベースは、大企業にとってハードウェアの費用対効果が高まり始めた 1960年代に初めて登場しました。1970年代には 2つのデータベースのプロトタイプ([`Ingres`](https://ja.wikipedia.org/wiki/Ingres) と [`System R`](https://ja.wikipedia.org/wiki/System_R))がリリースされました。この2つは今日知られているほとんどのデータベース(`SQL Server`、`DB2`、`Oracle`、`PostgreSQL`、`MySQL`)の基礎を築きました。
これらのデータベースは、リレーショナル モデルに従いクエリ言語として構造化クエリ言語(SQL)を使用しました。1980年代にはデスクトップ PCが成長し、それに伴って`Paradox`、`dBase`、`R:BASE`などのよりアクセスしやすい製品が開発され、1980年代後半に`Access`が登場しました。

:::note
PostgreSQLは、Ingres の次版(Post)として Postgres となり、その後 Postgres95 という名前になったが、時代を表すものに基づかなくなったことから、現在の PostgreSQL という名称となった。
:::

## Access登場前
1980年代は、[アシュトンテイト](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B7%E3%83%A5%E3%83%88%E3%83%B3%E3%83%86%E3%82%A4%E3%83%88)社(1991年にBorland社が買収)が1982年にIBM-PC版 `dBASE II`をリリースし、これが爆発的な売り上げを記録した。これにより1987年まで、dBASEの様々なクローン([xBase](https://ja.wikipedia.org/wiki/XBase))が次々に生まれていた。その中のFox Software社が1984年12月にリリースした`Fox Pro`(当初の名前は`FoxBase`)が一歩抜きん出ており、`dBase`と`Fox Pro`がデスクトップ データベース市場を独占していました。Borland社の [Paradox](https://ja.wikipedia.org/wiki/Paradox_(%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9)) もそれなりに健闘していた。

# プロジェクト開始
Microsoft社が、リレーショナル データベース製品を販売しようとした最初の試みは 1980年代半ばで、そのとき `R:BASE`を販売するライセンスを取得しました。

Accessは1980年代後半プロジェクト`Omega`(オメガ)として開始され、数年間の開発を経て1990年にリリースされる予定でした。`Omega`は Microsoft SQL Server のフロントエンドを提供することも期待されていましたが、当時利用可能な 386 プロセッサでは非常にリソースを大量に消費し速度が遅かったことから、この予定はキャンセルされてチームは2つのグループに分かれました。
1つのグループはプロジェクト`Thunder`(サンダー)に移され、後の`Visual Basic`となり、もう1つのグループはプロジェクト`Cirrus`(シーラス)に移され、後の`Microsoft Access`となります。

時代背景的には下記を読むといいでしょう。

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

## プロジェクト Cirrus(シーラス)
目標は、Windows 上で実行される`Paradox`や`dBase`のようなアプリケーションの競合他社を作成することでした。データベース分野で遅れていた Microsoft は`Fox Pro`のFox Software社を1992年に買収します。この買収により、大規模で忠実な FoxPro コミュニティ、Rushmore テクノロジ、および経験豊富な開発者を多数獲得しました。
このプロジェクトが`Fox Pro`に置き換えられるという噂がありましたが、Microsoft はこれらのプロジェクトを並行して開発することを決定しました。これにより、`Fox Pro`は、[Microsoft Visual FoxPro](https://ja.wikipedia.org/wiki/Microsoft_Visual_FoxPro) としてリリースされています。
しかし、Accessと競合する製品となるため、2004年12月17日にリリースされたVisual FoxPro 9が最後となりました。なお、日本では販売されなかったため、日本での知名度が低い製品である。

# Access 1.0リリース
Microsoft社では、古いターミナル エミュレーション プログラムに`Access`という名前を使用していました。このプログラムは放棄され、1992年11月13日に`Microsoft Access`としてリリースされました。
当初のプログラミング言語は`Access Basic`という、Access向けのVBAで書かれたサブセットでした。

`Microsoft Access 1.0`は、非常に短期間で100万部以上売り上げました。 これには、Microsoft社さえも驚きました。
競合のBorland社でも`Paradox for Windows`を開発していたが、当初の計画より1年間開発が遅れたことにより`Microsoft Access`の方が数ヶ月前に出荷することができ、市場での勝利を得ました。

### dBase その後
1980年代に一世風靡した`dBASE`でしたが、アシュトンテイト社をBorland社が1991年にが買収、Borland社は`Paradox`と`dBASE`の２つのデータベースを持つ状態となります。
Borland社は、`dBASE for Windows`を1994年にリリースしたが、既に`Microsoft Access`が市場を席巻しているばかりか、Microsoft社は`Microsoft Visual FoxPro`もリリース、dBASEクローンの市場は`FoxPro`に収斂する流れが既に出来上がってしまっていた。

Borland社はこの頃には、`Delphi`(1995年9月リリース)で成功をおさめていた上、`Paradox`に力を入れていたこともあり、dBASEの権利を dBASE Inc に売却した。

# Access と JET データベース エンジン
Access と [JET データベース エンジン](https://ja.wikipedia.org/wiki/Microsoft_Jet_Database_Engine) は、密接な関係となっています。

Access の初期バージョンには、データ損失や大きなファイル サイズの処理に関する多くの問題がありました(当時、10MBであっても大きなファイルという扱いでした)。

|アプリケーション/バージョン|Jet バージョン|リリース|
|:--|:--|:--|
|Microsoft Access 1.0|1.0|1992年11月|
|Microsoft Access 1.1|1.1|1993年5月|
|Microsoft Access 2.0|2.0|1994年3月|
|Microsoft Access 2.0 Service Pack|2.5|1994年10月|
|Microsoft Access 95 / Excel 95|3.0|1995年8月|
|Microsoft Access 97 / Excel 97 / PowerPoint 97 / Word 97|3.5|1997年1月|
|Microsoft Access 2000|4.0 SP1|1996年6月|

Microsoft Access 2007からACE 12.0(Accessデータベースエンジン)となっている。 

https://qiita.com/yaju/items/7b0aa9e9f30005f60388

## Microsoft Jet 1.1
Microsoft Jet と Open Database Connectivity (ODBC)データベース間の接続性を向上させるために、さまざまな改善が行われました。これには、新しい Oracle ODBC ドライバー、接続の共有とキャッシュのためのサービスを提供する接続マネージャーの導入、および任意の ODBC ドライバーと連携する機能の全般的な改善が含まれます。さらに、データベース ファイルの最大サイズが 128MiBから約 1.1 GiBに増加しました。Microsoft FoxPro テーブルへのアタッチのサポートと、海外ユーザー向けのいくつかの新しい照合順序も追加しました。
Microsoft Jet 1.1 には、データ アクセス オブジェクト (DAO)インターフェイスのバージョン 1.1 が含まれています。

## Microsoft Jet 2.0
前バージョンに比べて大幅な機能強化が施されています。主な改善分野には、エンジン レベルでの参照整合性とデータ検証の強制、クエリパフォーマンスの最適化(Rushmoreテクノロジーを使用)、ANSI 標準 SQL 構文ルールへの準拠の強化、 UNION、サブ SELECT、およびデータのサポートが含まれます。
データ アクセス オブジェクト (DAO)インターフェイスのバージョン 2.0 が含まれています。

### Rushmoreテクノロジー
FoxPro社がリリースした`FoxPro 2`には、インデックスを使用してデータの取得と更新を高速化する「Rushmore」最適化エンジンが含まれていました。
`Rushmoreテクノロジー`はすべてのデータ関連ステートメントを検査し、フィルター式を探しました。これを使用することで、同じ式に一致するインデックスが検索されます。

Microsoft社が FoxPro社を買収したときに本当に興味を持っていたのは、`Rushmore` テクノロジでした。 この`Rushmore`を Jet データベース エンジンにいち早く組み込み、Microsoft Access 2.0 を含むすべての Microsoft プログラムでそれを利用できるようにしました。

## Microsoft Jet 2.5
データベースが誤って破損とマークされる頻度を最小限に抑えることと、新しい ODBC デスクトップ データベース ドライバのサポートを追加することという 2つの目標を達成するために設計された暫定リリースでした。
おそらく Microsoft Jet 2.5 の最大の特徴は、エンジンの最初の 32 ビット リリースが含まれていることです。

## Microsoft Jet 3.0
新機能と向上したパフォーマンスを提供します。このアップグレードの最も重要な点は、Windows 95 や Windows NT などの環境で使用できる完全な 32 ビット実装です。
ほとんどの操作を大幅に高速化することを目的として、データベース形式とエンジンがデータを処理する方法に多くの変更が加えられました。マルチスレッドの実装やレプリケーション機能が導入されました。
開発者はさまざまな場所で使用できる複製可能なデータベースを作成できます。Microsoft Jet はこれらのレプリカを同期し、データを最新の状態に保つことができます。

# 年表
|年表|内容|
|:--|:--|
|1992|Microsoft Access 1.0 が Windows 用 Office Professional スイートの一部として 11 月にリリースされました。これは、Paradox や dBase と競合する製品でした。|
|1993|Access 1.1 では、Access Basic プログラミング言語が組み込まれ、互換性が向上しました。|
|1994|Access 2.0 が Office 4.3 Professional とともにリリースされました。|
|1995|Microsoft Access 7.0 が Office 95 の一部としてリリースされました。このバージョンでは、他の Office アプリケーションとの一貫性を保つために、Access Basic から VBA (Visual Basic for Applications) に移行しました。|
|1997|Access 97 (バージョン 8.0) が Office 97 とともにリリースされました。|
|1999～2003|Access 2000、2002、および 2003 は、バックアップおよび復元データベース ツールなどの新機能を含む Office 2000 および Office XP スイートの一部としてリリースされました。|
|2007|Office 2007 の一部である Access 2007 が、新しいインターフェイスと新しいデータ型を備えてリリースされました。|
|2010|Access 2010 は Office 2010 とともにリリースされ、SharePoint に公開できる Web データベースが導入されました。|
|2013|Access 2013 がリリースされ、Web アプリの作成によるオンライン アクセスとコラボレーションが強調されました。|
|2016～2019|Access 2016 と 2019 はそれぞれ Office 2016 と Access 2019 の一部としてリリースされ、大きな更新はほとんど提供されず、代わりに大幅な変更よりも安定性と改善に重点が置かれていました。|
|2023～|Access の継続的な更新と改善が Office 365 サブスクリプション サービスを通じて提供されるようになり、統合、クラウド接続、データ分析の改善に重点を置いた更新が行われます。|

# 最後に
`Microsoft Access`は、簡単なDBとレポートが搭載されていて、`Access 95`を使用していた当時は社内用アプリケーションの改良に勤しんでいました。いい勉強になったな。

これを調べていて、`VBScript`はいつ出来たんだろうとふと思ったんです。wikiによれば、1996年8月にWWWのクライアントスクリプト言語として`Internet Explorer 3.0`に実装され、その後に`Windows 95 OSR2`より標準搭載されたんですね。
来年は廃止されてしまうと言われているので、「VBScriptはこうして生まれた。」にする予定です。

# 参照
* [Microsoft kills FoxPro](https://www.tamurajones.net/MicrosoftKillsFoxPro.xhtml)
* [History of Jet (thru 3.0)](https://groups.google.com/g/comp.databases.ms-access/c/R5g04PjErcI?pli=1)
* [Microsoft Access: Is it Still Relevant in 2024?](https://www.comparitech.com/net-admin/microsoft-access/)