前回は1つのPowerShellスクリプトから棒グラフと円グラフの双方を生成できるようにスクリプトを書き換えた。今回は、このスクリプトに対するラッパースクリプトを2つ作成する。目的は、コードを集約してメンテナンス性を上げることと、コマンドに分けることで使いやすくすることの2つだ。
→連載「PowerShell Core入門 - 基本コマンドの使い方」の過去回はこちらを参照。
メンテナンス性と扱いやすさとの両立
PowerShellスクリプトのメンテナンスという点で考えると、書き換え対象となるPowerShellスクリプトは1つである方が好ましい。ほとんど同じようなPowerShellスクリプトのファイルがたくさんあったら、書き換えが必要になったときにそれらを全部書き換えなければならない。似たようなスクリプトはできるだけまとめておいた方がメンテナンスはしやすくなる。
反面、汎用的なPowerShellスクリプトにすると、挙動を変えるためにパラメータを追加することになり、パラメータまみれのPowerShellスクリプトが出来上がってしまう。これはこれで使いづらい。いま行っている作業で言えば、前回まとめた「csv2chart.ps1」は、生成するグラフの種類をパラメータで指定することになる。これは、見方によっては面倒だ。
コマンドとして「csv2barchart.ps1」や「csv2piechart.ps1」が用意されていれば、コマンド名で何をするかがわかるし、グラフの種類を指定するパラメータを使用する必要もない。ただし、PowerShellスクリプトを増やすのは上述の通り、メンテナンス面でマイナスだ。
そこで、「csv2barchart.ps1」や「csv2piechart.ps1」というPowerShellスクリプトを用意するが、これらは「csv2chart.ps1」を呼び出すだけのラッパースクリプトとする。こうすればメンテナンス性とコマンド名による簡素化の2つのメリットを享受できるのだ。
PowerShellラッパースクリプトを作成
以下に、今回の成果物である2つのPowerShellスクリプトを示す。
csv2barchart.ps1
#!/usr/bin/env pwsh
#========================================================================
# 引数を処理
# -CSVFile パス グラフのCSVデータファイルパス
# -PNGFile パス 生成するPNG画像のファイルパス
# -OutFile パス 中間生成されるHTMLファイルパス
# -GraphTitle タイトル グラフのタイトル
# -Width 幅 生成するPNG画像の幅
# -Height 高さ 生成するPNG画像の高さ
#========================================================================
Param(
[Parameter(Mandatory=$true)][String]$CSVFile,
[String]$PNGFile = (Get-Location).ToString() + '\out.png',
[String]$OutFile = (Get-Location).ToString() + '\out.html',
[String]$GraphTitle = 'グラフ',
[Int]$Width = 2000,
[Int]$Height = 1200
)
#========================================================================
# csv2chart.ps1を使ってグラフを生成
#========================================================================
csv2chart.ps1 `
-CSVFile $CSVFile `
-PNGFile $PNGFile `
-GraphTitle $GraphTitle `
-Width $Width `
-Height $Height `
-GraphType 'Bar'