VBScriptMicrosoft Visual Basic Scripting Edition は、Visual Basic 風の、マイクロソフトによるスクリプト言語である。Microsoft Windows 上や Internet Information Server(IIS)上で動作する。 (ブイ・ビー・スクリプト)、概要VBScript は Visual Basic の構文を真似てつくられた、Windows のスクリプト言語であり、Active Scripting のスクリプトエンジンという形態で実装されている。ランタイムとしてASPやWSHがあり、主な用途として、
が挙げられる。 ただし、WWWクライアントスクリプトとしては、対応するブラウザが Windows 版の Internet Explorer だけであり、2005年時点でもほとんど使われていない。2013年にリリースされた Internet Explorer 11 では、セキュリティや互換性の設定によっては VBScript を実行しなくなり[1]、Windows 10 は2019年7月9日より、Windows 8.1 以前は2019年8月13日よりデフォルトで無効になった[2]。さらに、Windows 10 搭載の Microsoft Edge では VBScript は動作しない。 HTAやASP、HTML中に組み込まれることが多いが、単体のスクリプトファイルとしておかれる場合、拡張子は通常 背景VBScript は1996年8月、WWWのクライアントスクリプト言語として Internet Explorer 3.0 に実装された。当時ネットスケープコミュニケーションズとマイクロソフトは ブラウザ戦争と呼ばれるWebブラウザシェアとWeb標準を巡る技術競争下にあり、1996年3月に Netscape Navigator 2.0 に実装された JavaScript に対抗するものとして、JavaScript 互換のスクリプト言語 JScript と共に実装されたものである。 結果として、WWWのクライアントスクリプト言語としては、VBScript が Windows 版 Internet Explorer でしか動作しなかったことなどから、JavaScript が勝利を収め、この分野での VBScript は使用されなくなった。しかし、1996年12月、Internet Information Server 3.0 に実装された Active Server Pages の標準の言語として VBScript が採用された。ASPは、プログラムコード中にHTMLコードを埋め込む手法ではなく、HTMLコード中にプログラムコードを埋め込む手法をとり、習熟の容易さから成功を収めた。同時に標準の言語として VBScript の地位も確固たるものとなった。 一方、VBScriptはWWWだけでなく、Windows の汎用スクリプト言語として、Windows Script Hostの標準言語として採用された。WSHはバッチファイルを置き換えるものとして位置づけられ、Windows 95 OSR2より標準で装備された。 当時のマイクロソフトは ActiveX 戦略のもと、WWWとクライアント環境のシームレスな統合を目指したが、その中核スクリプト言語としてWSH、ひいては VBScript を位置づけた。そのため、VBScript は ActiveX オートメーションサーバを取り扱うことに長け、全ての操作はオートメーションサーバよりオブジェクトを生成し、それを介して行うという統一された様式である。これは、言語自身が環境に依存しないメリットももたらすが、反面、単純なファイルの複製でさえオブジェクトを生成し操作する手続きが必要という煩雑さももたらした。この煩雑さはバッチファイルからの脱却を阻むものとなった。 また、ActiveX 戦略自体、相重なるセキュリティ問題を引き起こし、WSH上の VBScript を利用したウイルスの出現などもあったことからセキュリティ面から敬遠される向きもあった。 簡単な処理も煩雑な記述になってしまう点、セキュリティ面のダーティなイメージから、VBScript は圧倒的なシェアをもつオペレーティングシステムの標準のスクリプト言語にしてはあまり普及せず、Windows の汎用スクリプト言語としての VBScript は、一定の評価はできるものの大成功したとは言えない。 マイクロソフトは2000年代初頭から ActiveX に変わる戦略として、.NET戦略を打ち立てており、ASPも2002年にリリースされたASP.NETに置き換えられ、その記述言語も C# や Visual Basic .NET 等となった。また、オペレーティングシステムの汎用スクリプト環境についてもWSHから Windows PowerShell へ移行すると言う。 2006年現在の展望では、PHPに代表されるオープンソースのサーバ側スクリプト言語が徐々にIIS上でも安定した動作が期待できるようになってきており、サーバ側スクリプト言語としてのVBScript も一部の根強い人気を除けばほぼその役割を終え、緩やかに衰退していくものと思われる。 2023年10月にMicrosoftはWindowsクライアントでのVBScriptを非推奨にすると発表した。 そして、2024年5月にMicrosoftは3段階に分けてVBScriptを廃止すると発表している。なお、3段階とは「オンデマンド機能(FOD)をすべてのWindows 11のバージョン24H2にプリインストールさせ、デフォルトでオンにする」、「2027年頃からオンデマンド機能(FOD)をデフォルトで有効にならなくする」、「VBScriptを廃止する」である。[3] 主な特徴VBScript は、OLEサーバの接着剤としてのスクリプト言語という理念のもとに設計された。Windows の汎用スクリプト言語と説明したが、Windows が .NET 戦略への転換を迎えた現在では、むしろOLE(ActiveX)用のスクリプト言語といった方が正しい。 OLE設計が徹底されており、VBScriptは言語自身にはファイル入出力さえサポートしない。 また、動的型付けを採用している点も Visual Basic から派生した言語としては異色である。 動的型付けVBScript は多くのスクリプト言語同様、動的型付け言語であるため、変数に型はない。 VBScript のデータ型には、 VBScript は変数宣言または明示的な変数生成ステートメントを必須としない。はじめて使われるシンボルは変数として自動的に生成される。しかし、代入だけでなく、参照でも変数を生成してしまうため、入力間違いによる不具合を誘発しやすい。 そのため、変数宣言を強要する OLEクライアント機能OLEオブジェクトを利用するには Dim oFileSystem
Set oFileSystem = CreateObject("Scripting.FileSystemObject")
oFileSystem.MoveFile "C:\2012年6月.xls" "C:\過去実績\2012年6月.xls"
以下は Microsoft Excel のシートオブジェクトを生成するサンプルである。 Dim oExcelSheet
Set oExcelSheet = CreateObject("Excel.Sheet")
oExcelSheet.Application.Visible = True
oExcelSheet.ActiveSheet.Cells(1,1).Value = "売上"
Set oExcelSheet = Nothing
OLEサーバとなっているアプリケーションを使ったスクリプトを VBScript は簡単に記述できる。VBScript が備えていないような機能でも、OLEサーバアプリケーションを作成すれば行うことが出来る。 オブジェクト指向機能VBScript はクラスベースのオブジェクト指向言語であり、 VBScript のクラスオブジェクトは以下のような特徴がある。
以下に VBScript のクラスのサンプルコードを示す。 Class CPoint
' プロパティ
Private m_x
Private m_y
' メソッド
Private Sub Class_Initialize ' Initialize
m_x = 0
m_y = 0
End Sub
Private Sub Class_Terminate ' Terminate
MsgBox("terminated!")
End Sub
Public Function GetX()
GetX = m_x
End Function
Public Function GetY()
GetY = m_y
End Function
Public Sub SetPoint(x, y)
m_x = x
m_y = y
End Sub
End Class
Dim obj
Set obj = New CPoint
MsgBox(obj.GetX) '0 と表示
obj.SetPoint 32, 64
MsgBox(obj.GetX) '32 と表示
Set obj = Nothing 'terminated! と表示
継承は出来ないものの、動的型付けであるため、多態は可能である。カプセル化も出来る。幾分制約が強いが、必要最低限のオブジェクト指向機能は備える。 他言語との比較Visual Basic、Visual Basic for Applications との比較VBScriptは Visual Basic によく似た構文を持ち相互に習得しやすいが、
のように、Visual Basic や Visual Basic for Applications との相違点は大きいため互換性が低く、そのままでは使用できない場合も多い。 JScriptとの比較標準でASP、WSHをホストとして動く言語には、VBScript の他に、JScript がある。JScript はマイクロソフト社による ECMAScript(いわゆるJavaScript)の実装である。同じランタイムを利用するため、機能的には似通っているが、言語の設計思想は大きく異なる。 主な相違として、
が挙げられる。 特に 一方、プログラミング言語としての機能は JScript の方が大きく優れる。JScript は無名関数や静的スコープのクロージャなど強力な機構を備える。 VBScriptとセキュリティ近年のコンピュータウイルスにはWSHと VBScript を組み合わせて感染する型が多発しており、VBScript のOLEクライアント機能の強力さがユーザにとっては諸刃の剣となっている。 コード例以下のコードを適当なファイル(例えば、 MsgBox "現在の時刻は、" & Time & " です。"
また、HTML に埋め込む場合は、以下のように表記する。 <html>
<head>
<script language="VBScript">
Function GetTime()
MsgBox "現在の時刻は、" & Time & "です。"
End Function
</script>
</head>
<body>
……
</body>
</html>
脚注
関連項目
外部リンク |
Portal di Ensiklopedia Dunia