【75】面倒でも自動化できることは自動化する
こんなプログラマがいました。モジュールのコードの行数を数えるように指示されたのですが、その時、コードをワードプロセッサの画面にコピー&ペーストしました。ワードプロセッサのカウント機能を使って行数を数えたわけです。次の週も、また次の週も同じように行数を数えました。これは良い方法とは言えません。
こんなプロジェクトもありました。そのプロジェクトでは、デプロイの度に煩雑で手間のかかる作業をしていました。コード署名の後、その結果をサーバに移動するなどの作業を、マウスを何度もクリックして行う必要がありました。ある時、誰かがスクリプトを書いて自動化しました。最終テストが行われる間、そのスクリプトは何百回も実行されました。予想を上回る使用頻度でした。これはとても良い方法でした。
自動化できそうな作業があっても、わざわざ何度も同じ手作業を繰り返す人は少なくありません。なぜでしょうか?
- よくある誤解#1:自動化はテストだけのもの
テストを自動化すると便利なのは確かです。しかし、なぜテストだけと決める必要があるのでしょうか。同じことの繰り返し作業はプロジェクトのあちこちに見つかるはずです。バージョン管理、コンパイル、JAR ファイルのビルド、ドキュメント生成、デプロイ、レポート生成などはその例でしょう。多くの場合、この種の作業はマウスを使うよりスクリプトを書く方が効率的です。自動化を行えば、ただ面倒な作業から解放されるだけでなく、作業時間が短縮され、正確さも増します。
- よくある誤解#2:IDE を使っていれば自動化の必要はない
ソフトウェア開発においては、チームのメンバー間で「自分のマシンでは、チェックした/ビルドできた/テストを通った」云々……という言葉がよく交わされます。最近の IDE には、何千通りもの設定があり得るので、メンバー全員の設定をすべて統一するというのはまず不可能です。常に同じビルドを繰り返せるようにするには、また全員のビルドを統一するには、Ant や Autotools といった自動化システムが役立ちます。
- よくある誤解#3:自動化のためには特殊なツールについて学ぶ必要がある
よく知られたシェル言語(bash や PowerShell など)さえ使えれば、自動化システムの作成は十分にできます。Web サイトとのやりとりが必要な場合は、iMacros や Selenium などのツールが使えます。
- よくある誤解#4:扱うファイルの形式によっては自動化ができないこともある
作業の中で扱うファイルに、Word ドキュメントやスプレッドシート、画像ファイルなどがあると、自動化が難しくなるのは事実です。しかし、そうした形式のファイルは本当に必要なものなのでしょうか。プレーンテキストにすることはできないのでしょうか。CSV や XML を使ってもいいのではないでしょうか。テキストファイルを基に描両をするツールなどもあります。ほんの少し工夫するだけで、作業を大幅に効率化することができるはずです。
- よくある誤解#5:忙しくて自動化のことまで勉強している時間はない
自動化は、何も bash や Ant を十分に勉強しなければ始められないというものではありません。自動化を進めながら勉強をするということでかまわないでしょう。自動化できる、自動化すべし、と思う作業が見つかる度に、その自動化に十分なだけの知識を身につける、という方法で大丈夫です。取り組むのがプロジェクトの初期であれば、時間も見つけやすいでしょう。自動化が 1 度でもうまくいけば、時間と労力を投資するだけの価値があると理解できるはずです。上司や同僚も同じように理解してくれるでしょう。