この辺り、何年も前から Microsoft がガイドラインなどを出していますが、何を言ってるんですか? 文化として確立していないのではなく、アプリベンダがこの辺りに関して全く積極的に学ぼうとしない点が問題なのです。
特に 9x 系列から入って XP で NT 系列に参入したものの、意識は 9x 時代のままというアプリベンダに顕著です。文化がないのではなく、文化を無視していると言えます。
一般ユーザはその辺りを詳しく知る必要はないと思いますが、そのレベルの意識のままにアプリを作る人が多すぎなのです。man hier ほど気楽に見られるものではないですが、そういった情報は MSDN や TechNet 等で大量に公開されているにも関わらず、全く調べずに独自の思い込みでやってしまう人が多すぎます。
ちなみにこれらの情報は公開情報として Web 上で公開されているものであり、MSDN や TechNet の契約は不要です。(単に MSDN サイトや TechNet サイト等で公開されている、というだけです)
セーブデータを Program Files 以下に保存するようなゲーム等、Program Files 以下に書き込みを行うプログラムの場合、Virtual Store をしっかり知っているユーザが相手で、かつ「Vista 向けのマニフェストが付いていない実行プログラムを使っている」なら、一般ユーザ権限でも読み書きは失敗しません。自動的に Virtual Store へ書き出しが行われ、そこから読みだされます。
Virtual Store 自体はユーザプロファイルの AppData\Local\VirtualStore 以下に存在するため、そのユーザだけにしか影響しないデータとなります。
たとえば Apache httpd を Program Files 以下にインストールし、ログファイルを gvim から開く (not view mode) で起動した場合、作業ファイルが同一フォルダ上に作成されますが、管理者権限で実行していない場合には Virtual Store 以下に作業ファイルが作成されることとなります。
*NIX ベースのアプリをそのまま Windows に移植するタイプのソフトは、かなりの点で Windows の流儀を無視して作成されていたりします。
比較的プラットフォームの文化を尊重する *NIX 系の開発者でさえ Windows の流儀には従いきれない (独自コードが発生して手間がかかったり、そもそもそんな文化知らなかったり、Microsoft が嫌いだから従う気がなかったり) 訳で、よほど「文化に沿ってない=美しくない、キモすぎる」という意識を持った人でもないと、動くならいいじゃん的に進めてしまう傾向は強いかと思います。
一番大きく表れたのは 95/NT4 時代辺りでしょうね。それまでは OS/2 や NT 3.x がコンシューマ向けにも使われる、という状況を聞いたことがありませんでしたが、95 の不安定さに満足できないユーザが NT4WS を利用する、という場面は (DirectX をまがりなりにも搭載したことにより) 結構見られるようになりました。また、この時期にユーザ数が飛躍的に増大しています。
3.1 時代の ini ファイルを利用したユーザ固有設定の保持から 95 でのレジストリへ記録するように方針を変更した点をあっさりスルーしてみたり、9x でも複数ユーザのプロファイルが切り替え可能であった点をあっさりスルーしてみたりするソフトが大量にあった訳です。
この頃は Microsoft 自体がそういうガイドラインを出しつつも Microsoft Office が守り切れていない (一度管理者で起動しないとアプリが正常に動作しない等) といった状態でした。これは Windows 2000 + Office 2000 でも似たような状況が発生します。(パワーユーザ以上で起動してからでないとうまく動作しない)
Vista 発売当初には管理者権限を要求するアプリは非常に多かったのですが、最近は一応インストーラ等に管理者権限を要求するマニフェストが付いていたり、インストールステップ中に昇格を要求するようになったものがかなり見られるようになりました。また、ゲームなどでも更新時以外は管理者権限を要求しないものも出てきています。
もちろん、とりあえず管理者権限を要求するものも少なくありませんが……。
よくわからんのだけどね (スコア:0, オフトピック)
おいらがMac II siを買ったときは、本体+ディスプレイ+HDD+プリンタ+ソフトで100万円を超えるローンを組んだ記憶があるんだよね。(しかも、ciが買えなくてsiを買ったという悔しさが残っている。)
そのときのフィーリングからいうと、今日、Vistaが重くないPCなんて、ものすごく安いんだよね。
今、重さが理由でVistaに移行できない人がどれだけいるのか疑問。Vistaに移行できない理由は、重さじゃないと思うんだがなあ。
安いからって (スコア:0)
特にパソコンのマシンスペックなんてものに興味の無いライトユーザやビジネス層は特に。
XPなら問題なく動くマシンが、Vistaや7だと重い。
けれどそこで
「よし、じゃあVistaの動くマシンを買おう」
と思わせるメリットが全然無い。
買い替えるメリットって何だろう?UAC?エアロ?
私感として、壁はやっぱりエアロの動作に必要な「128MB以上のVRAMのビデオカード」じゃないかなあ。
3Dゲームするわけでもないのに何でそんなスペックのカード必要なんだと。
じゃエアロ無しで、って、それなら別にVistaじゃなくていいし。
「パーソナルコンピュータ」という名前ではあっても
現代のパソコン市場においてはビジネスユーザが大きな割合を占めるわけで、
そこではビデオカードの必要性なんざ皆無なわけだし。
Re: (スコア:4, すばらしい洞察)
オフトピがついてるから、続けるのもどうかと思ったけど、このへんに。
別に買い替えなんか薦めてないよ。今、問題なく動いているPCがあるならそのまま使えばいいと思う。OSもそのままでね。
僕が気にしてるのは、Windows 7がどれだけ軽くても、それが乗り換えの理由にはならんだろう、ということです。(もちろん、PCを買い換えずにOSだけ換えようという人がいるかも知れないことは承知しております。)
どうもWindows 7の話題になると、Vistaは重い、という話になるんですが、Vistaの失敗は重さだけじゃないと思うんですよ。だっ
Re: (スコア:0)
理想はね。でも、しょせん「ぼくの考えたWindows」。
Windows 7はVistaとの互換性も考慮しなきゃならないので、歯車が戻ることはないよ。
「XPで動いていたアプリケーションがXPより使いやすく」ってのも、現実的には矛盾すると思う。
Re:安いからって (スコア:1)
Windowsを使い続けるなら、Vista以降に対応するための作業は覚悟しなければならないでしょうね。
ただ、そんな「覚悟」が必要ならVistaやWindows7の32ビット版なんて出してほしくないな。
全て64ビット版と割り切ってくれた方が諦めもつきやすいしね。
皆が皆、同じように思うわけではないだろうけど、その方が移行する意欲が沸いたのではないかと思います。
MSとしては、割り切ることによるユーザー離れを警戒したリリースなのかもしれませんが、おかげで不幸な目にあってる人が周りに何人も・・・・
64ビット版だけと割り切っていたとしても状況は大きく変わらなかったかもしれませんが、32ビット版への移行と64ビット版への移行の2段階の苦しみを味あわずに済むんじゃないかと思います。
将来、全て64ビットOSになる前提の考えですけどね。
Re:安いからって (スコア:2, すばらしい洞察)
Vista ですらロゴプログラムで 64bit 対応が必須となっているのはドライバ類が必要になるハード関連だけで、ソフトウェアに関しては 32bit 版のみでも全く問題がありません。
そういう状況で「次はアプリでも 64bit 版への対応が必須です」なんてのはさすがにやりすぎとしか言えないですね。
今の WOW64 で十分に動けばいいというなら、大半のベンダは今まで通り 32bit 版を出すだけで大差ない状態になるだけですし、OS 自体が 64bit 版になったからと言ってはまる部分は「あまり」ないのですが……。
そこらのゲームソフトなんて UAC によるアクセス制限を回避するために C:\ 直下にアプリをインストールするようになった、とかいう「Microsoft が出すガイドラインなど全く知ったことではない」「とりあえず動きゃいいんだ動きゃ」という低レベルな開発を行っていますので、サードパーティへの啓蒙を考えたらまだまだアプリの 64bit 化どうこうという段階ではないですね。
どういうクォリティかわかりにくいという人は、/ 直下にベンダごとのディレクトリを作る、ゲームなのに setuid で root 権限動作必須 (または sudo での root 動作要求)、ユーザ個別の設定を /usr/local/etc 以下に共通設定的に保存する、ユーザのセーブデータは /usr/local/libdata 以下に保存される、chmod 0777 /usr/local/libdata/xxxx なんてやる奴までいる、とかいう感じで考えたらわかりやすいのではないかと思います。
そういうクォリティでいまだに作り続けるアプリベンダが大量にいて、かつこれらが動かないと叩かれるのは Microsoft である、という感じですか。
# Program Files/ProgramData/Users とか HKEY_CURRENT_USER/HKEY_LOCAL_MACHINE くらい使い分けてくれよホント。
# AppData\Local、AppData\LocalLow、AppData\Roaming まで適宜使い分けろとまでは言わないからさ。
Re:安いからって (スコア:1)
みんな管理者権限でログインするからどうやったって壊れ続けていくんだよね。
本当は「制限ユーザ」とかでログインすべきなんだけど、それじゃぁ動作しないアプリケーションソフトがたくさんある。だから管理者権限を持つユーザとか「パワーユーザ」とかでログインすることをやめられない。(もちろん殆どのライトユーザは何も知らずに何となく管理者権限で使っているに決まっているけど。)
そうしたことが改善されると安定していくんだろうなぁ、なんて思いながらWindows2000を使っているんだけど最近のWindowsは
> どういうクォリティかわかりにくいという人は、/ 直下にベンダごとのディレクトリを作る、
> ゲームなのに setuid で root 権限動作必須 (または sudo での root 動作要求)、ユーザ
> 個別の設定を /usr/local/etc 以下に共通設定的に保存する、ユーザのセーブデータは
> /usr/local/libdata 以下に保存される、chmod 0777 /usr/local/libdata/xxxx なんてやる奴
> までいる、とかいう感じで考えたらわかりやすいのではないかと思います。
こんな感じですか。凄いですねぇ。
何でこうなっちゃうんだろう?
もちろん、短時間/少工数でアプリケーション/ドライバを作るために省けることを(省いちゃいけないところまで)省いて開発をしているアプリケーションメーカにも問題があるのは確かだ。だけど、もっと根本的な所で問題なのはセキュリティモデル/OS構造の分かりにくさや出来の悪さにあるんだろうと思う。
ユーザ権限の区別
誰ができるべき?
shutdown/ドライバインストール/アプリインストール/システム設定変更
ファイルをどこにインストールすべきか
DLLをsystem32配下にインストールするだって? 正気の沙汰じゃない!
プログラムは"C:\Program Files\"配下だって? 増設ドライブには置けないのかよ?
マイドキュメント? どうしてそんな変態的な場所にデータを置くのか?
(システム共通|ユーザ個別|グループ共通)設定ファイルはどこに置くのが普通?
ユーザデータを全部バックアップしたいのだけど、どこをコピーすればいいの?
ファイルアクセス権はどのように設定すべきか
プログラムバイナリはどうすべき?
システム共通データファイルはどうすべき?
ユーザ個別データファイルはどうすべき?
レジストリアクセス権/構造はどうあるべきか
レジストリ構造って腐っていてどうなっているのか母さん全然分かんないわよ!
っていうかアクセス権? レジストリにあるの?
設定ファイルじゃ駄目なの? バックアップ/リストアも簡単、レジストリは何が嬉しいの?
レジストリに保存されているアプリ情報一式のバックアップとリカバリって99%できないよね。
上記の事柄が少なくとも「文化として」確立されないままなので、アプリケーションがそれぞれ思いつきで勝手な構造を作ってしまう。当然後で困ったことになる。思いつきの構造なので当然セキュリティや拡張性などの問題がつきまとう。
OS構造がへっぽこなので、OSの責任で変わってしまわないよう守らないといけない事柄を守れない。
アプリケーションもユーザも勝手に思いつきで変更を加えてしまう。
だから使えば使うほどOSが壊れていき、定期的に再インストールしなきゃならない。
それはプログラム開発者もユーザも(多分システム運用者も)、「どうしておくべきなのか」分からないからなんだろうと思う。OS構造を改善して、更に開発者やユーザ(少なくともPC好き位には)に分かるようにしたらもっと良くなるんじゃないかな。Windowsって多分最も「何でもできる」素敵なOSだろうから。
さっきまでできていた事も直ぐにできなくなるけどさ。
Re: (スコア:0)
の例を持ち出して、それがWindowsの仕様上のダメなところであるかのような、
おかしな話の持っていき方をしてまでWindowsを貶めたいということは良く伝わり
ました。
#他にも色々突っ込みたいが、眠いからいいや
Re:安いからって (スコア:1)
Vista でどのように変化したか、という辺りの情報収集をされてみた方がよろしいかと。UAC が有効 (デフォルト) のままなら、管理者ユーザでも普段は一般ユーザ権限で利用することとなり、必要な時だけ管理者権限に昇格する形になっています。
また、2000/XP であれば必要な時だけ Run As する手もあります。Vista より不便ですけどね。
この辺り、何年も前から Microsoft がガイドラインなどを出していますが、何を言ってるんですか? 文化として確立していないのではなく、アプリベンダがこの辺りに関して全く積極的に学ぼうとしない点が問題なのです。
特に 9x 系列から入って XP で NT 系列に参入したものの、意識は 9x 時代のままというアプリベンダに顕著です。文化がないのではなく、文化を無視していると言えます。
一般ユーザはその辺りを詳しく知る必要はないと思いますが、そのレベルの意識のままにアプリを作る人が多すぎなのです。man hier ほど気楽に見られるものではないですが、そういった情報は MSDN や TechNet 等で大量に公開されているにも関わらず、全く調べずに独自の思い込みでやってしまう人が多すぎます。
ちなみにこれらの情報は公開情報として Web 上で公開されているものであり、MSDN や TechNet の契約は不要です。(単に MSDN サイトや TechNet サイト等で公開されている、というだけです)
例えばユーザごとのフォルダは C:\Documents and Settings\(ユーザ名) とは限らない にも関わらず、それを決め打ちでアクセスしてしまうものも存在します。
感覚的にはホームディレクトリは「/home 直下とは限らない」にも関わらず、$HOME を参照せずに /home/(username) 決め打ちでアクセスしようとする感じでしょうか。
# ローカルコンピュータ上のアカウントとドメイン所属のアカウントが同じである場合、後者は (ユーザ名).(ドメイン名) となる、といった場合があります。
# また、そもそもユーザ名は変更可能ですが、ホームディレクトリのパスは最初に作られた後は変化しません。
一言で言うと「あなたの書き込み自体が大半の (特に一般向け) アプリ開発者のレベル」なんです。あなたが言っていることは全部 NT4/2000 時代には文書化されていますよ。
Re: (スコア:0)
で、アプリ(の作り方)自体は変わってないから頻繁に管理者権限を要求されて次第に面倒になりUACを切る、と。
なぜWindowsアプリはMSのガイドラインに沿わないか (スコア:1)
誰が悪いかはどうでも良いとして、結果としてはアプリケーションやユーザはMicrosoftの出しているガイドラインと異なる勝手なことをたくさんやっているじゃない? これが改善されて、OSとアプリとユーザが同じ文化を持つようになると、Windowsがより安定して動くようになるよね。
多分、上記のことは比較的公平な見方ではないかと思うけど、間違っているかな?
なんできちんと文書化されているガイドラインが守られないのか。NT4の頃のものですら守られていない? のはなぜかということを考えてみたら良いと思うんだ。商用UNIXやLinux、BSD、MacOSXと比較して何が違うんだろう?
振り返って、こうした問題はいつから起きていたんだろうか、去年からなのか、WindowsXPから?、Windows95から?、それともMS-DOSから?
将来は改善される見通しはあるだろうか? Windowsは来年、5年後、10年後に変わっているだろうか?
私は5年後も改善されないと思うけど、みなさんどう思うだろうか?
Re: (スコア:0)
とはいえ、いまだに VB6 で開発してるところがあるのでなあ。
VB6 用のサンプルプロジェクトなんか配布した日には、ますます延命しそうだし。
Re:なぜWindowsアプリはMSのガイドラインに沿わないか (スコア:1)
Visual C++ で MFC のプロジェクトを作る場合、かなり昔から (VC6 以前) とっくにその手のコードが入ってますよ。
.NET Framework の場合は XML ファイルで設定ファイルを書く感じになると思いますが、ユーザごとの設定場所を保存するフォルダのパスなども標準で提供される程度には組み込まれています。
……で、まぁ、無視されるんですけどね。
Re:なぜWindowsアプリはMSのガイドラインに沿わないか (スコア:1)
セーブデータを Program Files 以下に保存するようなゲーム等、Program Files 以下に書き込みを行うプログラムの場合、Virtual Store をしっかり知っているユーザが相手で、かつ「Vista 向けのマニフェストが付いていない実行プログラムを使っている」なら、一般ユーザ権限でも読み書きは失敗しません。自動的に Virtual Store へ書き出しが行われ、そこから読みだされます。
Virtual Store 自体はユーザプロファイルの AppData\Local\VirtualStore 以下に存在するため、そのユーザだけにしか影響しないデータとなります。
たとえば Apache httpd を Program Files 以下にインストールし、ログファイルを gvim から開く (not view mode) で起動した場合、作業ファイルが同一フォルダ上に作成されますが、管理者権限で実行していない場合には Virtual Store 以下に作業ファイルが作成されることとなります。
ユーザは何をしようと構わないのです。むしろユーザにその辺りを意識させたら OS やアプリとしては負けですから。
ただし、それでシステムを破壊するような行為を簡単に行えるのが大問題であるため、2000 以降のシステムファイルの自動復旧や復元ポイント、シャドウコピー、そして UAC といった機構が出来上がった訳ですから。
圧倒的なユーザ数、そしてベンダ数の違いですよ。
*NIX ベースのアプリをそのまま Windows に移植するタイプのソフトは、かなりの点で Windows の流儀を無視して作成されていたりします。
比較的プラットフォームの文化を尊重する *NIX 系の開発者でさえ Windows の流儀には従いきれない (独自コードが発生して手間がかかったり、そもそもそんな文化知らなかったり、Microsoft が嫌いだから従う気がなかったり) 訳で、よほど「文化に沿ってない=美しくない、キモすぎる」という意識を持った人でもないと、動くならいいじゃん的に進めてしまう傾向は強いかと思います。
実際、*NIX ベースのアプリで、Vista で入ったさまざまな変更に追従しきってるアプリなんて、まずないでしょうね。
# 例えばエクスプローラでのサムネイル用のハンドラを実装しているとか、検索機能を Windows 標準の検索用フレームワークを利用するとか。
一番大きく表れたのは 95/NT4 時代辺りでしょうね。それまでは OS/2 や NT 3.x がコンシューマ向けにも使われる、という状況を聞いたことがありませんでしたが、95 の不安定さに満足できないユーザが NT4WS を利用する、という場面は (DirectX をまがりなりにも搭載したことにより) 結構見られるようになりました。また、この時期にユーザ数が飛躍的に増大しています。
3.1 時代の ini ファイルを利用したユーザ固有設定の保持から 95 でのレジストリへ記録するように方針を変更した点をあっさりスルーしてみたり、9x でも複数ユーザのプロファイルが切り替え可能であった点をあっさりスルーしてみたりするソフトが大量にあった訳です。
この頃は Microsoft 自体がそういうガイドラインを出しつつも Microsoft Office が守り切れていない (一度管理者で起動しないとアプリが正常に動作しない等) といった状態でした。これは Windows 2000 + Office 2000 でも似たような状況が発生します。(パワーユーザ以上で起動してからでないとうまく動作しない)
Vista 発売当初には管理者権限を要求するアプリは非常に多かったのですが、最近は一応インストーラ等に管理者権限を要求するマニフェストが付いていたり、インストールステップ中に昇格を要求するようになったものがかなり見られるようになりました。また、ゲームなどでも更新時以外は管理者権限を要求しないものも出てきています。
もちろん、とりあえず管理者権限を要求するものも少なくありませんが……。
# 「起動時にオンライン更新をする可能性があるから」管理者権限が必要、なんてのは悪い作りの代表例です。
# インストーラを自動検出して昇格を自動的に要求する設定をオフにしていると、この辺りの変化がよくわかります。
非ゲームのコンシューマ向けアプリなどの場合、この辺りはゲームのように悲惨な状態ではないためまだ望みはあります。それでも、再起動後にセーフモードで起動しないとアップデータの適用に失敗するようなのもありますが……。
ただし、それでも一般ユーザレベルの考えで開発へ参入するところが減るとは考えにくいため、5 年後でもあまり変化はないでしょうね。
Re:なぜWindowsアプリはMSのガイドラインに沿わないか (スコア:1)
それらのOSを利用している現場は、それらのOSを「選んで」利用している。別な言い方をすれば「あえてWindowsを避けて」いる。
あえてWindowsを避けるような現場は、それなりに意識をもってその選択をしている。だから、選んだなりの使い方をするし、そのOSの設計思想にも理解を示す。
Windowsを選ぶ現場は、Windowsを「あえて選んでいる」わけではなく、他に選択肢があるかどうか調べもしないことが多い。いきおい、Windowsの設計思想なんてものにも興味を示さない。「動けばいい」ということになる、ということじゃないかな。