8月のセッションネタにしようかなぁ...と思っていろいろと考えてるんですが...みなさん、インストーラってどのタイミングで設計&作成してます?いあ、納期が近いのですが...というインストーラ系の質問って最近に限らずでよく見かけるのですよ(ここにもつい最近あったけど...w)。この手の質問ってそれ想定してないの?という次元の内容が大半だったり...なので、どういうタイミングでインストーラに着手するのかなぁ?という素朴な疑問です。アプリが完成してから考えてる〜というのが多いのか。それとも、詳細設計にインストーラも入ってます...なのか。いう名前自体毛嫌いしていて...という人もいらっしゃるようですがwおいらの場合、職業柄というのもありますが、インストーラなしなんてのは自分専用の開発サポートツールくらいで、大半がインストーラはあるのが当たり前だったりするのですが...他はどうなんだろう?とインストーラのあるプロジェクトなんてかかわったことねーよ!というのが多い気もしなくはない...気もするんですが...正直なところをお聞かせ願いたいなぁとおもいます。私の愛読書「デバックテクニック徹底解説」によると、開発初期に作ってスモークテストを行った方がよいとされております。スモークテストとは、動作することを確かめるテストだそうです。私はこの意見が正しいと思います。いうのも私が働いていた職場では、後になってデスマーチの末期状態で作るものですから、無茶苦茶な物が出来上がる悲惨な状態でした。初期の精神に余裕がある時に作るのがベストだと思います。みたいにインストールコンポーネントを選択できるような大規模なアプリでは、インストールするコンポーネントの組み合わせとか依存関係とかをチェックするために、設計初期からインストーラも考えておくべきだ...というのは、いつぞやのセッションで衝撃を受けたとっちゃんの弁。いうのは、いつぞやのセッションで衝撃を受けたとっちゃんの弁。私もモノによってインストーラを考えるタイミングは異なります。インストーラとは言えないようなものでも良い場合、後で決めます。簡単だったのがWinRARの自己解凍形式。Frameworkが必要だとか、シャノンさんと被るんですがランタイム系で単純にファイルを含めるだけじゃだめなものとかがある場合、適切にインストール/登録できるようなインストーラを考えなければなりませんから設計段階で必要機能を洗い出します。みなさん、インストーラってどのタイミングで設計&作成してます?いろいろ。中盤〜終盤近くが多いかな。カスタムアクションが必要な場合とか、インストーラの負担が大きそうな時は早めに試作します。規模の大小にかかわらず、設計・製造の各段階で「インストール時(=インストーラ作成時)に困らない構成」を意識してます。見かけるのですよ(ここにもつい最近あったけど...w)。この手の質問ってそれ想定してないの?という次元の内容が大半だったり...そういうのって、インストーラに限った話じゃないと思う。技術的に確信が持てないところは、早期に解決しておくべきです。一度もインストーラを作ったことがないのに、プロジェクト終盤までインストーラのことを何も考えずに突き進む方がどうかしてると思う。「インストーラが必要」てのが要件に入っているなら、インストーラも含めて「製品」なんだし。インストーラ自体あんまり...というのが多いのかなぁ?という気がしてるんですよねぇ...バージョンアップする時の(説明の)手間とか考えると、インストーラ作って引き渡す方が楽チンです。共通設定ファイルや個人別設定ファイルがある場合には、その辺まで出来た時点で。インストーラ部隊として人間が取れるプロジェクトならいいんだけどたいてい俺が自分でインストーラまで組まされるわけで・・・ないしは「インストーラがいらない」方式を考慮っつーことで。19:01:22)他のクリーンなPCでデバッグしたくなったとき、かな。アルファのちょっと前です。アプリが完成してから考えてる〜というのが多いのか。いうのは絶対にないです。配置を手でやるのはインストーラーが要らない場合だけなので。それとも、詳細設計にインストーラも入ってます...なのか。いうのも、ほとんどないです。そんな大きいプロジェクトはないので。21:09:10)マトレス失礼。スモークテストっていうのか...この言葉は知らなかった。おいらは、これを起動確認と呼んでます<スモークテスト動かせるようにするための作業って結構いろいろあるし、ファイル数が増えてくるとそれだけでもかなりの手間だったりしますからね。世界の住人なので、COMも普通にあるし...カスタムアクション(いわば特殊な処理)までとなると、その実装コストも無視できない。#時間的な意味で最近じゃランタイムの更新まできっちり考慮してないといけなくなってるし。さん)>インストーラ部隊として人間が取れるプロジェクトならいいんだけどうちもインストーラ部隊的専門職はいないです。さん)>配置を手でやるのはインストーラーが要らない場合だけなので。個人的にはこれの条件も聞きたいところ。単純にファイルを同じフォルダに突っ込んでおくだけという条件ならXCOPYインストールとかもありだと思うんですが(それとて、ショートカットは作られないし、運用的にはどうかと思うけど)、そうじゃない状況で配置を手作業ってそれなりにあるんですかね。実は一番見えないのがこの部分なんですよね。人に聞いた話でしかないし、酒の席ばかりなのでいま一つわかってないんですが多くの人が、インストーラ(WindowsInstallerに限らず)とかは作ってないよ〜XCOPYインストールだよーというのをよく聞くんですよねぇ...確かに最近はWebアプリなんかも多くなってるので、サーバーに突っ込んどけばそれでOKみたいなのはあるとは思うんですが、実際そんなのばかりではないわけでクライアントマシンに入れて、使うというのも少なくはないと思うんですよねぇ。それとも、詳細設計にインストーラも入ってます...なのか。>というのも、ほとんどないです。これも、個人的にはそこそこ規模というか、COPYコマンドだけあればインストールができるという条件を除いて考えてほしいところ。>配置を手でやるのはインストーラーが要らない場合だけなので。個人的にはこれの条件も聞きたいところ。インストーラーを作らないのはひとつのフォルダを削除するだけでアンインストールが終わるもの、かなぁ?レジストリつかったり、別パスに設定を保存したりだとインストーラーを作る。配置を手作業ってそれなりにあるんですかね。21:55:48)あっそうそう。一つ重要な事を思い出しました。我々開発者からしてみれば、インストーラはあまり重視しないのですが、お客様にとっては第一印象をも決めかねない重要なファクターらしいです。美しいインストーラを作るのが大事かもしれませんね。人間は第一印象が大事ですから。編集(投稿者)私自身が関わるプロジェクトはインストーラーが必要ないケースが殆どになります。ライブラリやら基盤開発やっていると使うのも開発者で、しかもそれは社内の場合が多いのでアーカイバーで固めて出すくらいですね。その代わり、ドキュメントはかなり細かいものまで作成しますけれど。うちの会社のプロジェクトでも店頭で販売されるようなアプリケーションならインストーラーの工数も勿論入っていますし、スケジュールにもきっちり組み込まれています。この辺はやはりケース・バイ・ケースになるかなぁ。内部で使うタイプの物でも開発者が対象で無い場合は簡単なインストーラーを作成する事がありますね。細かいことまでできるので重宝してます。インストールシールドを使うような規模のインストーラーは作ったこと無いなぁ。スモークテストっていうのか...この言葉は知らなかった。電源入れて"煙が上がらないこと"を確認するテスト、と。返信>>スモークテストっていうのか...この言葉は知らなかった。電源入れて"煙が上がらないこと"を確認するテスト、と。>こ、これは笑うべき場面なのか、何かマジメな意味があるのかと探る場面なのか...>私自身が関わるプロジェクトはインストーラーが必要ないケースが殆どになります。実は私も、既レスではインストーラ設計は場面によるとか書いちゃってますが「端末と業務ソフトが一体化してる」的なものが多いのでバッチでコピーとかが大半です。それなりにメッセージを表示したりして「今インストールしてますよー」とお知らせはしてますが。逆にそういうものほどテストが必要だったりします。コピー先間違ってたりOracleインストーラのキック時のコマンドライン間違ってたり...インストール自体がコケては元も子もないので十分なテストをしないと後で大変なことに...。11:44:17)エンタープライズな側から意見をエンタープライズではインストーラを作らないこともしばしばです。第1に考えるのは資産管理ソフトなどでの配布です。ぎゃくにこれで配布できるようにするために何ができるかなども考えます。インストーラより優先度が上なのには訳があり、インストーラでmspとかでも作らない限り基本的にファイルサイズがおおきくなってしまうフルパッケージです。資産管理ソフトだと1ファイル単位に管理でき、配布も可能ですしアップデートのときに必要最少に絞って配布することもできます。この辺りの便利さは実際に使ったことのある人でないと分からないと思いますが、回線の細さなども強制的に管理できますし(ブランチオフィスの配布サーバとかもあったりします)、適用タイミングをコントロールできる場合もあります。いう意味ではレジストリ登録なんかは嫌われがちですし、全コンパイルとかとんでもない。11:50:43)>電源入れて"煙が上がらないこと"を確認するテスト、と。これはスモークテストの由来と引っ掛けているんですよね♪スモークテストはもともと電気屋さんの用語で、電源を入れてスモークが上がらないか点検する簡単なテストを指しておりました。それが転じて、お客様の環境で動くかをテストするのをスモークテストと呼ぶようになったそうです。返信>>スモークテストっていうのか...この言葉は知らなかった。電源入れて"煙が上がらないこと"を確認するテスト、と。>煙を上げたことありますよー...orzATの電源コネクタが左右逆で、一枚昇天させたことがあります。第1に考えるのは資産管理ソフトなどでの配布です。ぎゃくにこれで配布できるようにするために何ができるかなども考えます。ロゴとか(これはまぁパッケージ系じゃないとだろうけど)では、msiが必須だったりします。インストーラより優先度が上なのには訳があり、インストーラでmspとかでも作らない限り基本的にファイルサイズがおおきくなってしまうフルパッケージです。資産管理ソフトだと1ファイル単位に管理でき、配布も可能ですしアップデートのときに必要最少に絞って配布することもできます。>このあたりもパッケージングのテクで解決できるといえば解決できる問題。この辺りの便利さは実際に使ったことのある人でないと分からないと思いますが、回線の細さなども強制的に管理できますし(ブランチオフィスの配布サーバとかもあったりします)、適用タイミングをコントロールできる場合もあります。いう意味ではレジストリ登録なんかは嫌われがちですし、全コンパイルとかとんでもない。一つ重要な事を思い出しました。お客様にとっては第一印象をも決めかねない重要なファクターらしいです。美しいインストーラを作るのが大事かもしれませんね。人間は第一印象が大事ですから。インストーラ(その形式がどうであれ)と呼ばれるアプリケーションはユーザーが一番最初に触れるその会社の表現技術です。ようにながーいキーコードを入れさせるようなものもあります。あの部分でもちょっとしたことで不自由を感じさせない作りにできているか?はかなりポイントが高いです。有名ですがこれしかないわけじゃありません。おいらのBlogとか見てる人なら名前くらいは聞いたことがあるであろうWiXというのもあります。エンジンにしています。現役で使われているインストーラ作成ツールの一つです。ISの古いの(msiにならないプロジェクト形式)はいい加減勘弁してほしいとは思いますけど(職業柄、どうしても踏み込まなきゃならない時があるんでねw最近は減ったけどwww)。インストーラは使えなくなっちゃう可能性が結構高いよね。インストーラは使えなくなっちゃう可能性が結構高いよね。コケるやついっぱいあった/あるし)>ですね。込み入ったところに入り込みたいとかVSも2005あたりになるとランタイムの配布とかでも結構苦労します。