Linux環境のRPGツクールMVで日本語入力できなかった原因を特定した
ちょっと前からLinux環境のRPGツクールMV(Steam版)で日本語入力ができなくなっていた。 昨日気分転換にプライベートPCのOSをManjaroLinuxからLinuxMint Cinnamonに変更して、 ツクールも入れ直して動作確認したらやっぱり動かない。
そもそもなんでこれ動かないんだろう数年前は動いていた気がするのになぁ・・・ と思い、本腰いれて原因を調査した。
ここではどういう過程で調査したのかを順に記録する。
前提情報
まず、僕は日本語入力のIMEの仕組みとかを何も知らない。 Linux環境で日本語入力を可能にするためのfcitxだのibus-mozcだのも Webの知識をコピペして設定して動かしている。 よって何もそのあたりの細かい仕様について知らない。
知らないなりに色々仮説を立てて調査したので トンチンカンなこと言っている可能性は大いにあります。
調査
そもそも日本語入力できるのか
ツクールMVの文章入力の画面で全角半角変換のキーを入力しても反応しない。 アルファベットはそのまま普通に入力できた。
しかしながら、エディタやブラウザなどで日本語を入力してから コピペで貼り付けたら日本語を入力できた。 よって日本語を入力できる環境自体はあると考えた。
キーボードレイアウトをUS配列から日本語配列に変更
僕はHHKBのUS版を使っているので、キーボードレイアウトもUSに変更している。 日本語変換もfcitx + ibusで右altと左altで日本語英語を切り替えるようにしている。 この設定が何か問題になっているのでは、と考えた。
例えば、Altキーで日本語に変換しようとしてメニューバーの方にフォーカスを奪われて いたりするかもしれない、と考えたためである。
試しで日本語配列に変更し、素直に全角半角キーで変更するように設定を戻してみたが、 結果は変わらなかった。
類似情報がないか調べる
だいたいこういうのは他の人も詰まっているだろう、と思ってGoogle検索や Steamのフォーラムで色々調べてみた。
「SteamはGoogleIMEでは日本語入力できないけれど、MS IMEなら入力できる」 みたいな情報も見つかりはしたが、ツクールには逆に全くそれっぽい情報が見つからなかった。
起動オプションを疑う
Steamからゲームを起動する時、ゲーム起動時にオプションを渡すことができる。 上級者向けの機能で、僕は全く使っていない。名前だけ知っていた。
起動時のオプションとかでIMEオフみたいなのがもしかしたらあるかも、と思い プロセスの起動オプションを調べてみることにした。
% ps aux | grep -i rpg jiro4989 5530 0.0 0.0 4644 272 ? S 13:10 0:00 /bin/sh -c '/home/jiro4989/.steam/steam/steamapps/common/RPG Maker MV/RPG Maker MV.sh' jiro4989 5532 0.0 0.0 4644 268 ? S 13:10 0:00 /bin/sh /home/jiro4989/.steam/steam/steamapps/common/RPG Maker MV/RPG Maker MV.sh jiro4989 5537 12.0 2.0 4020776 245376 ? Sl 13:10 0:02 /home/jiro4989/.steam/steam/steamapps/common/RPG Maker MV/RPG Maker MV jiro4989 5550 0.0 0.2 287016 31356 ? S 13:10 0:00 /home/jiro4989/.steam/steam/steamapps/common/RPG Maker MV/libexec/QtWebEngineProcess --type=zygote --no-sandbox --lang=C
すると、「QtWebEngineProcess」というプロセスが目に止まった。 ツクールMVはQtで作られている可能性があると考えた。
エディタ側のライブラリを調べる
IMEを実装したことないので想像で話すが、 いろんな言語に対応する必要のあるIMEなんて僕ならとても実装したくない。 既存でライブラリがあるなら絶対使う、と思ったのでライブラリ側の名前で情報を探す。
最初に想像したのはNW.js。 ツクールMVのゲームはNW.jsで動く。
ただし今回問題になっているのはツクールMVの生成されたゲームではなくエディターの方なので NW.jsは調べても意味ないだろうなと考えた。
前述のQtらしきプロセスのこともあったので、ツクールMVとQtについて調べたら やはりQtで作られていることがわかった。
Qtといえばクロスプラットホームで動作するGUIツールキットなので、 Linux, Mac, Windowsで動くのも納得。 日本語入力もQt側でよしなにやっていると考えたのでQtの日本語入力について今度は調べることにした。
Qtのライブラリを調べる
とりあえず雑に「Qt 日本語入力」で調べたところ、まっさきに以下の記事がヒットした。
自作QtアプリやQtCreatorで日本語入力ができない問題の解決法
この記事の中の以下の記載が目に止まった。
libfcitxplatforminputcontextplugin.soがないためらしい。
fcitx と書いてあるので、もしかしたらこれと近い名前のInputMethodプラグインをツクールMVも使っているのでは、と考えた。 以下のコマンドで調査した。
% pwd /home/jiro4989/.steam/steam/steamapps/common/RPG Maker MV % find . -name "*.so" | grep plugin | grep -i -e ibus -e fcitx -e anthy ./plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
「libibusplatforminputcontextplugin.so」というすごくそれっぽい名称のファイルが見つかった。 他に同様のファイルがないかを念の為確認。
% ls -1 plugins/platforminputcontexts libcomposeplatforminputcontextplugin.so libibusplatforminputcontextplugin.so
これだけ見るとibus以外のInputMethodに対応していないように見える。 僕の環境ではfcitx-mozcを使用しているので、これだと僕の環境で日本語入力できないのも 納得できた。
ということで次は日本語入力をfcitx-mozcからibus-mozcに変更して検証することにした。
日本語入力をfcitx-mozcをibus-mozcに変更
僕のPCの環境はAnsibleである程度構築を自動化している。 fcitx-ibusの環境構築もある程度自動化していた。
今回の調査に際して、以下のように変更を加えた。
https://github.com/jiro4989/setup/commit/75b07d0a3e70de8d50c2ee32d2ac2fbc1c499029
他の設定は以下の記事を参考にした。
日本語入力できるようになった
ということで、紆余曲折を経て無事以下のようにLinux環境で日本語入力できる状態になりました。
まとめ
Linux環境でツクールMVで日本語入力できなかったのを解決する過程を説明しました。 僕と同じ問題に直面している人の助けになれば幸いです。