VBScriptの真髄:FSOで「読み継がれるログ」を設計する技術
こんにちは。自動化の現場で泥臭いスクリプトと向き合い続けてきたエンジニアです。
「ログファイルなんて、ただテキストを書き出せばいいんでしょ?」
そう思っているうちは、まだ脱初心者とは言えません。ログは、「トラブルが起きた時に、自分を助けてくれる唯一のガイドブック」です。雑然と書き殴られたログは、深夜の障害対応であなたの首を絞めることになります。
今日は、VBScriptの要である`FileSystemObject (FSO)`を使い、`FileExists`と`WriteBlankLines`という二つの武器で、「プロ仕様の美しいログ」を構築する極意を伝授しましょう。
—
1. なぜ「空行」と「存在確認」が重要なのか?
自動化スクリプトにおいて、ログファイルは追記型(Append)で運用するのが鉄則です。しかし、何も考えずに書き込むと、昨日のログと今日のログが密着し、境界線が消えてしまいます。
- FileExists: ファイルの生存を確認し、初回実行時だけ「見出し」を立てる。
- WriteBlankLines: 処理の区切りに適切な余白を作り、視認性を高める。
この二つを組み合わせるだけで、ログの「解像度」が劇的に向上します。
—
2. 実践:読みやすさを追求したログ出力コード
まずは、何も考えずにコピペして動かせるベースコードです。このロジックを理解できれば、VBScriptのファイル操作の8割を掌握したも同然です。
Option Explicit
‘ ログの設定
Dim fso, logFile, logPath
logPath = “C:\Temp\AutomationLog.txt”
Set fso = CreateObject(“Scripting.FileSystemObject”)
‘ 【ポイント1】ファイルが存在するかチェック
‘ 新規作成ならヘッダーを書き、追記なら空行を入れて区切りを明確にする
Dim isExists
isExists = fso.FileExists(logPath)
‘ 追記モード (8) で開く
Set logFile = fso.OpenTextFile(logPath, 8, True)
If Not isExists Then
‘ 初回作成時:ログのヘッダーを刻む
logFile.WriteLine “=== ログ開始: ” & Now & ” ===”
Else
‘ 2回目以降:空行を入れて視覚的な区切りを作る
logFile.WriteBlankLines 1
logFile.WriteLine “— 追記: ” & Now & ” —”
End If
‘ 実際のログ出力
logFile.WriteLine “INFO: 処理を開始しました。”
logFile.WriteLine “INFO: ファイルの整合性を確認中…”
‘ 【ポイント2】WriteBlankLinesで最後を締める
logFile.WriteBlankLines 2
logFile.Close
Set logFile = Nothing
Set fso = Nothing
—
3. コードの「魂」を読み解く:知っておくべき3つの鉄則
① 追記モードの数字「8」の魔法
`OpenTextFile`の第2引数に「8」を指定すると「追記モード」になります。これを知らずに「1(読み取り専用)」や「2(上書きモード)」を使っていると、大切なログを消し飛ばすことになります。常に「8」を意識してください。
② WriteBlankLines は「空白文字の注入」ではない
`WriteBlankLines(n)` は、単に改行コードをn個挿入するメソッドです。エディタ上でテキストが「呼吸」をするスペースを作り、視覚的な疲れを軽減します。これを適所に使うだけで、ログの「品格」が変わります。
③ オブジェクトの解放は「儀式」
VBScriptは古い言語です。`Set logFile = Nothing` を忘れると、メモリ上にオブジェクトの残骸が居座り続けます。特に大規模な自動化では、この「後片付け」を怠るとシステム全体が重くなる原因になります。
—
4. 初心者が陥りやすい「罠」
- パスの指定ミス: Windowsのパス区切り文字 `\` は、他の言語では特殊文字として扱われることが多いですが、VBScriptのパス指定では素直に記述できます。ただし、フォルダが存在しないとエラーになるため、事前に `fso.FolderExists` で確認する癖をつけましょう。
- 権限エラー: ログ出力先のフォルダに「書き込み権限」がない場合、容赦なくスクリプトは止まります。エラーハンドリング(`On Error Resume Next`)の導入は、もう少し慣れてからで大丈夫です。まずは「書き込める場所」から始めましょう。
—
最後に:エンジニアの美学
「動けばいい」コードは、誰でも書けます。しかし、「次に読む人のために、余白をデザインできる」ことこそが、一流の自動化エンジニアへの入り口です。
VBScriptは枯れた言語ですが、その分、OSの深淵に直結しています。この小さなログ整形から始めて、ぜひあなたの自動化ツールを「職人の道具」へと昇華させてください。
次は、エラー発生時に「赤文字」でログを残す工夫や、ログサイズが肥大化した時のローテーション処理に挑戦してみるのも面白いですよ。頑張ってくださいね!
