こんな時、どんなプログラミング言語&開発環境を選択したらよいのだろう?
- CSVファイルとコンソールプログラムが標準出力に吐き出す実行結果を読み込んで処理し、結果をテキストに書き出すツール。
- 処理するデータ量は高々数百件。実行速度はそれ程気にしなくてもよい。
- 社内向けの非公式ツール。ユーザは自分以外のプログラマ。
- 定型処理を自動化するツールなので、どちらかというとエラー時以外は非対話的な方向で。
- GUIは無くてもOK。敢えて言うならファイルやフォルダの選択ダイアログが欲しいかもしれない。
- 動作環境はWindows XP。将来的にはVistaになるかもしれないけど、暫く先の話。
- ツール本体以外にライブラリやVMやインタプリタをインストールするような事態は極力避けたい。
- お金が入ってこない作業なので、短納期で対応したい。
- 言語等の指定はない。
- 自分は基本的にC言語の人。C以外はC++(better Cレベル)、gawk、Ruby、シェルスクリプトを齧った程度。
- 使用する言語に制限がないとしたら、Rubyとか使いたい。
自分はWindows Scripting Host 5.6でJScriptを使うことにしたのだけど、この選択が正しかったかどうか未だに悩んでいる。
消去法で考えて、
- Cは実装が面倒なので除外。ネイティブコードな実行ファイルは魅力的なんだけど。
- C++も実装が面倒なので除外。Boostが使えたら状況は違ってくるかもしれないけど、使ったことがない。
- .NETな言語*1は、ツールの方向性に微妙に合わない気がしたので除外。
- .NETなJScriptは使ったことがないけど、JScript自体はWSHで触ったことがあるので保留。
- VBAは方向性が違う気がしたで除外。
- Windows PowerShellは未だ普及していないので除外。
- WSHでJScriptなら使ったことがある。VBScriptは使ったことがないので除外。
ということでJScriptが残って、.NET Frameworkのバージョン違い等で地雷を踏みそうだったのでWSHにした。時間があったら「.NETでJScript」ぐらいはやってみたかったんだけど*2。
「WindowsでLLっぽくテキスト処理」となると、他人のマシンで動かすことを前提にした時点で選択肢が無くなってしまう。Windows 2000/XP以降に範囲を絞るとJScript/VBScript on WSHが残るんだけど、ライブラリはあまり充実してないし、WSHに新規機能が追加される可能性は殆どないのが悩みどころ。
Unix系のOSを使っているのなら、サーバじゃないなら「awkかperlなら入ってるだろう」と踏んでもあまり的外れじゃない気がするし、最近ならPythonでもいけそうなんだけど。
*1:C++/CLI、C#、J++、Visual Basicのこと。
*2:.NET Framework 2.0以降ならCSV操作用のクラスも用意されているし。