[245] Re:ビルドという行為について
投稿者:けろ助
2007/02/20 02:13:25
前橋さん、本多さん、レスありがとうございます。
レスが大変遅れまして申し訳ありません (雑事に追われた挙句風邪で4日間も寝込んでて…日頃の行い?)。
こちらでお二人にまとめてレスしようと思います。
前橋さん> いやあ、このあたりは、最近はかなり「若い奴にお任せ」してる部分が大きいので、
前橋さん> 私がこの方面に詳しいかというとそんなことはないと思います (^^;
ガーン。そうなのですか…。
前橋さん> 詳しくないなりに思うところを書きますが、こういうのはアプリケーションと
前橋さん> 環境により千差万別なわけですが、実はプログラマが仕事で書くプログラムの
前橋さん> 95%は特定顧客からの受注アプリケーションだという現実があって(※1)、
前橋さん> その場合、特に相手がUNIXワークステーションだったりすると環境はかなり
前橋さん> 限定できますから、「ディレクトリまるごとtarで固めてインストール先で展開。
前橋さん> パスは全て絶対指定」みたいなやり方でもなんとかなっちゃう、という面はあると
前橋さん> 思います。
前橋さん> Windows環境ではさすがにそういうのは避けるべきかと思いますが(PCはきっと
前橋さん> 他のことにも使うので)、業務用の特注アプリケーションだと、Cドライブにしか
前橋さん> インストールできなくてもさほど問題にはならなかったりします。
これが、「『とりあえず動けばいいや』的な作りでも何とかなる場合も多い」という意味でしたら同意です。
例えば、実行モジュールと設定ファイルが同一ディレクトリに置く、なんてことはマトモなアプリケーションで
ならやってはいけないことだと思いますが、動かそうと思えば動くわけですし…。
前橋さん> 一般に配布するのでどこでも動くようにしたい、と考え出すと、途端に難しく
前橋さん> なりますよね。Cの場合、かつては#ifdef __SOLARIS__ とか書いてましたが
前橋さん> これはひどいということでautoconfみたいなのが出てきましたけどconfig.hに
前橋さん> 頼ってたらテストが大変(というか不可能)という状況には変わりなく、
前橋さん> 結局は、(Javaが本質的にそうであるように)最初からどこでも動くように書くのが
前橋さん> 正しいのでしょう。
私もそう思います。
だからこそ、Java を使用したアプリケーションの構築には、デザインパターンのように一定のセオリーや経験
則の蓄積があるはずだ、と思っていたのです。
が、お話を聞く限りそういう類のものは無いようですね…。
本多さん> Javaはよくわかりませんが、私はX関係とかで一般に公開されている
本多さん> かなり熟練されている人たちが作ったと思われるプログラムの
本多さん> ディレクトリ構造とかを真似してみたりしてます。
こういうノウハウは、まだ誰もドキュメントとして体系的にまとめてはいないのでしょうね。
X 関係ですか…へっぽこな私には厳しそうだ…。
…と、ここまで考えて、「アプリケーションの構成法を一般的な形に体系化するのは実は無理があるのではない
か」と思えるようになってきました。
設定ファイルの読み込み方ひとつ取っても、C だと設定ファイルに記述された値を環境変数に代入し、シェル上
でコマンドに引数として渡すのが普通 (らしい) です。
が、Java には、Java 実行環境内からのみ参照できる環境変数もどきの「プロパティ」というものがありますか
ら、設定ファイルの値はプログラム内から読み込むというのが普通 (らしい) です。
パスの指定にしても、C ならカレントディレクトリからの相対指定が可能なのに、Java は基底ディレクトリか
らの相対指定しかできませんし…。
Make と Ant では、もう基本にある考え方そのものが違うという気がします。
でもなぁ…せめて個別のビルドツールについて、その設計思想を解説した本やサイトくらいあっても良さそうな
ものだとやっぱり思うのですよ。