Wine
テンプレート:Infobox Wine (ワイン)は、オープンソースの Windows API 実装を通じて、主としてx86アーキテクチャ上のUnix系オペレーティングシステム (OS) においてWindows用アプリケーションをネイティブ動作させることを目標とするプログラム群である。
X Window Systemを利用して、16ビット・32ビット・64ビットWindows向けGUIアプリケーションを動作させることができるほか、MS-DOS用アプリケーションも動作する。x86上のLinux環境を中心に開発されているので、Solaris 、FreeBSD 、Mac OS Xなど、他のOSにも移植されているが、それらの環境下では問題が発生する可能性は比較的高い。原理上、カーネルレベルのスレッドに対応しているOSであることが必要である[1]。
名称は、もともとは頭字語であることを意識して、大文字でWINEと表記していたことがあったが、現在はWineと表記するのが正式である[2]。"WINdows Emulator" に由来すると説明されることもあるが、Wine Is Not an Emulator に由来するという、一見してジョークとも取れる、前者とは矛盾する説明がなされることもあり、これは技術的理由による。詳しくは後述する。
ライセンスにLGPLを採用している[3]。フリーソフトウェアである。
かつてはBSDライセンスを採用していた。
目次
概要
Wine以外にLinux上でWindowsアプリケーションを動作させる方法としては、XenやVMwareなど、仮想マシンを構築するものが代表的である。Wineはそれらとは異なり、互換レイヤーとして動作する。つまり、Windowsプログラムが要求するDLLの代替品を供給し、また Windows NTカーネルのプロセスを再現することによって、Windowsプログラムをネイティブ動作させる。簡単に言えばWineは、Linux上でWindowsを動作させているのではなく、LinuxにWindowsと同じ挙動をさせているのである。したがってWineでWindowsプログラムを動作させる上では、Windowsのコピーもライセンスも必要ではない[4]。ただし、Wineのエミュレーションライブラリが不完全な場合にはWindowsのDLLを利用することで解決できる場合がある[5]が、その場合にはWineを動作させるコンピュータにWindowsのコピーとライセンスが必要である。
ところで、Wineという名称は "Wine" Is Not an Emulator を略した再帰的頭字語であるとも説明される[6]。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]。
最初のベータ版となったバージョン 0.9 は 2005年10月25日にリリースされ、最初のリリース候補版 (1.0-rc1) は 2008年5月9日にリリースされた。2008年6月17日にはWine 1.0がリリースされた[16]。2010年5月21日Wine 1.2のリリース候補版 (1.2-rc1) がリリースされ[17]、2010年7月16日、Wine 1.2がリリースされた。[18]2012年3月7日には、Wine 1.4がリリースされた。2014年5月現在のWineのバージョンは安定版1.6.2、ベータ版1.7.18である。なお、Wine1.8のリリースはバグ 17273[19]が修正され次第発表される予定である。
対応アプリケーション
WineにおけるWindowsアプリケーションの動作状態は Wine アプリケーションデータベース (AppDB) で調べることができる。Wine AppDBではWineユーザからの動作報告がデータベース化されており、アプリケーションが動作状況の良い順に "Platinum"、"Gold"、"Silver"、"Bronze"、"Garbage" で格付けされている[20]。一般にWineのバージョン毎に格付けが変わる。
Wine 1.0で
- Adobe Photoshop CS2体験版
- Microsoft PowerPoint Viewer 97と2003
- Microsoft Word Viewer 97と2003
- Microsoft Excel Viewer 97と2003
がリリース基準に使われた[21]こともあり、Wine 1.0ではこれらのアプリケーションが問題なく動作すると報告されている[22][23][24][25]。
補足しておくと、WineにDirectXのランタイムをインストールするのは非推奨である。これはDirectXが直接ハードウェアをコントロールすることがあるため、Windowsそのものが存在しているわけではないWine環境においては、CPUやGPUといったハードウェアを 破壊しかねない可能性があるためである。また、Wineが搭載しているDirectX 9のランタイムで大抵のアプリケーションは動く。
付属プログラム
Wineにはwineコマンドを中心として様々なプログラムやツールが含まれている[26]。
- 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は多くのツールを備えている。これらについてはWine Toolsを参照。
バージョンにおける変更
以下に最新版の変更履歴を表示する(英語) [27]
Wine 1.7.18 Released
May 2, 2014
The Wine development release 1.7.18 is now available.
What's new in this release:
Improved OLE Accessible Object support.
Window sizing improvements in the Mac driver.
Fixes for various memory issues found by Valgrind.
A few more MSHTML functions.
Some DirectDraw cleanups.
Various bug fixes.
ディレクトリ
WineやアプリケーションのEXEファイルやレジストリなどはホームディレクトリ内の.wineディレクトリ下に保存される。保存先は環境変数WINEPREFIXを設定することで変更できる[28]。かつてWineの設定ファイルとしてconfigというファイルがあったが、2005年に廃止され[29]現在は拡張子がregのファイルに設定が保存されるようになっている。
アプリケーションのデスクトップエントリファイルやアイコンなどはホームディレクトリ下の
- .config/menus/applications-merged
- .local/share/applications/wine
- .local/share/desktop-directories
- .local/share/icons
にインストールされる[30]。これらのディレクトリにインストールされるファイルはGNOMEやKDEなどでメニューに使われる。
デバッグ
Wineは環境変数WINEDEBUGを使用することで、様々なデバッグが行える。[31]
構文
$export WINEDEBUG=[ クラス ][+|-] チャンネル [,[ クラス2 ][+|-] チャンネル2 ]
[ クラス ] にはwarn、err、fixme、traceのいずれかを指定する。また、[ +|- ]の指定によってチャンネルの入れるか入れないかを切り替える。
チャンネルにはrelay、dll、heap、allなどがある。詳しくは[32]のList of Debug Channelsの章を参照。
例
$WINEDEBUG=warn+all,+relay
全ての警告メッセージを表示する。すべての中継メッセージを表示する。
この環境変数の指定によって特定のdllの関数がどのような引数で呼び出されているか、どこでどのような関数が完全に実装されていないかが分かる。
Wineに似た他のプロジェクト
- CodeWeavers - アメリカの会社で、Windows向けのブラウザ用プラグインソフトをLinux上で動作させるCodeWeavers Pluginなどを開発・販売している。Wineベース。また、Windowsアプリケーションを動作させるCrossOver Linuxという製品や、Mac OS X上でWin32アプリケーションを動作させるCrossOver Macを出荷している。
- cedega - TransGaming TechnologiesのWineの改良版プロジェクト。 DirectXに対応しているのが特徴。主にWindows用ゲームをLinux上で動かすことを主目的にしている。
- ReactOS - Windows NTとバイナリレベル・ドライバレベルでの互換性を確保することを目標とした、オープンソースプロジェクト。Wineとも協力して開発を進めている。
Wine 用のツール
- Wine-Doors - GNOMEデスクトップ用のアプリケーション管理ツールであり、Wineに機能を追加する。Wine-Doorsは WineTools の代りとなるもので、WineToolsの機能を改善し、より現代的な設計アプローチのもとでWineToolsのアイディアを発展させることを狙いとしている。
- WineBot - apt / dpkg / rpmのようなネイティブなLinuxパッケージマネージャと同様の方法で動作するようなアプリケーション管理ツールである。このプロジェクトの狙いは特定のアプリケーションをインストールするのに必要なハックを追跡するためのプラットフォームと、Wine プロジェクトの自動退行テストのフレームワークを提供することに加え、Wine-Doorsとのデータ互換性をもたせることにある。
- WineTricks - Wineを正しく動作させるのに必要で基本的なコンポーネントをインストールするためのスクリプトである。これを使えばQuickTime、Windows Media Player、 .NET FrameworkやDirectXのランタイムライブラリなどが簡単にインストールできる。
- IEs4Linux - バージョン5から6までのInternet Explorer (IE) をインストールするためのユーティリティであり、まもなくIE7もサポートされる予定である。現在IE7のエンジンはユーザが選択したときにのみインストールされる(ベータ段階)。ただしIEのライセンスの関係上、一部のバージョンのIEに関してWine上で使用することはライセンス違反となる可能性が高い[注釈 1]。また、それ以外のバージョンでもWindowsのライセンスが必須[注釈 2]である。
- WineLocale - Windowsプログラムの中には日本語や中国語、韓国語などで使われることのある非Unicodeの文字コードのサポートを必要とするものがある。 WineLocaleはこのようなプログラムをWineで動作させるための拡張ユーティリティである。Ubuntuのフォーラムにこのツールを使うためのドキュメントがいくつかある[33]。
- 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 PlayerやMicrosoft SilverlightなどのWindows以外のOS向けのプラグインが提供されていないものを使用可能にするプロジェクト。
- ReactOS - カーネルドライバーを除くWindowsシステムライブラリの実装に用いられる。
- VirtualBox - 一部のDirect3D操作にWineのソースコードを使用。
- Parallels_Desktop_for_Mac - DirectXの操作にWineのソースコードを使用。
参照
Darling - Wineと同様にOSXのコードをオープンソース実装しようというプロジェクト。
脚注
注釈
出典
関連項目
外部リンク
- Wine HQ
- 公式 Wine フォーラム
- Wine アプリケーションデータベース
- Wine ニュースグループ(Google ウェブインターフェイス)
- Running Adobe Photoshop on Wineml:വൈന് (സോഫ്റ്റ്വെയര്)
引用エラー: 「注釈」という名前のグループの <ref>
タグがありますが、対応する <references group="注釈"/>
タグが見つからない、または閉じる </ref>
タグがありません