SERPOSCOPEが正常に動かない状態が続いているので、MacでWineを使ってGRCを動かす方法に移行しました。その判断に至る経緯、設定方法、運用してみた感想をご説明します。
もくじ
Parallelsに代わるWineを発見!
Macbook Pro(2017)を自宅筋トレ中の事故で壊してしまったので、この度、M2 Macbook Airを購入しました。次の記事で説明したように、丁度Googleの仕様変更の都合でSERPOSCOPEが動かなくなってしまっていて、検索順位チェックツールを移行しようと考えていました。
SERPOSCOPEの前は、Parallels DesktopでWindowsを走らせてその上にGRCを動かすという方法をとっていました。MacBook Pro(2017)には重い処理だしメモリーも不足気味で、筐体が熱くなってしまいました。それが嫌だったのと、コスパも良くなるので、SERPOSCOPEに移行した経緯があります。
M2 Macbook Airになるとスペックは圧倒的に良くなるので、Parallels×Windows×GRC という方法でも余裕になるかと思いました。当然、SERPOSCOPEと同じように、GRCだってGoogleの仕様変更の影響を受けるはずです。なのでGRCもまともに動かない状態なのではないかと気になって調べてみたところ、全くそのような情報は出ていません。GRCは有料だし、日本では圧倒的にSERPOSCOPEよりもユーザ数が多いので、問題があれば必ず話題になっているはずです。なので現状正常に使えているということです。どのようにGoogleの仕様変更を乗り越えたかは分かりませんが、決して安くはない使用料をとっているだけありますね。
そこで、Parallels×Windows×GRCの設定を開始しようとしたら、なんと以前購入したParallels Desktop 11はM1やM2などのAppleシリコンに対応していないので、執筆時点で最新のParallels Desktop 18を購入する必要があるということがわかりました。そして、以前も使っていた無料で利用できるWindows10もAppleシリコン(正確に言うとARMアーキテクチャ)に対応していないので、ARM に対応しているWindows11を購入する必要があると言うことです。
Parallels Desktop for Mac のシステム要件
以下によると、Parallels Desktop17でも大丈夫そうですね。M1に対応していると書いてあるので。
Parallels Desktop 17 のシステム条件とサポート対象のゲスト オペレーティング システム
また、ARMに対応しているWindows10でもいける気がしますね。
とはいえ、Win10もWin11もARM版の利用は、開発者向けのWindows Insider Programを使うなど、少しトリッキーな気がするので、初心者は苦戦するかもしれません。ちゃんと調べてないのでわからないですが。
困ったなーと思いながらGRCの公式サイトを眺めていると、以下のページを見つけました。
こんなページ前からあったっけ?Wineというツールは使ったことがないのですが、名前は知っていました。でも、あまり使い物にならないイメージを勝手に持っていました。
ただ、現在の最新のMac OSにはWineが対応していないので、使えないと書いてあります。何にでも疑ってかかる私は、ほんとかなーと思いながら、M2 MacでWineが使えないか調べてみました。するとあっさり以下の@ITの記事が見つかりました。
macOSでWinアプリを実行する第3の方法、しかもWindowsのライセンスは不要です
AppleシリコンのMacで見事に秀丸というWindowsのアプリケーションを動かしています。秀丸が動いてGRCが動かない理屈はありません。
しかも、Wineにもいくつか種類があって、この記事で扱っている「homebrew-wine」はオープンソースなので完全に無料で利用できます。ということは、ParallelsとWindowsのライセンス代が浮きます。素晴らしい!
さっそくやってみました。結論から言うと問題なく動きました。GRCの公式サイトで現在は対応されていないと書いていましたが、おそらく最新の状況が反映されていないと思われます。
では、設定方法を説明していきます。
スポンサーリンク
コマンドラインでの設定はハードル高いかも
homebrew-wineはコマンドライン(エンジニアが使う黒い画面)を基本的に使うので、慣れていない方は少し抵抗があるかもしれません。でも、MacはWindowsに比べてコマンドラインを使う機会が多くなるので、この際慣れておいてもいいでしょう。(コマンドラインがどうしても嫌な方は、先ほどの記事で少し紹介されていたWineskinを使ってみるといいかもしれません。)
今回の手順で使用した環境のバージョンを記載しておきます。
端末 | M2 MacBook Air(2022) |
---|---|
Mac OS | 13.0(22A380) |
homebrew | 3.6.17 |
wine-crossover | 22.0.1 |
GRC | 5.65.274.1 |
ちなみに、homebrewもエンジニアがよく使うツールで、Macのアプリケーションのインストール、バージョン管理、アンインストールなどをコマンドラインでできるようにするものです。以下の記事で詳細に説明されています。
Homebrewとは?本質的な価値を解説。何ができる?メリットは?
ここからは、先程紹介した@ITの記事の方法で、Homebrewとhomebrew-wineがインストールされている前提で説明してきます。それ以降の手順も近いですが、秀丸とGRC の違いが大きいので、詳しく手順を説明していきます。
まずはGRCの公式サイトから、通常通りGRCsetup.exeというインストールファイルをダウンロードします。
ちなみに、GRCは課金していない段階でもある程度は使うことができるので、まだ迷っている方も、課金する前にこの方法を試してみてもいいかもしれません。
ここからはコマンドラインでの作業です。Macに最初からインストールされている「ターミナル.app」などのコマンドラインを扱うアプリケーションを開きます。そして以下を入力します。
1 |
% wine64 GRCsetup.exe |
ここが秀丸の記事と違う部分ですが、以下のようなエラーが出ました。
1 2 3 4 5 6 7 8 9 10 11 |
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 preloader: Warning: failed to reserve range 0000000000010000-0000000000110000 0024:fixme:module:dlopen_32on64_opengl32 loaded "/Applications/Wine Crossover.app/Contents/Resources/wine/lib/wine/x86_32on64-unix/opengl32.dll.so" early @ 0x6a151000 0024: thread_get_state failed on Apple Silicon - faking zero debug registers 0024:err:module:import_dll Library MFC42.DLL (which is needed by L"Z:\\Users\\araky\\Downloads\\GRCsetup.exe") not found 0024:err:module:LdrInitializeThunk Importing dlls for L"Z:\\Users\\araky\\Downloads\\GRCsetup.exe" failed, status c0000135 |
10行目によるとMFC42.DLLというライブラリーが足りていないようです。ネットで調べた結果、以下を見つけました。
これに従い、以下のようにWineの設定を変更できるwinetricksというものをインストールしました。
1 |
% brew install winetricks |
そして、これを使って不足していたMFC42.DLLをインストールします。
1 |
% winetricks mfc42 |
この途中で以下のようなプロンプトが立ち上がって来ました。
ドイツ語ですが、Yesに相当する「Ja」をクリックします。
そしてもう一度以下を実行します。
1 |
% wine64 GRCsetup.exe |
すると以下のようなアラートが出ることがありますが、基本的には全部OKで進めます。私のMacは言語を英語に設定してしまっているのでの英語になっていますが、日本語にしている場合は日本語で表示されます。
すると、Windowsで普通にインストールする時のようなセットアップ画面が表示されます。ちなみに、Macの言語を英語にしていると、文字化けしてしまいます。なので、私はこのタイミングでMacの言語を日本語にしました。
Macの言語を英語にして文字化けさせない方法としては、以下でOKでした。
記憶が曖昧なのですが、もしかしたらフォントの導入は不要で環境変数の指定だけで大丈夫かもしれません。
標準インストールでもいいですし、カスタムにしてインストール先などを変えてもいいです。ショートカットなど作る必要はないので、カスタムで進めてみました。
以下のように、デフォルトだと
C:\Program Files (x86)\Shellware\GRC
にインストールしようとします。
これは、Macで言うと以下に相当します。(「xxxx」はご自身のホームディレクトリ名に置き換えてください)
/Users/xxxx/.wine/drive_c/Program Files (x86)/Shellware/GRC
つまり、Wineが自動的にMacのホームディレクトリ配下に.wineというディレクトリを作って、仮想的にWindowsのディレクトリ構成を作ります。ちなみに、「.wine」という文字列は変数で変えることもできるので、複数の環境を運用することも可能です。
そして、「参照」ボタンを押すと、インストール場所を選べますが、なんと.wine配下ではない場所も選ぶことができます。以下のようにZドライブがMacの最上位にリンクされているからです。
インストールが完了したらコマンドラインから以下でGRCを起動できます。引数には先程インストールした場所にあるGRC.exeをフルパスで指定します。
1 |
% wine64 /Users/xxxx/.wine/drive_c/Program\ Files\ \(x86\)/Shellware/GRC/GRC.exe |
すると見事にGRCが起動できます。
起動するまでにかかる時間が本当に普通のMacアプリと同じくらいです。Parallelsの場合は、Parallelsを起動⇒Windowsの起動⇒GRCの起動と手間と時間がかなりかかっていたことに気がつきました。
読みにくい字を綺麗にする
よく見ると、メニューの文字が小さいしギザギザしていて読みづらいです。
左下のステータスバーに表示される文字も同じ感じです。
これは設定で見易くすることができます。winecfgというものでフォント周りの設定を変更することで対処することができます。以下を参考にしました。
wine+DominoやJtrimのサブメニューの文字化け解消
1 |
% winecfg |
をすると、以下のような設定画面が開きます。
「デスクトップ統合」から「項目」で「メニューのテキスト」を選び、「フォント」をクリックします。これはGRCのメニューのフォントを変える手順です。
次に見やすいフォントを選びますが、私の場合はMacの標準的なフォントであるヒラギノ角ゴシックにしました。なので、「フォント名」は「ヒラギノ角ゴシック W5」、「スタイル」は「標準」、「サイズ」は「10」にしました。
ステータスバーの文字については、「項目」で「ヒントのテキスト」を選択して同じようにフォントを設定します。GRCを再起動すると設定が反映されます。
ただ、ステータスバーはなぜか9という文字の大きさだけ小さくなってしまいます。
スポンサーリンク
普通のMacアプリと同じように起動できるようにする
無事GRCを起動できたものの、毎回いちいちコマンドラインから起動するのが面倒です。なので、以下の記事を参考にGRCを起動するだけのMacアプリを作ります。
記事と違う部分は入力するスクリプトとシェルにはzshを選ぶこととアイコンの画像だけです。アプリの名前は何でも良いですが「GRC」にしておくと綺麗です。
スクリプトは以下。
1 |
/opt/homebrew/bin/wine64 /Users/xxxx/.wine/drive_c/Program\ Files\ \(x86\)/Shellware/GRC/GRC.exe >/dev/null 2>&1 & |
これで以下のように普通のMacアプリと同じようにアイコンができます。これをクリックするだけでGRCが起動でき、もちろん、Dockにも配置できます。
ところで、先程のスクリプトはコマンドラインで入力したコマンドと違います。このスクリプトのポイントを説明しておきます。wine64をフルパスで指定することと、GRC.exeのパスはあなたの環境に合わせて変えることです。
そして、
>/dev/null 2>&1 & の部分は、以下を参考に処理がバックグラウンドで走るようにしたものです。
Automator gets stuck at shell script
これが無くても動きますが、無い場合、Automatorが処理が実行中だと認識してしまい、Macのメニューバーの右側にGRCを起動している間ずっと「0%完了」と表示されてしまい、気持ち悪いです。
アイコンの画像を設定しなくてももちろん使えますが、そうするとAutomatorと同じアイコンということになります。
わかりやすくしたいので私はGRCのアイコンの画像を取得して設定しました。どのようにGRCのアイコンの画像を取得するかというと、次のツールを使いました。
これもWindowsアプリなのでWineで実行します。zipファイルをダウンロードして解凍するとexeファイルが出てくるので、以下で起動できます。
1 |
% wine64 IconExplorer.exe |
なぜか画面が緑色なのですが、一応使えます。インストールしたGRC.exeを選び、表示されるGRC_0をクリックします。
右側に表示される一番大きいアイコンを右クリックして表示される「Save toPNG」をクリックします。
次に表示される背景色を決める画面で、なぜか透明やWhite以外を選択しないときちんとしたアイコンの画像が出力できません。なので、私は適当に以下のようなMoney Greenを選美ました。透明やWhiteを選んでしまうと、なぜかアイコンの画像が透過したものになってしまうのです。
適当な場所にアイコン画像を保存し、先程の記事の手順でAutomatorで作ったアプリのアイコンに適用すると、こんな感じでGRCのアイコンになります。
ドックに配置した場合は以下のような感じです。
ほとんど通常のMacアプリと同じ感覚になりますが、一つ違和感があるのが、起動した後、以下ようにDockにもう一つGRCのアイコンが出現することです。しかも、カーソルを近づけて表示されるアプリ名が「wine64-preloader」となります。
通常のDockにあるMacアプリは起動しているときは、そのアイコンの下に「・」が表示されるだけのはずです。まぁ、これは些細なことなので、対処するのは諦めました。
チェックも正常にでき、有料ライセンスも正常に使えた!
いくつか適当に検索ワードと対象サイトを登録してチェックしてみたところ、正常に確認できました。また、有料のライセンスを購入して、認証もできました。さらに、以前のParallelsで運用していたGRCから持ってきた大量のデータをインポートして、大量のキーワードをチェックしたところ、全て正常にチェックできました。
スポンサーリンク
Parallelsに比べて圧倒的にマシンリソースを節約できる!
Wineは一説にはWine Is Not an Emulatorの略だと言われています。Parallelsのようにエミュレーションを行っているわけではないのでパフォーマンスのロスが少ないとされます。簡単に言えばWineは、Mac上でWindowsを動作させているのではなく、MacにWindowsと同じ挙動をさせているのでです。
なので、速度的にもParallelsより速いです。ただ、GRCで時間がかかる順位チェック処理が短くなると言うことはなさそうです。というのは、この時間は、検索エンジンからのレスポンスを待つ時間や、意図的に何もしない時間が中心だからです。なので、速さは画面上のもっさり感の無さ、キビキビ感に差が出ます。
そして、マシンリソースへの負荷はどのくらい違うのかも気になったので調べてみました。
同じ筐体ではないしMac OSのバージョンも違うので正確な比較ではないかもしれないですが、ざっくりした比較は可能と思われます。古いMacbook ProにあるParallelsでGRCを起動した状態で、アクティビティモニターで表示されるCPUとメモリーの使用状況を調べました。
わー、なんとParallels関連のプロセスのCPU使用率を合計すると、240.2%になっていました。100%超えてるのってどういうこと?って思いましたが、CPUのコアが複数あるマシンなので一つ以上のコアを使っている場合は、100%を超えることもあるとのことです。
ちなみに、「Windows7」とありますが、実際はWindows10が走っています。仮想マシンの名前をアップグレード時に変え忘れたままだったので。
あと、Windowsの画面を前面に出していない時は、しばらくするとCPU使用率は5%程度に激減します。おそらくスリープしているのだと思われますが、結局Windows側を触るとすぐに100%を越えてしまいます。
次に、今回導入したWineのCPU使用状況を見てみます。
wine64-preloaderとwineserverというプロセスが対象のプロセスになりますが、合計すると26.2%となります。これはGRCを操作している時も、そうでない時も大きな変動はありません。
これだけ違うと電力消費量も大きく違うと思われます。Parallelsを使っていた時、筐体が熱くなってファンがブンブン回っていたのを思い出しました。
次にメモリの使用状況を見ていきます。まずはParallelsの方。
合計すると1.75GB程度とすごい大きさです。しかも、Windowsが前面にない時も、特に減るわけではありません。
次にWineの方を見ます。
こちらはたったの87MB。これは圧倒的な差です。
明らかに、Wineの方がマシンリソースの使用効率が高いことがわかります。Parallelsの時によくあったメモリ不足に陥ってパソコンが遅くなる機会も減らせそうです。
マシン上のディスク容量がどのくらい使われるかも比べておきます。Parallelsではpvmファイルというのがデータとなります。私の「Windows 7.pvm」はなんと41.08GBもありました。GRCしか使っていないのに。
Wineでは基本的に.wineディレクトリ配下にデータが入ります。.wineはわずか386.2MBでした。これを見ても圧倒的に効率が良いです。
Wine | Parallels | |
---|---|---|
CPU使用率 | 26.2% | 240.2% |
メモリ使用量 | 87MB | 1.75GB |
ディスク使用量 | 386.2MB | 41.08GB |
Wine側のバージョンは前述しましたが、一応、Parallels側の環境のバージョンも記載しておきます。
端末 | MacBook Pro(2017) |
---|---|
Mac OS | 10.13.6 |
Parallels Desktop | 11 |
Windows | Windows10 |
GRC | 5.62.274.1 |
プロセスが残ってしまって起動できなくなる?
全く不満無く使えそうでしたが、不可解なことがありました。
アクティビティモニタでCPUのプロセスを見ると、wine64-preloaderがたくさん立ち上がっているのです。
GRCしか起動していないので一つでいいはずです。使用率が0なものがほとんどです。おそらく、20.1のものしか実際には使われてはいないのでしょう。しかし、不思議なことにメモリタブの方を見ると、全てある程度の数字が入っていました。20.1のもの以外全て強制終了してみたところ、問題なくGRCは動き続けました。
さらに不可解なことが起きました。前述したwinecfgでフォントを変えてGRCに反映させるのを繰り返し行なっていた時でした。急にGRCが起動しなくなりました。winecfgも起動しなくなりました。アクティビティモニタを見ると、数え切れないほどのwine64-preloaderが立ち上がっていました。
やはり、winecfgやGRCなどのWindowsアプリを起動するたびに、wine64-preloaderというプロセスが起動するということです。アプリを停止した段階でプロセスも消えるはずですが、なぜか消えなくて大量のプロセスが残ってしまうということのようです。
とりあえず、wine64-preloaderを全て強制終了していきます。しかし、数百個はありそうで、まとめてできずに、少しずつ選択して終了していくのでかなり時間がかかりました。
全部終了できたので、再びGRCを起動しようとしました。しかし、起動しません。winecfgも起動しません。不思議です。色々調査したが原因はわかりませんでした。.wine配下に何かゴミが残ってしまっているのでしょうか。Windowsでいうレジストリ周りにゴミが入ってしまっているのでしょうか。
とりあえず、.wineディレクトリをリネームして、新たに.wineを作成したらGRCが起動できました。(普通にwine64で初めてWindowsアプリを起動する時に.wineディレクトリが作成される)
原因追究のため、リネームした.wineと新しい.wineのdiffをとって比べようとしましたが、複雑にシムリンクされているのでうまくdiffの結果が出ませんでした。なので、とりあえず原因追及は次に起きた時にします。とりえず.wineを新規作成すれば動くようになるとわかったのでそれで満足です。ただ、古い.wineを削除する場合は、GRCのデータを失わないように退避しておくのを忘れないようにしましょう。
以下の記事によるとMac再起動でも動くようになるかもとあるので、次は試してみようと思います。
A bunch of wine-preloader processes are throttling my CPU when running Steam
Parallelsの場合は利用者も多いのでネット上に情報が多く、謎が残ることは少なかったですが、Wineの場合は少しマニアックで、情報もそんなに多くないし、色んなバージョンがあり、定石的な使い方も確立していないように思えます。不安な方は、Wineを使った有償でサポートがある以下の製品があります。とはいえ英語の製品なので、英語がある程度できないとサポートを受けるのも難しいかもしれませんが。
スポンサーリンク
カーソルがGRCから出られなくなる
しばらく使っているとカーソルがGRCのアプリの外に出られなくなる事象が発生しました。しかたがないので、左上の赤ボタンをクリックして終了したら出られるようになりました。再びGRCを起動するとそのような事象は起きませんでした。
また、しばらく使っているとまたカーソルがGRCから出られなくなりました。これが起きるたびに赤ボタンでアプリを停止するのも気持ち悪いし、処理が走っている場合は中断してしまうので、今度は左上の黄色ボタンをクリックしてみました。これを押すと、停止するわけではなくDockに小さく収まります。これでカーソルは自由に外に動けるようになりました。ドック内に入ったGRCをクリックするとカーソルも自由に動ける状態で再び開くことができました。
時々このカーソルの事象が起きるのがちょっと気になりますが、致命的な問題ではないのでまだ調査はしていません。
チェック処理中にMacがスリープしたらエラー
GRCのチェック処理は長い時間がかかりがちです。WineでGRCの処理を流している時に、Macがスリープしてしまいました。スリープから復帰したら以下のエラーが出ました。
これが出ると、GRCを再起動しないと、再び処理を開始できませんでした。スリープすると100%起こるわけではないが、時々こういうことがあります。なので、GRCのチェック処理を流すときはスリープしないようにMacの設定をする必要があります。Macbook A
irは、持ち歩くノートパソコンなので基本的にはスリープする設定にしておきたいので悩ましいところです。
Parallelsの時は、Macがスリープしてもスリープ解除したら知らぬ間に処理をよしなに再開してくれていました。先ほどのカーソルのような事象も起きません。さすがParallelsは有料ソフトだけあって、この辺りのユーザビリティは考えられています。
スポンサーリンク
Macアプリからのコピー&ペーストができない?
Evernoteというノートアプリで検索キーワードをまとめていて、それをまとめてコピー&ペーストでGRCに持ってきてペーストしようとしたらできません。何も文字が出てきません。GRC内でのコピー&ペーストは機能しています。
試しにGRCを再起動したら、Evernoteからのコピー&ペーストができるようになっていました。何だったのでしょうか。やはり少し不安定です。とはいえ、そんなに致命的な問題ではないので我慢します。おかしな事象が起きたらとりあえずGRCの再起動で対処します。
共有ドライブに.wineを配置したら複数端末から使える?
まだやっていないのだが、.wineディレクトリをDropboxなどのリモートディスクに配置して、使う時は端末にマウントして動かせば、もしかしたら複数端末から利用できるかもしれません。GRCのライセンス認証がどのような仕組みで行われているかりませんが、認証データが.wine内に配置され、物理的に端末に紐づかないなら可能でしょう。
ちなみに、こちらもやっていないませんが、Parallelsで運用する場合でも、理論上はpvmファイルをリモートディスクに配置して複数端末から使えるはずです。ただ、pvmファイルは前述したように数十GBもあるので、毎回ネットワークを介して端末に転送するのは現実的ではありません。
それに対して、.wineディレクトリをマウントするだけなら、せいぜい400MB程度なので可能でしょう。とはいえ、GRCの規約的にこのような使い方をして良いのかは精査していません。リモート上のWindowsに1ライセンス分のGRCを入れて複数端末から使うという使い方は普通にされているようなので、それと同じようなものな気はします。やってみる場合は、ご自身で規約を確認して自己責任でしてください。
.wineディレクトリを端末間で共有できたら、Macを2台持っている人なら、家にあるMacは常時起動し毎日決まった時間にGRCを走らせる設定にしておいて、出先ではノート型のMacでGRCのデータを確認だけする、といった使い方も可能かもしれません。こうすれば、持ち歩くMacのスリープの設定に悩むことはありません。ただ、複数端末から同時にマウントして起動した場合、ファイルが壊れたりしないかといった心配はありますが。
スポンサーリンク
まとめ
Macで検索順位をチェックする手段としてのWine+GRCの良い点、悪い点をまとめておきます。比較対象としては、私がこれまで使ったことのあるParallels+Windows+GRCやSERPOSCOPEとなります。
- WindowsやParallelsのライセンス料がかからない
- 起動する手間と時間がかからない(Macアプリと同レベル)
- エミュレーターではないので処理が速い
- マシンリソースの使用効率が圧倒的に良い
- コマンドラインからの設定が必要で少しハードルが高い
- ネットの情報が比較的少なく、自力で解決しなければならない状況が多い
- スリープ復帰時に落ちる等、少し不安定なところがある
正直、ITに疎い方にはハードルが高いのでこの方法はおすすめしません。でも、現在初心者であっても、ITに関心があって学習意欲がある方は挑戦する価値があると思う。ここで得た知見は、パソコンを少しでも使う仕事をしているなら使えるし、サイト運営でも間違いなく役に立ってくるので。