VBScript はこうして生まれた。

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

VBScript(Microsoft Visual Basic Scripting Edition）は、2027年頃に Windows から完全に削除される予定となっております。
供養する上でも、VBScript を振り返ってみることにしました。

ここ数年、最終日に歴史的なことを書いています。

* [ティム・パターソンとVisual Basic](https://qiita.com/yaju/items/a932d5975b4d5163a3c7)
* [Visual Basicはこうして生まれた。](https://qiita.com/yaju/items/eb2ef4648c73bdd5ace1)
* [Excelはこうして生まれた。](https://qiita.com/yaju/items/25777f85c80bc5509719)
* [Microsoft Accessはこうして生まれた。](https://qiita.com/yaju/items/ef7a9db8cdfa5fc4c274)

# 背景と時系列
[VBScript Version Information](https://www.vbsedit.com/html/04075c37-ceb2-46ea-8b00-47fb430450c3.asp)

## 1991年
6月17日、マイクロソフトの[Joel Spolsky](https://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%82%A8%E3%83%AB%E3%83%BB%E3%82%B9%E3%83%9D%E3%83%AB%E3%82%B9%E3%82%AD)がプログラムマネージャとしてMicrosoftのExcelチームで働きはじめた。
Visual Basicにお気に入りの言語構文を2つ、cshからもらってきた`For Each`と、Pascalからもらってきた`With`を追加した。

[はじめてのBillGレビューのこと](https://web.archive.org/web/20190406043653/http://local.joelonsoftware.com/wiki/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AEBillG%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AE%E3%81%93%E3%81%A8)


## 1993年
6月25日にマイクロソフトは、Windows版「Excel 5.0」を発売する。これには、Visual Basic Ver.3.0をベースにした VBA(Visual Basic for Applications)を搭載した。

## 1994年
8月15日にマイクロソフトは、Visual Basic 4.0を発売する。これには、OCX(OLEコントロール)という形で ActiveX の前身技術がサポートされており、これが後の ActiveX コントロールへと発展しました。その後、ActiveX という名称が正式に使われ始めたのは1996年で、Windows 95やInternet Explorer 3.0とともに普及が進みました。

## 1995年
8月24日に Windows 95 が発売されると、初日で70万本以上が売れるという大成功を収めました。遡ること2ヶ月前頃の 5月26日、ビルゲイツは「インターネットという大津波」というタイトルのメールをマイクロソフトのエグゼクティブスタッフ全員に発信しました。
そのメールがファックスされた[PDF](https://www.justice.gov/sites/default/files/atr/legacy/2006/03/03/20.pdf)とそれを文字起こしした記事
https://lettersofnote.com/2011/07/22/the-internet-tidal-wave/

1月にマイクロソフトは、スパイグラス社(Spyglass Inc)から Enhanced NCSA Mosaicのライセンスを購入しており、これをベースにIEの開発スタートしています。約100人の開発者を3か月の間につぎ込み、Spyglassの技術を使用しているが、Spyglassからのソースコードは使用せずに開発された。その為、「ページが表示できる」というだけで機能が低く、table タグにも未対応でした。

8月にマイクロソフトは、Windows 95、Office 95、Visual Basic 4.0を立て続けに発売する。
Windows 95 の発売直後に有償のアドオンパックである「Plus! for Windows 95」に、この IE 1.0 が含まれていました。ちなみに 日本語版には 機能的に Netscape Navigator に追いついた IE 2.0 が同梱。

12月4日、Netscape社 と Sun Microsystems社 が JavaScript を「インターネットコミュニティ全体が利用できるオープンでフリーライセンスの提案標準」を発表します。
https://www.tech-insider.org/java/research/1995/1204.html

## 1996年
年初から Netscape Navigator の JavaScript に対抗するものとして、 Microsoft Windows Script Technologies という Windowsプラットフォーム上でスクリプト言語を使用してシステムやアプリケーションを制御するための技術を開発します。このテクノロジには VBScript/JScript も含まれていました。著作権で保護された「Java」という単語を避けるため、「JScript」という名称となった。
 
3月、マイクロソフトの年次プロフェッショナル開発者会議(PDC)でビル・ゲイツは ActiveX と呼ばれる一連のインターネット技術を発表しました。
[1996: Microsoft Activates the Internet With ActiveX & JScript](https://cybercultural.com/p/1996-microsoft-activates-the-internet-with-activex-jscript/)

ActiveX は、OCX(OLEコントロール)を基にインターネット向けや分散コンピューティング対応に進化した技術で、インターネットやイントラネット上でのインタラクティブなコンテンツやアプリケーションを実現するために使用されます。
カンファレンス後のメディア レポートで ActiveX が Netscape プラグインとJava アプレットの両方と比較されたのは偶然ではありませんでした。

VBScriptは、VBA(Visual Basic for Applications)の機能を簡略化したサブセットとして設計されており、最初から ActiveXコントロール を利用することを想定して作られた。

8月12日 Netscape社が、司法省へ手紙を送ります(ブラウザ戦争勃発)

8月13日に Netscape社が Javascript のライセンスを供与しなかったため、JavaScript 互換のスクリプト言語 JScript 1.0 と共に VBScript 1.0 が、IE 3.0 に実装されました。IE 3.0は提供開始から6時間で約32,000人がアクセスされ、1週間で100万本がダウンロードされています。12月のゾナ・リサーチ社発表のブラウザシェアでは、Netscape Navigator 70％、Internet Explore 28%(5月は7%)となっています。

8月20日に Netscape社の手紙が公開され、8月22日にマイクロソフト社が声明を発表します。

12月10日に 大幅に拡張した VBScript 2.0 が IIS 3.0(Internet Information Server) で導入されたことで、ASP 1.0(Active Server Pages)のスクリプトとしてバックエンド処理を活用する領域で活用されるようになります。同時期に主要なデータ アクセス テクノロジとして ADO(ActiveX Data Objects)が導入されました。

[その109「IISの生い立ち」](https://bb.watch.impress.co.jp/cda/bbword/16954.html)

同時期に Flash (当初は FutureSplash Animator）が、12月にリリースされました。

## 1997年
9月30日に IE 4.0 と IIS 4.0 と ASP 2.0 と VBScript/JScript 3.0(Debug関数が追加)をリリースされます。IE 4.0 からレンダリング エンジンが Trident に変更されます。Windows のシェル自体が更新され、Windows エクスプローラーと IE が統合(Active Desktop)されました。この Windows とブラウザーの統合が後に独禁法関係の紛争の元となる。

* [ブラウザ戦争／ポータル戦争が始まる](https://www.itmedia.co.jp/news/articles/2206/17/news073_2.html)
* [Spyglass、Microsoftにケンカを売る IEの売り上げ本数に応じたライセンス料を要求](https://pc.watch.impress.co.jp/docs/article/970107/kaigai01.htm)

### JavaScriptの標準化を目指す
Netscape社は JScript と JavaScript というブラウザ互換性のない状態を解決に向け JavaScript を標準化しようと画策し、ECMAという標準化機関に JavaScriptの標準化を依頼し、6月に ECMA-262 初版が公開されます。

### WSH(Windows Script Host)
Windowsでは、MS-DOSの時代から伝統的にバッチファイルが実装されていたが、機能追加されることでバッチファイルは初心者には非常に使いづらいシステムになってしまった。そのため、より簡単に複雑なスクリプトを記述できるようなシステムが求められ、Windows Script Host が誕生した。
11月に Windows NT 4 Option Pack のリリースで初めて WSH が搭載された。WSH は、いくつかのコア システム リソース (レジストリ、ネットワーク、プリンター、ファイル システムなど) を公開し、システム管理者がスクリプト言語(主に VBScript/JScript)を使用してそれらのリソースにアクセスしたり制御したりするスクリプトを作成できるようになりました。サーバー管理者は一般的な管理タスクを処理する高度なスクリプトを作成できるため、人気を博しました。

## 1998年
1月に Netscape社は、Netscape Communicatorの無料配布を開始、ソースコードもオープンソースとして無償公開します。しかし、シェアが50％に低下します。

6月25日に Windows 98 がリリースされ、WSH 1.0 が標準搭載(それ以前は、別途ダウンロードにより使用可能)されました。この Windows 98 に IE 4.0 が標準で搭載され、強力な市場シェアを築く要因となった。

11月に世界最大のISP AOL社が$4,200Mで Netscape社を買収しました。

## 1999年
3月18日に IE 5.0 と VBScript/JScript 5.0をリリースします。
この VBScript 5.0 からはクラスの作成をサポート(継承の機能はない)およびEVal関数など追加等、大幅に機能拡張される。

IEのシェアが Netscape Navigator を上回ります。

## 2000年
2月17日に IE 5.01 と Windows 2000 をリリースします。OSには VBScript/JScript 5.1を標準搭載。

7月17日に IE 5.5 と VBScript/JScript 5.5 をリリースします。
VBScript 5.5で、SubMatches Collection関数が追加され、ようやくまともな正規表現ライブラリ(Microsoft VBScript Regular Expressions 5.5)となった。それまでの 1.0は、簡易な正規表現ライブラリで複数行へのマッチングオプションなどは考えられていなかった。

[VBAの正規表現の参照設定の5.5 と 1.0の違い](https://qiita.com/Q11Q/items/56db596629a124f94b7e)

9月14日に Windows MEをリリースします。OSには VBScript/JScript 5.5を標準搭載。

## 2001年
8月27日に IE 6.0 と VBScript/JScript 5.6 をリリースします。
10月25日に Windows XPをリリースします。OSに VBScript/JScript 5.6を標準搭載。

VBScript 5.6 が最終バージョンとなります。

# 2027年
https://forest.watch.impress.co.jp/docs/news/1593925.html

フェイズ3で「VBScript」に関わるすべてのダイナミックリンクライブラリ（.dllファイル）はなくなるため、依存するアプリやシステムは動作しなくなる。

https://techcommunity.microsoft.com/t5/windows-it-pro-blog/vbscript-deprecation-timelines-and-next-steps/ba-p/4148301

>The scope of VBScript deprecation includes only vbscript.dll and no other libraries. This shall not impact any projects that are not dependent on vbscript.dll.
VBScriptの非推奨範囲はvbscript.dllのみで、他のライブラリは含まれません。これは、vbscript.dll に依存していないプロジェクトには影響しません。

scrrun.dll内のFileSystemObjectとDictionariesは大丈夫ですが、vbscript.dll内の正規表現(Regular Expressions)は使用できなくなりそうですね。

https://qiita.com/yaju/items/23f659b9e108cda5e172

# 年表
年月日は、米国版のリリース日とする。

|年|出来事|
|:--|:--|
|1996|8月13日に IE 3.0 と VBScript/JScript 1.0をリリース|
|1996|12月10日に IIS 3.0 と ASP 1.0 と VBScript/JScript 2.0をリリース|
|1997|9月30日に IE 4.0 と IIS 4.0 と ASP 2.0 と VBScript/JScript 3.0をリリース|
|1998|6月25日に Windows 98 と WSH 1.0 をリリース、OSに標準搭載|
|1998|6月に Visual Studio 6.0 と VBScript/JScript 4.0をリリース|
|1999|3月18日に IE 5.0 と VBScript/JScript 5.0をリリース|
|2000|2月17日に IE 5.01 と Windows 2000をリリース、OSに VBScript/JScript 5.1を標準搭載|
| |7月17日に IE 5.5 と VBScript/JScript 5.5をリリース|
| |9月14日に Windows MEをリリース、OSに VBScript/JScript 5.5を標準搭載|
|2001|8月27日に IE 6.0 と VBScript/JScript 5.6をリリース|
| |10月25日に Windows XPをリリース、OSに VBScript/JScript 5.6を標準搭載|
|2002|1月5日に ASP.NET 1.0をリリース|
|2006|10月18日に IE 7.0 と JScript 5.7をリリース|
| |11月14日に Windows PowerShell 1.0をリリース|
|2009|3月20日に IE 8.0 と JScript 5.8をリリース|
|2017|10月17日に IE 11.0 をリリース、IE11からVBScriptの実行が初期状態で禁止|
|2023|10月に マイクロソフトが VBScript を非推奨とすると公表|
|2024|6月13日に マイクロソフトが VBScript の廃止スケジュールを公表|
|2027|Windows から完全に削除|

# 衰退
VBScript は ActiveXコントロールと密接に連携して強力な機能を実現しましたが、これがセキュリティリスクの温床となりました。悪意のある ActiveXコントロールを VBScript 経由で実行する攻撃が多発しました。

## セキュリティリスク対応
現在では、VBScript を利用した攻撃は減少していますが、完全に消えたわけではないことに留意が必要です。特に以下の点が影響しています。

### Microsoftによるサポート終了
Microsoftは VBScriptを IE11 で終了させたことで、これを利用した攻撃のリスクは大幅に減少しました。また、最新の Windows 環境でも、VBScript の実行は制限されることが多く、セキュリティ対策が施されています。

### 代替技術の普及
PowerShell や JavaScript など、より強力で安全なスクリプト言語が普及したため、攻撃者もこれらの技術を使うことが増えました。特に、PowerShell は管理者権限で動作するため、より強力な攻撃が可能です。

### VBScriptを無効化する対策
現在では、多くのセキュリティツールやグループポリシーが、VBScript の実行をブロックしたり、制限することを推奨しています。これにより、VBScript を利用した攻撃が物理的に実行できない場合が多いです。

# 最後に
VBScript をテーマに書いてみましたが、Chat GPTのおかげて色々質問して、それなりの回答くれるので逆にまとめるのが大変になってしまいました。
なんか、気になったら追記とかしておきます。

今年もAdvent Calendar Visual Basic 2024が無事に終わりました。参加して頂いた方々、記事を読んでいた方々、ありがとうございます。