CIツールはビルドスクリプトのプログラミングに依存している
Jenkinsではじめるビルド職人入門 | Gihyo Digital PublishingをiPod touchに入れたらとても読みやすかった。
考えたことをラフなメモ書き。
【元ネタ】
Jenkinsではじめるビルド職人入門 | Gihyo Digital Publishing
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ツールとビルドスクリプトの関係はもっと考えてみる。
【追記】
ビルドスクリプトの言語はシステムを実装する言語に依存しない例もあるという意見もありました。
上記はあくまでも一意見としてお読みください。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「ソフトウェア」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
「Agile」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 概念モデリングや設計原則は進化しているのか(2023.10.21)
コメント