1. はじめに
前回は、VBScriptでテスト駆動開発をするためのツールを紹介させていただきました。WSH(Windows Script Host)は、Microsoft PowerShell(以下、PowerShell)がリリースされた後も、まだまだWindows OSのスクリプト環境として有用です。
WSHは、PowerShellによって淘汰されるわけではなく、スクリプトの処理内容によって、WSHかPowerShellのどちらを使用するかの選択肢の1つとなったにすぎません。
PowerShellリリース以降も、WSHがより多くのWindowsユーザーに利用されるよう、WSHの素晴らしさを広めていきたいと思います。
今回からは、著者が開発したVBScriptの共通モジュールを紹介します。
2. 対象読者
- WSH(VBScript)での開発を行っているプログラマー、システム管理者
3. 必要な環境
- Windows OS全般
4. 共通モジュールとは
共通モジュールとは何でしょうか。WSH環境でスクリプトを開発した経験しかない場合、あまり聞きなれない単語かも知れません。まずは簡単に、共通モジュールについて説明します。
共通モジュールとは、複数のプロジェクトで使いまわしができるプログラムの共通部分をまとめてモジュール化したものを言います。プロジェクトとは、システム開発を括る単位の一つで、例えば「顧客台帳統合プロジェクト」だとか「売上日報集計プロジェクト」のように、業務別もしくは処理別に計画されます。モジュールとは、プログラムを構築する個々の部品のことを言います。つまり共通モジュールとは、プログラムの共通部分が部品となってまとまったものです。
共通モジュールを使用することで、一からすべてをプログラミングするよりも、迅速にプログラムを作成することができます。
例えば、WebページからHTMLを取得する処理をVBScriptで作成する場合をみてみましょう。これを共通モジュールなしで実装した場合、次のようになります。
Option Explicit 'HTMLを取得するWebページのURLを定義します。 Const TARGET_URL = "http://www.ikachi.org/" 'Internet ExplorerのCOMを参照します。 Dim ie Set ie = CreateObject("InternetExplorer.Application") 'Internet Explorerを非表示にします。 ie.Visible = False 'Internet Explorerで該当ページを開きます。 ie.Navigate TARGET_URL 'Internet Explorerが該当ページを読込中の間、処理を待機します。 Do If (ie.Busy = False) Then Exit Do End If WScript.Sleep 1000 Loop '該当ページからHTMLを取得します。 Dim sText sText = ie.Document.Body.InnerHtml 'Internet Explorerを閉じ、COM参照を解放します。 ie.Quit Set ie = Nothing '取得したHTMLをメッセージボックスで表示します。 MsgBox sText
これを、予め作成しておいた共通モジュールを参照した場合のスクリプトと比較してみましょう。
共通モジュールを使用して上記処理を実装した場合、次のようになります。
Option Explicit '-------------------------------------------------------------------------------- '<<< 共通モジュール インポート >>> Dim fso Set fso = CreateObject("Scripting.FileSystemObject") Function Include(ByVal strFileName) Include = fso.OpenTextFile(strFileName, 1, False).ReadAll() End Function Execute Include(".\common\ieManager.vbs") 'Internet Explorer操作クラス Set fso = Nothing '-------------------------------------------------------------------------------- 'HTMLを取得するWebページのURLを定義します。 Const TARGET_URL = "http://www.ikachi.org/" 'Internet Explorer操作クラスのインスタンスを生成します。 Dim iem Set iem = New IEManager '該当ページからHTMLを取得します。 Dim sText iem.GetHtmlDocument TARGET_URL, sText 'Internet Explorer操作クラスのインスタンスを解放します。 Set iem = Nothing '取得したHTMLをメッセージボックスで表示します。 MsgBox sText
"<<< 共通モジュール インポート >>>"とコメントされている7行は、Internet Explorerを操作する共通モジュールをインポートするための記述です。
共通モジュールを使用してWebページを取得した場合のプログラムは、"TARGET_URL"定数の定義以降となります。
共通モジュールを使用する場合のメリットを図で表すと、次のようになります。