EasyWineの製作に100円のコストがかかっているかどうかという話 (Pixiv Fanbox)
Content
FANBOX をご利用の皆様、こんにちは。
最近 EasyWine を知った方はご存知ないかと思うのですが以前(6年間程)は無料で頒布していました。先日の頒布再開時に有料化したことで「EasyWine 有料かよ!」という声を Twitter で見かけるようになったのでコストの説明をさせていただこうかと思います。
EasyWine ですが、どこかのチームや企業が製作しているものではなく、個人で製作と頒布を行っています。(※私は Wine 自体の開発はしていません)
まずは普段どのように EasyWine を作っているのかというお話です。ちょっと動画を撮ってみたのでこちらを御覧ください。音声は収録されていません。
とても退屈な動画ですみません。これは configure という処理をしてから make という処理をしている部分の動画です。ソースコードというのは人間が書くものなので「テキスト」なのですが、実際にコンピュータで動かすために「バイナリ」という形式に変換します(テキストのままで動くものもあります)。このことを「コンパイル」とか「ビルド」とか呼んだりするのですが、動画編集で言うところのエンコードのようにとても重たい処理です。画面右下の CPU 使用率を見ていただくと make 中は 100 % に張り付いているのがわかると思います。動画の 4:25 あたりから make が始まりますがこれは ccache というキャッシュ機能を使っているのでまだ速い方です。ccache を使わない(使えない)場合はかなり遅くなります。後述しますが、これは仮想環境でビルドしているので更に遅くなっています。Wine は特に大きなプロジェクトなので ccache を使わない場合は 1 回の make に約 2 時間かかります。昔は 32-bit だけでしたが現在は 32-bit と 64-bit の 2 つのアーキテクチャをビルドしているので倍の時間、つまり約 4 時間かかります。更に Wine Stable 版、Wine Devel 版を作るとなると約 8 時間かかります。また、パラメータの値によってはビルドしたものが必ずしも正常に動くとは言えないので開発時は何度もやり直しになることがあります。実際、Wine Devel 4.20 のビルドでは出来上がったものがなかなか上手く動かず二週間近く手こずりました。
ビルドはある程度順序が決まっていて、順番を間違えたりパラメータの値が間違っていると正常なバイナリが出来ないことがあります。私が Wine をビルドするときに使っているスクリプトを下記に掲載します。(テキストをそのまま画像化したのでちょっと長くて申し訳ないです)
実際のスクリプトは GitHub でご覧いただけます。
https://github.com/mattintosh4/compact-wine/blob/master/build.sh
上記はシェルスクリプトというものです。ご存知無い方は何をしているのかまったくわからないと思いますが、「この手順とこのパラメータで処理してね」という流れを書いているだけなのでスクリプト自体はそれほど複雑でありません。これは Wine のビルドだけですが、依存関係(libpng など)をビルドするスクリプトも別にあり、そちらも Wine 同様にビルドに時間を要します。多くのソフトウェアがそうですが、Wine も Wine 単体では動かすどころか作ることすら出来ないのです。プロジェクトにもよりますが「ビルド」という作業自体なかなか難しく、Wine のビルドは難しい(または面倒な)部類に入ると思います。私は以前 RawTherapee という写真編集ソフトの Mac 版公式ビルド担当をしていたこともあるのですが個人的には GTK の次くらいに面倒だと思います。
このようにソースコードから実際に動くプログラムを作るというのは非常に時間のかかる作業なので「ダウンロードやインストールさえすればすぐに使える」ということは非常に便利なことなんですね。この作業等でコストが発生しています。
次に検証のコストです。macOS はだいたい一年おきに新しいバージョンがリリースされます。Apple のサポート期間は概ね 2 つか 3 つ前のバージョンまでですが、すべてのユーザが新しいバージョンにアップグレードしているわけではありませんし、macOS はインストール可能な筐体を絞ることもあるのでそれ以上アップグレード出来ないこともあります。macOS は Mavericks 以降から無償になりましたが、バージョン順で並べると下記のようにリリースされています。
・ 10.9 Mavericks
・ 10.10 Yosemite
・ 10.11 El Capitan
・ 10.12 Sierra
・ 10.13 High Sierra
・ 10.14 Mojave
2019年11月時点で Apple がサポートしているのは 10.13 High Sierra 以降です。ソフトウェア開発者として「Apple がサポートしていない OS は切ってもかまわない」という方針もあるのですが、そこは頑張って検証しています。
しかし、全バージョン分の Mac を用意するのは非常に困難なので、仮想環境で代用します。El Capitan は入手方法自体が特殊なので省いていますが下記のように 6 つの検証環境を用意しています。
macOS というのはアプリケーション形式(例えば "Install macOS Catalina.app" など)で配布されており、ISO では配布されていませんし、VM 用のイメージが配布されているわけでもありません。その為、macOS の仮想環境を用意するには OS イメージを作成しなければなりません。この OS イメージの作成もややテクニックが必要なところですし、その元となる古いバージョンのインストーラーを入手するのもやや難しいです。OS イメージが用意出来たら今度は OS のインストールですが、こちらは実機で行うのとほぼ同じことをするのでこれだけの台数分をインストールして初期設定を行うのもそれなりに時間がかかります。
また、Wine をビルドする時に使用する「Xcode」の問題もあります。「Xcode」というのは iOS アプリなんかを開発するために Apple が提供している SDK です。Xcode にも様々なバージョンがありますが、使用可能なバージョンは macOS のバージョンに左右されます(例えば Xcode 8.3.3 は Mojave では使えません)。先日改めて一通りの OS を検証したところ(メインで使っている)Mojave で Wine をビルドすると古い macOS で動かないものが出来上がるということが判明しました。どうも Xcode 8.3.3 を使わなければ古い macOS(Mavericks から High Sierra)で動く Wine を作れないようです。Xcode 8.3.3 がまともに動くのは Sierra か High Sierra です。つまり、古い macOS に対応させるためにわざわざ古い macOS を使わなくてはならないのです。ユーザが「自分が使っている macOS で動く Wine をビルドするなら特に気にする必要は無い」です。仮に Mojave を Windows 10、Sierra を Windows 7 だとします。私が「メインで使っているのが Mojave で古い OS 用に作るの面倒だからそれより前の OS を切り捨てる」ということは「Windows 7 以前のサポートを切り捨てる」ということになります。Windows 7 のサポート切ったら反感買いませんか。買いますよね。
次に、先日 Twitter にも書いたのですが…
twitter post: 1199689026447400961
という話です。同人誌にもしましたが、Wine は公式バイナリの他、Homebrew や MacPorts などのパッケージマネージャを使うことでご自分でインストールすることが出来るので Wine 自体は無償で使うことが出来ます。Homebrew のインストールから Wine のインストールまでで慣れてる方なら 15 分くらいでしょうか。
ちなみにこちらの本は BOOTH で販売しています。
https://hirubokari.booth.pm/items/1670429
ネットでもこの手の手順は探せば山程出てきます。EasyWine ではこのようなコマンド操作が不要なのでパッケージマネージャをインストールしたりコマンドを覚える手間がかかりません。また、日本語環境で文字化けが起きないような調整も加えています。この調整も自分でゼロからやろうとすると少なからず手間や学習コストがかかります。このコストは私にかかっているものではないですが、このコストを無償の範囲と捉えるか有償の範囲と捉えるかです。是非文字化けの解決方法を Google で調べて無償で出来る範囲か感じてみてください。
最後にですが、私は macOS ユーザではありません。Snow Leopard から Mavericks までは macOS と呼ばれるものを使っていましたが、現在は Linux ユーザです(ハードウェアの都合で絵を描くときは最近 Mac 使ってますが)。例えなくてもわかると思いますが 「Android 使ってるのに iPhone 向けのアプリ作ってる」みたいなものです。
それでも EasyWine を作って頒布しているのはプライベートなりビジネスなりで「どうしても Mac しかない状況で Windows アプリの使用を強いられることがある」ということや、実際にそういう人がいるということを知っているからです(いい加減 ZIP の文字コード統一しろよ、とか)。あとは自分で同人活動を始めてみて、(私はゲームを作ってないですが)「たくさんの人に自分たちが作ったゲームを遊んでもらいたい」という人がいるということを感じたからです。これに関しては賛否両論あると思いますけど(Windows 専用って謳ってるのに Mac で出来るかもみたいな期待を与えるな、とか)。
以上の理由でとりあえず 100 円で頒布しています。
ご購入いただいた皆様、支援いただいている皆様、ありがとうございます。