えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

Linux の日本語入力設定手順

20200912150711

お伝えしたいこと

Linux では、デスクトップ環境をインストールした後もデフォルトでは日本語入力ができません。
入力できるのはアルファベットのみです。

本記事では、Linuxデスクトップ環境で日本語入力を設定する方法をお伝えします。
筆者環境の都合で、 FedoraiBus + Mozc を導入するケースを紹介します。
ただ、基本的な考えはディストリビューションに依らず、共通していると思います。

Input Method やMozcといった用語を知りたい方は、先に(参考) Input Method とはを参照してください。
Fedora以外のディストリビューションを使っていて、ibus-mozc以外のIMEも検討したい方は、先に(参考) その他の日本語入力の選択肢をご覧ください。

日本語入力の設定手順

Input Method のインストール

今回は、デフォルトのibus-anthy (iBus + anthy) ではなく、ibus-mozc (iBus + Mozc) を使用します。
理由は以下の通りです。

Mozcを使う場合は、ibus-mozc以外にもfcitx-mozcという選択肢もあります。
fcitxの方が慣れていて好ましいという方は、そちらもご検討ください。
特にこだわりがなければ、本記事に合わせてibus-mozcを選択する方が調査の手間を省けると思います。

さて、必要パッケージをインストールします。
以下のコマンドを実行してください。

sudo dnf install ibus-mozc langpacks-ja

langpacks-ja は、日本語入力という意味では本来必要ではありません。
実際、このパッケージがなくても日本語入力の設定は問題なくできます (従ってディスクリソースが非常に限られた使い捨てサーバなどの環境では省略しても問題ありません)。
ただ、このパッケージに依存関係でついてくる langpacks-core-font-jagoogle-noto-serif-cjk-ttc-fonts といったフォントが環境次第では日本語環境の文字化けを解消することもあるので、ついでに入れてしまうのが推奨です。

langpacks-ja は、本来 localectl コマンドで日本語環境を設定するために必要なメニュー日本語翻訳情報などを含むメタ情報パッケージです。
依存関係でmanの翻訳情報も一緒についてきます (man-pages-ja)。
langpacks に関する詳細情報が知りたい方は、RedHat社のマニュアルを参考にしてみてください。

Input Method の選択

Input Method Framework として iBus を使うように設定します。
Cinnamon デスクトップ環境をモデルに説明しますが、他のデスクトップ環境でもほぼ同様の手順で対応できると思います。

Menu から input method で検索し、Input Method Selector を起動します。
im-chooser コマンドを実行することでも同じ画面を起動できます。

im-chooser1

im-chooser2

iBus を選択します。
必要に応じて再ログインして設定反映します。

iBus の隣にある Preferences から iBus の設定画面に移動します。
ibus-setup コマンドを実行することでも同じ画面を起動できます。

ibus-setup-general

iBusの設定

iBus の設定では、基本的にIMEの選択を行います。

先程のiBus の設定画面で、 Input Method のタブを開きます。
既存のMozc 以外のInput Method が登録されていた場合は、 Remove で除外します。
そして Add > Japanese > Mozc と選択し、Mozc をIMEとして追加します。

ibus-setup-mozc

Preferences を選択し、Mozc の設定画面を開きます。
/usr/libexec/mozc/mozc_tool --mode=config_dialog コマンドを実行することでも同じ画面を起動できます。

mozc-general

(任意) キー配置のカスタマイズ (Mozc の設定変更)

基本的には変更不要ですが、私の好みで一部キー配置をカスタマイズします。
Windows でも同様のことを行っていたのですが、以下のように設定します。

  • 未入力の状態で変換を押すと、IMEオンにする (デフォルトは再変換)
  • 未入力の状態で無変換を押すと、IMEオフにする (デフォルトは入力形式を ひらがな全角カタカナ半角カタカナ の順に切り替える)

半角/全角キーで切り替えていると、今IMEオンなのかオフなのかわからなくなることが多いのですよね。
なので、上記のようにMac風なカスタマイズを入れることで、日本語入力の前は変換、英語入力の前は無変換 を押してからタイプすれば問題ない状態を作っています。

上記のようにカスタマイズしたい方は、以下のように設定変更してください。

下記Mozcの設定画面で、Keymap (キー設定) > Keymap Style (キー設定の選択) > Customize (編集) を選択します。

mozc-general2

すると、 Mozc keymap editor が開きます。

mozc-keymap-editor2

ここで上図赤枠のような設定となるように、以下の設定を入れます。
※設定箇所を見つけやすくするため、一番上の Key の部分をクリックしてソートしておくと良いです

Mode (モード) Key (入力キー) Command (コマンド)
Direct input (直接入力) Henkan (変換) Activate IME (IMEを有効化)
Precomposition (入力文字なし) Henkan (変換) Activate IME (IMEを有効化)
Precomposition (入力文字なし) Muhenkan (無変換) Deactivate IME (IMEを無効化)

入力キーの設定は、下記サイトを参考にさせていただきました。
こちらのサイトには、変換中に変換キーや無変換キーを押した場合もIMEオン/オフを切り替えるような設定になっていました (更にMac寄り?)。

magidropack.hatenablog.com

こちらでiBus、Mozc の設定は完了です。
関連するウィンドウは OK などで設定を反映しつつ閉じて大丈夫です。

キーボードレイアウトの不具合回避

ibus-mozc の不具合と思われるのですが、2020/9 現在、iBusにMozc を追加した直後はGUIのキーボードアプリで日本語キー配置を選択しているのに英語キー配置になってしまう という事象があります。
以下に、この事象の回避方法を記載します。

3パターン紹介しますが、回避方法1 が一番お勧めです。
他の方法は、回避方法1 でうまく行かなかった場合のために念のため記載しています。

英語キーボードレイアウトを使っている方はそもそも問題ないので、スキップで問題ありません

回避方法1. ibus-mozc の設定ファイルからキーボードレイアウトの指定を変更する (推奨)

こちらは根本原因に対するアプローチです。
私もこの方法を使っています。
システム全体に影響を与えることになりますが、回避方法2 と組み合わせることでユーザーごとにキーボードレイアウトを指定できます。

以下サイトを参考にさせていただきました。
ありがとうございます。

qiita.com

以下のコマンドで mozc.xml を開き、ファイルに直書きされたキーボードレイアウトの値を書き換えます。
以下のコマンドで設定ファイルを開きます。

sudo vi /usr/share/ibus/component/mozc.xml

<layout>default</layout> と書かれている部分を以下のように書き換えます。

  <layout>jp</layout>

設定反映のためにデスクトップ環境への再ログイン、またはOS再起動します。

回避方法2. キーボードレイアウトの再登録 (非推奨)

Cinnamon デスクトップ環境の場合、キーボード設定から日本語キーボードレイアウトの再追加を行うことでも不具合を回避できました。
恐らく、他のデスクトップ環境でもできると思います。

英語キーボードと日本語キーボードを使うユーザーが混在しているときには役に立つかなと思います。

ただ、この方法を使った場合はiBusの設定画面からMozcをIMEとして追加するたびに不具合が再発するので、都度同じ手順で回避する必要が出てきます。
IMEの追加・削除を実施する頻度は低いので、それほど困らないとは思いますが...。

具体的には以下の手順です。

  • Menu から Keyboard で検索し、キーボードの設定画面を開く
  • Layout タブを開き、以下の設定を行う
    • + アイコンから English (US) を追加
    • アイコンから Japanese を削除
    • + アイコンから Japanese を再追加
    • アイコンからEnglish (US) を削除

回避方法3. iBus 設定において、「システムのキーボードレイアウトを使う」に設定する (非推奨)

回避方法1 と比較してあまり綺麗なやり方ではないのでオススメはしませんが、参考までに書いておきます。
iBus単体の機能でキーボードレイアウトを指定する方法です。
こちらの方法も回避方法1 と同様、システム全体に影響します。

具体的な手順は、以下の2ステップです。

  • ibus-setup コマンドなどでiBusの設定画面を開き、Advanced タブに移動する
  • Use system default keyboad layout にチェックを入れる

回避方法3の前提として、localeの設定で使いたいキーボードレイアウト (今回は日本語) になっている必要があります。

localectl コマンドを実行し、 X11 Layout がjpになっていれば、デスクトップ環境におけるキーボードレイアウトがjpとシステムレベルで設定されていることになります。

[stopendy@pc ~]$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp
      X11 Layout: jp
[stopendy@pc ~]$ 

X11 Layout を変更したい場合は、sudo localectl set-x11-keymap jp といったコマンドを実行します。

(参考) Input Method とは

iBusとかMozc といった用語が複数出てきてもやもやしている方向けに、補足説明を用意しました。
気になる方のみ読んでください。

Input Method とは、キーボードから入力されたアルファベットから各言語の文字 (平仮名など) に置き換えたり、変換機能を与えるソフトウェア群のことです。

Linux における Input Method は、Input Method Framework と Input Method Editor (IME) の2つで構成されています。

Input Method Framework

Input Method Framework とは、IME (後述) を動作させるための共通フレームワークです。
IMEの切り替えなどの機能を持ちます (直接入力、IME1、IME2、...)。

日本語入力をサポートするフレームワークとして、以下があるようです。
これら4つには目立った機能差分はないようです。

日本語のブログを調べると、iBusかfcitxのどちらかを使っているという話をよく聞きます。
Fedoraにおいても、ibus-mozcfcitx-mozcのいずれかを選択できます (※)。

(※) dnf list *-mozc と実行すると、 ibus-mozcfcitx-mozcが表示されるため。
以前はibus-mozcしか存在しなかったが、いつからかfcitx-mozcも追加されていた

Input Method Editor (IME)

IME を Input Method Framework と組み合わせることで、本来英字しか入力できないキーボードで多言語の入力をサポートできるようになります。

日本語のIMEは主に以下の機能を提供します。

  • ローマ字入力、かな入力
  • 変換
  • キーのカスタマイズ (例えば 半角/全角 キーでIMEのオン/オフを切り替える機能の割当など)

具体的なIMEソフトを挙げると、例えば以下のようなものがあります。

Mozc と kkc を実際に使ってみたので比較します。

Mozc

kkc

  • kkc公式GitHub
  • 設定画面を見たところ、基本機能は揃っている印象
  • Fedora にはデフォルトでibus-kkc がインストールされている
  • Microsoft IMEGoogle日本語入力に慣れていると、少し癖を感じるかも
    • 日本語入力でスペースキーを押すと、全角スペースではなく半角スペースになる
    • System Tray (≒通知領域) に表示されたアイコンが常に「あ」。英語入力でも日本語入力でもアイコンが切り替わらない
    • WindowsIMEに慣れていると、デフォルトのキーボード設定に癖があると感じるかも (無変換がカタカナ変換ではなく変換解除など)

(参考) その他の日本語入力の選択肢

下記ページにまとまっているので、興味のある方はご覧ください。

地域化 - ArchWiki

あくまでArch Linux 向けの情報なので、実際にFedora が対応しているかどうかは以下のコマンドなどで確認します。

dnf list *-anthy *-kkc *-mozc *-skk
# Installed Packages
# ibus-kkc.x86_64            1.5.22-13.fc32                        @fedora
# ibus-mozc.x86_64           2.23.2815.102-9.fc32                  @fedora
# Available Packages
# fcitx-anthy.x86_64         0.2.3-1.fc32                          updates
# fcitx-kkc.x86_64           0.1.0-17.fc32                         fedora 
# fcitx-skk.x86_64           0.1.0-15.fc32                         fedora 
# fcitx5-skk.x86_64          0-0.2.20200822git02fb41d.fc32         updates
# gcin-anthy.x86_64          2.8.9-4.fc32                          updates
# ibus-anthy.i686            1.5.11-6.fc32                         fedora 
# ibus-anthy.x86_64          1.5.11-6.fc32                         fedora 
# ibus-skk.x86_64            1.4.3-6.fc32                          fedora 
# m17n-lib-anthy.x86_64      1.8.0-7.fc32                          fedora 
# scim-anthy.x86_64          1.2.7-26.fc32                         fedora 
# uim-anthy.x86_64           1.8.8-6.20200828git0c2fbfa6.fc32      updates
# uim-skk.x86_64             1.8.8-6.20200828git0c2fbfa6.fc32      updates

(参考) Mozcがクラッシュしたときは

時折Mozcがクラッシュして日本語入力できなくなることがあります。
その際は、iBusごと再起動することで復旧できます。

以下の画像はCinnamon デスクトップのサンプルですが、隅っこの通知領域にiBusのアイコンがあります。
このアイコンを右クリックし (1)、Restart を選択することでiBusを再起動できます (2)。

ibus-restart

(参考) デフォルトIMEの変遷

以下のように変遷してきました。

時期 デフォルトIME 補足
〜Fedora18 ibus-anthy ※最初からずっとibus-anthyなのか、途中からなのかは不明
Fedora19〜33 ibus-kkc anthyのメンテが滞り、kkcの方が活発だったので乗り換え
Fedora34〜 ibus-anthy kkcのメンテが滞り、anthyの開発が再開されたので乗り換え

ibus-mozcもデフォルトIMEの候補として意識はされているようです1

まとめ

Linux (特にFedora) のための日本語入力の設定方法を書きました。
fcitx, iBus, Mozc, kkc など様々な用語が飛び交ってわかりづらい部分もありますが、本記事でもやもやが解消されて正しく設定する手助けになれば幸いです。

もし指摘・補足・質問などあればコメントお願いします。

Linux PC構築関連リンク集

endy-tech.hatenablog.jp