
Claude Code で仕事しながら英語を学ぶ環境を整えてみた
はじめに
データ事業本部のkasamaです。
今回は Claude Code の output-styles・skills・hooks を組み合わせて、業務をしながら英語の読む・聴く・書くに触れる環境を作ります。普段の業務は日本語で完結するため、毎日使う Claude Code の応答を英語化すれば自然に英語に触れられると考えました。
「language を english にして英語で会話すれば済むのでは」と思われるかもしれませんが、私の英語レベルは短い指示は英語で出せるものの、長文での入出力はまだ難しい段階です。そこで以前のブログで実装した Kokoro TTS を英語に切り替えて応答を聴けるようにしつつ、英語入力時の文法添削・記録、未知語の即時翻訳といった補助を組み合わせ、業務効率を落とさずに英語に触れられる環境にしました。
システム全体の構成
Claude Code の設定ファイルは ~/.claude/ 配下に格納されています。今回は settings.json、hooks/、output-styles/、skills/ を組み合わせて英語学習環境を構築します。
私は普段 Claude Code への指示を音声入力で行っています。短い指示であれば英語で話しかけますが、長文で複雑な意図を伝えたいときは英語だけでは難しい場面があります。そういったときは Mac 標準の音声入力や Aqua Voice を日本語モードで使い、日本語で指示を出しています。
Claude Code の Voice mode を使わずにこれらの外部ツールを使っているのは、settings.json の language を english に設定していると、Voice mode では日本語で話しかけても英語として認識されてしまうためです。応答を常に英語で受け取りたいので language: english の設定は変えたくなく、外部ツールを選んでいます。
各コンポーネントの役割は以下の通りです。
settings.json(language: english+outputStyle: EnglishCoach): 応答を常に英語にし、教育的な解説付きで出力する。日本語入力時は英訳を表示、英語入力時は文法添削を行う。読む力・書く力を鍛えるenglish-log(スキル): 添削結果を Markdown テーブルに自動記録し、自分の間違いパターンを蓄積するsay-response.py+ Kokoro TTS(Stop フック): 応答を英語音声で読み上げる。聴く力を鍛える- DeepL Desktop: 分からない単語を
Shift+Ctrl+Lで即座に翻訳する
実装
設定ファイルはGitHubに格納しています。
69_claude_code_english_setup/
├── settings-example.json
├── output-styles/
│ └── EnglishCoach.md
├── hooks/
│ ├── say-response.py
│ ├── tts-server-start.sh
│ ├── tts-server-stop.sh
│ └── kokoro-tts/
│ └── pyproject.toml
├── skills/
│ └── english-log/
│ ├── SKILL.md
│ └── references/
│ └── INSTRUCTIONS.md
└── samples/
└── english_log.md
Settings
~/.claude/settings.json に language、outputStyle、各種フックを設定します。
"language": "english" で Claude Code の応答がすべて英語になります。"outputStyle": "EnglishCoach" は後述するカスタム出力スタイルを指定しています。
TTS 関連のフック(SessionStart/SessionEnd/Stop)は環境変数 CLAUDE_VOICE=1 が設定されている場合のみ動作します。環境変数を設定しなければ TTS 関連の処理はスキップされます。
Output Styles
Output Styles は Claude Code のシステムプロンプトを差し替えて応答の声・形式・振る舞いを変える機能です。組み込みの Default / Explanatory / Learning に加え、Markdown ファイルでカスタムスタイルを定義できます。
組み込みスタイルの挙動差や基本的な使い方は以下の記事が詳しいので参考にしてください。
今回は英語学習用途のカスタムスタイル EnglishCoach を ~/.claude/output-styles/EnglishCoach.md に定義し、settings.json の outputStyle で指定しています。常に英語で応答し、日本語入力時は冒頭に英訳を併記、英語入力時は文法添削を行って english-log スキルで Markdown テーブルに自動記録、コード変更時は Insight ブロックで解説を付ける構成です。keep-coding-instructions: true でコーディング系の標準指示を維持しています。
Skills
~/.claude/skills/english-log/ にスキルを配置します。このスキルは EnglishCoach スタイルが添削を出力した際に自動的に呼び出され、添削内容を english_log.md に Markdown テーブルとして記録します。1ファイルに Grammar と Vocab の2つのテーブルを持つ構成です。
Hooks
前回のブログで実装した Kokoro TTS の Stop フックを英語化しました。ボイスを英語用(af_heart)に変更し、言語コードや読み上げ上限を英語向けに調整しています。Kokoro TTS は英語の学習データが豊富なため、日本語よりも発話が自然で高速です。
TTS サーバーの起動・停止は tts-server-start.sh / tts-server-stop.sh で管理しています。SessionStart フックでサーバーを起動し、SessionEnd フックで停止する構成です。
周辺ツール
Claude Code 単体では完結しない、音声入力と単語翻訳のための外部ツールを併用しています。
音声入力(Mac 標準 / Aqua Voice)
長文の指示を英語で伝えるのが難しい場合は、Mac 標準の音声入力や Aqua Voice を日本語モードで使うと便利です。
Mac の音声入力はシステム設定 > キーボード > 音声入力で有効にし、ショートカットキー(例: Control キー2回押し)を設定します。
Aqua Voice は認識精度が高い音声入力ツールです。
DeepL Desktop
Claude Code の応答が英語になると、分からない単語に遭遇する場面が出てきます。その都度ブラウザで検索するのは手間なので、DeepL Desktop を併用しています。
DeepL Desktop は無料で利用できます。インストール後、Settings > Keyboard shortcuts で「Translate selected text」にショートカットを設定します(例: Ctrl+Shift+L)。Claude Code のターミナル上で分からない単語があれば、テキストを選択してショートカットを押すだけで翻訳がポップアップ表示されます。
セットアップ
リポジトリをクローンし、必要なファイルを ~/.claude/ 配下にコピーします。
git clone https://github.com/cm-yoshikikasama/blog_code.git
cd blog_code/69_claude_code_english_setup
1. 出力スタイルを配置
mkdir -p ~/.claude/output-styles
cp output-styles/EnglishCoach.md ~/.claude/output-styles/
2. settings.json に設定を追加
~/.claude/settings.json に以下を追加します。既存の settings.json がある場合はマージしてください。
# 既存の settings.json がない場合
cp settings-example.json ~/.claude/settings.json
# 既存の settings.json がある場合は手動で以下を追加
# "language": "english",
# "outputStyle": "EnglishCoach"
3. english-log スキルを配置
mkdir -p ~/.claude/skills/english-log/references
cp skills/english-log/SKILL.md ~/.claude/skills/english-log/
cp skills/english-log/references/INSTRUCTIONS.md ~/.claude/skills/english-log/references/
cp samples/english_log.md ~/english_log.md
4. TTS を設定(任意)
音声読み上げが必要な場合のみ設定します。
mkdir -p ~/.claude/hooks/kokoro-tts
cp hooks/say-response.py ~/.claude/hooks/
cp hooks/tts-server-start.sh ~/.claude/hooks/
cp hooks/tts-server-stop.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/tts-server-start.sh ~/.claude/hooks/tts-server-stop.sh
# Kokoro TTS のセットアップ
cp hooks/kokoro-tts/pyproject.toml ~/.claude/hooks/kokoro-tts/
cd ~/.claude/hooks/kokoro-tts
uv sync
TTS を有効にするには CLAUDE_VOICE=1 を設定して Claude Code を起動します。
試してみた
日本語入力時の動作確認
日本語で話しかけると、EnglishCoach スタイルの指示により英語翻訳を表示しつつ英語で応答します。

英語添削の動作確認
わざと不自然な英語で話しかけてみます。
応答の末尾に添削が付きました。理由が日本語で書かれているので、なぜその表現の方が良いのかが理解しやすいです。添削は english-log スキルにより自動的に Markdown テーブルに記録されます。

english_log.md の例として以下のような形式で英語のログを出力します。

DeepL Desktop での翻訳
英語応答中に分からない単語を DeepL Desktop で翻訳する操作です。ターミナル上のテキストを選択して Shift+Ctrl+L で翻訳がポップアップ表示されます。
CLAUDE_CODE_NO_FLICKER=true の場合や、VS Code などでショートカットキーが競合している場合はうまく動作しません。その際はショートカットの割り当てを見直してください。

英語応答の確認
CLAUDE_VOICE=1 claude で起動し、英語で話しかけてみます。少し速度が遅い気もしますが、応答が英語で返ってきてます。
最後に
今年は積極的に英語を習得していこうと考えていますので、何も不便がなければこの形式で普段の業務を行いたいと思います。同じような方の参考になれば幸いです!









