SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

まだまだ使える! WSH

まだまだ使える! WSHプログラミング ~ Webページを扱う共通モジュールの紹介

まだまだ使える! WSH 第2回

  • このエントリーをはてなブックマークに追加

 VBScriptによるプログラミングの開発効率をアップするための共通モジュールを紹介します。今回は、Webページを扱う共通モジュールです。

  • このエントリーをはてなブックマークに追加

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で作成する場合をみてみましょう。これを共通モジュールなしで実装した場合、次のようになります。

共通モジュールなしでWebページからHTMLを取得する
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

 これを、予め作成しておいた共通モジュールを参照した場合のスクリプトと比較してみましょう。

 共通モジュールを使用して上記処理を実装した場合、次のようになります。

共通モジュールを使用してWebページからHTMLを取得する
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"定数の定義以降となります。

 共通モジュールを使用する場合のメリットを図で表すと、次のようになります。

共通モジュールを使用しない場合
共通モジュールを使用しない場合
共通モジュールを使用した場合
共通モジュールを使用した場合

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
5. 共通モジュールを使ってみる

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
まだまだ使える! WSH連載記事一覧

もっと読む

この記事の著者

五十嵐貴之(イカラシ タカユキ)

1975年2月生まれ。新潟県長岡市(旧越路町)出身。フリープログラミング団体いかちソフトウェア所属。 著書・これならわかるSQL入門の入門(翔泳社)・Windows自動処理のためのWSHプログラミングガイド(ソシム)・いちばんやさしいデータベースの本(技術評論社)・SQLiteポケットリフ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9159 2016/02/09 23:34

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング