2021年10月22日作成
2021年10月26日加筆修正
2025年11月12日追記
2025年11月21日補遺追加
2025年11月26日追記・補遺再構成
はじめに
ここでは『CD-ROM版 鎌倉遺文』(2008年、東京堂出版)について、UNIX系OS/intel X86系CPU上にWindows用アプリケーションの動作レイヤーを提供するWineを用いてmacOSで利用する方法と、実機のWindows・仮想環境のWindows・Wineを問わず表示領域やフォントのサイズ設定などを変更する方法を説明する。
1 『CD-ROM版 鎌倉遺文』 on Wine
10.15 Catalina以降のmacOSでは32bitアプリケーションの動作が排除されたため、Wine自体は64bit動作を実現したものの、その上で32bitのWindowsアプリケーションを実行することは不可能となっていた。しかしいち早く32bitアプリケーションの動作を実現した商用版のCrossOver Macや、そのコードをフィードバックしたWineskin Winery、Homebrewのwine-crossoverを使うことで、『CD-ROM版 鎌倉遺文』もmacOS上で使えるようになった。しかもこれはRosetta 2によってM1 Macでも動作してくれる。ただし『CD-ROM版 鎌倉遺文』はIEに依存して文書本文を表示するために、そのインストールが必須条件となる。また、それだけでは、下に掲げる動画で示すように注釈機能が正常に動作してくれない。そこでここでは、その正常動作までの手順を説明する。なお、Wineそのものについては基本的事柄を理解していることを前提とした説明となることを了承されたい。
①Wineskin Wineryないし、Homebrewのwine-crossoverとwinetricksをインストールする。
②Wineskin Wineryならラッパー作成時のエンジンで“WS11CX20.x.x”など“64bit”が名称に入っていない、その時点で最新のものを選ぶ。またHomebrewのwine-crossoverなら“WINEARCH=win32”を指定して、32bit版のWine環境を作成する。
*64bit版にしてしまうとwinetricksでのIEのインストールに手こずることになる。
【追記】
現在のWineでは64bitツリーでも32bitアプリケーションは問題なく動作し、また今後は32bitツリーそのものが廃止されるとのことである。
③『CD-ROM版 鎌倉遺文』をWine環境にインストールする(Start.exeを実行)。
④winetricksで以下のものをインストールする。
msxml3, ie8_kb2936068(ie8も同時に入る):文書本文の表示に不可欠
*ie8_kb2936068はie8だけ、またはie7でもよいが_kb2936068が最新。なおie6では動作しない
fakejapanese_ipamona:MS明朝/ゴシックなどを代替表示。UIと文書本文の適切な表示に必要
gdiplus:なくても動作はするがログではこれがないことによるエラーが出ているので解消しておく
【追記】
現在のWineではこのエラーは出ないのでインストール不要。
*msimtfでも同様のエラーは出るので、気になるなら、msimtf.dll(32bit版)を入手してsystem32フォルダに入れておく
インターネット上ではWindows実機でのエラー修正用として、ライセンス的に問題ない様々なdllが入手可能
⑤winecfgの「ライブラリ」タグで以下の設定をする。
新たに“ddrawex”のエントリーを作成し(無効化)に設定:動画で示した「注が出ない」を解消
【追記】
現在のWineではこれは不要。
*msimtf.dllも入れた場合、“msimtf”のエントリーも作成し(ネイティブ版)に設定
⑥Wine環境内の“drive_c/Program Files/株式会社東京堂出版/CD-ROM版 鎌倉遺文/style”フォルダ内の6個全てのxslファイルをテキストエディタで開いて以下のように編集する。

30行目の“MS ゴシック”を“IPA モナー ゴシック”に変更:文書名など情報部分と注釈のフォント
38行目の“MS ゴシック”を“IPA モナー ゴシック”に変更:文書本文のフォント
*WineはmacOS側のフォントも認識して使える。ここでフォントを明示的に指定しないと、そのどれかで代替表示される。しかしUIのフォントのサイズなどが不適切なためにUIそのものがウィンドウに収まり切らないようなことが起こる。また文書本文の縦表示では、動画の最後のケースのように、横表示を全体として90度回転させたような表示になってしまう。これらは技術的には、Windows実機からMS ゴシックを拝借すれば回避できる問題だが、自己所有の実機からでも他の環境への流用はライセンス的には望ましくない。またMS ゴシックは設計が旧くメッシュも粗い。個人的な所感だが、IPA モナー ゴシック/IPA モナー UIゴシックを使う方が奇麗に表示されると思う。トレードオフは、起動時に表示されるスプラッシュ画面のサイズがMS ゴシックのサイズに依存して計算されているのか、IPA モナー ゴシックで代替させると右横側に変な余白ができてしまうという、実用には全く差し障らない問題だけだ。なお、文書本文はフォントサイズによっては“IPA モナー 明朝”にする方が違和感がないかもしれない。
スタイル指定のxmlファイル中の231行目あたり
//透明度の設定
note.style.filter='alpha(opacity=0)';
note.filters.alpha.Opacity = 100;
この二行をコメントアウトする。
*動画で示した「最初に選んだ注が固定される」を解消
【残る不具合】
以上で『CD-ROM版 鎌倉遺文』がWineでもほぼ正常に動作するようになるが、なお解消しない不具合もある。
1.キーワードの検索欄や「メモ登録」のメモ欄に入力した日本語文字列がきっかり半分までしか引き渡せず、途切れたり化けたりする。ところが、入力したい文字列に続けて、それと同数の任意の文字列を入力して確定すると、理由は不明なものの望む結果が得られる。たとえば「頼朝」を検索するには「頼朝○×」、「頼朝 院」と全角スペースを挟んだAND検索・OR検索ならば「頼朝 院○×△□」。また「この文書は後で検討する。」というメモなら「この文書は後で検討する。○×△□○×△□○×△□」のように。
*この問題の原因はユーザーによる文字入力を最初に受けとるWineの内部処理がUTF-16(可変長コード)であるのに対して、それを渡される『CD-ROM版 鎌倉遺文』の実行プログラムはリリース当時の日本語版Windowsの処理コードであるShift-JIS(固定長コード)のみを想定していることにある。Wine、『CD-ROM版 鎌倉遺文』ともに内部処理の変更は困難であり、これは仮想環境では不可能な〈ホスト環境とのシームレスなIM運用〉とのトレードオフとして諦めるしかないようだ。
2.文書表示ウィンドウが開いたままだと、アプリ側の「ファイル」メニューから「終了」しても、アプリをロードしていたWine自体のプロセスは終わらず、macOSのメニューバーから“wine32on64-preloader”を「終了」させる必要がある。
2 『CD-ROM版 鎌倉遺文』の表示領域・フォントサイズ変更
『CD-ROM版 鎌倉遺文』は「1024x768pixel以上」のディスプレイを動作条件とし、文書本文の縦方向の表示幅は534pixelに固定されている。また本文表示のフォントサイズは標準の「中」で11pt・「小」で10pt・「大」でも13ptに過ぎない。これは2008年当時の環境では適切だったが、モバイルノートPCでもFull HD(1920x1080pixel)が一般化しつつある現状では、如何にも狭く文字も小さい。これらの設定は“Program Files¥株式会社東京堂出版¥CD-ROM版 鎌倉遺文¥style”フォルダ内の6個のxslファイルによって定義されている(記述言語はJavaScript及びそのMicrosoftによる独自拡張であるJScript。このJScriptの使用がIE依存の原因となる)。そして幸いなことにその実体はテキストファイルであるため、容易に編集・変更が可能なものだ。ここでは、その編集箇所と方法について説明したい。なおこれらのファイルは“kibunbody_aaa_zzz.xsl”のようなファイル名になっており、“aaa”の部分が“columnar”(文書縦表示)/“horizon”(横表示)、“zzz”の部分が“large”(文書フォント・大)/“mid”(中)/“small”(小)で計6種の組み合わせになっている。
①フォントサイズの定義箇所

31行目が文書名など情報部分と注釈のフォントサイズ。32行目が行の高さで、フォントサイズ+1ptが適切。
*私は「大」・「中」でフォントサイズ14pt/行高15pt、「小」は11pt/12ptとした。
42行目が文書本文のフォントサイズ。
*私は「大」20pt・「中」15pt、「小」11ptとした。
38行目が文書本文のフォントの種類。大きさによっては“MS 明朝”の方が特に縦表示では違和感がないかもしれない。
(Wineの場合「1」で示したように“MS ゴシック”は“IPA モナー ゴシック”、“MS 明朝”は“IPA モナー 明朝”とする)
*MS 明朝/ゴシックは設計が旧く粗いので、大きなptならWindows実機でもIPAフォント指定の方が奇麗かもしれない。
②表示幅の定義箇所




《columnarの場合》
ⓩ(全体の幅)とⓐⓑⓒⓓ(この例だと331行目・332行目の2ケ所)は縦の表示幅であり数値は揃ってなければならない。デフォルトでは534px。
“534px”を一括置換すれば6ケ所全てを漏れなく変更できる。
*スクロールせずにウィンドウにぴったりと収まるのは580px。
私は「大」「中」1200px、「小」580pxとした。
ⓔは文書情報欄の幅。私は「大」「中」400px、「小」は270pxのままとした。
《horizonの場合》
ⓩ・ⓐⓑⓒⓓとも“hight”ではなく“width”のデフォルトの580pxを変更する。
*私は「大」1200px、「中」700px、「小」は580pxのままとした。
ⓔに相当するところは“horizon”では自動調整なので定義変更は不要。
★なお以上の行番号はファイルによって微妙にズレている。
③注釈の枠サイズの定義箇所


注釈のフォントサイズを変更したら、その枠のサイズの調整も必要となる。
*私は「大」「中」では16を全て20に変更。「小」は16のままとした。
【調整結果の例】

左がデフォルトの「大・縦」・右が調整後の「大・縦」。調整後のものはウィンドウを初期値から大きくしてやらないと全体を一度に表示できない。『CD-ROM版 鎌倉遺文』はウィンドウ・サイズの変更を記憶できないようで、起動し直すとサイズが初期値に戻ってしまい、その度にウィンドウ・サイズを変更せねばならないのは少し億劫かもしれない。
補遺 X11 ForwardingでWineを使う
macOS 27以降でのRosseta 2の段階的廃止によって、いずれはWineは使えなくなってしまう。その代替手段だが、手っ取り早いのは仮想環境/エミュレーション環境であるUTMで、Rosseta 2が動くヴァージョンのmacOSの仮想環境を用意することだ。レスポンスも申し分なく、またホスト・ゲスト間のテキストのコピー&ペーストやファイルのやり取りもできるから、実用性にもあまり問題はない。ただし、それなりに起動時間がかかる/仮想環境のディスクイメージが数十GBを消費する/システム全体が起動・表示されるためWineのようにホスト側macOS上のいちアプリケーションのようには扱えない、といったネガもある。
そこでNASにしているPC/AT機のDebian/GNU LinuxでWineを動作させ、それをX11 Forwarding(UNIX系OSのX Window Systemが備えている、サーバーで動いているアプリケーションをこちらにウィンドウとして表示し操作する仕組み)させることに思い至った。 レスポンスは機敏とまではいえぬが実用範囲。こちらもホスト・ゲスト間のテキストのコピー&ペーストは可能であるし、ファイルのやり取りもそもそもがNAS相手だからそちらで可能だ。
ただしX11 Forwardingを受けるにはmacOS側にX Window System環境であるXQuartzをインストールせねばならず、また日本語入力を可能にするにはちょっとした工夫が必要になる。もちろん検索語はテキストのコピー&ペーストでも入力できるのだが、それは存外と面倒なものである。
これには送信側の日本語入力システムと受信側のそれのどちらかを使うという二つのアプローチがあり、ここではそれぞれを紹介しておきたい。結論からいえばmacOSでX11 Forwardingを受ける場合には、前者の方が実用的だった。
送信側の入力システムを使う
X Window Systemでは変換機構(Anthy, Mozcなど)と、その結果をアプリケーションに渡す機構(UIM, iBus, fcitx5など)とが分かれており、様々な組みあわせが可能になっている。そのなかでもX11 Forwardingで送信側の入力システムを使う際に最も安定しているのは、fcitx5+Mozcの組みあわせだということだ。XQuartzは描画に様々な不具合が出やすいのだが、それの抑え方も含めて、今回初めて使ってみたChatGPT氏がいろいろと教えてくれた。Wineだと一瞬だけ余計な黒箱が出てしまうこともあるし、受信側の入力システムを使うのに比べると僅かな遅延も感じなくはないのだが、実用の範囲だといえると思う。
【~/.bashrcへの追記】
if [ -z "$XAUTHORITY" ]; then
export XAUTHORITY=$HOME/.Xauthority
fi
if [ -n "$DISPLAY" ]; then
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
if ! pgrep -x fcitx5 >/dev/null; then
fcitx5 --replace >/dev/null 2>&1 &
fi
fi
【~/.bash_logoutへの追記】
if pgrep -x fcitx5 >/dev/null; then
fcitx5-remote -r
pkill fcitx5
fi
【~/.config/fcitx5/conf/classicui.conf】
Alpha=False
Font=Sans 12
WheelForPaging=True
UseCursorWindowPosition=True
VerticalCandidate=True
EnableSkin=False
ShowLayoutName=False
【2025年11月28日追記】
いうまでもなく以上の設定はmacOSのターミナルからsshで入ってwineを起動させる場合のものだ。ChatGPT氏に少し慣れてきたので、さらに便利にすることを目指して相談しながら作業を進めていったら、全過程を自動処理するshell scriptをアプリケーション・バンドルで包んだものをつくってしまうことで、まるでmacOS上のアプリケーションを起動/終了しているみたいに済ませてしまうことまで実現できた。
受信側の入力システムを使う
macOSのGUIとX Window Systemは別物であるため、XQuartzではmacOS側の日本語入力システムが通らない。かつてはMacUIMのような、mac GUIとXQuartzとの統一的日本語入力システムも存在したが開発が止まっており、Intel版のビルド済アプリケーションしか手に入らない。Apple SiliconのmacOSに適合するように手を入れるのも、なかなかに難しそうだ。またHomebrewやMacPortsのようなパッケージ・システムにも、日本語入力システムのパッケージは存在しない。
そこでソースからのビルドを試みたのだが、現在主流のibusやfcitxは自前でのビルドが困難なため、UIM+Anthyを選択した。そして動作としては完全なところまで至ったのだが、変換候補ウィンドウの一部ないし全部がブラックアウトすることがあったり、Wineでは入力中のテキストに黒箱が重なってしまうことがあるといった描画不調が酷く、送信側システムを使うのに比べると残念ながら実用には厳しい。試みに幾つかの環境での試験をしたが、IntelよりはApple Siliconが酷く、またOSが新しくなるにつれて酷くなるので、今後の改善も期待は難しいだろう。
なお受信側のシステムを使う方法だが、送・受信双方にUIMならUIMのように同じものを用意する。そして送信側の“/etc/ssh/sshd_config”に“AcceptEnv XMODIFIERS”、受信側の“/etc/ssh/ssh_config”に“SendEnv XMODIFIERS”を記述しておくことで、SSH接続の際に受信側入力システムを送信側が受けとめられるようにしておく。
【Anthy】
UIMのビルド時にAnthyがあることが前提となるので、先にこちらをインストールしておく。Anthyはかつては日本語Linux環境での標準の地位にあったが、メンテナンス状況が錯綜していて「ここが公式」というサイトがない。このためネットで検索すると幾つかのものがみつかるが、現在でもメンテナンスを続けているAnthy Unicodeから取得した、ここでの最新のanthy-unicode-1.0.0.20240502.tar.gzを用いた。
anthy-unicode-1.0.0.20240502.tar.gzを展開してできるanthy-unicode-1.0.0.20240502フォルダに移動する
%./configure
%make
%sudo make install
*デフォルトでは関係ファイルは/usr/local以下にインストールされる
【SKK】
SKKは形態素解析を排してユーザーが区切りを指定するという変換方法のため、キー操作にも独特のクセがある。だがSKKはAnthyよりも軽快であり、またAquaSKKやmacSKKといった、mac GUIで動作する版も存在する。そのため辞書ファイルを共用すれば、mac GUI・XQuartz間をほぼ同一の変換環境で統一することも可能になっている。
SKKのGitHubの辞書ファイル説明・配付ページを介して、必要な辞書ファイルを取得する。ひとまずはSKK-JISYO.Lでよいだろう。辞書ファイルの置き場は任意でよいが、/usr/local/share/SKKのなかであればUIMが自動的に認識してくれる。AquaSKKやmacSKKと共用する場合には、そちらで指定されている置き場の辞書を、UIMの設定パネルから指定すればよい。
複数の辞書を結合するためなどに用いるSKKtoolsの取得も、このページを介して行える。以下のようにごく普通の手順でインストールできる。
%./configure
%make
%sudo make install
*デフォルトでは関係ファイルは/usr/local以下にインストールされる
【UIM】
ここからはXQuartz環境と追加の開発ツールやライブラリが必要となる。近年はmacOSのこの種のパッケージ・システムとしてはHomebrewが一般的だが、HomebrewのGTKはX11のサポートが削られてしまっている。そこで今回はMacPortsでXQuartz環境以下を用意した。
インストールが必要なのは、xorg, intltool, pkgconfig, gtk2。また、UIMの公式GitHubから最新のもの(現在はuim-1.9.6.tar.gz)を取得する。
uim-x.x.x.tar.gzを展開してできるuim-x.x.xフォルダに移動する
uim-x.x.x/sigscheme/libgcroots/include/private/gc_priv.hにはアーキテクチャ/OSを判別して分岐する処理がある。macOS/Apple Siliconだと、現状ではここで「オメーのことなんか知らねぇよ」とエラーになってしまう。そこでこのソースの398行目と399行目の間に以下の記述を挿入する。これで本当に正しいのか不安は残るが、一応./configure, makeは通り実際に動作もしている。
# elif defined(__aarch64__)
# define GC_THREAD_STATE_T aarch64_thread_state64_t
# define GC_MACH_THREAD_STATE aarch64_THREAD_STATE64
# define GC_MACH_THREAD_STATE_COUNT aarch64_THREAD_STATE64_COUNT
# define GC_MACH_HEADER mach_header_64
# define GC_MACH_SECTION section_64
%PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/usr/local/lib/pkgconfig LDFLAGS="-L/opt/local/lib -L/usr/local/lib" CPPFLAGS="-I/opt/local/include -I/usr/local/include" ./configure --enable-dict --with-anthy-utf8 -enable-default-toolkit=gtk
*MacPortsでインストールされたXQuartzとインストールしておいたAnthyの、それぞれのライブラリとヘッダの位置を明示的に指定しておく。こうしておかないと./configureが通らない。またPKG_CONFIG_PATHを明示しておかないとanthy-utf8の判別が通らない。
%make
%sudo make install
*デフォルトでは関係ファイルは/usr/local以下にインストールされる
【事後の設定】
~/.xinitrc.d/uim-xim.shを作成・実行権限を付与し
#!/bin/sh
uim-xim &
などと記して、XQuartz起動時にUIMも起動するようにする。また
export LANG=ja_JP.UTF-8
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
export XMODIFIERS=@im=uim
といった環境変数の指定は、私の環境では~/.Xresourcesに記しても読み込んでくれなかったので、~/.zprofileに記すことにした。