.bat 死すべし慈悲は無い。
私が .bat を全面否定する理由は、 .bat 自体というより、.bat しか書かない人にロクなエンジニアがいないからです。はっきり断言します。業務で「.batで十分」と言っている人は、おおよそ勉強不足、かつ、学ぶ気が無い人です。いまだにIE11の必要性を説く人と同等で見ます。.bat に罪はありませんが、.bat だけで大丈夫と思うのは無知です。.bat ファイルしか書かないインフラエンジニアに明日の仕事は無いです。
.bat で大丈夫と思っている人は、基本コピペで書き足し対応で済ませていることが大半です。Windows のコマンドを勉強して書いたというより、既存で .bat があったから、コピーして使い回しているというのが現実です。.bat で事足りると思っている人の大半は、一からスクリプト書けない人だと思っています。もし、一から .bat を書くとしても、新規案件をCOBOLで提案するようなものです。それを使う理由とロジックが無ければ、単なる取り残された残念な人です。
私も色々な案件で .bat ファイルはたくさん見てきました。大半の .batファイルは、内容の五~八割が REM(コメントアウト) か ECHO (プロンプトへの表示) です。REM で豪華なヘッダーを書いて、更新履歴と更新者のリストを書くのは止めて頂きたいです。そういう管理がしたいなら、Gitを使ってください。よくあるのが、大量のREM と ECHO に SET(変数への値のセット) が混ざっていて、実行しているコマンドが一つか二つというパターンです。だったらシンプルに書いて頂きたいです。
.bat で大量のECHOを書いて何をしているかというと、画面への出力とログ出力です。.bat ではテキストの整形できる手段が十分ではないので、ECHOのベタ書きが増えやすいです。REM と ECHO と SET がインデント無しで大量に並ぶと、著しく可読性が落ちます。特に、REMで履歴管理をされると、致命傷レベルで可読性が落ちます。REMを外してもロジックは元に戻りません。また、単なるREMでは世代管理ができないので、逆に混乱を招くことがあります。ロジックの安易なコメントアウトは要不要の判断の先送りです。単なる手抜き仕事だということを自覚すべきです。
確かに、Windows のコマンドから実行した方が効率の良い作業というのはあります。ただ、それならシンプルな .bat を書いて対応すれば充分です。そういう手法は否定しません。ただ、安直なコピペで「.batで大丈夫さ!」なんて言ってるような人にエンジニアを名乗る資格はありません。.bat の利点があるから使うのではなく、安直なコピペでしか対応できないから .bat を使い回しているだけではないでしょうか。突き詰めると、.bat がどうこうというより、「.bat の書き方がクソだ!」と言いたかっただけかもしれません。
コメント
FIRE
「なんで.batで書いた?」
「分かりません」or「ネットにあったから」or「無言」
ってのが似非ってことかなぁ?
- Horus -
そんな感じですね。あと「現行がそうなっているから」も同じ。ちゃんとした理由があってbat書いているなら問題は無いと思います。
おたみ
>「現行がそうなっているから」
ろくに(ろくな)ドキュメントが残っていない既存システムをリプレースする際に、「今と同じで」っていうオーダーも困りますね。
しかもそれで、本人は要件定義した気でいる。。。
こんな人とここしばらく仕事してました。orz
もしもし
あー、前の前の就業先にいた上長がそんなでした。.bat を使うというよりそれしか使わせないという感じの。
あげく PowerShell で処理を書いたら「それ誰がメンテできるの」「PowerShell は誰が教育するの」「お前が教育するのか」「バッチなら誰でも書ける」。
そういえば、やたら「現行踏襲で」も多かったなあ。踏襲する現行もどこまで把握できているのやらって感じでした(これは使う側もですが)。
- Horus -
「バッチは誰でも書ける」ではなく「考えずに書くのであれば誰でも書ける」が正解なんですよね。