人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windows 向けのソフトが Linux で動かないのはなぜですか? Windows 向けのソフトが動く Linux を作るのは、どんな部分が難しいのでしょうか。当方、難しいことはわかっておりません。

●質問者: sample2
●カテゴリ:コンピュータ
✍キーワード:Linux Windows ソフト
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● macos-x
●40ポイント ベストアンサー

PC Watchにちょうど良い記事が載っていました。

http://pc.watch.impress.co.jp/docs/2007/0223/ubiq174.htm


上記からの引用ですが

『このWin32 APIはMicrosoftが定義したものなので、他のOSベンダはそのAPIを利用したOSを作るのは非常に難しい(厳密に言えばAPIは公開されているから、リバースエンジニアリングでなく同じ動作をするものを作ることができれば不可能ではないはず)ので、確かにWin32 APIを握っているという意味で、それがMicrosoftの強みであることは間違いない。』

ってところでしょう。


このWin32 APIをLinuxで動かすプロジェクトとしてWINEがあります。

http://ja.wikipedia.org/wiki/Wine

◎質問者からの返答

なるほど。それにしてもWin32APIっていい加減、歴史がずいぶん長いですよね。それほど再現が難しいんですかね……。

あとXPがVistaになったら動かなくなっちゃうソフトと、問題なく動くソフトがあって、その違いも私にはよくわからないです。なぜかメーカーソフトに引っかかるのが多い。フリーソフトはたいてい、問題なかったりする。ViXとか、ずっと開発が止まっているのにまったく問題ないですからね。どうなってるのか、と思います。


2 ● HiroCom777
●20ポイント

本来、プログラムを作るときには考えなければならない事が大量にあります。WindowsやLinuxは、それらの膨大な事をある程度代わりにやってくれるサービスをもっているのです。

WindowsやLinux向けのプログラムは、それらのサービスを使って動いているのですがそれぞれは殆ど互換性はないのです。

(と、言うか全く別物)

これが、両方で動くプログラムを作るのが難しい理由だと思います。

◎質問者からの返答

残念です……。


3 ● imo758
●30ポイント

理由は簡単なことで、OSごとにお約束が違うからです。

OSはユーザーからプログラムの実行を要請されると、プログラムの概要を調べ、そのプログラムのための環境を用意し、適切なメモリにプログラムを読み込み、プログラムに実行を預けます。

しかし、OSによってプログラムの概要の書き方も、プログラムに与えられる環境も、全く異なります。例えば必要なスタックの大きさを示す場所であったり、プログラム間通信に使うメモリの場所であったり、ファンクションコールでどのレジスタが保存され破壊されるかが違ったり…あらゆることが違います。(あまり詳しくは無いので具体的には間違っているかもしれませんが)

大部分とまではいいませんが、OSの多くの部分がプログラムとのお約束の処理に割かれています。OSがCD何枚分、何ギガバイトに相当するか考えれば、いかにお約束が膨大であるかお分かりいただけると思います。

それと、OSに隠し仕様があり、それを使うプログラムがある場合、エミュレートするのはさらに困難になります。

時々あることなのですが、性能の追求や無作法などが原因で、一部のプログラムはOSで定められている規格を無視してプログラムされる場合があります。例えば特定のファンクションコールで保存が保証されていないレジスタが実際には保存されることを使って、プログラムすることがあります。しかしOSのバージョンアップやパッチなどで実際にそのレジスタが破壊されるようになると、そういった一部のプログラムは動かなくなってしまいます。

まあこの原因が多いかどうかは全くわかりませんが、そういうこともあります、ということで。

これらの壁を越えるためには、Windowsの真似をするLinuxのプログラム、つまりエミュレーターを作ればいいのではないか…ということになりますが、OSというのは機能が複雑多岐にわたるので、仕様としてわかっている部分をまねようとするだけでも膨大な手間がかかります。また著作権や特許などの問題もあります。

で…macos-xさんが紹介されたWINEなどはエミュレーターではないようですね。Wikipediaに書かれた内容によれば、どうやらWindows用のプログラムをLinux用に書き直して、Linux上でプログラムを直接動かすみたいですね(間違ってたら指摘お願いします)。こりゃまたえらく大変そうで…。

◎質問者からの返答

UNIX の再発明が Linux ならば、Windows の再発明も誰かやってくれないかな、と思っています。Windows2000 を使い続けられない唯一最大の理由がサポート終了。そんな理由で OS を新しくしなきゃならないのが悔しい感じです。

WINE については私もいまひとつ理解が及びませんが、Win32 API 向けの命令を受け取って Linux で処理できる命令体系に変換するものと解釈しています。

OS がバージョンアップすると使えなくなるソフトウェアの話ですが、仰るような事情だとすると、フリーソフトの作者の方がメーカーのプログラマーより仕様に忠実なことが多い、ということなんでしょうかね。ACDsee みたいな、そんなにすごいことしてる? みたいなソフトが Vista で動かないのに ViX は 98 から Vista まで全部対応ですからね。


4 ● KazyN
●20ポイント

OS がバージョンアップすると使えなくなるソフトウェアの話ですが、仰るような事情だとすると、フリーソフトの作者の方がメーカーのプログラマーより仕様に忠実なことが多い、ということなんでしょうかね。ACDsee みたいな、そんなにすごいことしてる? みたいなソフトが Vista で動かないのに ViX は 98 から Vista まで全部対応ですからね。

このあたりの事についてですが....

フリーソフトの作者さんは、一般的に公開されている「比較的標準的なAPI」を組み合わせて開発されています。

こういった部分は、OS が新しくなっても互換性が保たれていることが多いため、結果的に「動いてしまう」ことが多いだけです。

それに対し、それなりのコストをかけて開発されている(まっとうな)製品版ソフトウエアでは、独自のチューニングなどで、かなりそのOSの内部の仕様に依存した機能を利用していることがあります。

こういった部分は、OS バージョンアップの影響を受けやすい部分でもあるため、これまた結果的に動かなくなるケースが出てくるわけです。

表面に見える機能のすごいかどうかと、内部処理の複雑さはあまり関係ないので、一概にフリーソフト作者さんの方がメーカーの開発者より忠実ということにはなりません。

◎質問者からの返答

チューニングの成果があってメーカーソフトの方が圧倒的に高速高性能に動作してくれるなら納得できる話なんですけどね。

例えばDVDのバックアップソフトとか、アクセスコントロールを解除する機能の問題を脇に置くとしても、DVD decrypterより高速に起動し、操作手順がシンプルで、短時間の内に作業を完了できるツールが他にありますか。ないと思います。それでいて8000円も9000円もするようなツールがSP2では動きません、Vistaでは動きません、バージョンアップ版は6000円です、とかやっている。何それ、って思いますよ。DVD decrypterはVistaでも相変わらず問題なく動作しているわけです。変な話だと思います。

Vistaで動かないACD seeもコノヤローと思う。バージョンアップで小銭を稼ぎたいだけなんじゃないのか、と邪推したくなります。


5 ● b-wind
●20ポイント

Windows の再発明も誰かやってくれないかな

している人はいます。

Japan.internet.com Webテクノロジー - 『Windows』互換 OS 開発プロジェクト『ReactOS』が活動再開


ただ、UNIX に関しては POSIX という形で標準化されていますしソースコードも公開されていましたが、Windows の場合はソースコードは原則非公開です。

ブラックボックスの中身を外からの推測だけで組み立てなければならないわけです。

◎質問者からの返答

それにしても時間がかかるものなんですね。人員の問題とかいろいろあるんでしょうけど。ReactOSみたいなOSじゃないと、私のような一般人にはWinから乗り換えたくならないです。Linuxは仕事で2年くらい使いましたけど、自分の家のパソコンに入れたいとは微塵も思わなかったもの。

古いパソコンにLinux入れてみたら? みたいな話をもらったことはあったけど、ソフトウェア資産とか慣れ親しんで使いやすい設計とか考えたら、Win98の方がずっといいや、みたいな。

ReactOS応援したいな。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ