Ubuntu 16.04LTSでのQtCreator日本語入力


QtAdventCalender2日目の記事です。

 昨日@task_jpさんのAutomotive Grade Linux(AGL)の紹介と開発お誘いの話題でした。
Automobileの分野でも、これからもりもりQtが使われていく感じですので、今から一緒に開発していくと色々楽しめそうですよね。
今回の私の記事では、先月名古屋で行われましたQt 勉強会 @ Nagoya No2(16.11)の時に調べていた、Ubuntu環境でのQtCreator日本語入力についての内容を紹介しようと思います。

QtCreatorでの悲しい出来事

最近ようやくUbutnu16.04LTSに自分の開発環境をUpdateしたので、さっそくオフィシャルページのqt.ioからQt5.7.0 for Android(Linux 64-bit)をダウンロードして、付属のQtCreator4.0.2を使用したところ

日本語が書けないだと!!!

って感じだったので、その原因と対応方法を探していました。

Ubuntuでの日本語入力

  • 以前の開発環境Ubuntu 14.04LTSでは、問題なく日本語入力できていた事。
  • Qt5.7.0 for Android(Linux 64-bit)を14.04に入れて使用したところ、問題なく日本語入力できる。

こんなところから、何かUbuntu側で変更がなかったか確認してみました。
Ubuntuの日本語入力について調べてみると、どうやらインプットメソッドが変更になったようでした。1

Ubuntu Version 日本語入力
14.04 iBus+Anthy
16.04 Fcitx+Mozc

以前もiBusにて一時期に日本語入力ができない事があったので、同じ原因ではと思いQtCreatorの
plugins/platforminputcontextsあたりを覗いてみました。

・・・・fcitxないやん
さらに調べていくと、fcitxプロジェクトの方でQt5用のpuluginが用意されていたので、今回はそれを使用してみることにしました。

fcitx Qt5 Input Contextを導入してみる

fcitxのgitリポジトリからCodeを取得します。

$ git clone [email protected]:fcitx/fcitx-qt5.git
  • 今回はRelease Versionの最新版の1.0.6を使用してみました。
$ cd ${git clone先のディレクトリ}
$ git checkout -b Release1.0.6 1.0.6
Switched to a new branch 'Release1.0.6'

fcitx-qt5のbulid

fcitx-qt5は、cmakeでのbuildになるので、入ってなければcmakeを導入します。
また、build時に必要なパッケージもいくつかあるので、build前に一緒に導入しておきましょう。

$ sudo apt-get install cmake ecm extra-cmake-modules fcitx-libs-dev

cmakeをする時の注意点としては、

  • QtCreatorで使用するpluginを作成する場合には、QtCreator自体で使用しているQt librariesと同じバージョンが必要ですので、あらかじめ使用されているバージョンを確認しておきましょう。

QtCreatorのヘルプ(H)→Qt Creatorについて(Q)からバージョンを確認する事ができます。

僕の場合だと、Qt5.7.0 for Android(Linux 64-bit)に付属しているQtCreatorなのでQt5.7.0が使用されていました。

  • cmakeを行う際に、使用するQt librariesの参照先へのプレフィックの付加が必要ですCMAKE_PREFIX_PATHにQt librariesの参照先pathを忘れずに追加しましょう。

僕の環境では下記のように設定してcmakeしました。

$ cmake . -DCMAKE_PREFIX_PATH=/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64

Checking file [/usr/share/ECM/cmake/ECMConfig.cmake]
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5/Qt5Config.cmake]
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5Core/Qt5CoreConfig.cmake]
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5DBus/Qt5DBusConfig.cmake]
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake]
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake]
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake]
-- Checking for module 'fcitx-utils'
--   Found fcitx-utils, version 4.2.9.1
-- Checking for module 'fcitx-config'
--   Found fcitx-config, version 4.2.9.1
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
Checking file [/opt/qt/QtforAndroid/Qt5.7.0/5.7/gcc_64/lib/cmake/Qt5Core/Qt5CoreConfig.cmake]
-- 
-- The following OPTIONAL packages have been found:

 * PkgConfig

-- The following REQUIRED packages have been found:

 * ECM (required version >= 1.4.0)
 * Qt5DBus
 * Qt5Widgets
 * Qt5 (required version >= 5.1.0)
 * Qt5Gui (required version >= 5.1.0)
 * XKBCommon (required version >= 0.5.0) , Keyboard handling library using XKB data , <http://xkbcommon.org>
 * Qt5Core

-- Configuring done
-- Generating done
-- Build files have been written to: /opt/mysrc/fcitx-qt5.git

正常に完了すれば、あとは通常のmakeをするだけです。

$ make -j 8

fcitx-qt5を導入する

fcitx-qt5以下の ./platforminputcontextに
libfcitxplatforminputcontextplugin.so
が作成されているはずです。
これをQtCreatorが参照するplatforminputcontextディレクトリにいれておきましょう。
また、Qt5 librariesの中には翻訳で利用するlinguistなど、日本語入力を使用するToolも含まれています。これを期にQt5 librariesの中のplatforminputcontextディレクトリに入れておきましょう。2

$ cd ./platforminputcontext
$ cp libfcitxplatforminputcontextplugin.so ${QtCreatorのInstallディレクトリ}/lib/Qt/plugins/platforminputcontexts
$ cp libfcitxplatforminputcontextplugin.so ${Qt5 librariesのInstallディレクトリ}/plugins/platforminputcontexts

libfcitxplatforminputcontextplugin.soの導入が終わったら、QtCreatorを再起動して
日本語入力してみましょう。

こんな感じにサクサク入力できるようになっているはずです。

おわりに

 Ubuntuなどのlinuxと違いWindowsやMacでは、なかなかこういった不具合はないと思いますが、僕のようにARMメインの組み込みボードなどで開発している場合には、linux環境でクロスコンパイルをした開発が多いと思います。QtCreatorには便利な機能がもりだくさんあるので、是非日本語を打てるようにしてストレスがない開発環境を構築してみましょう。

 日本Qtユーザー会(Japan Qt Users' Group)では有志の方々によって、今では東京・大阪・名古屋で勉強会が月1、2回のペースで開催されています。勉強会に参加することによって、こういった開発時の困ったことや、Qt自体の使い方などをいろいろ教えてくれるので、よかったら参加してみてください。

 私の住んでいる名古屋でも、12/10にQt 勉強会 @ Nagoya No3(16.12)が開かれます。興味があったら是非参加してみてください。

注釈

1.[Gihyo.jp] Ubuntu 16.04 LTSの日本語入力

2.僕のようにQt5 librariesに同梱されているQtCreatorの場合には、
\${Qt5 librariesのInstallディレクトリ}/Qt5.7.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts
\${Qt5 librariesのInstallディレクトリ}/Qt5.7.0/5.7/gcc_64/plugins/platforminputcontexts
になります。