第3回 アプリケーションの互換性64bit Windows時代到来(2/3 ページ)

» 2010年07月29日 00時00分 公開
[打越浩幸デジタルアドバンテージ]

 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

2つの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アプリケーションでも十分だと思われる。

Internet Explorerのプロセス・サイズ
Internet Explorerのプロセス・サイズは、Win32版でもWin64版でも大して違いはない。体感的な速度もほとんど同じだし、1プロセスで何Gbytesも使うこともないので、32bit版でも十分である。
 (1)こちらがWin64版のInternet Explorer。
 (2)こちらがWin32版のInternet Explorer。「*32」は32bitプロセスであることを示す。
 (3)メモリ使用量。Win32でもWin64でも、大して違いはない。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。