Movatterモバイル変換


[0]ホーム

URL:


コンテンツにスキップ
Wikipedia
検索

VBScript

出典: フリー百科事典『ウィキペディア(Wikipedia)』

(ブイ・ビー・スクリプト)、Microsoft Visual Basic Scripting Edition は、Visual Basic 風の、マイクロソフトによるスクリプト言語である。Microsoft Windows 上やInternet Information Server(IIS)上で動作する。

概要

[編集]

VBScriptVisual 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中に組み込まれることが多いが、単体のスクリプトファイルとしておかれる場合、拡張子は通常.vbsを使用する。

背景

[編集]

VBScript は1996年8月、WWWのクライアントスクリプト言語としてInternet Explorer 3.0 に実装された。当時ネットスケープコミュニケーションズとマイクロソフトはブラウザ戦争と呼ばれるWebブラウザシェアとWeb標準を巡る技術競争下にあり、1996年3月にNetscape Navigator 2.0 に実装されたJavaScript に対抗するものとして、JavaScript 互換のスクリプト言語JScript と共に実装されたものである。

結果として、WWWのクライアントスクリプト言語としては、VBScriptWindowsInternet 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 を位置づけた。そのため、VBScriptActiveX オートメーションサーバを取り扱うことに長け、全ての操作はオートメーションサーバよりオブジェクトを生成し、それを介して行うという統一された様式である。これは、言語自身が環境に依存しないメリットももたらすが、反面、単純なファイルの複製でさえオブジェクトを生成し操作する手続きが必要という煩雑さももたらした。この煩雑さはバッチファイルからの脱却を阻むものとなった。

また、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 のデータ型には、Empty 値、Null 値、ブール型、バイト型、整数型、通貨型、日付型、文字列型、オブジェクト型、エラー型などがあるが、これら型情報はデータ側が持ち、変数自体に型はない。(または 変数はバリアント型のみだとも言われる)。

VBScript は変数宣言または明示的な変数生成ステートメントを必須としない。はじめて使われるシンボルは変数として自動的に生成される。しかし、代入だけでなく、参照でも変数を生成してしまうため、入力間違いによる不具合を誘発しやすい。

そのため、変数宣言を強要するOption Explicit ステートメントをファイル先頭で宣言するのが良いコーディングスタイルと言われる。明示的に変数を生成するにはDimPrivatePublicReDimなどの各ステートメントを用いる。

OLEクライアント機能

[編集]

OLEオブジェクトを利用するにはCreateObject 関数を使用する。CreateObjectActiveX オートメーションサーバからオートメーションオブジェクトを生成し、その参照を返す。

DimoFileSystemSetoFileSystem=CreateObject("Scripting.FileSystemObject")oFileSystem.MoveFile"C:\2012年6月.xls""C:\過去実績\2012年6月.xls"

以下はMicrosoft Excel のシートオブジェクトを生成するサンプルである。

DimoExcelSheetSetoExcelSheet=CreateObject("Excel.Sheet")oExcelSheet.Application.Visible=TrueoExcelSheet.ActiveSheet.Cells(1,1).Value="売上"SetoExcelSheet=Nothing

OLEサーバとなっているアプリケーションを使ったスクリプトをVBScript は簡単に記述できる。VBScript が備えていないような機能でも、OLEサーバアプリケーションを作成すれば行うことが出来る。

オブジェクト指向機能

[編集]

VBScriptクラスベースオブジェクト指向言語であり、Classステートメントによりクラスオブジェクトを生成することが出来る。

VBScript のクラスオブジェクトは以下のような特徴がある。

  • 継承は出来ない
  • アクセス制御は出来る
  • Initializeイベント、Terminateイベントを設定出来る

以下にVBScript のクラスのサンプルコードを示す。

ClassCPoint' プロパティPrivatem_xPrivatem_y' メソッドPrivateSubClass_Initialize' Initializem_x=0m_y=0EndSubPrivateSubClass_Terminate' TerminateMsgBox("terminated!")EndSubPublicFunctionGetX()GetX=m_xEndFunctionPublicFunctionGetY()GetY=m_yEndFunctionPublicSubSetPoint(x,y)m_x=xm_y=yEndSubEndClassDimobjSetobj=NewCPointMsgBox(obj.GetX)'0 と表示obj.SetPoint32,64MsgBox(obj.GetX)'32 と表示Setobj=Nothing'terminated! と表示

継承は出来ないものの、動的型付けであるため、多態は可能である。カプセル化も出来る。幾分制約が強いが、必要最低限のオブジェクト指向機能は備える。

他言語との比較

[編集]

Visual BasicVisual Basic for Applications との比較

[編集]

VBScriptVisual Basic によく似た構文を持ち相互に習得しやすいが、

  • 動的型付け
  • 多くの組み込み関数や手続きがない
  • モジュールがない

のように、Visual BasicVisual Basic for Applications との相違点は大きいため互換性が低く、そのままでは使用できない場合も多い。

JScriptとの比較

[編集]

標準でASP、WSHをホストとして動く言語には、VBScript の他に、JScript がある。JScript はマイクロソフト社によるECMAScript(いわゆるJavaScript)の実装である。同じランタイムを利用するため、機能的には似通っているが、言語の設計思想は大きく異なる。

主な相違として、

  • 組み込みGUI関数MsgBoxInputBox の有無
  • プロトタイプベース・オブジェクト指向言語とクラスベース・オブジェクト指向言語

が挙げられる。

特にMsgBoxInputBox が揃うことで、GUIでありながらCUIなみの手軽さで入出力を備えたUIを構築できる意義は大きい。この点でVBScript は優れる。なお、JScript においてMsgBoxWScript.Echo で代替出来る。InputBox 相当の物は存在しないため、VBScriptInputBox 関数を呼び出す。

一方、プログラミング言語としての機能はJScript の方が大きく優れる。JScript は無名関数や静的スコープのクロージャなど強力な機構を備える。

VBScriptとセキュリティ

[編集]

近年のコンピュータウイルスにはWSHとVBScript を組み合わせて感染する型が多発しており、VBScript のOLEクライアント機能の強力さがユーザにとっては諸刃の剣となっている。

コード例

[編集]

以下のコードを適当なファイル(例えば、time.vbs)に保存し、ダブルクリックすると、現在の時刻を表示する。

MsgBox"現在の時刻は、"&Time&" です。"

また、HTML に埋め込む場合は、以下のように表記する。

<html><head><scriptlanguage="VBScript">FunctionGetTime()MsgBox"現在の時刻は、"&Time&"です。"EndFunction</script></head><body>……</body></html>

脚注

[編集]
[脚注の使い方]
  1. ^インターネット ゾーンにおける Internet Explorer 11 エッジ モードでの VBScript のサポート停止マイクロソフト、2013年11月20日閲覧。
  2. ^An update on disabling VBScript in Internet Explorer 11 - Microsoft Edge Blog
  3. ^VBScript deprecation: Timelines and next steps” (英語). Microsoft (2024年5月22日). 2025年3月19日閲覧。

関連項目

[編集]

外部リンク

[編集]
マイクロソフトのAPIとフレームワーク
グラフィック
オーディオ
マルチメディア
ウェブ
データアクセス
ネットワーク
コミュニケーション
管理
コンポーネントモデル
ライブラリ
デバイスドライバ
セキュリティ
.NET
ソフトウェアファクトリー
IPC
アクセシビリティ
テキストと多言語
サポート
人工知能
Windows コンポーネント
管理ツール
アプリ
シェル
サービス
ファイルシステム
サーバ
アーキテクチャ
セキュリティ
互換性
API
開発終了
ゲーム
アプリ
その他
カテゴリ カテゴリ
古典的BASIC
現代化BASIC
オブジェクト拡張
マイクロソフト
その他
無料且つオープンソース
または有料且つオープンソース
モバイル向け
国立図書館
その他
https://ja.wikipedia.org/w/index.php?title=VBScript&oldid=107114973」から取得
カテゴリ:

[8]ページ先頭

©2009-2026 Movatter.jp