第3回 アプリケーションの互換性:64bit Windows時代到来(2/3 ページ)
64bitアプリケーションでは大量のメモリを扱えるが、DOSやWin16のアプリケーションは実行できないし、32bit DLLも呼び出せない。そしてIEが2種類ある理由とは?
Win32プログラムは現在広く利用されている形式であり、32bit版Windows上ではネイティブでサポートされているし、64bit版Windows上ではWOW64というメカニズムを通して実行されている。そのため、少なくとも単一のWin32の.exeファイルを実行するだけならほぼ問題はない。
だがこれら実行ファイル以外に、通常のプログラムではDLL(ダイナミック・リンク・ライブラリ)も同時に使われるのが一般的である。.exe形式の実行ファイルを起動すると、サポート・ライブラリやサードパーティ製のモジュールなどを同じプロセス空間内にロードして実行するのである。だが64bit版Windows上では、64bitの実行ファイル(プロセス)から64bitのDLLをロードすることはできるものの、32bitのDLLをロードして呼び出すことはできない。64bitプロセス空間内には、32bitのコードを置いて実行することができないからだ(これはCPUとWindows OSの実装上の制約による)。64bit Windows OS上では、64bitのプロセス空間と32bitのプロセス空間は厳密に分かれており、途中で切り替えながら実行することはできない。
この結果何が起こるかというと、アプリケーションによっては(DLLが読み込めずに)起動そのものができなくなったり、拡張機能が利用できなくなることがある。Windowsアプリケーションでは、ActiveXコントロールを使って機能を拡張するものがいくつかあるが、このActiveXコントロールも(場合によっては)DLLを使って実装されている。そのため、64bit化したアプリケーションでは拡張機能が使えなくなる可能性がある(実装方法によってはこの影響を受けない場合もある)。
つまりアプリケーションを64bit化する場合は、そこで利用しているライブラリ(DLL)まで含めて64bit化しないと、一部機能が制限されることになる。だがサードパーティ製のライブラリやActiveXコントロールの場合は、64bit化を行ってくれるかどうかが不明だったり、期待できないこともある。その影響を最も受けている例として、Internet Explorerが挙げられる。以下は64bit版のWindows 7のメニュー画面の例であるが、2種類のInternet Explorerが登録されている。
2つ登録されているInternet Explorer
64bit版のWindows 7には、このように最初からWin32版とWin64版の2種類のInternet Explorerがメニューに登録されており、ユーザーが使い分けるようになっている。
(1)こちらはWin64版のInternet Explorer。
(2)「(32 ビット)」とはなっていないが、こちらはWin32版のInternet Explorer。
(3)ここに最初から登録されているのはWin32版のInternet Explorer。つまり、こちらを使用することが推奨されているといえる。
Internet Explorerが2種類登録されているのは、ユーザーが用途に応じて使い分けることを期待しているからである。本来ならばWin64版だけで十分なはずだが(ほかの付属アプリケーションはWin64版のみ提供されている。ただし前回述べたSYSWOW64フォルダの中は別)、Win64版ではユーザーにとって機能が不足する(問題が多い)ためにこうなっているのだろう。具体的にいえば、Flash Playerを始めとする、各種のサードパーティ製アドオンがそろっていない。
■Win32版Internet Explorer
■Win64版Internet Explorer
上はWin32版、下はWin64版のInternet Explorerで、Adobe Flash Playerのバージョン確認ページを表示させたところ。Win64版ではFlash Playerを利用できない。Adobeからリリースされていないため、ユーザーが自分で追加することもできない。
(1)このページでFlash Playerがインストールされているかどうかを確認できる。
(2)インストールされているFlash Playerのバージョン情報。
(3)このページは静的なコンテンツになっている。Flash Playerは利用できない。
実際にInternet Explorerで利用可能な拡張機能(アドオン)を比較すると次のようになっている。
■Win32版Internet Explorerの拡張機能
■Win64版Internet Explorerの拡張機能
2つのInternet Explorerの組み込み済みアドオン
上はWin32版、下はWin64版のInternet Explorerで、アドオンの情報を表示させたところ。せめてFlash Playerさえ利用できればそれで十分だというユーザーも少なくないだろうが、Win64向けのFlash Playerは現在はまだ開発中である。
(1)これを選択すると、組み込まれているアドオンなどの情報が確認できる。
(2)Internet Explorer向けFlash Playerは現在ではWin32版Internet Explorerでのみ利用可能。
現在のインターネットWebサイトでは、Flash Playerが利用できないとさまざまなコンテンツが利用できず、非常に不便である(だからこそ、とりあえず利用できるWin32版Internet Explorerも用意したのだと思われる)。またInternet Explorerが2つあるため、アドオンを追加する場合は2つそれぞれに対応する必要があるなど、ユーザーや管理者にとってはトラブルの元でもある。
とはいえ、実際にWin64版のInternet Explorerを使う機会や必要性は、実はそう高くない。Win64版のInternet Explorerのメリットはその扱えるメモリの多さにあるが、Win32版であっても2Gbytesまでのプロセス・メモリ空間をサポートしている。実際の利用状況を考えると、Internet Explorerの利用メモリ・サイズが1Gbytesとかそれ以上になることはほとんどない。もしあったとしても、非常に負荷が高く、まともに操作できなくなるだろう。合計のメモリ使用量では32bit版Windows OSの限界である4Gbytes(実際には3Gbytes程度)を超えることがあるかもしれないが、Internet Explorerの各プロセス・サイズはせいぜい数百Mbytesなので、Win32アプリケーションでも十分だと思われる。
Copyright© Digital Advantage Corp. All Rights Reserved.