長く引っぱったWINEがらみの話題も今回で一段落となります。このシリーズを書き始めて約8ヵ月、WINEに手を出してからちょうど1年くらいかかった計算です。最終回の今回はWINEの簡単な使い方やPlamo LinuxでのWINEサポートの現状等を紹介します。
WINEの使い方
WINEの使い方自体は簡単で、引数として実行したいWindowsアプリ(exeファイル)を指定するだけです。
一例として、同人ゲームとして有名な「東方プロジェクト」の体験版を取りあげてみましょう。「東方プロジェクト」とは、いわゆる「弾幕シューティング」タイプのゲームで、画面を華麗に埋めつくす弾幕をかわしつつ、敵のボスキャラを撃破していくゲームです。
「東方プロジェクト」のゲームは、正式版はコミケ等で販売される商用ソフトなものの、最初の数ステージを試せる体験版がインターネット上に無料公開されているのでWINEのテストには便利です。今回はそれらの中から「東方紺珠伝~Legacy of Lunatic Kingdom」を試してみることにします。
まず、ダウンロードのページから体験版をダウンロードします。ミラーサイトからダウンロードした「東方紺珠伝」の体験版はsetup_th15_001b.zipというZIP圧縮されたファイルでした。確認すると中身はexeファイル一つだけなので、そのまま展開しておきます。
取り出したexeファイルを引数にWINEを実行すると、Windows上で実行した場合と同様にセットアップウィンドウが開き、各種設定を"OK"していくとインストールが完了して、Linuxのデスクトップ上にアイコンが用意されます。
用意されたアイコンをダブルクリックするとゲームの画面が開き、音楽や効果音も含めてゲームが正常に動作します。
このようにWINEは、Windows用のソフトウェアをWINEの提供する仮想的なWindows環境にインストールして、そのソフトウェアにはWindows環境で動いていると思いこませる一方、Linux側にはユーザ領域で動く1つのコマンドとして振舞い、WindowsとLinuxの橋渡しをするように働きます。
WINEの提供する仮想Windows環境
それではWINEはどのように仮想的なWindows環境を作っているのか、少しその内部構造を紹介してみましょう。
WINEは、起動したユーザのホームディレクトリに".wine"というディレクトリを作り、その下に各種ディレクトリや設定ファイルを用意します。
古くからのPCユーザには見当が付くように、このdrive_cというディレクトリ以下に仮想的なWindows環境が用意されます。
今回インストールした「東方紺珠伝」は、"~/.wine/drive_c/Program Files (x86)/"以下にインストールされていました。
デスクトップ上に作成された「東方紺珠伝」のアイコンを調べると、確かにこのディレクトリにある"th15.exe"を起動する設定になっています。
コードを確認したわけではないものの、このデスクトップアイコンは、「東方紺珠伝」のインストーラが作成するWindows用のショートカット(*.lnk)をLinuxのデスクトップ環境用に変換したもののようです。
先に見たデスクトップアイコンが示すように、WINEの仮想Windows内(~/.wine/以下)にインストールされたソフトウェアは、そのソフトウェアへのフルパスを直接指定して起動することも可能です。
一方、インストールしたソフトウェアを削除したい場合、インストール先のディレクトリにあるアンインストーラ("unins000.exe")をWINE経由で実行してもいいものの、"control"を引数にWINEを起動すると、昔懐しい(Windows 3.1くらいの)コントロールパネルが開き、そこにある「プログラムの追加と削除」から指定したソフトウェアを削除することができます。
さて、WINEの興味深い機能のひとつに「複数の仮想Windows環境を併存させる」というものがあります。先に紹介したように、デフォルトでは~/.wine/というディレクトリを使うものの、このディレクトリはWINEPREFIXという環境変数で変更可能です。加えて、WINEARCHという環境変数で64ビット環境と32ビット環境を切り替えることもできます。
たとえば~/Wine32/以下に、32ビット版のみのWINE環境を作りたい場合は、以下のようなコマンドを実行します。
このようにして作った~/Wine32/には、先に見た~/.wine/と異なり、32ビット用の環境しか用意されません。
このようにWINEでは、WINEPREFIX環境変数で複数の仮想Windows環境を切り替え、ソフトウェアごとに異なるフォントやDLLを利用できるようになっています。この機能を使えば、特定のDLLを必要として他と相性が悪いソフトウェア用に、カスタマイズした専用環境を用意することができます。
WINE on Plamoの現状と課題
最後にPlamo Linux上で動かすWINEの現状と課題について触れておきます。
Windows用のソフトウェア(主にゲーム :-)をあれこれ試してみたところ、今回紹介した東方プロジェクトの体験版やマージャンゲーム(たとえば「3D麻雀悠々」)、カードゲーム(たとえば「123 Free Solitare」)など、少し古めの小規模なゲームはたいてい動くものの、大規模な3Dオンラインゲーム(たとえば「World of Tanks」)などは動かないようです。
両者の違いを考えると、どうやら使っているDirectXの世代が違っていて、DirectX9くらいまでのゲームは動くものの、それ以降を使っているものはダメなようです。過去の記事でも触れたように、WINEではDirectX9まではOpenGLを使って実行するのに対し、DirectX10以降になるとVulkanと呼ばれる新しいAPIを使って実行するそうなので、Plamo LinuxのVulkan対応が不完全なのかも? と考えています。
もっとも、Vulkan回りは現在も開発が進行中で、数週間ごとに新しいバージョンがリリースされている上、WINEの側も似たようなペースでバージョンアップしているので、もう少し両者の開発が落ちついてから取り組んでもいいかな、とも思っています。
一方、WINEの作る仮想Windows環境の問題も考えられます。というのも、WindowsのソフトウェアはさまざまなDLL(ランタイム)を必要とし、必ずしもそれらの全てがWINEによって用意されているわけではないからです。VisualBasicやVC++など、広く使われているランタイムはパッケージとして配布されているものの、バージョンが複数あったりして何を入れればいいのか調べるのはかなり厄介ですし、ソフトウェアによっては特定のフォントが必須な場合もあるようです。
また、Plamo Linux側に必要なパッケージが不足している可能性もあります。過去にも触れたように、Plamo Linuxでは必ずしもWINEが要求する全てのライブラリを用意できたわけではなく、WINEの一部の機能を制限する形になっています。
それら制限される機能の中でも、libkrb5が対応するKerberos V認証回りは、Windowsでも標準的にサポートされるネットワーク認証機能なこともあり、対応しないとマズいかも…、と思っています。
少し視点を変えると、WINE Projectの最大サポーターでもあるCodeWeavers社が販売しているCrossOver Linuxという商用ソフトウェアもあります。"CrossOver Linux"はWINEのソースコードを元に、設定ツールやパッチ、商用サポートなどを追加したソフトウェアで、「常に開発中」のWINEを一般ユーザにも使い易くしています。CodeWeaver社は、開発したパッチをWINE Projectに提供する等、WINEの開発にも積極的に関わっているそうです。
また、Steamと言うゲーム配信環境を提供しているValve社も、WINEを元にしたProtonというソフトウェアを開発し、SteamのLinuxクライアント環境でWindows用ゲームを直接実行できるようにしています。
このあたりを試せば何かヒントが見えるかも…、と思ってはいるものの、そもそも体験版すらコンプリートできないヘボゲーマーな筆者には、そこまでしてWINEを極める気力が出ないというのが正直なところです(苦笑)。