📌

Claude Code日本語入力拡張に翻訳機能を追加した話

に公開

はじめに

VS Code拡張機能「Japanese Input for Claude Code」について、v1.8系のアップデートで翻訳機能を実装したので、その経緯と機能について紹介します。

この拡張機能は、VS CodeのターミナルでClaude Codeを使う際の日本語入力問題を解決するツールです。

基本機能については過去記事で紹介済みなので、今回はv1.8.0〜v1.8.3で追加した翻訳機能に焦点を当てます。

https://qiita.com/swiftwand/items/19ad491206223665cc90

翻訳機能?

Claude Codeは英語での指示が最も精度高いことは知られています。
しかし、日本語で思考して、英語に翻訳する手間をずっと続けるのはきついです。

とはいえ

  • 最近ClaudeCodeの5hrリミットや週リミットが早い
  • なんかClaudeCodeのトークン消費量が英語のほうが少ないらしい
  • でも、英語はわかるけど、いつも英語でやるのがつらい
  • 複雑な指示を日本語で書いてから、別のツールで翻訳してコピペするの手間死
  • 翻訳結果を確認・修正してから送信したいが、そのためのUIがない

ってことでした。

v1.8系で追加した機能

v1.8.0: 翻訳機能の基本実装

日本語⇄英語の双方向翻訳をサポートから、他の言語もできるようにしておくかってことで何個かいれて、さらに翻訳プロバイダーも選択可能にしました。

プロバイダー 種類 特徴
Google Cloud Translation 翻訳API 高精度、APIキー必要
DeepL 翻訳API 高品質、Free/Proプラン対応
OpenAI LLM翻訳 GPT-4o等のモデル選択可能
Gemini LLM翻訳 Gemini 1.5/2.0対応
Claude LLM翻訳 Claude 3 Haiku/Sonnet/Opus
ローカルLLM LLM翻訳 Ollama/LMStudio対応

※スクレイピングしている非公式のものもいれましたが、設定画面の注意書きにも書いた通り、グレーなので自己責任でお願いします。


使い方

  1. 入力タブでテキストを入力(日本語または英語)
  2. 「🌐 翻訳」ボタンをクリック
  3. 翻訳結果が下部のテキストエリアに表示される
  4. 必要に応じて編集し、「元のテキストを送信」または「翻訳後のテキストを送信」を選択

翻訳方向(日→英 / 英→日)は、設定タブまたはドロップダウンで切り替え可能です。

v1.8.2: マルチプロバイダー対応の拡充

初期実装ではGoogle Cloud Translationのみでしたが、ユーザー(主に自分)の要望に応じて以下を追加:

  • DeepL対応: Free APIとPro APIの両方をサポート
  • LLM翻訳: OpenAI、Gemini、Claudeの各APIに対応
  • ローカルLLM: Ollama、LM Studioとの統合

特にローカルLLMは、APIコストをかけずに高品質な翻訳ができるため、おすすめです。
(個人的にはOllamaおすすめです。Gemma3:4bでやってます。2~3秒ほど翻訳に時間がかかりますが、今のところ不満がないです。)

https://zenn.dev/sileader/articles/7a8201c8098ae7

v1.8.3: 動的モデル取得

LLM翻訳プロバイダー(OpenAI/Gemini/Claude)では、利用可能なモデル一覧をAPIから動的に取得するようにしました。

背景:

  • 各社が頻繁に新モデルをリリースする
  • 拡張機能のコードに手動でモデルリストをハードコードすると、すぐに古くなる
  • ユーザーが最新モデルを使えないのは体験が悪い

実装:

  • 設定画面を開いた際に、各プロバイダーのAPIを叩いてモデル一覧を取得
  • キャッシュして設定画面に反映
  • APIキーが無効な場合は、デフォルトのモデルリストにフォールバック

これにより、拡張機能の更新なしに最新モデルを選択できるようになりました。

ローカルLLM推奨

色々プロバイダーを用意しましたが、結局使ってるのはローカルLLMです。理由は以下の通り:

1. コストゼロで無制限に使える

  • OpenAI/Gemini/Claudeは従量課金
  • 翻訳は頻繁に使うため、APIコストが積み上がる
  • ローカルなら何度翻訳しても追加コストなし

2. プライバシー保護

  • コードレビューの指示など、社内情報を含むテキストを翻訳する場合
  • 外部APIに送信したくない内容でも、ローカルなら安心

3. 速度とレイテンシ

  • Ollamaでモデルを選べば、ローカルで数秒以内に翻訳完了
  • API通信のレイテンシがない

4. モデルの選択肢

  • Gemma 3など、オープンソースの高性能モデルが使える
  • 自分の用途に合わせてモデルを切り替え可能

色々書きましたが、今のところ翻訳くらいなら問題なさそうなので使ってます。

※うまく行かない時は、設定の翻訳設定にシステムプロンプトがあるので調整するといいかも。

セットアップ方法

・Ollama普通にインストールして、なんかモデルを落としておいてください。
で、下のような感じで、設定して接続テストなどして問題なければ翻訳できると思います。

・LM Studioのほうは、開発者モードにして、サーバーを動かしてポート番号が設定のものと違ったら調整して上げる必要があります。

https://zenn.dev/r4ynode/articles/local-llm-intro-with-obsidian

その他のv1.8系での改善

preferTerminalMode設定の追加(v1.7.3)

翻訳機能とは直接関係ありませんが、v1.7.3でpreferTerminalMode設定を追加しました。これにより、Claude CodeをTerminalモードで優先的に使用するかどうかを制御できます。

Toast通知による設定保存フィードバック

設定を保存した際に、Toast通知で確認メッセージを表示するようにしました。特に翻訳プロバイダーの設定変更時に、保存が正常に完了したことをユーザーに伝えます。

まとめ

v1.8系のアップデートで、翻訳機能を中心に以下を実装しました:

  • 多種翻訳プロバイダー対応: Google、DeepL、OpenAI、Gemini、Claude、ローカルLLM、非公式API
  • 双方向翻訳: 日本語→英語、英語→日本語など何個かの言語対応
  • 動的モデル取得: LLMプロバイダーの最新モデルを自動取得
  • ローカルLLM推奨: コストゼロ、プライバシー保護、高速性

この拡張機能はほぼ自分の開発のために改善しているツールですが、同じ課題を抱える開発者の方々に役立てば幸いです。

今後の開発予定

v1.8系で翻訳機能を実装しましたが、今回つなげたローカルLLMを使ってもうちょっと開発に役立つことできないかなって考えてます。

Discussion