ROS2開発環境をスタイリッシュに！zsh + Powerlevel10kで快適＆補完バッチリなターミナルの環境構築！

## ✨ はじめに

ターミナルを立ち上げたときに「これ本当に自分の開発環境？」と思えるような、**見た目も機能もカッコいいROS2開発ターミナル**を作りたい人向けです。

以下のようなPowerlevel10kの美しいプロンプト表示や補完機能が使えるようになります：

![Screenshot from 2025-05-01 00-30-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884184/1a022bc9-43cc-4ce2-92cf-393a2626901c.png)
(十字キー、Tabで操作できます)

---
ROS2を使っていると、bash環境での作業が少し煩雑に感じることはありませんか？
この記事では、Ubuntuユーザー向けにzsh + Powerlevel10k + 補完付きの快適ターミナル環境を構築する手順をまとめました。

- 対象OS: Ubuntu 22.04
- ROS2: Humble Hawksbill
- 目標: zshでROS2コマンドの補完を使える環境を作る

### ⚠️ 注意点

- Raspberry Piなどリソースの少ない環境では、Powerlevel10kの描画がやや重く感じる場合があります。軽量テーマを選ぶか、必要に応じてzsh単体で運用するのがおすすめです。
- 本記事はROS2をaptでインストールした環境を前提としています
- ROS2の補完設定はbashに最適化されているため、zshでは工夫が必要です
- Powerlevel10k導入時、フォントが対応していないと文字化けします（推奨：MesloLGS NF）

---

## ✅ zsh + Powerlevel10k を使うメリット・デメリット

### ✔️ メリット
- 見た目がスタイリッシュでモチベが上がる
- Powerlevel10kの情報表示が充実（Git情報、時間、ジョブ数など）
- zsh補完がbashよりも柔軟＆強力（補完候補の表示が見やすい）
- 設定次第で作業効率が爆上がり（aliasや関数との組み合わせ）

### ⚠️ デメリット
- Powerlevel10kは環境によっては描画がやや重い（特に低スペック機）
- 補完設定やテーマの導入に少し手間がかかる
- bashに比べて初期状態では互換性が低く、補完やscript実行時に注意が必要

---

## ① zshのインストール

```bash
sudo apt install zsh
chsh -s $(which zsh)
```

- ログアウト/ログインするとzshが有効化される
- 初回起動で.zshrcが作成される

---

## ② oh-my-zshの導入

```bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

---

## ③ Powerlevel10kのテーマ適用

### 💡 フォント設定（重要）

Powerlevel10kはアイコンや記号を多く使うため、対応フォントが必要です。
**MesloLGS NF** フォントの使用を強く推奨します。

#### インストール方法（例：手動インストール）

1. [https://github.com/romkatv/powerlevel10k#manual-font-installation](https://github.com/romkatv/powerlevel10k#manual-font-installation) からフォントをダウンロード
2. `.ttf` ファイルをダブルクリックして「インストール」
3. ターミナルの設定 → 使用フォントを「MesloLGS NF」に変更

---

Powerlevel10kのセットアップウィザード中は、描画が軽くなる「Lean」または「Classic」プロンプトスタイルがおすすめです。特にラズパイなどでは快適に動作します。

```bash
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k
```

- `.zshrc`を修正:

```bash
ZSH_THEME="powerlevel10k/powerlevel10k"
```

```bash
source ~/.zshrc
```

- セットアップウィザード起動するので、要項順に選択

---

## ④ ROS2環境の設定

```bash
source /opt/ros/humble/setup.zsh
source ~/ros2_ws/install/local_setup.zsh
# ROS2の通信ドメイン設定
export ROS_DOMAIN_ID=10
```

---

## ⑤ ROS2コマンドの補完をzshで使う

補完を有効化することで、コマンド入力の効率が大幅に向上します。

```bash
if [ -f /opt/ros/humble/share/ros2cli/environment/ros2-argcomplete.zsh ]; then
  source /opt/ros/humble/share/ros2cli/environment/ros2-argcomplete.zsh
fi
```

- タブキー、十字キーでros2コマンドの補完が使える
- ros2, ros2 topic, ros2 node ... が手らずに表示される

### 🔍 補完の使用例

```bash
ros2 <Tab>             # コマンド名が補完される（run, topic, launchなど）
ros2 run <Tab>         # パッケージ名が補完される
ros2 launch <Tab>      # launchファイル名が補完される
```

### 💡 `.zshrc`変更後の反映方法

設定を変更したら、以下で反映しましょう：

```bash
source ~/.zshrc
```

---

## ☑️ 完成形: .zshrcサンプル

以下は、補足コメント付きの`.zshrc`サンプルです。

```bash
# bash補完機能（zshでbash補完を使うため）
autoload -Uz bashcompinit
bashcompinit

# ROS2 setup
source /opt/ros/humble/setup.zsh
source ~/ros2_ws/install/local_setup.zsh
source ~/lidar_ws/install/local_setup.zsh
export ROS_DOMAIN_ID=10

# zsh用ROS2補完スクリプト（ros2コマンド補完有効化）
if [ -f /opt/ros/humble/share/ros2cli/environment/ros2-argcomplete.zsh ]; then
  source /opt/ros/humble/share/ros2cli/environment/ros2-argcomplete.zsh
fi
```

---

## 🔁 Powerlevel10kセットアップウィザードをやり直すには？

もしPowerlevel10kの設定をやり直したい場合は、以下のコマンドを実行してください：

```bash
p10k configure
```

このコマンドで再びウィザードが起動し、プロンプトスタイルや表示内容を自由に再設定できます。

## 🌟 おわりに

- Powerlevel10kの美しさ + zshの便利さ + ROS2補完
- 最高の開発環境が手に入る
- ROS2の補完が効かないときは`BASH_SOURCE`に注意

---