とっておきの手土産を教えて

Win7で動作していた弊社アプリがWin8.1でも動作するか確認し、動作保証しようとしています。
ところがWin8.1には32bit版と64bit版があります。
ざっと動かしてみたところ、どちらも問題なさそうに動作しています。
そこで、質問ですが、32bit版と64bit版の両方とも動作確認しなければならないのでしょうか。
Microsoftの「Windows 7からWindows 8へのアプリケーション移行のポイント」には、32bit版と64bit版での注意点など何も書いてないので、関係ないということなのでしょうか。
動作原理上関係ないと大変うれしいのですが。。。

そもそも、なぜ64bit版で動作できるPCであれば32bit版のWin8.1も動作させられるのでしょうか。
64bitというのはハードで決まっているのではないのですか。
64bit動作するハードをわざわざ32bit方式で動作させているのですか?
あまり詳細な説明をされても理解できませんが、ざっと概要がわかると助かります。

それと、エディションの違いも移行のポイントに書いてないので、Proで動けば無印でも動くと判断していいのでしょうか。

大変お手数ですが、ご教示ください。



■以下は、「Windows 7からWindows 8へのアプリケーション移行のポイント」のURLです
http://download.microsoft.com/download/6/0/E/60E …

A 回答 (2件)

この理屈は、Windows7の時にはここでもよく説明した記憶がありますが・・・。

そういうソフトのサポートを行う会社なら、この辺りは理解しておくべきでしょうし、ハードウェアの仕組みも形だけでも知ってから、参入すべきかと思いますが・・・。

Q/ そこで、質問ですが、32bit版と64bit版の両方とも動作確認しなければならないのでしょうか。

A/通常は64bit版で最初に動作確認し、それで動作が出来れば、32bitでも動作が保証できる場合が多いです。ただし、確実な動作を保証する場合は、両方でテストすることを推奨します。まあ、これらの部分は業務アプリケーションの場合は、ユーザーサポートと評判に左右されるものですから、それをどう考えるかだけの問題です。理論上は、64bit環境で動く場合は、32bit環境でほぼ確実に動作します。

後は、APIに何を使っているかなども知っているはずですから、そのAPIがサポートから外れている場合は、その辺りを先にチェックしておく必要があります。開発したソフトのサポートを行う場合は、その辺りを、動作確認と平行して行います。

Q/なぜ64bit版で動作できるソフトは、32bit版のWin8.1でも動作できるのですか?

A/わかりやすくするため、まずはソフト面に質問の記述は少し変更しました。本題は2つ下の質問に書いています。

これは、OSのカーネル仕様とCPUの動作モードに関係する問題です。Windowsだけの仕様で回答するとWindows On Windows 64(bit)と呼ばれる機能を使っています。これは、いわゆるエミュレーターの一種で、32bitプログラムが実行された場合、その一部を仮想化し、仮想的な32bit環境構築します。また、64bitの中間関数(API)で当該の関数がある場合は、対となる64bitコードに置き換えて実行します。

当該のAPIがない(新設された特殊なAPIであったり、カーネルモードで動作するプログラム)場合と実行方法に64bit環境に沿わないコードがある場合は、エラーとして弾き、実行を抑止します。尚、64bit環境では16bitアプリケーションには対応しませんので、それらは弾かれます。また、DOSアプリケーションも動作しません。

32bit環境では、そもそも64bitコードに置き換えて実行することはないため、ネイティブの32bitコードを実行できます。また、カーネルドライバ保護の一部が、32bit環境では有効になっていないため、過去のアプリケーション互換性が高まります。
さらに、WOW(16bitアプリケーションの互換モード)も使えるため、16bit互換アプリの一部も動作可能です。(この理由は後述のCPU、Lagacy Modeの関係によります)

これが32bitの強みです。要は、過去の32bitがネイティブ対応します。さらに、16bitアプリはいわゆるx64における32bitアプリケーションの起動概念と似た、互換モードが使えるのです。だから、古いソフトの動作互換性が高くなります。しかし、この互換モードはあくまで、CPUのレジスタ帯域としては1世代前の帯域になります。要は、64bitなら、32bitまでは互換でき、32bitなら16bitまでと互換が可能になるのです。そのため、古いアプリケーションの互換性は、32bitの方が高いのです。しかし、64bitソフトウェアは動きませんし、32bitOS上では、後述しますが、Long Modeでの動作はどうやってもできません。


Q/ 64bitというのはハードで決まっているのではないのですか。64bit動作するハードをわざわざ32bit方式で動作させているのですか?

A/そうです。互換性のためにわざわざ32bitで動かすのです。それだけ、資産継承が重要なら、それもやむを得ません。

64bitというのはCPUのレジスタ幅(演算ユニットが一度に扱える数値の桁数)です。たとえば、999×999までしか計算できない装置に、1000×1000という計算式を与えると、桁あふれ(バッファオーバーフロー)が発生し、処理が停止します。
電卓で言えば、E1.0029370808などと数字が出るあれです。CEなどを押してリセットしないと、追加の演算はできません。

コンピュータも同じで、全てのプログラムはこの桁数の制限を受けています。それが、32bitや64bitといったレジスタ(算術ユニット/ALU/整数演算器)が扱える桁数になるのです。ハードとしての最大条件はこれになりますが、計算式を与えるのはソフトです。
そのため、コンピュータではソフトウェア側が64bitでなければ、64bitの演算はできません。

そして、その絶対値の幅を決めるのはOS(WindowsやMacOS)になります。32bitOSでは32bit迄しかつかえませんが、16bitソフトも使えます。64bitOSでは、64bitという広いレジスタ幅が使えますが、16bitには対応せず、32bitは一部エミュレートとなります。


Q/そもそも、なぜ64bit版で動作できるPCであれば32bit版のWin8.1も動作させられるのでしょうか。

A/CPUがx86-64ですから、x86系のマイクロコードに最適化されたコンパイラを使っていれば、32bitでも64bitでもOSやソフトは動作します。

WindowsPCの64bitでは、x86-64(x64)と呼ばれるIA-32系の系譜プロセッサを利用します。

このプロセッサには、64bitモードとして、
Long Mode(ロングモード)が搭載されています。このモードでは2つの設定があり、64bitモードと互換モード(Compatible Mode)と呼ばれる32bitアプリケーションを動かすモードがあります。このモードがいわゆる64bit Windows上でWOW64で実行するソフトを動かすために使われます。

Long Modeでは、64bit Modeのみで64bit本来の性能が発揮されます。
本来の性能とは64bitCPUでは、本来ある8つの演算レジスタに追加する形で、8本のレジスタがあります。即ちレジスタが2倍になっているのです。それらが使えるのがこの64BITモードのみです。32bitの互換モードは、64bitモードの中で動作しますが、追加レジスタの利用ができません。これが、いわゆる64bitOSが動作するためのハードウェアの仕様です。

それに対して、Lagacy Mode(レガシーモード)と呼ばれるモードも備わっています。
これは、i8086(インテルハチマルハチロク)から系譜されている16bit/32bitのOSに最適化されたモードです。32bitOSはこのモードで動きます。ただし、このモードでは追加レジスタは使えませんし、64bitのアプリケーションも一切動きません。
あくまで、旧資産を動かすためだけに、性能を犠牲にしてOSのビット数を抑えてインストールすることが出来るのです。何故旧資産が32bitの方が動くかは先に書いたとおりで、ネイティブに何の変換もかけずに動かせるからです。また、16bitコードも動作可能です。


Q/それと、エディションの違いも移行のポイントに書いてないので、Proで動けば無印でも動くと判断していいのでしょうか。

A/通常は、動きますが・・・個人の開発でなければ普通は逆です。Pro特有の機能であるドメインアカウントやグループポリシーなど、ビジネス用途の専用機能に依存する場合があるかどうかで変わりますので、そういう意味で逆にするのです。ホームユーザー向けの場合は、Proでのテストより、Home系のOS(無印)でテストし、Proも保証するのが一般的です。

要は、エディションは下位(機能が少ない方)からテストし、ビット数は高い方(互換性の問題が起きやすい方)からテストします。これらで、スムースに動けば、それ以外の行程をパス(スキップ)することも可能であり、工程数を削減することが可能です。

サーバを含めてテストする場合は、目的のサーバーでの動作チェックをさらに加えます。ただ、その場合においても、通常は下位のエディションからテストを行う方が、効率は良くなります。(尚サーバーコアは対象外です。一般のサーバーOS+サーバーコア対応の場合は、環境テストと導入プロセスを全て確認した方が良いです)

以上のようになります。

最後にまとめるとテストというのは、
一番動かなくなる過酷な状況でテストすると、それ以外の状況で動くということです。マイナス20度で動くエアコンは、マイナス10度でも動くでしょう。
OS上でのソフトの場合は、同じ世代(バージョン)なら理論上機能が少なく、互換性が低い側で動けば動きます。(環境例外<ハードや追加APIによる相性>があるので、絶対保証はしません。)

だから、64bitで機能の少ないエディションでテストするのが先で、それで動かないなら、32bitのみサポートや、プログラムに手を入れます。
    • good
    • 0

Windows7も32bit64bitは有りますよ


現在どちらを使われていますか?

XP時代のソフトが7や8の64bit版で動かない物は有りました
私の場合は 古いCADソフトやフィルムスキャナーや動画編集ソフト USB接続のMO等です
32bitの7ではほとんど対応出来ました

8では大丈夫で 8.1ではプリントサーバーが対応しなくて買い替えましたね

使われているソフトは何ですか?
ソフトメーカーのサイトに何かネタは出ていませんか?
周辺機器でドライバが無い場合は使えない場合が多いです

Windowsのバージョンアップのスピードに各メーカーが対応の遅れが有る場合も有り 古いソフトではサポートを止めている場合も有ります

今後ダメな時は ソフトの買い替えかな?と思っています

専門的な事は分かりません
XPから7や8に変えた時の苦労ネタです
おかげでパソコンが増えました(現在 5台稼働中)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報