ysflight.com - Linux & Mac OSXでwineを使って秀丸エディタを動かすのは、よく話に聞くほど簡単じゃなかったが、成功した。

「秀丸エディタ Linux」とか「秀丸エディタ MacOSX」とか検索すると、wineを使って簡単に秀丸エディタをLinuxまたはMac OSX上で動かすことができる、みたいな内容に行き当たる。

僕は、今をさかのぼること、20年前、FM-TOWNS上での開発をあきらめて、Windows 3.1に移行したとき、いいエディタが無いかと思ったら、当時、我がプログラミングの師に進められたのが秀丸エディタだった。以後、ずっと使い続けている。Visual StudioとかXCodeとか、プロトタイプを元に引数を表示してくれる機能が便利そうだけど、テキストエディタとしての機能は、秀丸の方がはるかに高い。

それで、僕はいろんなプログラムをMac OSX, Linux, Windows上で動くように開発してるんだけども、秀丸エディタがWindows上でしか動かないもんだから、どうしてもメインの開発はWindows上、LinuxとMac OSX上ではコンパイルして簡単なテストだけ、というパターンが続いていた。

だけど、ちょっと一念発起して、秀丸エディタがwineで動くというのなら、試してみよう、と、思った。検索して出てくる内容を見ると、どれも、あっさり動いた、と、書いてある。本当にそんなに簡単なのか?

結論からいうと、なぜか僕の環境ではダメだった。というか、かなり苦労してやっと動くようになった。成功した人は、成功したってことを書くかもしらんけど、案外、失敗してあきらめちゃってる人も多いんじゃないだろうか?

結局僕は、一日悪戦苦闘して成功したんで、自分用メモも兼ねて、まとめてみた。

1. Wineのインストール

Ubuntu 12.04上では、http://www.winehq.org/download/ubuntu ここに書いてある通りの方法であっさりインストールできた。( sudo add-apt-repository ppa:ubuntu-wine/ppa して、sudo apt-get update して、sudo apt-get install wine1.7 )

Mac OSX 10.9.4ではトリッキーだった。手順は、http://www.davidbaumgold.com/tutorials/wine-mac/ これに従ったんだけど、まずXCode 5.0.1は既に入ってたからいいとして、他のパッケージが既に入ってるのかどうかわからない。とりあえず、ここの手順に従って、ターミナルでコマンドをタイプしていくと、

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

 これは問題なし。

brew doctor

ウォーニングが出たけど、無視してもいい、というメッセージも出たから、とりあえず無視。

 sudo xcodebuild -license

一番下までスクロールするまでスペースキーを押しっぱなしにして、最後にagreeとタイプしてEnter。

brew install wine

と、やったところで、xquartsが入ってないと言われたので、https://xquartz.macosforge.org に言って、dmgファイルをダウンロードしてインストール。その後、再度、

brew install wine

今度は成功。1時間ぐらい待ったかな?これで、とりあえず我がLinuxにもMacOSXにもwineが入った。

2. 秀丸のインストール

秀丸エディタを http://hide.maruo.co.jp/software/hidemaru.html からダウンロード。とりあえず、MacOSXには日本語版hm840_signed.exeを、Linuxには日本語入れてないから英語版maruo840_signed.exeをインストールすることにした。

ところで、秀丸エディタはデフォルトでは C:\Program Files 下にインストールされるけど、絶対 C:\App とか、スペースキーの入ってないディレクトリにインストールした方がいい。そもそも、ファイル名にスペースなどという忌まわしいものを入れ始めたのがマイクロソフトの終わりの始まりだったの鴨しれない。秀丸エディタのパスにスペースが入っていると、コマンドで

"C:\Program Files\Hidemaru\Hidemaru.exe" sourcefile.cpp

みたいな感じの起動ができない。秀丸エディタは立ち上がるものの、最初のスペースの後( Files\Hidemaru\Hidemaru.exe" sourcefile.cpp ) が引数だとってしまって、肝心のsourcefile.cppを開いてくれない。だから、僕は必ずC:\App\Hidemaruみたいな場所にインストールしている。なので、僕は、C:\App\Hidemaru (英語版の方はC:\App\Maruo)にインストールすることにしている。

ターミナルから、

export LANG=ja_JP.UTF-8
wine ~/Downloads/hm840_signed.exe

と、タイプすると、無事にインストールが始まった。(ちなみに、Linuxの方は、wine ~/Downloads/maruo840_signed.exeで始めた)

カスタムインストールを選んで、インストール先をC:\App\Hidemaruに変更した (くどいようだけど、LinuxではC:\App\Maruoにした) 以外はデフォルトで次へ進んで、インストールも完了。

次が問題だった。

3. 秀丸の起動に落とし穴があった

インストールできたから、よくいろんなとこで見るように、あっさり起動できるのかな?と、思ったら、ここからが苦戦の始まりだった。まず、

wine C:\\App\\Hidemaru\\Hidemaru.exe

と、してみた。秀丸エディタは起動する。ところが、キー入力をまったく受け付けない。プルダウンメニューは、開くけど、どのメニューを選んでも何も反応が無い。

wineのインストールに失敗したのかと思って、notepad.exeを起動したら、こちらは普通に動くから、どうやらwine自体は正常らしい。この現象は、LinuxでもMac OSXでも同様。ターミナルには、どうもimm32.dll関連と思われるエラーがずらずらと出ているので、Virtual BoxのWindows XPからimm32.dllをコピーしてみたが、これでも解決せず。

その後、なんと、ターミナルにタイプした内容が秀丸エディタにフォワードされていることが判明。どういうことかというと、本来キー入力は秀丸自身のウィンドウで受け付けるべきところなのが、キー入力を、wineを起動したウィンドウで受け付けてしまっている。ただし、ターミナル上でAlt+Fを押してみても、秀丸のファイルメニューは開かないから、やっぱり使えない。ターミナルでタイプした内容が秀丸に送られる現象は、Linux, MacOSX共に共通に発生した。

MacOSXでは似たようなことを経験したことがある。MacOSXのプログラムは、Something.app/Contents/MacOS みたいなディレクトリ構造を作って、その中(MacOSディレクトリ)に置かないと、起動しても、すべてのイベントがターミナルに送られてしまうという問題がある。ディレクトリ構造さえ作っておけばすべてまともに動く。

ためしに、wine.app/Contents/MacOSなるディレクトリを作って、wineのバイナリをその下に置いて、そこから起動してみたけど、だめ。そもそも、この手はLinuxでは使えるはずがない。

ほとんどあきらめたその瞬間、Ubuntu上でターミナルウィンドウを閉じたら、その背後に、秀丸のアイコンが。これか!と、思ってそのアイコンをダブルクリックしてみる。秀丸起動。普通にキー入力も受け付けるし、メニューも使える!

(ちなみに、上に書いたHomebrewを使う手順(http://www.davidbaumgold.com/tutorials/wine-mac/)でMacOSXにインストールしたwineだと、どうやらwineが自分がMacOSXで実行されてるという意識が無いらしく、Macのデスクトップに、アイコンを作ろうとするものの、Linux式のアイコンを作って、結局へんてこなものができてくる。中身はテキストだから、開けば中身は読めるけど。)

これで、起動はできて、書けるようになった。が、ターミナルから、開きたいファイルを引数として起動しないと、僕の使い方としては意味が無い。それで、アイコンのプロパティを見てみたところ、どうやら、

env WINEPREFIX="/home/soji/.wine" wine C:\\windows\\command\\start.exe /Unix /home/soji/.wine/dosdevices/c:/users/Public/Desktop/Maruo.lnk

このように長々とタイプしないと起動しないらしい。あ、これに気がついたのがLinuxの方だったから英語版Maruoになってるけど。試しに、このコマンドに続けて、ファイル名を追加してみたけど、それは読んではくれなかった。ただ、どうやら見た感じWindowsのStartコマンドを間に挟んでるだけのようだったから、試しに、

env WINEPREFIX="/home/soji/.wine" wine C:\\windows\\command\\start.exe C:\\App\\Hidemaru\\Hidemaru.exe

と、やってみたところ、これでも成功。さらに、ファイル名を引数に与えて起動することにも成功。実用化に一歩近づく。

ただ、なぜかカレントディレクトリにあるファイルしか開くことができない。こうなったら、もう、起動用のシェルスクリプト書くしかないね、ってことで、書いてみた。

#!/bin/bash

echo $1

if [ -f $HOME/.wine/drive_c/App/Hidemaru/Hidemaru.exe ]; then
	EXE=C:\\App\\Hidemaru\\Hidemaru.exe
elif [ -f $HOME/.wine/drive_c/App/Maruo/Maruo.exe ]; then
	EXE=C:\\App\\Maruo\\Maruo.exe
else
	echo Hidemaru executable not found.
	exit
fi


export LANG=ja_JP.UTF-8

fullPath=$1
pth=${fullPath%/*}
fil=${fullPath##*/}

if [[ "$1" =~ "/" ]]; then
	echo Move to $pathOnly
	cd $pth
else
	echo Argument does not include slash.
fi

echo Open $fil

START=C:\\\\windows\\\\command\\\\start.exe

env WINEPREFIX="$HOME/.wine" wine $START $EXE $fil

何をやってるかというと、引数にディレクトリを含む場合は、まず、そのディレクトリに移動した上で秀丸を起動、そうでない場合は、単にファイル名を引数に与えて起動。あとは、これに.profileの中でaliasかけておけば、ターミナルから、hm sourcefile.cpp みたいな感じで起動できるようになった。

これですべて解決、もうemacsとはおさらば、と、思ったら、、、、

4. タブ問題とその解決

タブモードをオンにしたら、途端におかしくなった。まずMac OSX上でタブをオンにすると、メニューのした、ウィンドウがグレー一色になってしまって、何も出ない。キーも受け付けないし、メニューも反応しない。Linux上では、タブは見えるけど、メニューの反応が無くなってしまった。

プログラミング中はたくさんタブを開くから、これは困った。と、思ったら、ここに解決が出てた。

http://muumuujo.blog63.fc2.com/blog-entry-105.html

とりあえずタブモードをオフにした状態で、その他→動作環境→トラブル対策、を選んで、「その他のトラブル対策」をクリックして、「タブモードをV7.xx以下の方式にする」をチェックする。

これ、タブをオンにする前にやっとかないと、反応が無くなってオフにできなくなって、秀丸をアンインストールしてインストールしなおしになるから、必ず最初にやっといた方がよさそう。

5. 未解決問題

これで、ほとんど問題なく動くようになったんだけど、Mac OSX上で、タブを切り替えると、秀丸がフォーカスを失ってしまう問題があって、結局解決できてない。Ctrl+TABで切り替えても、マウスでタブをクリックしても同様。

秀丸エディタの場合、タブの切り替えは、プロセスの切り替えになってるっぽいので、wineが何か混乱しているようだ。

この点だけは、まだ解決策不明。

追記

winecfgでWindowsの種類をWindows 7にしたところ、Administrator権限が必要とかいうエラーが出て起動しなくなった。Windows XPにしたら、また使えるようになった。その後、ふたたびWindows 7に変更したところ、普通に起動するので、Administrator権限が云々と言うエラーが出るようになったら、いったんXPに戻せば直るものなのかもしれない。

 

 

Comments are welcome.  Send E-Mail to:

RETURN TO TOP PAGE

このページはリンクフリーですが、リンク先は、http://www.ysflight.com にお願いします。よかったら以下のバナーのうちのひとつをお使いください。