Wine

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

Wine(ワイン)は、主にLinux上でWindows専用アプリケーションを動作させるための補助ツール郡。

概要[編集]

例えば、長らく日本語だけで生きてきた日本人英語を理解するのは困難を極める。
似たような感じで、LinuxとWindowsは仕組みが異なり、LinuxにとってWindows専用アプリは「何を言っているのか分からない」わけで、そのままでは実行できない。
(逆もしかり、Linux専用アプリはそのままではWindowsで実行できない。Windows Subsystem for Linux等を用いる)
Wineはこれに対し、Windowsアプリが言っていることをLinuxにも分かるように「翻訳」する機能を提供する。

もう少し詳しい仕組み[編集]

一般的に、アプリケーションはOSAPIに対して、アプリがやって欲しいことを指示し、OSはその指示どおりに機能を提供している。
(「API」とは上記の例えで言う言語のようなもの。WindowsはWindowsAPIという言語しか理解できず、LinuxはLinuxAPIという言語しか理解できない)
WineはWindowsAPIをLinuxAPIへ変換する機能を持つ(互換レイヤー)。WindowsアプリがWineに対してWindowsAPIで話しかけると、WineはWindowsAPIをLinuxAPIへ変換し、Linuxへ伝える。自分が理解できるAPIで伝えられたLinuxは、晴れてWindowsアプリを実行できるというわけ。
似たような機能を有するものにエミュレーターおよび仮想マシンがある。両者とも「ハードウェアの真似をするソフトウェア」。
前者はある特定のCPUを真似する(少し古いゲーム機のエミュレーターを指す場合が多い)、後者はパソコン或いはサーバーのハードウェアを丸々再現する、という違いがある。
ハードウェアの真似はなかなか重たい処理であり、さらに仮想マシンの場合はハードウェア、そしてその仮想マシンの上にインストールされているWindowsの分まで処理しなければならず、往々にして動きはかなり重たくなる。
一方で、Wineはハードウェアの真似をしているわけではなく、強いて言えばWindowsOSの真似をしている。その仕組み上、特に仮想マシンと比べて動作が軽い。
ただし、言語の変換という処理が挟まる以上、同じパソコンで同じアプリケーションを動かす場合、WindowsよりLinux+Wineが少しだけ重たくなるのは原理上避けられない。一方で小さい構成のLinuxは往々にして素のWindowsより元々動作が軽い場合が多く、アプリによってはむしろWindowsよりLinux+Wineのほうがキビキビと動作する場面も。
Windowsエミュレーターに特化したOSとしてReact OSがある。ReactOSはWineの技術を大いに参考にしており、ReactOS開発で得られた知見がWineへフィードバックされている。

ゆっくり、しかし確実な発展[編集]

真似する元のWindowsはクローズドソース((オープンソースとは逆にソース非公開のソフト。プロプライエタリソフト)であり、詳細な仕様はマイクロソフトにしか分からない。
そのような秘密に包まれたWindowsの真似をするのは簡単なことではなく、Wineの開発初期段階から長い間、ごく単純なソフトが不完全ながら動作する程度、といった時期が続いた。
時代が進み、貢献者が増え、支援する企業も現れ、ゲームやMicrosoft Officeが徐々に動き始める。DirectX相当の機能も実現し、3Dゲームも問題なく動作するようになってきている(DirectX関連APIリクエストをOpenGLVulkanへ受け渡している)。
現在ではハードウェアに直接アクセスするようなもの、プロテクト保護されているといった難しいものでもない限り、かなりの数のWindowsアプリがほとんど問題なく動作する。

オンラインゲームなど、チート防止のためのプロテクト保護がかかっているものへの対応は難しい。不用意にLinux+Wineで遊ぼうとすると、誤解を受けてBANされてしまう恐れあり。

Wineツール類と使い方[編集]

wineコマンド
確実に使うには「wine」コマンドにWindows実行ファイル(exe)のパスを与えて使う。
例)wine ~/winfiles/winapp.exe
なお、wineコマンド内にはWindows定番コマンドがあらかじめ含まれている。
例)wine cmd (コマンドプロンプトを起動する)
例)wine explorer(エクスプローラーを起動する)
例)wine notepad (メモ帳を起動する)
例)wine regedit (レジストリエディタを起動する)
環境によってはWindows実行ファイルの拡張子「exe」がwineコマンドに関連付けられている場合があるが、必ずしもそうとは限らず(初版作成者のLinux Mint環境では、exeファイルをダブルクリックすると何故か「圧縮アーカイブ」として圧縮・解凍ユーティリティが起動する…)、引数つきでwineコマンドを使うほうが確実。
winecfg
Wine全般の設定を行う。Wineは規定ではWindows 10を真似るように動作するが、古いWindowsアプリは「最新のWindowsでは逆にバグる」場合が少なくなく、その場合はwinecfgにてWindows 7またはWindows XPを真似るよう設定変更することで、うまく動作する場合がある。
(非公式)WineTricks
Wine公式ツールには含まれないものの、Wineを使う上で定番となっている支援スクリプト群。Wineだけでは足りないものをインターネット上からダウンロード・インストールしてくれる。日本語フォントが文字化けしている場合、WineTricks経由で対策フォントを導入することで正常表示できる場合がある。VisualC++ランタイムDLLや.NET Frameworkなども導入可能だが、マイクロソフト公式のランタイムはWindows正規ライセンスを必要とするものがあり、使用にあたってはライセンス違反にならないよう自身で注意が必要。

SteamにおけるProton[編集]

ここ最近、ゲームのダウンロード販売サイトSteamを運営するValveが、Wineからスピンオフした「Proton」を開発。全てのタイトルではないものの、かなりの数のWindowsゲームがLinuxマシンで動作するようになっている。
ValveはArch Linuxを元にした独自のLinuxOSである「SteamOS」を開発、Protonを含むSteamクライアントを標準搭載。さらにそのSteamOSを搭載したポーダブルゲーミングPCである「Steam Deck」を開発・販売。Linux由来でありながら、今まで購入してきたWindows専用ゲームの多くを外出先で遊べるようになるということで、少しずつ売れている模様。
Protonの互換性を高める開発を絶え間なく続ける、有名大型タイトルに対してProton側でも積極的に対応する、そしてProton開発で得られた知見を本家Wineへフィードバックするなど、ValveのLinuxゲーミングシーンへの貢献は一定の評価を受けている。
弊害として、どうせProtonで動く可能性がある以上、ほとんどのゲームメーカーはわざわざコストをかけてLinuxネイティブ対応する必要がなくなっている。
ただでさえ、ゲーム用途であろうとなかろうとWindowsシェアはLinuxシェアより圧倒的であり、Linuxに金はかけられない、と普通の営利企業は考える。
結果としてWindows専用タイトルはいよいよ増え、Linuxネイティブのタイトルは一向に増えない傾向。少数のマイクロソフト嫌いな開発者やLinux偏愛開発者がわざわざLinuxネイティブ対応する場合もあるにはあるが。
一方でLinuxベースのOSを積んだSteam Deckの発売、およびそれ以前からのProton開発を通したValveの努力・貢献により、最近の調査によるとゲーミングPCのOSのシェアにおいてLinuxがmacOSを抜いて2位に浮上(とはいっても1位のWindowsのシェアは9割以上だけど)。
繰り返すが全てのゲームが完璧に動作するわけではない、Linuxを動かすハードウェアもある程度のスペックは必要など、敷居が低いわけではないが「OSに金だすのはなんかイヤ」という天邪鬼な貴方…Linuxゲーミングという沼に片足を突っ込んでみませんか?

関連項目[編集]

外部リンク[編集]

  • WineHQ - Wine公式サイト(英語)
  • ProtonDB - LinuxでSteamを遊ぶユーザーによる非公式動作確認データベース(英語)