« Scrumの公開資料 | トップページ | TestLinkに似た機能を持つRedmineプラグインImpasse »

2012/06/10

CIツールはビルドスクリプトのプログラミングに依存している

Jenkinsではじめるビルド職人入門 | Gihyo Digital PublishingをiPod touchに入れたらとても読みやすかった。
考えたことをラフなメモ書き。

【元ネタ】
Jenkinsではじめるビルド職人入門 | Gihyo Digital Publishing

Antを見直す:プログラマの思索

Jenkinsではじめるビルド職人入門 | Gihyo Digital Publishingでは、Jenkinsの使い方の前に、AntやMavenなどのビルドスクリプトのプログラミング作法を詳しく解説している。
事前知識がない人が読んだら、何故Jenkinsの解説よりも先にAntやMavenの解説があるのか、不審に思うだろう。

継続的インテグレーション(CI)を実施するには、SCMリポジトリのソースをビルドする必要があるが、ビルドするにはビルドスクリプトが必要だ。
ビルドスクリプトの技術としては、Cならmake、JavaならAntやMaven、Rubyならrakeがある。

しかし、ビルドスクリプトはmakeやAntやMavenのように少し毛並みの違うプログラミング作法が必要なので、すぐに書けない時も多い。
CIが普及していない原因の一つは、ビルドスクリプトのプログラミング技術があまり重視されていないことがあるように思う。
特に、Cのmakeをプログラミングするには慣れがかなりいる。

ビルドスクリプトの使い道としては、自動テストやテストレポート、カバレッジ、FindBugsやLintなどコーディング規則や潜在バグをチェックする静的コードチェック結果などもビルドスクリプトで出力できる。
つまり、ソースコードをビルドする時に、ソースコードの静的品質チェックや単体テストも実施することによって、ソフトウェアの品質を高める事もできる利点がある。
だが、CIツールのレポート機能を使えば、静的チェックやレポート出力はJenkinsで代用することもできるだろう。
Jenkinsはかなり高機能なので、メトリクス収集ツールやバッチ監視ツールとして扱うことも可能。

Jenkinsをメトリクス収集ツールとして使うアイデア: プログラマの思索

チケット駆動開発がもたらした新しい観点part2~トレーサビリティの拡張: プログラマの思索

その場合、ビルドスクリプトでメトリクス収集やバッチ監視のような複雑な処理を実装できるのか、という疑問がある。
Jenkinsではじめるビルド職人入門 | Gihyo Digital Publishingでは、Groovyを使ったビルドスクリプトの例が書かれているが、最終的には、軽量で強力なスクリプト言語でビルドスクリプトを書くような手法が必要になってくると思う。
その流れを考えると、Rubyのrakeは自分自身のビルドやデプロイもRubyで書かれているので、汎用性が高い。

ソフトウェアを実装するプログラミング言語は随分発展してきたが、ビルドスクリプトのようにソフトウェア自身をプログラミングするための技法はまだまだ発展途上のように思える。
その技法はメタプログラミングにも関係してくるのではないか?

CIツールとビルドスクリプトの関係はもっと考えてみる。

【追記】
ビルドスクリプトの言語はシステムを実装する言語に依存しない例もあるという意見もありました。
上記はあくまでも一意見としてお読みください。

Twitter / beakmark: ところで、Cならmake JavaならMaven/ant Rubyならrake みたいな記載があってちと誤解を招きそうな気が。うちはC++メインだけどrakeをビルド言語として使ってる。

|

« Scrumの公開資料 | トップページ | TestLinkに似た機能を持つRedmineプラグインImpasse »

プログラミング」カテゴリの記事

ソフトウェア」カテゴリの記事

Agile」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Scrumの公開資料 | トップページ | TestLinkに似た機能を持つRedmineプラグインImpasse »