未完放流

終わりなど無い、有るのは試練だけだ……

RStudio の日本語入力がしづらいので調べてみた

先日に書いた記事 で、私が使えるRStudio (Desktop or Server, Linux Mint or Windows10)何等かの日本語入力に不具合があったので原因調査。 似非エンジニアの調査なのでお粗末なものです、もしも助言をいただけたら幸いです。

idwonder21.hatenablog.com

Windows ユーザであれば、R Tools Visual Studio を検討してもよいかもしれません。 日本語入力の問題に関してはクリアできます。

idwonder21.hatenablog.com

Desktop (Linux)版 fcitx

まず Ubuntu 有名どころ

blog.goo.ne.jp

本家 RStudio blog

support.rstudio.com

デスクトップ版では、ここでビルドしたバイナリを以下の場所にシンボリックリンクを張っている。

ln -s libfcitxplatforminputcontextplugin.so /usr/lib/rstudio/bin/plugins/platforminputcontexts/

この処置をすましたRStudio Desktop(Linux Mint) vim mode で作業していたところ日本語入力の切り替えが時々とまるという事態に遭遇した。 長文を書くのは少し難しい。

当然ながら、このフォルダはサーバー版、Windows Desktop 版にも該当するフォルダはない。

Desktop (Windows)版 help の情報から原因を推測

RStudio Desktop (windows) - help にある About RStudio の文言。User Agent の表記だと思われるのでqtwebkitを使ったと考えて良いのだろうか?

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/538.1 (KHTML, like Gecko) rstudio Safari/538.1 Qt/5.4.1

webkitは馴染みが薄いので下のサイトで概要を参照。 とりあえずHTMLのパースとDOM構築までを担うという解釈をしておく。 myakura.github.io

さらにこちらの記事を参照するとQtWebkitが廃止と書かれている。 gnu.hatenablog.com

nokia のQtサポート詳細みると現行バージョンでは Qt Webkit は廃止され、後継のQt WebEngineが書かれている。 *1 そもそもQt/5.4自体が2014年から2015年のリリース。 Windows10のリリースが2015年7月29日なのでQt 5.4.1の対応は微妙かもしれない。 *2 そしてRStudio開発元もQtWebkitを使うことに懸念を感じているようで、Qtのバージョンを上げるか他のエンジン(Electronなど?)を使うか検討している模様。 support.rstudio.com

helpに書かれている利用プロジェクト

半分ぐらいは名前を聞いたことがある。

ChromiumはQtWebEngineで使用されているが、現行のRStudioには実装されていないと思われる。

- Qt (LGPL v2.1)
- QtSingleApplication
- Ace (LGPL v2.1)
- Stan Ace Mode (LGPL 2.1)
- Boost
- RapidXml
- JSON Spirit
- Google Web Toolkit
- Guice
- GIN
- AOP Alliance
- RSA-JS
- tree.hh
- Hunspell (MPL)
- Chromium Hunspell Dictionaries (MPL)
- pdf.js
- SyncTeX
- ZLib
- Sundown
- highlight.js
- MathJax
- reveal.js
- JSCustomBadge
- DataTables
- jQuery
- jQuery UI
- Catch
- QUnit

github repository

github のレポジトリをみるとdesktop と server のプロジェクトは共通。 マニュアルなどを参照する、code を書く場所は"source pane"と呼ばれているらしい。

github でレポジトリ内をsourceで検索すると java で source.editor とか vim mode のコードっぽいものが出てくるので、 画面の実装はjava gwt とみるべきか。 下にAceEditorとの単語も出てきて実装されている機能と名詞が合致する。上記のAceはこれだと思われる。

Ace Editor とかで検索する以下のページにあたり、 Javascriptで作成された高機能エディタ。vim, emacs modeのキーバインドも再現している。 web UI を組む人たちの間では有名らしい。自分も過去に見ているかもしれない。

qiita.com

お試しサイトで挙動を確認したところ、RStudioで実装されている機能とほぼ一致した。 残念ながら、Windowsで使われるようなIMEの変換範囲の表示はサポートしていないようで少し使い難く残念。 こちらでは変換候補窓の位置がずれるということはなかった。

Windows 10 で変換候補が右下隅に表示される問題

独断による推測だが、Qtwebkitとそのレンダリングエンジン辺りが犯人だろうか? web page のレンダリングは結構崩れやすいし、昔のJavascriptは意図しない挙動をしたのを思い出した。 編集位置をwindows側に正しく伝えることができないために作業領域の末端が標準というのはありえそうだ。

実証するとなると同一バージョンQtで簡易的なブラウザ作成後、Aceを組み込んだhtmlを表示させて再現するといったところだろうか?Windows の開発環境は用意してないので難しそう。