Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

WOW64(ワウロクヨン)とは | 意味や読み方など丁寧でわかりやすい用語解説

WOW64(ワウロクヨン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ワウロクシフォー (ワウロクシフォー)

英語表記

WOW64 (ワウロクヨン)

用語解説

WOW64は「Windows-on-Windows 64-bit」の略称であり、64ビット版のWindowsオペレーティングシステム上で、従来の32ビット版Windowsアプリケーションを互換的に実行するためのサブシステムである。現代のほとんどのコンピュータは64ビットプロセッサと64ビットOSを搭載しているが、過去に開発された膨大な数の32ビットアプリケーションが存在するため、それらを新しい環境でも継続して利用できるようにすることがWOW64の主要な目的となる。

この機能の必要性は、コンピュータのCPUアーキテクチャの進化に由来する。初期のパーソナルコンピュータ向けCPUは16ビット、その後32ビットへと発展し、そして現在の主流は64ビットである。ビット数が増えることで、CPUが一度に処理できるデータ量が増え、特にOSが管理できるメモリアドレス空間が大幅に拡大する。32ビットシステムでは最大約4ギガバイトのメモリしか直接扱えないが、64ビットシステムでは理論上、その上限が極めて大きく広がる。しかし、32ビットアプリケーションは32ビット環境で動作するように設計されているため、64ビットOSが何の対策もなしに32ビットアプリケーションを直接実行しようとすると、命令セットの不一致やメモリアドレスの扱いの違いからエラーが発生し、動作しない。WOW64は、このような互換性の問題を解決し、ユーザーが古いソフトウェア資産を無駄にすることなく、最新の64ビットOSの利点を享受できるようにする技術的基盤を提供している。

WOW64は、エミュレーションとは異なるアプローチを採用している点が特徴だ。現代の64ビットプロセッサの多くは、32ビット命令セットもネイティブで実行できる機能を内蔵している。そのため、WOW64は32ビット命令を64ビット命令に変換するような処理はほとんど行わず、主に32ビットアプリケーションからのシステムコールやリソースへのアクセスを64ビット環境に適切に橋渡しする役割を担う。

具体的には、32ビットアプリケーションが64ビットWindows上で起動されると、そのプロセスはWOW64サブシステムによって管理される。このサブシステムは、主に以下の3つのダイナミックリンクライブラリ(DLL)で構成されている。一つは主要なインターフェースとなるwow64.dllで、32ビットアプリケーションからのシステムコールを傍受し、それを64ビットカーネルが理解できる形式に変換する。次にwow64win.dllがあり、これは32ビット版のWin32 API呼び出しを、対応する64ビット版のカーネルAPI呼び出しへと変換する。最後にwow64cpu.dllは、32ビットと64ビットの間でCPUの実行モードを切り替える役割を担い、アプリケーションが正しいビット幅の命令で実行されるように管理する。これらのDLL群が連携することで、32ビットアプリケーションは自身が32ビットOS上で動作しているかのように錯覚し、問題なく実行される。

WOW64の機能の中でも特に重要なのが、レジストリとファイルシステムの仮想化である。32ビットと64ビットのアプリケーションが互いのリソースを誤って上書きしたり参照したりするのを防ぐため、Windowsは異なるビット幅のアプリケーションに対して異なるレジストリビューとファイルシステムビューを提供する。

ファイルシステムの場合、64ビットWindowsでは、64ビットアプリケーションが利用する主要なシステムディレクトリはC:\Windows\System32だが、32ビットアプリケーションがSystem32へのアクセスを試みると、WOW64は自動的にその要求をC:\Windows\SysWOW64ディレクトリにリダイレクトする。SysWOW64には32ビット版のDLLや実行ファイルが格納されており、これにより32ビットアプリケーションは自身が32ビットのシステムディレクトリを参照しているかのように動作できる。同様に、プログラムのインストール先に関しても、64ビットアプリケーションは通常C:\Program Filesにインストールされるのに対し、32ビットアプリケーションはC:\Program Files (x86)にインストールされることが推奨されている。

レジストリについても同様の仕組みが導入されている。64ビットアプリケーションは、レジストリキーHKEY_LOCAL_MACHINE\SOFTWAREなどの通常のパスを使用する。しかし、32ビットアプリケーションがこれらの64ビットパスにアクセスしようとすると、WOW64はアクセス要求をHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Nodeという専用のレジストリパスにリダイレクトする。このWOW6432Nodeは、32ビットアプリケーション専用のレジストリ設定を格納するための場所であり、それぞれのビット幅のアプリケーションが互いに干渉することなく、独立したレジストリ空間を持つことを可能にする。

ただし、WOW64にはいくつかの制限事項も存在する。例えば、WOW64は16ビットアプリケーションの実行をサポートしない。これは、64ビットプロセッサがネイティブで16ビットアプリケーションを実行するための機能を持たないためであり、古い16ビットアプリケーションを64ビットWindowsで実行するには、仮想マシン環境など別の解決策が必要となる。また、デバイスドライバに関しては、そのOSのビット幅と一致している必要があるため、32ビット版のデバイスドライバは64ビット版Windows上では動作しない。これは、ドライバがOSのカーネルと密接に連携するため、WOW64のような互換性レイヤーを介した実行が困難であるためだ。低レベルなAPIへの直接アクセスや、ハードウェアへの直接的な操作を行う一部のアプリケーションでは、WOW64環境下での動作に問題が生じる可能性もある。

WOW64は、64ビットオペレーティングシステムへの円滑な移行を可能にし、過去のソフトウェア資産を保護する上で不可欠な技術であり続けている。システムエンジニアを目指す初心者にとっては、現代のWindows環境の根幹をなす互換性技術として、その存在と仕組みを理解しておくことは非常に重要である。これにより、アプリケーションの動作環境に関する問題を診断する際や、新しいシステム設計を考える上で役立つ知識を得ることができる。将来的には32ビットアプリケーションの需要が減り、WOW64の役割も徐々に縮小していく可能性もあるが、現状では引き続き重要な役割を担っている。

関連コンテンツ