Personal tools
You are here: Home ブログ 井上 ソフトウェア構成管理
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

ソフトウェア構成管理

少し古いですが、「WEB+DB Press 2007 Vol39」の「構成管理実践入門」の記事を読みました。

「構成管理」という用語の定義は自明ではないですが、記事によれば、「バージョン管理」「ビルド」「リリース」の管理(自動化)と言えそうです。

バージョン管理はそれほど目新しい話題でも無いので、ビルドとリリース周りの管理に話を絞ります。

AirOneは、(主に)CとC++で本体が書かれていて、サーバ系は主にJavaとPerlです。C/C++のビルドは、MS-WindowsとUnix系で完全に別管理になっています。MS-WindowsはMSVCのビルドシステムに依存しています。コマンドラインでも実行できるので、自動ビルドも可能です。Unix系は(お馴染みの)autoconf/automakeベースです。Java系のビルドはantベースです。そして、細々した部分のつなぎあわせは、スクリプトとMakefileで行っています。

「細々した部分のつなぎあわせ」と書きましたが、ビルドの後、リリースまでには細々した部分をなんとかする必要性が確かにあります。この管理こそがまさに構成管理なのだと思います。経験上、ここへのアプローチに3つの流派がありそうです。

  • U系 :小さなスクリプトを書きまくる
  • W系 :手作業で頑張る。手順書を書いてプリントアウトする...
  • J系 :フレームワークで隠蔽する

ちなみにW系が問題外なのは言うまでもありません。印刷された手順書を持ってきた瞬間に、破り捨てます。

アリエルには伝統的にU系の人が多いので、小さなスクリプトが氾濫する傾向にあります。言語も統一されず、Perl、shell、Python、(DOSの)バッチ、と雑多です。スクリプトファイルの数が増えると、スクリプトを順に呼び出すだけのバッチ処理用スクリプトが追加されて、更に数が増えたりもします。しかし、この辺の管理はどうにかできます。binとlibexecのようなディレクトリ分割で、直接呼び出すスクリプトと(それらが)内部的に呼び出すスクリプトを分けるのはひとつの伝統的なテクニックです。

ただU系流儀に問題が無いわけではありません。一番、問題に感じるのは環境依存の処理です。環境依存の処理をするには、実行時チェック(unameなど)や環境変数で動作を切り替えるのが常套手段です。手軽なので、環境変数での動作切り替えは(個人的には)多用します。残念ながら、これは手抜きであって、誉められた手法ではありません。経験上、環境変数は事故のもとです。

そして、J系アプローチです。冒頭の記事はMaven2とContinuumを紹介しています。

Maven2の第一印象は、「思想は悪くないけど、なぜantの補助ツールにしないのか?」です。(antの設定ファイル)build.xmlの生成元ファイルとしてbuild.xml.inを書いて、Maven2がbuild.xmlやディレクトリ構成を自動生成するアプローチで、目的の大部分は果たせる気がします。ぼくはantがそんなに嫌いではないのですが、単に使い込んでいないので悪いところが見えていないだけかもしれません。

社内のJavaプロジェクトの構成管理は微妙に問題をはらんでいる気がしています。たぶん、U系アプローチで突っ走る人とそうでない人が混在しているためだと思います。現実を見れば、J系アプローチに分がありそうです。

mavenとantで検索すると、こんな記事を見つけました(今年の5月の記事です)。

いくらなんでもこれは違うだろう、と思います。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/software-scm/tbping

Re:ソフトウェア構成管理

Posted by matsuyama at 2007-09-18 00:28
僕が知らないだけかもしれませんが(カスタムタスクとかにありそう)、 ant には properry の値によって処理を分岐する簡単な手段がありません。かわりに に if や unless 属性を付けて property の値によってターゲットを実行するかどうかをガードして、仮想的に if を実現するわけですが、それを積み重ねるととんでもない build.xml ができあがってしまいます。またコアタスクについて勉強するコストも大きくて、 linux ユーザーな僕は copy タスクなんてわけわからんものより cp コマンドをつかわせろと何度も思ってしまいます(もちろん環境依存を取り除くために必要なことなのですが)。それに ant コマンドを実行して実際の処理にいくまでに 5 秒近くかかります( build.xml を読みにいくまでにです!ありえません)。そういうわけで僕は ant が大嫌いです。 make つかいたい。
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.