プログラマが知るべき97のこと/面倒でも自動化できることは自動化する


こんなプログラマがいました。モジュールのコードの行数を数えるように指示されたのですが、その時、コードをワードプロセッサの画面にコピー&ペーストしました。ワードプロセッサのカウント機能を使って行数を数えたわけです。次の週も、また次の週も同じように行数を数えました。これは良い方法とは言えません。

こんなプロジェクトもありました。そのプロジェクトでは、デプロイの度に煩雑で手間のかかる作業をしていました。コード署名の後、その結果をサーバに移動するなどの作業を、マウスを何度もクリックして行う必要がありました。ある時、誰かがスクリプトを書いて自動化しました。最終テストが行われる問、そのスクリプトは何百回も実行されました。予想を上回る使用頻度でした。これはとても良い方法でした。

自動化できそうな作業があっても、わざわざ何度も同じ手作業を繰り返す人は少なくありません。なぜでしょうか?

よくある誤解#1 :自動化はテストだけのもの テストを自動化すると便利なのは確かです。しかし、なぜテストだけと決める必要があるのでしょうか。同じことの繰り返し作業はプロジェクトのあちこちに見つかるはずです。バージョン管理、コンパイル、JARファイルのビルド、ドキュメント生成、デプロイ、レポート生成などはその例でしょう。多くの場合、この種の作業はマウスを使うよりスクリプトを書く方が効率的です。自動化を行えば、ただ面倒な作業から解放されるだけでなく、作業時間が短縮され、正確さも増します。

よくある誤解#2: IDE を使っていれば自動化の必要はない ソフトウェア開発においては、チームのメンバ一間で「自分のマシンでは、チェックした/ビルドできた/テストを通った」云々…という言葉がよく交わされます。最近のIDEには、何千通りもの設定があり得るので、メンバー全員の設定をすべて統ーするというのはまず不可能です。常に同じビルドを繰り返せるようにするには、また全員のビルドを統一するには、AntやAutotoolsといった自動化システムが役立ちます。

よくある誤解#3 :自動化のためには特殊なツールについて学ぶ必要がある よく知られたシェル言語(bashやPowerShellなど)さえ使えれば、自動化システムの作成は十分にできます。Webサイトとのやりとりが必要な場合は、iMacrosやSeleniumなどのツールが使えます。

よくある誤解#4 :扱うファイルの形式によっては自動化ができないこともある 作業の中で扱うファイルに、Wordドキュメントやスプレッドシート、画像ファイルなどがあると、自動化が難しくなるのは事実です。しかし、そうした形式のファイルは本当に必要なものなのでしょうか。プレーンテキストにすることはできないのでしょうか。CSVやXMLを使ってもいいのではないでしょうか。テキストファイルを基に描画をするツールなどもあります。ほんの少し工夫するだけで、作業を大幅に効率化することができるはずです。

よくある誤解#5 :忙しくて自動化のことまで勉強している時間はない 自動化は、何もbashやAntを十分に勉強しなければ始められないというものではありません。自動化を進めながら勉強をするということでかまわないでしょう。自動化できる、自動化すべし、と思う作業が見つかる度に、その自動化に十分なだけの知識を身につける、という方法で大丈夫です。取り組むのがプロジェクトの初期であれば、時間も見つけやすいでしょう。自動化が1度でもうまくいけば、時間と労力を投資するだけの価値があると理解できるはずです。上司や同僚も同じように理解してくれるでしょう。