コンテンツにスキップ

Wine

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Wine
Wine logo
Arch Linux上の winecfg
開発元 Wine チーム
最新版 9.0[1] ウィキデータを編集 - 2024年1月16日 (10か月前) [±]
リポジトリ ウィキデータを編集
対応OS UNIXUnix系OS
種別 互換レイヤー
ライセンス GNU Lesser General Public License
公式サイト https://www.winehq.org/
テンプレートを表示

Wine (ワイン)は、オープンソースWindows API 実装を通じて、主としてx86アーキテクチャ上のUnix系オペレーティングシステム (POSIX準拠OS) においてWindowsアプリケーションをネイティブ動作させることを目標とするプログラム群である。

X Window Systemを利用して、16ビット32ビット64ビットWindows向けGUIアプリケーションと、MS-DOS用アプリケーションを動作させることができる。x86上のLinux環境を中心に開発されているので、SolarisFreeBSDmacOSなどに移植された環境では問題が発生する可能性が比較的高い。原理上、カーネルレベルのスレッドに対応しているOSであることが必要である[2]

名称は、もともとは頭字語であることを意識して、大文字でWINEと表記していたことがあったが、現在はWineと表記するのが正式である[3]。"WINdows Emulator" に由来すると説明されることもあるが、Wine Is Not an Emulator に由来するという、前者とは矛盾するジョークのような説明がされることもある。これは技術的理由によるもので、詳しくは後述する。

ライセンスにLGPLを採用している[4]フリーソフトウェアである。

かつてはBSDライセンスを採用していた。

概要

[編集]
Wine 上のMedia Player Classic バージョン 6.4.8.3

Wine以外にLinux上でWindowsアプリケーションを動作させる方法としては、XenVMwareなど、仮想マシンを構築するものが代表的である。Wineはそれらとは異なり、互換レイヤーとして動作する。つまり、Windowsプログラムが要求するDLLの代替品を供給し、また Windows NTカーネルプロセスを再現することによって、Windowsプログラムをネイティブ動作させる。簡単に言えばWineは、Linux上でWindowsを動作させているのではなく、LinuxにWindowsと同じ挙動をさせているのである。したがってWineでWindowsプログラムを動作させる上では、Windowsのコピーもライセンスも必要ではない[5]。ただし、Wineのエミュレーションライブラリが不完全な場合にはWindowsのDLLを利用することで解決できる場合がある[6]が、その場合にはWineを動作させるコンピュータにWindowsのコピーとライセンスが必要である。

ところで、Wineという名称は "Wine" Is Not an Emulator を略した再帰的頭字語であるとも説明される[7]DOSBoxやzsnesのような典型的なエミュレータと異なり、Wineは基本的にはCPUエミュレーションを行っていない。そのため通常この種のエミュレータに発生する、オリジナル環境と比べた著しいパフォーマンス低下がWineには見られない。このことを強調する開発者の立場から、そのような説明がなされる。実際、アプリケーションによってはWindows上より高速に動作することもあるという[7]。同じく基本的にはCPUエミュレーションを行わない、x86上の仮想マシンにインストールしたWindows環境と比べても、そのような実行速度は優れたものである。しかし、その代償としてプロジェクト規模が巨大化したWineは、人的資源の不足のため本来実装されるべき機能が依然として完全には提供されていない[8]。そのため再現性は仮想マシン上にインストールしたWindowsと比べて大きく劣る。高速化よりはむしろ再現性の向上を第一の目標として開発されている。 なお、ドライバは対応しない。カーネルモードドライバが多く、カーネルモードでの実行が必要なため。[9]

Wineに含まれるWindows API実装はWinelibと呼ばれ、これを用いてWindowsプログラムのソースコードからプラットフォームネイティブなバイナリ実行ファイルやDLL)をビルドすることも可能である。しかしながら、x86環境では付属するバイナリローダー(wineコマンド)からコンパイル済みバイナリを起動すればよく、実用上は実行速度にも大きな差はない。非x86環境でWindowsバイナリを実行するためには、QEMUなどをCPUエミュレータとして利用可能[10]だが、低速である。

歴史

[編集]

サン・マイクロシステムズPWI (Public Windows Initiative) やWabi英語版[11](Windows API のパブリックドメインソフトウェアによる完全代替を目指したもの)の影響を受け、ボブ・アムスタッドとエリック・ヤングデイルによりWindowsアプリケーションをLinux上で動作させることを目的としてWineプロジェクトは1993年にネットニュース上で創始された[12]。当初はWindows 3.1用(16 ビット)アプリケーションに主眼を置いたが、現在は 32ビット中心に開発されている。1994年以降はアレクサンダー・ジュリアードがプロジェクトリーダーを務めている[13]

プロジェクトは困難を極め、なかなか互換性が高まらなかった。特に 1990年代は、日本語環境においてアプリケーションが思うように動かせない状況が続き、Wineのインストールや動作にもそれなりのスキルが必要とされていた。

Wineプロジェクトに着目したコーレルなどの支援によって一時的に状況は好転したが、マイクロソフトのコーレルへの大規模投資が原因となって、この支援は中止された[14]

現在はCodeWeaversがジュリアードらを雇っている[13]。また、GoogleはLinux版PicasaでWineを利用し、Wineの開発を支援している[15]

対応アプリケーション

[編集]

WineにおけるWindowsアプリケーションの動作状態は Wine アプリケーションデータベース (AppDB) で調べることができる。Wine AppDBではWineユーザからの動作報告がデータベース化されており、アプリケーションが動作状況の良い順に "Platinum"、"Gold"、"Silver"、"Bronze"、"Garbage" で格付けされている[30]。一般にWineのバージョン毎に格付けが変わる。

Wine 1.0で

がリリース基準に使われた[31]こともあり、Wine 1.0ではこれらのアプリケーションが問題なく動作すると報告されている[32][33][34][35]

補足しておくと、WineにDirectXのランタイムをインストールするのは非推奨である。これはDirectXが直接ハードウェアをコントロールすることがあるため、Windowsそのものが存在しているわけではないWine環境においては、CPUやGPUといったハードウェアを破壊しかねない可能性があるためである。また、Wineが搭載しているDirectXのランタイムで大抵のアプリケーションは動く。

付属プログラム

[編集]

Wineにはwineコマンドを中心として様々なプログラムやツールが含まれている[36]

wine
一般に Wineがインストールされた環境でWindowsプログラムを起動するにはEXEファイルをダブルクリックすればよい。しかし、場合によってはデバッグなどの目的でコマンドラインからプログラムを起動させたいことがある。wineはこのようなときに用いるコマンドで、引数にWindowsプログラムを指定する。
Wine設定 (winecfg)
Wine全体の設定をGUIで行うためのプログラムである。
Wine File (winefile)
MDI 型のファイルマネージャであり、Windows Explorer に対応する(見た目としてはWindows 3.xファイルマネージャーに近い)。コマンドラインからwine explorerと入力することでも起動する。
Wine Application Uninstaller (uninstaller)
GUIでプログラムをアンインストールするためのツールであり、Windowsの「プログラムの変更と削除」に対応する。
regedit
GUIでレジストリを編集するためのプログラムであり、同名のWindows付属プログラムに対応する。

コマンドプロンプト (cmd)、メモ帳 (notepad)、タスクマネージャ (taskmgr)、マインスイーパ (winemine) やワードパッド (wordpad) コントロールパネル (control) なども含まれている。コマンドラインから起動する場合、cmd、taskmgr、wordpad、controlなど一部のプログラムについては、wineコマンドの引数としてプログラム名を指定して起動する。例えば、ワードパッドを起動するには仮想端末から

$ wine wordpad

と入力する。なお $ は Bash 等のシェルにおけるプロンプトである。

Wine Tools

[編集]

Wine ToolsはWineに含まれるツール群である。これらはWindows型実行可能ファイルではなく、PerlC言語などで記述されたUnixネイティブプログラムである。

Wine Server (wineserver)
WineにおいてWindowsのカーネルプロセスを再現するためのプログラム。
Wine Message Compiler(wmc)
メッセージファイル(.mc)をコンパイルするプログラム。
Wine C and C++ MinGW Compatible Compiler (winegcc)
Linux上でMinGWの互換コンパイルを可能にするためのgccの実装。
Wine Interface Definition Language (IDL) compiler (widl)
IDLで記述されたインターフェースをコンパイルするプログラム。
Wine DLL Tool (winedump)
DLLを解析し、インポート/エクスポートされている関数を調べ、スペックファイル(.spec)を生成するためのプログラム。
Wine Maker (winemaker)
WindowsのプロジェクトをWine向けにコンパイルするプログラム。
Wine Console (wineconsole)
コマンドラインインターフェースのWindowsソフトウェアを実行するためのプログラム。

ディレクトリ

[編集]

WineやアプリケーションのEXEファイルやレジストリなどはホームディレクトリ内の.wineディレクトリ下に保存される。保存先は環境変数WINEPREFIXを設定することで変更できる[37]。かつてWineの設定ファイルとしてconfigというファイルがあったが、2005年に廃止され[38]現在は拡張子がregのファイルに設定が保存されるようになっている。

アプリケーションのデスクトップエントリファイルやアイコンなどはホームディレクトリ下の

  • .config/menus/applications-merged
  • .local/share/applications/wine
  • .local/share/desktop-directories
  • .local/share/icons

にインストールされる[39]。これらのディレクトリにインストールされるファイルはGNOMEKDEなどでメニューに使われる。

デバッグ

[編集]

Wineは環境変数WINEDEBUGを使用することで、様々なデバッグが行える。[40]

構文

$export WINEDEBUG=[ クラス ][+|-] チャンネル [,[ クラス2 ][+|-] チャンネル2 ]

[ クラス ] にはwarn、err、fixme、traceのいずれかを指定する。また、[ +|- ]の指定によってチャンネルの入れるか入れないかを切り替える。

チャンネルにはrelay、dll、heap、allなどがある。詳しくは[40]のList of Debug Channelsの章を参照。

$WINEDEBUG=warn+all,+relay

全ての警告メッセージを表示する。すべての中継メッセージを表示する。

この環境変数の指定によって特定のdllの関数がどのような引数で呼び出されているか、どこでどのような関数が完全に実装されていないかが分かる。

Wineに似た他のプロジェクト

[編集]
  • CodeWeavers - アメリカの会社であり、Windows向けのブラウザ用プラグインソフトをLinux上で動作させるCodeWeavers Pluginなどを開発・販売している。Wineをベースとしている。また、Windowsアプリケーションを動作させるCrossOver Linuxという製品や、macOS上でWin32アプリケーションを動作させるCrossOver Macを出荷している。
  • cedega - TransGaming TechnologiesのWineの改良版プロジェクト。Wineよりも先にDirectXに対応していたのが特徴。Windows用ゲームをLinux上で動かすことを主目的にしていた。
  • ReactOS - Windows NTとバイナリレベル・ドライバレベルでの互換性を確保することを目標とした、オープンソースプロジェクト。Wineとも協力して開発を進めている。(これはWindows NTの互換性を実現するもので、Windows XPなどの最新OSは対象外である)
  • Game Porting Tool - AppleによるmacOS Sonoma向けで、Wineをベースにx86-64コードをAArch64コードへ、DirectXMetal 3へ変換する仕組みを備えたWindows PC向けゲームのMacへの移植環境[41][42][43]

Wine 用のツール

[編集]
  • Wine-Doors - GNOMEデスクトップ用のアプリケーション管理ツールであり、Wineに機能を追加する。Wine-Doorsは WineTools の代りとなるもので、WineToolsの機能を改善し、より現代的な設計アプローチのもとでWineToolsのアイディアを発展させることを狙いとしている。
  • WineBot - apt / dpkg / rpmのようなネイティブなLinuxパッケージマネージャと同様の方法で動作するようなアプリケーション管理ツールである。このプロジェクトの狙いは特定のアプリケーションをインストールするのに必要なハックを追跡するためのプラットフォームと、Wine プロジェクトの自動退行テストフレームワークを提供することに加え、Wine-Doorsとのデータ互換性をもたせることにある。
  • WineTricks - Wineを正しく動作させるのに必要で基本的なコンポーネントをインストールするためのスクリプトである。これを使えばQuickTimeWindows Media Player.NET FrameworkDirectXランタイムライブラリなどが簡単にインストールできる。
  • IEs4Linux - バージョン5から6までのInternet Explorer (IE) をインストールするためのユーティリティであり、まもなくIE7もサポートされる予定である。現在IE7のエンジンはユーザが選択したときにのみインストールされる(ベータ段階)。ただしIEのライセンスの関係上、一部のバージョンのIEに関してWine上で使用することはライセンス違反となる可能性が高い[注釈 1]。また、それ以外のバージョンでもWindowsのライセンスが必須[注釈 2]である。
  • WineLocale - Windowsプログラムの中には日本語や中国語、韓国語など(CJKV)で使われることのある非Unicode文字コードのサポートを必要とするものがある。 WineLocaleはこのようなプログラムをWineで動作させるための拡張ユーティリティである。Ubuntuのフォーラムにこのツールを使うためのドキュメントがいくつかある[44]
  • PlayOnLinux - Wineを使ってWindowsのゲームのインストールを簡単にするためのアプリケーション。特別な設定が必要なゲームに対して適用するスクリプトのオンラインデータベースを使っている。ゲームがデータベースに無ければ、手動インストールもできる。ゲーム以外のプログラムもインストールでき、あるプログラムが他のプログラムに干渉することを避け隔離するため個々のプログラムは異なるコンテナ(環境変数の WINEPREFIX)に置かれる。これはCrossOver Officeのbottlesが動作する方法と同じである。

Wineを利用しているソフトウェア

[編集]
  • CrossOver - Intel Mac、Linux上でWindowsアプリケーションを利用するためのソフトウェア。あらかじめ動作を保証するアプリケーションを提示しており、そのアプリケーションに関してはドライバのインストールなどテクニカルな設定を行う必要が無い。場合によってはある程度テクニカルな設定を行う必要があるが、保証しないアプリケーションに関しても概ね動作する。多くのドライバを必要とするWindows専用のゲームソフトウェアをIntel Mac、Linux上で動かす事を主眼に据えたGamesバージョンも存在する。
  • MikuInstaller - IntelベースのMacintoshにWindows用のDAWソフトである 初音ミク をインストールするための環境パッケージ。WineやCrossOverのソースコードの一部を利用している。 初音ミクをインストールするためのソフトと謳われているものの、書き換えなくても実行できるソフトがある可能性が示唆されておりまた同梱のWineを書き換えることで様々なアプリケーションをMacネイティブで実行できるともしている。なお、現在開発は中止されている。
  • Pipelight - Wineを使い、Flash PlayerMicrosoft SilverlightなどのWindows以外のOS向けのプラグインが提供されていないものを使用可能にするプロジェクト。開発終了。
  • ReactOS - カーネルドライバーを除くWindowsシステムライブラリの実装に用いられる。
  • VirtualBox - 一部のDirect3D操作にWineのソースコードを使用。
  • Parallels Desktop for Mac - DirectXの操作にWineのソースコードを使用。

参照

[編集]
  • Darling - Wineと同様にOSXのコードをオープンソース実装しようというプロジェクト。

注釈

[編集]
  1. ^ 例えばIE6 Service Pack 1のEULAには「本OSコンポーネントは、該当するOS製品の既存の機能をアップデート、またはこれに追加もしくは代替するためにのみ提供されています。」という一文があり、Windowsのアップグレードとしてのみ使用できる。
  2. ^ 例えばIE7のEULAには「お客様は、マイクロソフト Windows XP SP2 and Windows Server 2003 SP1 ソフトウェアの有効なライセンス取得済みの複製 (以下「本ソフトウェア」といいます) ごとに、本追加物の複製 1 部を使用できます。」という一文があり、Windowsのライセンスと同等とみなしている。

出典

[編集]
  1. ^ "Wine 9.0 Released"; 閲覧日: 2024年1月16日; 作品または名前の言語: 英語; 出版日: 2024年1月16日.
  2. ^ Under what hardware platform(s) and operating system(s) will Wine(Lib) run?
  3. ^ Why do some people write WINE and not Wine?
  4. ^ Wine License
  5. ^ Do I need to have a DOS partition on my system to use Wine?
  6. ^ My program doesn't work, what can I do?
  7. ^ a b Does Wine emulate a full computer?
  8. ^ Win API Stats
  9. ^ FAQ - WineHQ Wiki
  10. ^ Wine の起動
  11. ^ Wine project status”. groups.google.com. 2024年1月22日閲覧。
  12. ^ WABI available on Linux or not”. groups.google.com. 2024年1月22日閲覧。
  13. ^ a b CodeWeavers - People”. web.archive.org (2005年7月12日). 2005年7月12日時点のオリジナルよりアーカイブ。2024年1月22日閲覧。
  14. ^ That's all folks: Corel leaves Open Source behind
  15. ^ Google Sponsors Wine Improvements
  16. ^ Wine Release Plan
  17. ^ Wine 1.2-rc1 Released” (英語). WineHQ. 2024年1月22日閲覧。
  18. ^ The Wine team is proud to announce that the stable release Wine 1.2 is” (英語). WineHQ. 2024年1月22日閲覧。
  19. ^ The Wine team is proud to announce that the stable release Wine 1.4” (英語). WineHQ. 2024年1月22日閲覧。
  20. ^ The Wine team is proud to announce that the stable release Wine 1.6” (英語). WineHQ. 2024年1月22日閲覧。
  21. ^ The Wine team is proud to announce that the stable release Wine 1.8” (英語). WineHQ. 2024年1月22日閲覧。
  22. ^ The Wine team is proud to announce that the stable release Wine 2.0” (英語). WineHQ. 2024年1月22日閲覧。
  23. ^ The Wine team is proud to announce that the stable release Wine 3.0” (英語). WineHQ. 2024年1月22日閲覧。
  24. ^ The Wine team is proud to announce that the stable release Wine 4.0” (英語). WineHQ. 2024年1月22日閲覧。
  25. ^ The Wine team is proud to announce that the stable release Wine 5.0” (英語). WineHQ. 2024年1月22日閲覧。
  26. ^ 株式会社インプレス (2021年1月15日). “「Wine 6.0」が正式リリース ~「WineD3D」のための「Vulkan」レンダラーが実験的に実装/「Direct3D 9」や「Direct3D 11」で未対応だった機能の実装も進む”. 窓の杜. 2024年1月22日閲覧。
  27. ^ 株式会社インプレス (2022年1月20日). “「Wine 7.0」が正式リリース ~新しいWoW64アーキテクチャーなどを導入/Linux環境などでWindowsのGUIアプリを直接実行できる互換性レイヤー”. 窓の杜. 2024年1月22日閲覧。
  28. ^ 株式会社インプレス (2023年1月26日). “「Wine 8.0」がリリース ~LinuxでWindowsのGUIアプリを直接実行できる互換レイヤー/4年越しのPE移行が完了、グラフィックス・ゲームの対応強化や文字欠けへの対策も”. 窓の杜. 2024年1月22日閲覧。
  29. ^ 株式会社インプレス (2024年1月17日). “「Wine 9.0」がリリース ~新しい「WoW64」モードを導入、IME対応も改善へ/実験的な「Wayland」グラフィックドライバーも���加”. 窓の杜. 2024年1月22日閲覧。
  30. ^ Maintainer Rating Definitions
  31. ^ Wine 1.0 Release Criteria
  32. ^ WineHQ - Adobe Photoshop”. appdb.winehq.org. 2024年1月22日閲覧。
  33. ^ WineHQ - Microsoft Powerpoint Viewer”. appdb.winehq.org. 2024年1月22日閲覧。
  34. ^ WineHQ - Microsoft Word Viewer”. appdb.winehq.org. 2024年1月22日閲覧。
  35. ^ WineHQ - Microsoft Excel Viewer”. appdb.winehq.org. 2024年1月22日閲覧。
  36. ^ ListofCommands
  37. ^ WineHQ - WINE” (英語). WineHQ. 2024年1月22日閲覧。
  38. ^ The config File Has Died!” (英語). WineHQ. 2024年1月22日閲覧。
  39. ^ FAQ - WineHQ Wiki”. wiki.winehq.org. 2024年1月22日閲覧。
  40. ^ a b Debug Channels - WineHQ Wiki”. wiki.winehq.org. 2024年1月22日閲覧。
  41. ^ Wine comes to macOS: Apple’s Game Porting Toolkit powered by CrossOver source code | CodeWeavers Blog” (英語). CodeWeavers. 2023年6月23日閲覧。
  42. ^ Game Porting Tool - Apple”. developer.apple.com. Apple. 2023年6月23日閲覧。
  43. ^ Apple、WindowsゲームをMacに移植する「Game Porting Tool」リリース”. ITmedia NEWS. 2023年6月23日閲覧。
  44. ^ HOWTO: CJK in Wine (Chinese, Japanese & Korean)”. ubuntuforums.org. 2024年1月22日閲覧。

関連項目

[編集]

外部リンク

[編集]