SSブログ

手作業から自動化(2) [プログラマー現役続行]

先週の金曜日、土曜、そして月曜と3日間、シェルプログラミング(csh、bash)を行っていました。あるチームが手作業で行っていたクロスコンパイルのビルド手順を自動化してJenkinshttp://jenkins-ci.org/)で運用するためです。
作業はコンピュータに、人はクリエイティブな活動を
手順書に従って、記述されている「作業」をスクリプト化してテストしていくのですが、手順書の内容が分かりにくかったり、内容が不足していたりということが多々ありました。

手順の中で一部のファイルの内容を変更するという「作業」が記述されている箇所も多く、それらのファイルを自動で変更するようにスクリプト化していきます。一部用意されているスクリプトの内容も確認しながら、無駄な処理を変更したり、簡素化したりということも行いました。

本来ならもっと早い時期に担当する開発チームが行うべき自動化なのですが、開発の終盤まで手作業で行われていました。私自身が3日間弱(途中でミーティング等がありましたので)の工数で行った作業を、開発の初期から行ってもらっていれば、おそらく、目には見えない多くの手戻り工数を削減できていたのではないかと思います。

ビルドの自動化は、プロジェクトが始まった当初に整備しておく必要があります。そして、1990年代までの夜間ビルド方式ではなく、今日では継続的インテグレーション(Continuous Integration)の時代です。自動化することで、人が犯す誤りを早期に発見し、それを修正し、無駄な手戻りを無くす必要があります。
手作業や手順書の大きな問題点は、作業をきちんと行ったことを監査できないことです。作業手順が文書化されていても、実際の人間が間違いを繰り返せば、対策として、手順書をきちんと守ったかを確認するためのチェックリストを作成してチェックしようとなります。それでも、人はチェックリストをきちんとチェックするとは限りません。その状況で問題が発生したら、チェックリストをチェックしたかを確認するチェックリストを作って守らせるという無限チェックリスト地獄に陥ってしまいます。

スクリプト等で自動化されていてコンピュータが実行するのであれば、問題が発生したときに、スクリプトの誤りを修正して恒久対策を打つことができます。

関連書籍を紹介しておきます。

継続的インテグレーション入門 開発プロセスを自動化する47の作法

継続的インテグレーション入門 開発プロセスを自動化する47の作法

  • 作者: ポール・M・デュバル
  • 出版社/メーカー: 日経BP社
  • 発売日: 2009/08/06
  • メディア: 単行本(ソフトカバー)

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))

  • 作者: Jez Humble
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2010/08/06
  • メディア: ハードカバー

手作業から自動化

nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0