[Scripting] | ||||||||||||
スクリプトレット・コンポーネントでプロパティを定義する
|
||||||||||||
|
解説 |
Windows TIPS「よく利用するジョブをスクリプトレットでコンポーネント化する」では、WSHスクリプトやASP(Active Server Page)スクリプトから共通して利用できるコンポーネントを、VBScriptやJScriptのようなスクリプト言語で定義する方法について紹介した。
このようなコンポーネントには、もちろん、内部に1つの処理(メソッド)だけを含むような単純なものもある。しかし多くの場合、1個のコンポーネントには機能的に関連する複数のメソッドが含まれるのが普通だ。そして複数の処理は、共通するパラメータを利用する場合が少なくない。
例えば、これから紹介するカウンタ・コンポーネントのケースを考えてみよう。カウンタ・コンポーネントに含まれるIncrementメソッド(カウンタ値をインクリメント)、ShowCountメソッド(カウンタ値を参照)では共通パラメータとして「カウンタ情報を格納するためのデータベース名」を必要とする。もちろん、こうした共通のパラメータは個々のメソッドの引数として渡しても構わないが、利用者側としてはメソッドの呼び出しごとに共通の情報をいちいち指定しなければならないのは面倒だ。そこで、こうした情報はプロパティ(属性)として定義してしまうとよい。プロパティに格納された情報は、コンポーネントがインスタンス化されている間は維持されるので、各メソッドを呼び出す際に指定する必要もなく、呼び出し側ではよりスマートなコードが記述できる。
スクリプトレットでは、プロパティを2つの方法で実装することができる。
1つ目は、スクリプト・ブロック内で宣言された変数に、直接、値を格納する方法だ。こちらは変数を宣言するだけなので、実装自体はシンプルであるが、コンポーネント側で何も値の制御ができないというデメリットがある。
もう1つの方法は、変数に対してあらかじめ決められた関数を介してアクセスする方法だ。こちらの方法では、変数宣言のほかに、変数を参照/設定するためのアクセス関数を用意しなければならず、前者の方法よりも実装は煩雑だ。しかし、変数(プロパティ値)の読み書きを制御できる、設定時に値の妥当性を検証できる、参照時に値の整形が可能であるなど、より柔軟な操作が可能になる。後者の方法を利用することで、コンポーネント内でプロパティ値の制御を完結することができるので、部品としての独立性もより向上する。
以上、前置きが長くなったが、これらを踏まえて、プロパティを含むコンポーネントの定義を具体的なサンプル例とも併せて紹介しよう。紹介するカウンタ・コンポーネントは、与えられたキーと値の組み合わせで、カウンタ値をAccessデータベースに格納するためのコンポーネントだ。カウンタ・コンポーネントに含まれるメソッド、プロパティは以下のとおりである。
名前 | 種類 | 機能 |
Database | プロパティ | カウンタ値を記録するデータベース |
Increment | メソッド | 指定された名前のカウンタ値をインクリメント |
ShowCount | メソッド | 指定された名前のカウンタ値を取得 |
カウンタ・コンポーネントのメソッドとプロパティ |
操作方法 |
手順1―テキスト・エディタでスクリプトレットのコードを入力する
テキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してほしい。なお、引用符(')で始まる行、<!--〜-->で囲まれたブロックは、コードの意味を解説するためのコメント部分なので、省略してもよい。
※ファイルcounter.wsc |
- サンプル・ファイルのダウンロード
(注:サンプル・ファイルcounter.wscをダウンロードするには、上のリンクを右クリックしてcounter.wscというファイル名で保存する。保存場所をC:\WshCounter以外にするときは、後のサンプル・ファイルも変更すること)
スクリプトレットの実行ファイルは拡張子「.wsc」(Windows Scripting Components)とする必要がある。ファイル名自体は何でもよいが、ここでは「counter.wsc」という名前で保存しておこう。ファイルを保存するフォルダはどこでもよいが、後で紹介するサンプル・ファイルでは、C:\WshCounterにcounter.wscとcounter.mdbファイルが存在するものとしている。保存する場所を変更する場合は、後のサンプル・ファイルの修正も忘れないようにしていただきたい。
なお、スクリプトレットを動作させるには、あらかじめコンポーネントをレジストリに登録しておく必要がある。コンポーネントの登録方法については、先のWindows TIPS「よく利用するジョブをスクリプトレットでコンポーネント化する」を参照していただきたい。簡単に述べると、.wscファイルをエクスプローラ上で右クリックして、ポップアップ・メニューから[登録]を選択すればよい。
手順2―カウンタ記録用のデータベースを用意する
手順1のカウンタ・コンポーネントを動作するには、カウンタ情報を記録するためのAccessデータベース(「.mdb」ファイル)が必要となる。counter.wscと同じフォルダに「counter.mdb」という名前でAccessデータベースを作成して欲しい。
Accessデータベースには、counterテーブルを以下のフィールド・レイアウトで作成しておくこと。中身のデータは特に必要ない。
フィールド名 | データ型 | 概要 |
key | テキスト型 | カウンタのキー(主キー) |
count | 長整数型 | カウント値 |
counterテーブルのフィールド・レイアウト | ||
Accessデータベースにcounterテーブルを作成し、これらのフィールドを作成する。 |
- サンプル・ファイルのダウンロード
(注:サンプル・データベースcounter.mdbをダウンロードするには、上のリンクを右クリックしてcounter.mdbというファイル名で保存する。保存場所をC:\WshCounter以外にするときは、後のサンプル・ファイルも変更すること)
手順3―テキスト・エディタでWSHスクリプトのコードを入力する
次に、手順1で作成したスクリプトレット・コンポーネントを利用するためのWSHスクリプトを作成しておこう。取りあえずスクリプトレット・コンポーネントで定義された2つのメソッドが正しく動作することを確認するためだけのコードであるので、<script>要素内のスクリプト・コードも必要最小限のものにとどめている。なお、このファイル中では、.mdbファイルへのパスをコード中に直接記述しているので、必要ならば書き換えていただきたい。これを忘れると、実行しても何も結果が表示されない。
※ファイルcounter.wsf |
- サンプル・ファイルのダウンロード
(注:サンプルcounter.wsfを実行するには、上のサンプル・ファイルを右クリックしてcounter.wsfというファイル名で保存する)
WSHの実行ファイルは拡張子「.wsf」(Windows Scripting host File)とする必要がある。ファイル名自体は何でもよいが、ここでは「counter.wsf」という名前で保存しておこう。
手順3―WSHのコードを実行する
counter.wsfを実行するには、エクスプローラなどからcounter.wsfをダブルクリックするだけでよい。実行ごとにカウント数がインクリメントされていれば成功だ。カウンタ・コンポーネントは実行ファイル名をキーにカウント値を管理しているので、counter.wsfを異なるファイル名に変更して実行すると、カウント値は1で初期化されるはずだ。
|
スクリプトレットにおけるプロパティの定義
本稿で注目いただきたいのは、プロパティを定義している個所だ。本稿では、冒頭述べた2つのアプローチのうち、後者の「関数を介する」方法を採用している。そして、設定時にはファイルが実際に存在するかどうかを確かめ、存在しない場合には設定そのものを無効にするようにしているわけだ。もちろん、このような妥当性検証が必要ない場合には、より単純な「変数のみでプロパティを定義する」方法を採ることもできる。そのような場合には、<property>要素や変数アクセス用の関数を略記した上で、プロパティ名と同名の変数を<script>要素内で定義すればよい。
サンプル中では、<property>要素中の<get>と<put>要素を次のように記述しているが、
※元の構文 |
これを次のような省略した形式で記述することも可能である。
※省略形式1―<get>/<put>要素のinternalName属性を省略 |
※省略形式2―<property>要素内にまとめて定義 |
<get>/<put>要素のinternalName属性を省略した場合には、<script>要素で利用する関数の名前は、それぞれ「get_プロパティ名」「put_プロパティ名」としなければならないので、注意すること。例えば上記スクリプト中の該当部分は、次のように記述する。
Function get_Db() |
この記事と関連性の高い別の記事
- WSHに渡された引数の妥当性を自動検証する(TIPS)
- スクリプトレット・コンポーネントでリソース情報を定義する(TIPS)
- よく利用するジョブをスクリプトレットでコンポーネント化する(TIPS)
- PowerShellでテンプレートを使ってメールを一斉配信する(TIPS)
- WSHで環境変数を設定する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|