#ビルドの自動化
1.継続的インテグレーション
そもそも継続的インテグレーションって何?
継続的インテグレーションとは、ソフトウェア開発において、ビルドやテストを頻繁に繰り返し行なうことにより
問題を早期に発見し、開発の効率化や省力化、納期の短縮などを図る手法のことである。
ここで自分の気づきを加えるとすると、
継続的インテグレーションは繰り返しビルドとかをするから、アジャイル開発などで使われそうですね。
筆者はウォーターフォール型開発のほうが好みですが・・
もちろんちょこっとずつ動かして動くことを確認しながらちょっとずつ変更していくのが安心できる人も
いると思います。
ですが私たちは技術者ですので面倒なことは作業時間範囲内で自動化するのがおすすめです。
2.継続的インテグレーションと自動化
継続的インテグレーションでは、各メンバーは極めて高い頻度でコンパイルやテストを繰り返します。
同じテストを何回もやるような現場で筆者も働いたこともあり、そういったものが該当するかと思います。
リファクタリングしてより良いものにしようとしている過程で、メトリクスの計測を何度も行うことも
あると思います。
それらの作業をすべてメンバーの手作業で行っていては、メンバーに大きな負担がかかってしまいます。
筆者は全部手作業でやるのが品質を担保できるんだよ!といわれたことがありますが決してそんなことはありません。
なぜなら人間の手でやると集中が途切れてミスする可能性があるからです。
人の集中できる時間はせいぜい10分など様々な仮説がありますが、短いことは確かです。
そこで多くの開発プロジェクトではコンパイルやテストなど一連の開発作業(ビルド)を一回のコマンド実行で自動的に
行えるような仕組みを準備することが一般的です。
これをビルドの自動化と呼びます。
<自動化のメリットデメリット>
メリット
・自動化することによって手作業でやらなければいけなかった作業が減り
業務の効率化が図れる
3.バッチによるビルドの自動化
まず誰にでも手軽に実践できるのが、OSが備えるコマンドを連続して実行する機能を使う方法です。
Windowsではバッチファイル(.bat)、LinuxやMacOSXではシェルスクリプト(.sh)と呼ばれるファイルを
作成し、その内容として「コマンドプロンプトで入力する一連のコマンド」をテキストエディタで書けば、
一回のコマンド実行でビルドが完成します。
基本開発現場では専用のバッチやシェルが用意されていますが、いろいろな事例があり作りたいな
作ったらもっと作業効率が上がりそうなのにという状況があるかもしれません。
例えばログを収集しないといけないが自分で各ログが格納されるところまで全部取りに行くのはなかなか
大変です。
そんな時に一回起動するだけでログを収集できるようなものがあれば効率が上がりそうですよね。
大体の開発者は作業効率を上げるためが自動化の理由としていますが、
"めんどくさいから"自動化してしまおうが根底にあってもよいと思います。
4.その他自動化の方法
Antによるビルドの自動化
バッチファイルやシェルスクリプトは、違うOSではうまく動作しないこともあります。
また、本格的な自動化をしようとすると、ビルド失敗時の処理の内容の記述も自分で書かなければいけません。
そこでJava開発においては、古くからAntという自動化ツールが使われてきました。
mavenによる高水準ビルド自動化
Antと並んでよく利用されているビルド自動化ツールがApache Mavenです。
MavenでもAntと同じように設定ファイルを作成して利用します。
設定ファイルにソースコードやテストコードが格納されているフォルダ構成や依存しているライブラリ
やプロジェクトの基本情報を記述して最後に何を生成したいのかを指定します。