はじめに
UbuntuでClaudeCodeを使っていると、ちょっと気になる問題にぶつかりました。
「日本語 + 罫線(ボックス描画文字)を含む出力が崩れる」 という現象です。
等幅フォントを使っているのに、なぜか表示がずれてしまう。
特にテーブル表示やCLIのUIが入ると、一気に読みづらくなります。
起きていた問題
Ubuntu標準のGNOME TerminalでClaudeCodeを使っていると、こんな表示になります。
┌─────────────────
───────┐
│ 日本語テキスト │
└─────────────────
───────┘
- 罫線がズレる
- 縦線が合わない
- 日本語が混ざると幅が狂う
という状態になってしまいました。
フォントは等幅(monospace、udev等)を使っているのに、なぜか崩れる。。。
原因は「文字幅の扱い」
原因は主に以下のどれかです。
- East Asian Ambiguous Width(曖昧幅文字)の扱い
- フォントのグリフ実装
- ターミナル側のUnicode描画処理
日本語は全角2幅。
英数字は1幅。
問題は「曖昧幅文字(Ambiguous Width)」を1幅で扱うか2幅で扱うかでズレが発生することです。
CLIツール側が「2幅前提」で描画していて、
ターミナル側が「1幅扱い」すると崩れます。
ClaudeCodeは罫線やUI表示を多用するので、この影響が出ました。
Ambiguous Width の設定は、Ubuntu標準のGNOME Terminal でもありますが、
環境依存なのだと思うのですが、
Narrowにしても、Widenにしても一部効果がありませんでした。
wezterm に変更した理由
1. East Asian 幅を設定できる
weztermは以下の設定ができます。
treat_east_asian_ambiguous_width_as_wide = true
曖昧幅文字を「全角扱い」にできるので、日本語混在でも崩れにくいです。
2. GPU描画で高速
スクロールも滑らか。
大量ログでもストレスがない。
ClaudeCodeは出力量が多いのですが問題なしです。
3. 設定が柔軟
~/.wezterm.lua にLuaで書ける。
例:
return {
font = wezterm.font("Noto Sans Mono CJK JP"),
font_size = 12.0,
treat_east_asian_ambiguous_width_as_wide = true,
}
フォントも明示できるし、日本語前提の設定が作りやすいです。
インストール方法
# GPGキーを追加
curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --yes --dearmor -o /usr/share/keyrings/wezterm-fury.gpg
# リポジトリを追加
echo 'deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list
# インストール
sudo apt update
sudo apt install wezterm
実際に wezterm した結果
- 罫線が崩れない
- 日本語と英数混在でもズレない
- 表示がかなり綺麗
ClaudeCodeとの相性はかなり良いです。
まとめ
Ubuntu標準ターミナルで
- 日本語 + 罫線が崩れる
- CLIのUIが読みにくい
- ClaudeCodeの表示が微妙にズレる
という人は、weztermへの乗り換えはかなりおすすめです。
treat_east_asian_ambiguous_width_as_wide = true
を入れましょう。
さいごに
かんたんでしたね