Raspberry Pi Zero 2 W で日本語キーボード＆日本語入力を使う方法

---

## はじめに

Raspberry Pi Zero 2 W は、超小型ながら Wi-Fi や Bluetooth を搭載し、ちょっとしたプロジェクトから高度な実験まで幅広く使える人気モデルです。  
また、**日本語キーボードを使いたい**、**日本語IMEで日本語入力したい** という要望にも対応できます。  
※なお、この記事中で登場する **IME (Input Method Editor)** とは、日本語入力における変換エンジンのことで、例えば **Mozc** は Google日本語入力を元に開発された日本語変換エンジンです。  
本記事では、Pi Zero 2 W の環境で日本語キーボードを接続し、日本語入力を行うための手順や注意点について解説します。

---

## 1. ロケール＆キーボードレイアウトの設定

### 1-1. ロケール設定で ja\_JP.UTF-8 を有効化

Raspberry Pi OS の「ロケール (Locale)」を日本語に変更することで、ターミナルのメッセージやファイル名、文字コードが日本語環境に合わせて扱われるようになります。  
ここで注意すべき点は、複数のロケールを有効化した場合でも、システム全体の**デフォルトロケール**は一つしか設定されないということです。  
そのため、**デフォルトロケールを日本語にする場合は、対話型ウィザードで $ja\_JP.UTF-8$ を選択するか、手動で設定する必要があります。**

- **CUI (raspi-config) の場合**  
  ```bash
  sudo raspi-config
  # Localisation Options -> Locale -> ja_JP.UTF-8 を選択
  ```
  複数のロケールが表示された場合、**デフォルトロケールとして ja\_JP.UTF-8 を選択**してください。  
  もし後から手動で設定したい場合は、`/etc/default/locale` ファイルを編集して以下のように記述します。
  ```bash
  LANG=ja_JP.UTF-8
  ```
- **GUI (Raspberry Pi Configuration) の場合**  
  1. 「Localisation」タブで Locale: `ja_JP.UTF-8` を選択  
  2. 再起動することで反映  

**【SSH接続時の注意】**  
ロケールを変更した後、SSH接続時に以下のようなエラーメッセージが表示される場合があります。
  
```plaintext
locale: cannot set LC_ALL to default locale: No such file or directory
```

この場合、クライアントから送信されるロケール環境変数とサーバ側で生成されているロケールが一致していない可能性があります。対策は以下の通りです。

1. **サーバ側でロケールが生成されているか確認**  
   サーバ上で以下のコマンドを実行し、`ja_JP.UTF-8` がリストに含まれているか確認します。
   ```bash
   locale -a
   ```
   リストにない場合は、以下のコマンドで生成してください。
   ```bash
   sudo locale-gen ja_JP.UTF-8
   sudo update-locale LANG=ja_JP.UTF-8
   ```
2. **SSHクライアントから送信されるロケール環境変数の対策**  
   クライアント側の SSH 設定ファイル（通常は `~/.ssh/config`）で、ロケール情報の送信を無効にするか、サーバ側の `/etc/ssh/sshd_config` の `AcceptEnv` 設定を確認してください。  
   例えば、クライアント側で以下のように設定すると、ロケール情報が送信されなくなります。
   ```plaintext
   Host *
       SendEnv
   ```
これらの対策により、ロケール変更後でも安定してSSH接続できるようになるはずです。


### 1-2. キーボードレイアウトを “Japanese (jp106)” に

物理的に **日本語配列キーボード** を使用する場合、OS 側でも正しく日本語配列として認識させる必要があります。ただし、**CUI環境で `dpkg-reconfigure keyboard-configuration` を実行した場合、「jp106」という名称が直接表示されないことがあります。** これは、Debian系（およびRaspberry Pi OS）の設定ツールでは、専用の「jp106」モデルが用意されておらず、内部的に「Generic 105-key PC (intl.)」などの汎用モデルを使用し、後続のレイアウト選択で「Japanese」を指定することで日本語配列（JIS配列）が有効になるためです。

以下に具体的な手順を示します。

- **GUI環境の場合**  
  - `raspi-config` の「Localisation Options」→「Keyboard」でキーボードレイアウトを「Japanese」と選択します。  
  - ※この際、モデル選択で「jp106」という項目は表示されず、通常は「Generic 105-key PC (intl.)」などを選ぶ形となります。GUIでは内部的に適切な日本語配列として処理されます。

- **CUI環境の場合**  
  1. 以下のコマンドを実行して対話型ウィザードを起動します。
     ```bash
     sudo dpkg-reconfigure keyboard-configuration
     ```
  2. **キーボードのモデル選択**では、**「Generic 105-key PC (intl.)」**（またはそれに類する汎用モデル）を選びます。  
     ※日本語キーボードは実際には106キーや109キーですが、Debian系の設定では専用の「jp106」モデルは用意されておらず、105キーのモデルで十分に対応できます。
  3. 次に、**キーボードのレイアウト**を尋ねられたら、**「Japanese」**（日本語）を選択します。  
     ※レイアウト選択後、詳細なバリアントの選択画面が表示される場合があります。ここでは、「Japanese (OADG 109A)」や単に「Japanese」など、利用しているキーボードに最も近いものを選択してください。  
  4. 以降、コンポーズキーの設定などの追加オプションが表示されますが、特に変更する必要がなければそのままデフォルトの設定で進めます。
  5. 設定完了後、変更を反映するため、以下のコマンドを実行してください。
     ```bash
     sudo setupcon
     ```
     
     ※環境によっては、初期RAMディスクに古いキーマップが残る場合があるため、必要に応じて以下のコマンドでinitramfsを更新することも検討してください。
     ```bash
     sudo update-initramfs -u -k all
     ```

- **補足:**  
  - 設定ツール上で「jp106」と直接表示されないのは仕様上の問題であり、**「Generic 105-key PC」と「Japanese」の組み合わせで正しく日本語配列（JIS配列）が適用されます。**  
  - もし設定後も期待する日本語キーボードの動作（例えば「@」や「¥」の入力位置など）にならない場合は、`/etc/default/keyboard` の内容を確認し、手動で修正する方法もあります。例えば、以下のような設定例となります。
    ```bash
    XKBMODEL="pc105"        # 汎用105キー（日本語キーボードとしても有効）
    XKBLAYOUT="jp"          # 日本語レイアウト
    XKBVARIANT="OADG109A"   # 必要に応じ、または空欄でも可
    XKBOPTIONS=""
    BACKSPACE="guess"
    ```
    その後、システムを再起動するか、`sudo setupcon` で設定を反映してください。

以上の手順により、CUI環境でも正しく日本語キーボード（106/109キー相当）が設定され、キーボードの各キーが期待通りに動作するはずです。

---

## 2. 日本語入力 (IME) の導入

### 2-1. デスクトップ版 (GUI) の場合

GUI環境では、**Mozc** などの IME を導入することで、手軽に日本語入力（かな漢字変換）が可能になります。  
ここでは、一般的に使われる **fcitx-mozc** を例に説明しますが、**ibus-mozc** でも構いません。  
※両方を同時にインストールする必要はなく、好みに合わせてどちらか一方を選んでください。  

```bash
sudo apt-get update
sudo apt-get install -y fcitx-mozc
# あるいは ibus-mozc でも可
```

再起動後、パネル（右上）に「キーボードアイコン」や「言語切替アイコン」が表示され、**日本語入力のON/OFF** を切り替えられるようになります。  
例として、ブラウザやテキストエディタでIMEをONにして「かな漢字変換」を試してみてください。

### 2-2. Lite版 (CUI) の場合

- **CUI環境** で直接かな漢字変換を行うのは一般的ではなく、セットアップも手間がかかります。  
- 日本語のファイル名や UTF-8 文字列の表示はロケール設定で対応できますが、**文字入力や変換の機能は標準では提供されません。**  
- 通常は **SSHクライアント** や **外部PCのIME** を用いて日本語入力し、Pi に送信する方法が多く取られています。

※最新のRaspberry Pi OS では Wayland を採用している場合もあり、一部アプリケーションで日本語IMEが正しく動作しないケースがあります。問題がある場合は、X11モードへの切り替えを検討してください。

---

## 3. 日本語キーボードを Pi Zero 2 W に接続する方法

### 3-1. USBホストモードで接続

Pi Zero 2 W を USBホストとして使うには、**OTGアダプタ** を利用します。  
※OTGアダプタとは、Pi Zero 2 W のデータ用USBポートをフルサイズのUSBポートに変換するアダプタのことです。  

OTGアダプタ経由でフルサイズの USB 日本語キーボードを接続し、OS のキーボード設定を jp106 にするだけで、GUI・CUI問わず通常通りのキーボード入力が可能になります。

### 3-2. Bluetooth キーボードをペアリング

Pi Zero 2 W は Bluetooth を内蔵しているため、**日本語配列の Bluetooth キーボード** も利用できます。  

- `bluetoothctl` や GUI の Bluetooth アイコンからペアリングを実施します。  
- ※ペアリング後、キーボードレイアウトを jp106 に設定しておかないと、記号キーがずれてしまう可能性があります。  
- ※詳細な手順については、[Raspberry Pi Bluetooth設定ガイド](https://www.raspberrypi.com/documentation/computers/configuration.html#bluetooth) なども参考にしてください。

---

## 4. HIDガジェットで日本語を送信する場合

**Pi Zero 2 W を USBキーボード（HID）としてターゲットPCに接続する場合**、いわゆる「HIDガジェットモード」を活用します。  

- このモードでは、Pi は **キーコード** を送信し、実際の文字入力や変換は **ターゲットPC側のIME** が行います。  
- つまり、たとえPi内部で日本語設定をしていても、最終的な文字が正しく入力されるかは、ターゲットPCのキーボードレイアウトやIMEの設定に依存します。  
  （※HIDガジェットモードとは、Pi Zero 2 W が USBキーボードとして動作する仕組みのことです。）

---

## 5. 「¥」と「\\」の混乱問題

Windows環境では、**「¥」 が実際にはバックスラッシュ（`\\`）として表示される**ことが多く、日本語配列キーボードユーザーを混乱させる原因となります。  

- これは、キーボードマッピングとフォント表示の関係によるもので、**Pi側の設定とターゲットPC側の設定で一致させる**、またはフォントを変更して `\\` を正しく表示させる対策が必要です。  
- ※また、設定ファイルやMarkdown記述時にはバックスラッシュ(`\\`)のエスケープに注意してください。

---

## 6. よくある質問 (FAQ)

1. **Q. Raspberry Pi Zero 2 W だから日本語が使えないとか制限はあるの？**  
   - **A. いいえ。**  
     Raspberry Pi Zero 2 W も他のPiシリーズと同様、Raspberry Pi OS により日本語環境を整えることが可能です。

2. **Q. Lite版 (CUI) で日本語入力（変換）をしたい場合はどうすれば良い？**  
   - **A.**  
     標準では日本語入力の変換機能はサポートされていません。個別のフレームワークを導入するか、特殊な設定が必要になります。  
     多くの場合、英数字入力に留めるか、SSH接続元のIMEを利用する方法が取られています。

3. **Q. 日本語キーボードが「US配列」として認識されてしまう場合の対処法は？**  
   - **A.**  
     `raspi-config` や GUI の Keyboard Layout から「Japanese (jp106)」を再設定してください。  
     また、複数のレイアウトが同時にインストールされている場合、意図しないズレが生じる可能性があるので確認が必要です。

4. **Q. HIDガジェットで日本語キーコードを送る場合、Pi側で日本語IMEは必要か？**  
   - **A.**  
     いいえ。  
     HIDガジェットモードでは、Pi はあくまでキーコード変換のみを担当し、実際の日本語入力はターゲットPC側のIMEが処理します。

---

## 7. まとめ

- **Raspberry Pi Zero 2 W でも日本語キーボードや日本語IMEの利用は可能**です。  
  ロケールを `ja_JP.UTF-8` に、キーボードレイアウトを `jp106` に設定すれば問題ありません。  
- **GUI環境** では `fcitx-mozc` などのIMEを導入することで、かな漢字変換が手軽に利用できます。  
- **CUI環境 (Lite) では**、日本語入力機能は制限されるため、外部PCからSSHで日本語入力するのが一般的です。  
- **HIDガジェットモード** においては、Pi が送信するのはキーコードのみとなり、実際の日本語変換は **ターゲットPC側のIME** に依存します。  
- ※最新の Raspberry Pi OS では Wayland を採用している場合もあるため、一部アプリケーションで日本語IMEが正しく動作しない可能性があります。問題がある場合は、X11モードへの切り替えを検討してください。

小型デバイスでも、正しく設定すれば快適な日本語環境を実現できます。各手順を確認しながら設定してみてください。

---

## 参考リンク

- [Raspberry Pi公式ドキュメント](https://www.raspberrypi.com/documentation/)  
- [raspi-config - Localisation Options](https://www.raspberrypi.com/documentation/computers/configuration.html#raspi-config)  
- [fcitx-mozc (Debianパッケージ)](https://packages.debian.org/search?keywords=fcitx-mozc)  
- [Raspberry Pi Bluetooth設定ガイド](https://www.raspberrypi.com/documentation/computers/configuration.html#bluetooth)  
- [Bluetooth キーボード接続 (bluetoothctl)](https://www.bluez.org/)

---

以上