Windows TIPS
[Scripting]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

WSHでインタラクティブな試験対策ツールを作成する

―― WSHによるテキスト処理とユーザー入力の方法 ――

解説をスキップして操作方法を読む

山田 祥寛
2003/10/25
 
対象OS
Windows NT
Windows 2000
Windows XP
Windows Server 2003
WSHを利用してインタラクティブな1問1答形式の試験対策ツールを作ってみる。
問題文はテキスト・ファイルで与える。このファイルの内容を変更するだけで、問題を差し替えることができる。
 
解説

 WSH(Windows Scripting Host)を利用して、簡単な試験対策ツールを作成してみよう。順番に表示される質問に対して回答を入力していくことで、回答の正否を判定し、最終的に合計点数を返す。

 「質問<タブ文字>回答」の組み合わせからなるタブ区切りテキスト・ファイルを入れ替えるだけで、自由に問題を変更することができる。このサンプル・スクリプトでは、タブ区切りテキストの処理方法やユーザーからの入力を処理する方法について解説する。


操作方法

手順1―テキスト・エディタでスクリプトのコードを入力する

 まずはテキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してほしい。引用符(')で始まる行はコードの概要を解説するためのコメント部分なので、省略しても構わない。

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="examine">
<?job error="true" debug="true" ?>
<object id="objFs"  progid="Scripting.FileSystemObject" />
<script language="VBScript">
<![CDATA[
Const DATFLD="D:\原稿\アットマークIT\Office\200308\sample"
  ' 質問回答データを格納したフォルダの名前を設定する。
  ' ユーザの実行環境によって、適宜変更して欲しい。
allCnt=0
rgtCnt=0
  ' 総質問数(allCnt)、正解数(rgtCnt)を初期化。
Set objTs=objFs.OpenTextFile(objFs.BuildPath(DATFLD,"exam.dat"),1,True)
Do While Not objTs.AtEndOfStream
  aryDat=Split(objTs.readLine,Chr(9))
  strAns=InputBox(aryDat(0),"第" & (allCnt+1) & "問目")
  If aryDat(1)=Trim(strAns) Then
    WScript.Echo("正解です")
    rgtCnt=rgtCnt+1
  Else
    WScript.Echo("ミス!正解は「" & aryDat(1) & "」です")
  End If
  allCnt=allCnt+1
Loop
  ' データ・ファイルexam.datを1行ずつ読み込み(readLineメソッド)、質問項目(データ・ファイルの1列目)を入力ボックスに表示する。ユーザーから入力された回答が正解であった(データ・ファイルの2列目と等しい)場合には正解メッセージの表示と正解数をカウント・アップする。
  ' 間違っていた場合には、エラー・メッセージと正解を表示。
  ' また、いずれの場合も総質問数(allCnt)を1カウントアップする。
WScript.Echo(allCnt & "問中、正解は" & rgtCnt & "問でした。")
  ' すべての問題が完了したところで、総質問数と正解数を表示する。
]]>
</script>
</job>
</package>
  • サンプル・ファイルサンプル・データ・ファイルのダウンロード
    注:サンプルexam.wsfを実行するには、上のサンプル・ファイルを右クリックして、exam.wsfというファイル名で保存し、さらに同じフォルダにデータ・ファイルをexam.datというファイル名で保存してください。実行する前には、スクリプト中のデータ・ファイルのフォルダ名をユーザーの環境に合わせて変更する必要があります)

 WSHの実行ファイルは拡張子「.wsf」(Windows Scripting host File)とする必要がある。ファイル名自体は何でもよいが、ここでは「exam.wsf」という名前で保存しておく。

手順2―WSHのコードを実行する

 exam.wsfを実行するには、エクスプローラなどからexam.wsfをダブルクリックするだけだ。その際、データ・ファイルexam.datがスクリプト中の定数DATFLDで指定されたフォルダに格納されていない場合、エラーとなるので注意すること。

1問目の表示
サンプルを実行すると、このように入力ダイアログが表示されるので、解答を入力して[OK]をクリックする。

 問題文を入れ替えたい場合には、(サンプル・スクリプト中で指定されたフォルダにある)exam.datの内容を書き換えるだけでよいが、問題文・回答のいずれにもタブ文字を含むことはできないので、注意してほしい。

 あとはあらかじめ評価レベルを設定しておき、点数に応じて評価を表示したり、問題文をランダムに並べ替えたりといった改良も、工夫次第で自由にできるだろう。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間