アプリケーションの実行環境について

タグの編集
投稿者 リスナー  (学生) 投稿日時 2008/12/17 05:12:31
皆さんこんばんは。
OS:VISTA HOME BASIC
VB:2005EXPRESS
http://msdn.microsoft.com/ja-jp/netframework/cc807023.aspx


アプリの配布を準備しているところです。そこで必要システムについての質問です。
上記のページで調べたのですが、上と下どちらの表を基準にしてよいのか教えてください。
私は2005SP1 For VISTAを使って開発から発行までしたのですが、そのアプリが動く環境はどうなるのでしょう。

上の表はビルドも含めているので開発者の環境なのかなと。すると下の表を見れば良いということになりそうです。
現に2.0Frameの再頒布用をアプリと同梱しました。
その表で見ると、Win98やMeや2000まで環境として列挙されてあるので、そういった環境を知らない私としては、本当に自分の作ったアプリが動くのか?という気持ちになり、それで質問しました。
ちなみに私はXPからのPC経験者です。
たとえば98の上で自分の配布したアプリが2.0をインストールし、アプリ自体もインストールし、起動されて、利用されるというイメージがなかなかつかないのです。

よくベクターさんでダウンロードする際に実行可能な環境を示すマークがありますよね。
XPとかVISTAとか。
自分の作ったアプリは表でいくと、じゃあ98の上でも大丈夫なの?と不安になったのです。
ぜひ教えてください。


あと余談ですが64bitのWinてPC用のOSなのでしょうか。
自分はPC=32bitというイメージがありまして。
それとも64bitが今後は主流になるのでしょうか。まさかすでに主流だとか?
あんまり気にしてなかったので驚いた次第です。
投稿者   (社会人) 投稿日時 2008/12/17 05:55:48
.NET Framework 2.0と、ClickOnce(発行したってことはこれだよね?)は、Windows 98上でも動くみたいですね。
実際にリスナーさんが作られたアプリケーションが本当に動くのかどうかという部分は、テストしてみないとなんとも言えないです。
Vistaと98では、ドキュメントフォルダへのパスとか色々変わってる部分があるので、そこに依存するような形で作ってると動かなかったりしそうです。
投稿者 neptune  (社会人) 投稿日時 2008/12/17 07:23:23
こんにちは

vb.net 以降のバージョンは配布したこと無いんですが、
NET Framework 2.0だけに依存しているアプリなら大丈夫とは思いますが、

O/Sに依存する機能をもっている場合は不可です。
(例えば、VISTA の機能、XP以降のAPI、エクスプローラの新しい機能に依存した機能、
特定のフォルダ指定 etc...)

最終的にはやはり、桜 さんの書かれたようにターゲットO/Sでのテストが一番確実です。
が、素人レベルの環境では困難ですね。。。。
アプリの種類、配布の仕方などにもよりますが、配布の際は開発環境、動作確認環境を明示して
おくほうが親切ですね。

他の識者の方々からのアドバイスも待ちましょう。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2008/12/17 12:31:50
> 上と下どちらの表を基準にしてよいのか教えてください。
基準にはなりません。自作ソフトの動作検証を Microsoft が行ってくれるわけではありませんから。
「下の表を満たしていなければ、自作ソフトも動作しない」という事は言えそうですけれどね。

楽観的に言えば、殆どの場合はそのまま動作するはずです。

ですが、他の方も書かれているように、OS 依存の機能を使っている場合は話が変わってきます。
(たとえば、Form の TransparencyKey プロパティは、Win98 ではサポートされていません)

なので確認のために、Virtual PC などを用いて複数の仮想環境を用意したり、あるいは
知人に試してもらっている方もおられるようです。

ただ個人ではなかなか難しい場合もあるので、他の環境での検証がなされていないソフトについては、
少なくとも開発環境では動いたということで、「Vista 対応」のみをうたうようにしておき、
あるいは、他の OS を「動作未検証」として表現するというのも手かも知れません。

厳密には、.NET Framework の Service Pack の有無によってさえ、利用できる機能や規定の
セキュリティ設定などは変化しますので、基本的に動作検証を行うには、実際に試してみるより
他にありません。それも、できれば開発環境の入っていない素の OS で試す必要があります。


> あと余談ですが64bitのWinてPC用のOSなのでしょうか。
PC 用(XP/Vista)もサーバー用(2003/2008)も存在します。
私が今自宅で使用しているノートPCも、64bit の Vista ですし。


> それとも64bitが今後は主流になるのでしょうか。まさかすでに主流だとか?
現時点ではまだ主流では無いと思いますが、今後は主流となるでしょう。私見ですけれども。

16bit 版アプリが動作しなかったり、64bit に非対応のソフトが存在するなどの理由から、
導入を見合わせる例も耳にしますので、完全な移行には、もうしばらくの猶予が
必要であると私は見ています。

その一方で、CPU 自体は 64bit 対応の物も多数出てきています。
http://www.amd.com/jp-ja/Processors/ProductInformation/0,,30_118_9331,00.html
http://www.intel.co.jp/jp/technology/intel64/index.htm

また、サーバー用 OS に関しても、今後(2008 R2以降)はすべて 64bit 版となります。
http://www.itmedia.co.jp/news/articles/0705/18/news031.html

こうした背景から、64bit化への波は、ここ数年で加速しているように見えますし、
今後は主流となっていくであろうことも予想できます。

ただし、主流にはまだなり切れていない感じを受けています。
たとえば、現在出回っている .NET のサンプルコードには、Win64で動作しないものも少なくありません。
また、今後のクライアント OS についても、Windows 7 に関する情報を見た限りでは、
64bit 版だけでなく、32bit 版も提供される予定のようですし。

それ以降のバージョンはどうなるか分かりませんけれどね…。
投稿者 リスナー  (社会人) 投稿日時 2008/12/17 21:00:09
皆さんこんにちは。
早い段階でのレスありがとうございます。

>>Vistaと98では、ドキュメントフォルダへのパスとか色々変わってる部分があるので、そこに依存するような形で作ってると動かなかったりしそうです。
>>O/Sに依存する機能をもっている場合は不可です。
(例えば、VISTA の機能、XP以降のAPI、エクスプローラの新しい機能に依存した機能、
特定のフォルダ指定 etc...)
>>ですが、他の方も書かれているように、OS 依存の機能を使っている場合は話が変わってきます。
(たとえば、Form の TransparencyKey プロパティは、Win98 ではサポートされていません)


今回のアプリはアプリ本体で済むものとなりそうです。
しかし今後、実行ファイルと一緒に画像やデータベースなども同梱している場合、
つまりアプリと一緒にそれらデータもユーザーに扱ってもらう場合、
OSに依存するプログラムということになるのでしょうか。
パスの指定方法はやはりVISTAとたとえばXPでは違うのでしょうし。

あまり深く考えていなかったのですが、よくよく考えてみると素人にとって分からないことは増えます。
たとえばVISTA上でのファイルやフォルダのデザイン(見ため)が、
他のOS上でそのままのデザインとして反映されることはなさそうですし、
それならそれで、インストール先のOSでのフォルダやファイルの見た目に置き換えられるなら問題ないと思うのですが、考えてみると違うOSなのに、こちらで用意したファイルがあちらでも起動するというイメージがなかなかつかないのです。もちろんフレームワークが差異を吸収してくれるというのは分かります。しかし細かな話ですが、フォルダとかファイルの外観にしてもOSによって違うじゃないですか。

うまく説明できているか不安なのですが、たとえばベクターさんにアップしたとして、まだ手続きの途中なので分からないのですが、確かzip圧縮形式でのアップだったと思うのですが、それでアップして、ユーザーがダウンロードした際、どういうイメージ(見た目、デザイン、外観)のファイルなりフォルダなりとしてユーザーのデスクトップに姿を見せるのでしょうか。

Vista上のフォルダやファイルのイメージと例えばXPでのフォルダやファイルのイメージとは違うと思うのですが、それらはうまい具合にインストール先の外観に置き換えられてデスクトップに解凍されるのでしょうか。
したがって私はただ自分のOS上でアプリやセットアッププログラムや画像やデータの入ったファイルを圧縮すればよいだけなのでしょうか。

お教えください。
投稿者 neptune  (社会人) 投稿日時 2008/12/18 07:44:07
こんにちは

今日はRes付きませんね。

いろんな疑問を書いてますが、インストーラに関しての部分は
VB2005EEを使って、「セットアッププログラム」と書いているんですから、何がしかのインストーラ
作成ソフトを使用していると思いますが、それのHelpなり解説なりを精読するのが先決かと思いますよ。

ファイル、フォルダのアイコンですが、それはOSが勝手に判断してくれます。

>それらはうまい具合にインストール先の外観に置き換えられてデスクトップに解凍されるのでしょうか。
それは、圧縮時の設定によるような??

原則ですが、特殊フォルダと呼ばれるフォルダはハードコーディングしてはいけません。
プログラム上で取得します。
その他ソフトで指定するフォルダなども、有無を確認、その後の処理と言う手順になります。

・・・・公開するならもう少し確認、検討しては?
せめて、友人などのPCにインストールさせてもらうとか。
なんとか古いOS入手して、virtual PCを使ってインストールするとか。
投稿者   (社会人) 投稿日時 2008/12/18 08:46:14
> したがって私はただ自分のOS上でアプリやセットアッププログラムや
> 画像やデータの入ったファイルを圧縮すればよいだけなのでしょうか。
多分それで大丈夫なことが多いと思います。

データがSQL Server 2005/2008とかのDBをさしてるとしたら、Windows98やmeは
動作環境からは外れてしまうと思います。
http://technet.microsoft.com/ja-jp/library/ms143506(SQL.90).aspx

後は、やはりOS依存のコードを書かれている場合は動きません。
代表的なものだと
Dim user As String = "Sakura" 'ユーザに何らかの手段でアカウント名を入れてもらうとする 
' 文字列連結でドキュメントへのパスを組み立てる 
Dim documentPath As String = "C:\Users\" + user + "\Documents"

' 後はドキュメントの中をいじったりする 

といったものがあったりすると駄目です。
因みに、恐らくこれをしたら動かないよ!という一覧は世の中には存在しません。

動作保障をするということは、その環境でテストを完了している
ということになります。
なので、リスナーさんが動かしたことの無い環境は、動作保障の環境には
なりえないと思います。
まぁシェアウェアやフリーウェアなら、古いOSでも多分動くという形で公開して
ユーザーからのフィードバックをもとに動作環境を広げていくというのもありかと思います。
投稿者 リスナー  (学生) 投稿日時 2008/12/19 07:48:56
どうも皆さんこんばんは。現実では派遣社員の話とか大手企業の不振とかシビアなニュースが多いですね。年末だというのに。こうしてプログラミングの事を考えていられる自分は本当に幸せです。普段の生活では色々と若者らしい不満があったりしますがああいう自分は間違っていたなあとかつくづく思う近頃です。今の自分を認めるっていうのは大事だなあと。

さて。いつになく前置きが長かったです。皆さんレスありがとうございます。あらかじめ言っておきますと以下の本題は前置きよりももっと長いです。ホントごめんなさい。


>>「セットアッププログラム」と書いているんですから、何がしかのインストーラ作成ソフトを使用してい>>ると思いますが、それのHelpなり解説なりを精読するのが先決かと思いますよ。

ええと私が何か勘違いしているのかもしれませんが、とりあえず「必要コンポーネントの同梱」みたいな場所にチェックして発行すると、インストーラが自然と出来上がった形でビルドされているという認識です。つまり何かたとえばフリーのインストーラソフトを使っているわけではないです。

>>ファイル、フォルダのアイコンですが、それはOSが勝手に判断してくれます。

そうなのですか。ぜひ聞きたい部分でした。これを聞けて助かりました。


>>原則ですが、特殊フォルダと呼ばれるフォルダはハードコーディングしてはいけません。プログラム上で>>取得します。その他ソフトで指定するフォルダなども、有無を確認、その後の処理と言う手順になります。

ハードコーディングという言葉の意味が分からなくて。こんなことを言って怒られちゃうかなあ。どうか広い心で教えてください。やあほんとneptuneさんには考えてみると「そんなことも知らないの?」というような失礼な質問ばかりしちゃっているかなあ。ホント広い心で読んでやってください。


>>公開するならもう少し確認、検討しては?せめて、友人などのPCにインストールさせてもらうとか。なん>>とか古いOS入手して、virtual PCを使ってインストールするとか。 
 
まだ控えている段階です。それでバーチャルPCですがロクに調べもしないでインストールしちゃったんですよ。ところがこれって結局はそれぞれのOSのディスクがいるんですねえ。やあマヌケもいいところでした。ただ余談ですが勉強になりました。Cドライブのメモリが満杯で、素人くさすぎる話かもしれませんが私、実はDドライブのメモリを使うのって初めてだったんです。それでちょっとした体験でした。すぐにバーチャルは削除しちゃいましたが。だってディスクなんて一枚もありませんもん。
でもコレすごかったですよ。OS/2とか書いてあったような。私の見間違えでなければ。あれってそもそもCDのOSだったんでしょうか? 持っている人っているんですかねー。


考えてみたら家電量販店で購入したのとかって、Windowsだったらそれのディスクって付属されてないですよね?インストールされてはいるけれども付属されてはいない。自分だけかなあ。ちゃんと確かめないとって思いました。VISTA使っているって言ってもそのディスクは持っていないんですからねえ。

話がそれました。

>>後は、やはりOS依存のコードを書かれている場合は動きません。代表的なものだと
>>Dim user As String = "Sakura" 'ユーザに何らかの手段でアカウント名を入れてもらうとする 
>>' 文字列連結でドキュメントへのパスを組み立てる 
>>Dim documentPath As String = "C:\Users\" + user + "\Documents"
>>' 後はドキュメントの中をいじったりする 


このプログラムはuserのところにユーザー任意のアカウント名を入れてもらうという意味のコードなのでしょうか。ファイル操作やパスの指定の部分が勉強不足でして、というか壁を感じているため後回しにしている状況でしてよく分からないのですが、それとは別に私の記憶では""で囲われた部分は意味のない文字列として扱われるという理解だったのですが、パスの指定の際は""を使うんでしたっけ? 
とにかく""で囲われている部分はデフォルトで、userの部分が利用者任意のアカウントを格納するという理解でよろしいのでしょうか。

このコードでいくなら、""で囲われた部分は開発者指定のOS上でのパスの指定方法ということで、userの部分にも予め利用者に動作環境を告知してあるなら、開発者が想定しているOS上でのパス指定方法で入力されるはずで、けれどもここに想定OS以外のOS上でのパスの指定方法が入力されるとエラーが起こり、したがってuserのようにパスの指定方法をユーザーにゆだねるプログラムはOS依存ということになり、それぞれのOS上でのパスの指定方法を把握したうえで各OS用のコーディングが必要。ワンパターンのパス指定方法を組み込んでいるプログラムはダメだよという理解でよろしいでしょうか。

この話の上で、

>>動作保障をするということは、その環境でテストを完了しているということになります。
>>なので、リスナーさんが動かしたことの無い環境は、動作保障の環境にはなりえないと思います。

そうなのですね。その環境を自分でテストしてみて初めて動作環境の有無を判断できるのですね。とりあえず配布するとしたら開発環境のみを実行環境としてみます。ユーザーからのフィードバックをもらうというのも素晴らしいアイデアだと思いました。

さて長くなりましたが、いつものとおりいくつかの私の疑問と誤解がまだ混じっているようなレスとなりました。どうぞ心広く読んでください。

あと余談ですがいつも気になっていたのですが、他の方がコードをコピペされるのを見ると四角い枠で囲まれているのですね。それで私も実は同じように四角い枠で囲う形でコードをペーストしたいのです。ちょっとあこがれていたのですね。どうやったら四角い枠で囲われたコードをペーストできるのですか?ガチであこがれているのです。四角い枠で囲われたコードのペーストって。






投稿者 (削除されました)  () 投稿日時 2008/12/19 08:06:23
(削除されました)
投稿者 neptune  (社会人) 投稿日時 2008/12/19 08:09:06
こんにちは
上の削除は私です。書き忘れがあったので。

詳細には読んでないので
とりあえず、
「ハードコーディング」、ついでに「マジックナンバー」も用語として認知されているので自分で
ググってください。リスナーさんってもしかしたら文系?

次に特殊フォルダですが、frameworkでは知らないのでこんなのしか紹介できませんが、
「SHGetSpecialFolderPath」とか「GetSpecialFolder」ってのもググって見てください。
frameworkではまだ調べたこと無いですが、恐らく用意されているような気がします。
調べたら教えてくださいね。

も一つ、読みにくいので適宜改行は入れて下さい。 
投稿者 リスナー  (学生) 投稿日時 2008/12/19 09:03:49
どうもこんばんは。
改行については気をつけます。
つい夢中で打ち込んでしまいました。


で。
ハードコーディング。
ハードコードとも言うそうで。

>>特定の動作環境を決め打ちして、
>>その動作環境で動作させることを前提とした処理やデータを
>>ソースコードの中に書き込んでしまうプログラミング方式。

としますと、
桜さんのコードですが、
私が読めていなかったようです。


""で括られたパスの指定方法。
userの前後の部分ですね。
あそこが上の定義でいうハードコーディング、
というやつになるのでしょうか。


こんな刺激的な説明も検索中にありました。


>>プログラム中に定数などを直接記述すること。
>>こうして書かれた値をマジックナンバーという。
>>決してしてはならないとされる不文律の一つ。
>>ヘボプログラマほど
>>ハードコーディングをこよなく愛する傾向にあり、
>>彼らが書いたプログラムは
>>高確率でボログラムである。



結局、

「定数を使っていないのは論外だ」

こういう理解でよいのでしょうか。


>>「SHGetSpecialFolderPath」とか「GetSpecialFolder」


調べてみます。
というか調べました。
軽く。


あるみたいですね。
元はCプログラミング用の関数なのでしょうか。


ただ正直、
もひとつどうも、
環境依存とか上記の関数とか特殊フォルダとか
しっくりつながりませんねー。


やっぱり自分の中でパス関連は壁です


余談ですが
やっぱ文系って分かります?


ハードコーディングを知っているかどうか
それで分かってしまうなんて~

驚きです


投稿者   (社会人) 投稿日時 2008/12/19 09:17:59
>特殊フォルダ
.NET FrameworkだとSystem.Environmentクラスの「GetFolderPath」メソッドと
「SpecialFolder」列挙体を使うことになるかと。

[参考]
http://msdn.microsoft.com/ja-jp/library/system.environment.getfolderpath(VS.80).aspx
http://msdn.microsoft.com/ja-jp/library/system.environment.specialfolder(VS.80).aspx


>四角い枠
別段、難しいものではないですよ。
投稿画面の「投稿で使用できる特殊コードの説明。」を見てくりゃれ。
http://rucio.groupsite.jp/commu/Usage.aspx

Private Sub hogehoge()
   'ホゲる。 
   Console.WriteLine("ホゲ")
End Sub


※改行は「適宜」入れましょう。
過ぎたるは、なお及ばざるが如し
投稿者 リスナー  (学生) 投稿日時 2008/12/19 21:20:40
皆さんこんにちは。

レスが来ておりますね。ありがとうございます。

四角く囲うやつ分かりました。今度やってみますね。
参考ページも読ませてもらいます。

ウェブサービスを使うのにまだ慣れていなくて。
ルール的なものも徐々に吸収していきますのよろしくです。


まだ調べものの途中なので今はとりあえずこのへんで。
投稿者 neptune  (社会人) 投稿日時 2008/12/20 02:46:15
こんにちは

インストーラ作成ソフトつかってないんですか???
>とりあえず「必要コンポーネントの同梱」みたいな場所にチェックして発行すると、
>インストーラが自然と出来上がった形でビルドされているという認識です。
VB:2005EXPRESSにそんなおいしい機能?付属してましたかね??無かったと思うんだけど???

ハードコーディングですが、プロじゃないので
>>「定数を使っていないのは論外だ」
とは言いませんが、経験を積むに従ってしなくなります。保守性が悪くなりますからね。

桜さんのコードですが、あれはO/S依存のサンプルですから。その点誤解の無いように。
もっとも、私の場合は自分用の奴なら、普通に書きますが。

#文系の話ですけど、用語の問題じゃなく、質問の内容と仕方で、
#若い(少なくとも社内、外に対してにレポートは書いたこと無い)+技術屋さんじゃない
#は感じますヨ。