Windows で日本語を使いながら Claude Code を運用している。踏んだ地雷の数は両手では足りない。この記事は「調べれば分かるが、そもそも調べるキーワードが思いつかない」問題を先回りするTIPS集だ。
パート1は純粋な罠集。おまけとして「知っておくと快適」な使い方のヒントも添える。
パート1: 罠・地雷編
TIPS 1. IME変換のEnterでプロンプトが送信される
問題: 「明日の予定を」と打って変換確定のEnterを押したら、途中のプロンプトが送信された。
原因: Claude Code(ターミナル版)はEnterを「送信」として処理する。IMEの変換確定Enterも区別できない。
解決(暫定): 根本的な解決策はまだない。改善に向けたコミュニティでの議論が続いており(anthropics/claude-code #8405)、完全には解消していない。現実的な回避策は2つ。
- 短文プロンプトに最適化する(後述のTIPS 9参照)
- VS Code拡張ではShift+Enterで改行する(ターミナル版では効果なし)
キーバインドで「Enter→改行、Ctrl+Enter→送信」に変えようとしたが、ターミナルではCtrl+EnterとEnterが同じバイト列(0x0D)として届く仕様のため機能しなかった。1963年のテレタイプ以来の制約で、ターミナルを使う限り根本解決は困難だ。
TIPS 2. IMEの変換候補ウィンドウが画面の端に飛ぶ(Windows)
問題: Windowsのターミナルで日本語を入力すると、変換候補ウィンドウがカーソル位置ではなくプロンプトの末尾や画面の別の場所に表示される。
原因: xterm.jsベースのターミナルがカーソル位置情報を正しく伝えられないことがある(xterm.js #5734)。
解決: Claude CodeやWindows Terminal側の修正を待つしかない。表示がずれても変換自体は機能するので、候補が読めるなら無視して続けるのが現実的。
TIPS 3. VS Codeのキーバインドに操作キーを奪われる
問題: VS Code拡張でClaude Codeを使っていると、Ctrl+J(パネル切替)やCtrl+G(行移動)がVS Codeに横取りされる。
原因: VS Codeのデフォルトキーバインドと Claude Code のキーバインドが衝突している。
解決: VS Code拡張では Shift+Enter で改行するのが正解。送信はEnterのまま。ターミナル版とキー操作が異なる点は割り切って使い分けるほうが楽だ。
TIPS 4. MCP追加後に新セッションを開かないとツールが見えない
問題: Claude.ai(Cowork)にMCPコネクターを追加したのに、ToolSearchで見つからない。接続に失敗しているのか判断できない。
原因: MCPの初期化はセッション起動時に行われる。既存セッションを開いたまま追加しても反映されない仕様。
解決: 新しいセッションを開く。それだけで解決する。「接続失敗」だと思って設定を見直す前に、まず新セッションを試してほしい。
TIPS 5. Windows で claude コマンドが突然消える
問題: 昨日まで動いていた claude コマンドが「コマンドが見つかりません」になった。
原因: npmのグローバルパッケージのインストール先パスが何らかの理由で変わり、以前のバイナリへのリンクが切れた。著者環境(Windows 11 + npm)で確認した事象。
解決: 再インストールで復旧する。
npm install -g @anthropic-ai/claude-code
注意: このコマンドは npm でインストールした場合にのみ有効。公式サイトのネイティブインストーラー(
.exe)で導入した場合は、インストーラーを再実行して再インストールする。
原因の特定には npm list -g でグローバルパッケージのインストール先を確認する。
TIPS 6. .mcp.json にAPIキーを書いてgit pushしそうになった【AI検知】
問題: Slack MCPサーバーを設定するため、Bot Tokenを .mcp.json に平文で書いた。このファイルはデフォルトでgit管理下にある。pushすればGitHubにトークンが公開される状態だった。
原因: .mcp.json は .gitignore に含まれないのがデフォルト。
経緯: devopsエージェント(AI)がMCP設定作業中にセキュリティリスクを自ら検知し、.gitignore 追加と .mcp.json.example の作成まで対処した。ユーザーが確認・承認した上で変更を反映している。
解決: 以下の2点をセットで行う。
-
.gitignoreに.mcp.jsonを追加(シークレットをgit追跡から除外) - プレースホルダー入りの
.mcp.json.exampleをリポジトリに残す(設定内容を記録)
# .gitignore に追加
.mcp.json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "YOUR_BOT_TOKEN_HERE"
}
}
}
}
settings.local.json はシークレットを含まないため、git管理のまま運用している。
TIPS 7. git pushのたびに「Select Account」ダイアログが出る
問題: git push するたびにブラウザまたはダイアログが開いて「どのアカウントを使いますか?」と聞いてくる。
原因: リモートURLにユーザー名が含まれていない場合、複数のGitHub認証情報がある環境では毎回アカウント選択が必要になる。
経緯: ユーザーがポップアップに気づき報告。AIが原因を特定してリモートURLの修正まで対処した。
解決: リモートURLを ユーザー名@github.com 形式に変更する。
# 変更前
git remote set-url origin https://github.com/yourname/repo.git
# 変更後
git remote set-url origin https://yourname@github.com/yourname/repo.git
1行変えるだけで以降は自動的に正しいアカウントが選択される。
TIPS 8. Git Bash(MINGW64)でタイムゾーンが効かない【AI発見・修正】
問題: TZ=Asia/Tokyo date を実行しても、UTCの時刻が返ってくる。TZ=Asia/Tokyo を設定しているつもりが、実際には無視されている。
原因: Git Bash(MINGW64)には /usr/share/zoneinfo/ が存在しないため、Asia/Tokyo という文字列を解釈できない。
経緯: devopsエージェント(AI)がWindows環境の体系的チェックでTZ未設定を発見。TZ設定・改行コード・日本語ファイル名表示の3件を修正した。ユーザーが確認・承認した上で変更を反映している。
解決: POSIX形式を使う。
# .bashrc に追記
export TZ='JST-9'
Asia/Tokyo 形式はLinuxのzoneinfoに依存する書き方なので、Git Bashでは機能しない。JST-9 はPOSIX標準の書き方で、これはどこでも動く。
設定を確認するコマンド:
echo $TZ # 現在のTZ設定
date +%Z # タイムゾーン名が表示されるか確認
ついでにやっておくべき Git Bash 初期設定(実機確認済み)
TZ設定の調査中に改行コード・日本語ファイル名の問題も同時に見つかったため、セットで対処した。
| 設定 | コマンド | 理由 |
|---|---|---|
| タイムゾーン |
export TZ='JST-9' を .bashrc に追記 |
上記参照 |
| 改行コード | git config --global core.autocrlf input |
デフォルト true のままだとスクリプトに \r が混入する |
| 日本語ファイル名 | git config --global core.quotepath false |
未設定だとファイル名がオクタルエスケープで表示される |
おまけ: 使いこなしヒント
Claude Codeを使いこなすうえで参考になる本を1冊挙げておく。非エンジニアでもAIに指示して動かすところまで丁寧に解説されている。
AIがあなたの右腕になる!Claude Code超入門: 非エンジニアのためのAIエージェント活用術
TIPS 9. 長文プロンプトは書かなくていい
Claude Codeを使い始めたとき、プロンプトをきちんと書かなければ動かないと思い込んでいた。実際は違う。
短文プロンプトは CLAUDE.md やメモリを設定済みの環境で最大の効果を発揮するが、ファイルの内容やエラーメッセージが開いたコンテキストにある状態なら、エージェント構成がなくても基本的な短文指示は通る。
汎用プロンプト例(エージェント構成がなくても使える):
以下はいずれも実際のセッションで使ったプロンプトと、それに対する返答の例だ。
| プロンプト | 使う場面 | 返答の例 |
|---|---|---|
| 「このファイル読んで」 | ファイルの内容をClaude Codeに把握させる | 「読みました。〇〇という構成になっています」 |
| 「テスト通して」 | テスト実行を依頼 | 「npm test を実行します」→ 結果表示 →「3件失敗しました。修正しますか?」 |
| 「エラー直して」 | 直前のエラーへの対処 | 「エラーの原因は〇〇です。修正します」 |
| 「できたかな」 | 前回の作業結果の確認 | 「はい、〇〇ファイルを更新しました。確認をお願いします」 |
| 「はい」 | 提案への承認 | (承認された内容を実行し、完了報告) |
| 「だめだね」 | 方針を却下して別案を求めるとき | 「了解しました。別のアプローチを提案します…」 |
エージェント構成済み向け(CLAUDE.md・メモリが整備された環境):
CLAUDE.md にエージェントの役割分担を定義し、メモリにユーザーの好みを蓄積しておくと、委任先の指定や暗黙の文脈に頼った指示も通るようになる。
| プロンプト | 使う場面 | 返答の例 |
|---|---|---|
| 「リサーチャーに調べさせて」 | 調査をサブエージェントに委任 | 「researcherエージェントに調査を依頼します」 |
| 「ここまでの話をネタ帳に記載」 | 会話内容を資産化 | (ネタ帳ファイルに会話の要点を追記して報告) |
| 「WindowsのターミナルだとIMEの変換候補の表示位置がたまにずれる問題も追記」 | 既存ドキュメントへの追記指示 | 「TIPS 2に追記しました」 |
実際、短文に最適化したのはIME問題(TIPS 1)が直接の動機だった。変換確定のEnterで誤送信されるため、複数行入力をそもそも避けるようになった結果、自然と短文スタイルが定着した。
音声入力で長文を回避する手もあるが、Windows標準の音声認識は精度が低く実用的ではなかった。結局キーボードで短文を打つのが最も確実。
まとめ
Windows × 日本語 × ターミナルという環境は、Claude Code の想定ユーザーとやや外れているため、ドキュメントに書かれていない落とし穴が多い。
特に初期設定として押さえておきたいのは以下の4点。2以外はClaude Codeに頼めばそのまま設定してくれる。
| # | 設定内容 | プロンプト例 | TIPS |
|---|---|---|---|
| 1 |
.mcp.json を .gitignore に入れる |
「.mcp.jsonをgitignoreに追加して」 | TIPS 6 |
| 2 | MCP追加後は新セッションを開く | (手動操作) | TIPS 4 |
| 3 | Git Bash に TZ='JST-9' を設定する |
「Git BashのTZをJSTに設定して」 | TIPS 8 |
| 4 | gitリモートURLにユーザー名を含める | 「git remoteのURLにユーザー名を追加して」 | TIPS 7 |
IMEのEnter問題は現時点では根本的な解決策がなく、運用で対処している状態だ。TerminalのIMEサポートはClaude Code側でも継続的に改善が続いているので、今後のアップデートに期待したい。
より体系的にClaude Codeの使い方を学ぶなら、以下の入門書が参考になる。
実践Claude Code入門―現場で活用するためのAIコーディングの思考法
動作確認環境: Windows 11 Pro / Claude Code(2026年4月時点) / Git Bash(MINGW64) / Windows Terminal
この記事は はてなブログ からのクロスポストです。