upstash/context7に日本語README.mdを寄稿した話
概要
AI Coding において context7
という MCP サーバーを使うとハルシネーションなしで最新のドキュメントを参照してくれるので必須級に便利。
リポジトリを確認すると言語別の README.md が存在したが、日本語版は翻訳されていなかったためコントリビュートした。Claude Code を使って翻訳し Pull Request を送ったら 8 時間後にはマージしてくれてたので作業手順を残しておく。
成果物
Pull Request
日本語 README
リポジトリルートの README の docs:日本語
のバッジを押下するか、docs/README.ja.md
に直接遷移すると読める。
upstash/context7 とは
Upstash はプロビジョニング/スケーリング/メンテナンスが自動化されたクラウドサービス(=サーバレス)を提供する事業者で、利用できるプロダクトには Redis / ベクターDB / キュー / ワークフローがある。東京にもリージョンがある。
Upstash の GitHub では自社のコアサービスに関連する OSS ライブラリを公開しているが、AI Coding 利用者向けに context7
という、LLM が最新のドキュメントを参照できるようにする MCP サーバーもある。
作業手順
- upstash/context7 をフォークする
- ローカルに git clone する (
ghq get jnst/context7
) - 手作業でルート直下の
README.md
をコピーし、docs/README.ja.md
として保存する -
docs/CLAUDE.md
を作成し、Claude Code 向けの指示を書く(ここが重要) - auto-accept モードで翻訳作業してもらいながら自分で校正する
1. フォーク
OSS コントリビュートの基本手順として、フォークして自分のリポジトリにしてから作業する。
2. ghq コマンド
Go 言語界隈では Go Modules が導入される 2018 年頃まで、ソースコードを $GOPATH
と呼ばれる ~/go/src
配下にすべて格納し、依存関係として参照させる習わしだった。
その頃に作られた作業を簡易化させるリポジトリ管理ツールが ghq
コマンド。習わしは廃れたが、リポジトリのソースコードを一箇所で管理するという利便性は現在でも重宝されていて、デフォルトでは~/.ghq
にリポジトリを集約する汎用ツールとなった。この習わしに従うとスッキリするし、fzf / peco とのツール連携でターミナル上でのディレクトリ移動も便利になるので愛用している。
3. コピーは手作業
1回実行してもらうだけのことを Claude Code に指示するのは却って時間がかかるので、手作業でコピーした。
4. CLAUDE.md に翻訳指示を書く
リポジトリルートに配置。実行ディレクトリでも読み込まれる仕組みなので docs/
配下におくほうが適切だが、今回はコミットしないのでどちらでもいい。
- @docs/README.ja.md の翻訳をする
- 和訳対象の英文の一行下に和訳文を追記する
- 和欧間スペース、和数字間スペースを取り入れる
- Hallucinate は「幻覚」ではなく、片仮名の「ハルシネーション」で名詞または動詞として扱い、訳す
- required, option は必須, 任意と訳す
@docs/README.ja.md の翻訳をする
@path/to/import
構文でファイル指定できる
和訳対象の英文の一行下に和訳文を追記する
LLM に文脈を考慮した翻訳や適切なニュアンスに完全性を求めるのは骨が折れるので、校正を自分で行う方式。
context7 を使う人はリテラシーが高いだろうし、そもそも日本語 README の存在に気づくかすら怪しいので docs/README.ja.md
に完成度を求める人はいないと思うが、やるからには適切に翻訳したい。そういった細かな完成度を求めると時間がかかるからこそ、誰も翻訳してなかったのかもしれない。
和欧間スペース、和数字間スペースを取り入れる
組版のために LLM の文章生成を補正するプロンプトが「和欧間スペース」、「和数字間スペース」。
Hallucinate は「幻覚」ではなく、片仮名の「ハルシネーション」で名詞または動詞として扱い、訳す
訳文の指定。AI コミュニティでは「ハルシネーション」のままの方が意図が伝わると判断。
required, option は必須, 任意と訳す
訳文の指定。これを書かないと「必須」、「オプション」と翻訳された。必須⇔任意で相互対応させたほうが自然と判断。
5. AI と人間の並列作業
auto-accept モードで許可を求めずに和訳を追記していってもらった。人間は和訳のニュアンスが文脈にあっているかを確認し、違いそうなら別の言い回しをチャットの Claude で確認して校正を行なった。
こだわり1: バッジの色
README.md に「docs:繁體中文」「docs:簡體中文」「docs:日本語」という表記のバッジがあり、そのリンクから言語別の README に遷移できるようになっている。このバッジの色は何色にすべきかを悩んだ。日本は 🇯🇵 だし赤か白かなと思ったけど、すでにどちらも使われていた。
Shields.io の Static Badge の仕様を見ると HEX 指定もできたので、日本国旗の紅色らしきコードにしておいた。ググると無数に出てくるので本当の正解はわからない。
こだわり2: 見出しの和訳
context7 を象徴する見出し文をなんと翻訳すべきか問題。
Context7 MCP - Up-to-date Code Docs For Any Prompt
-
DeepL
: あらゆるプロンプトのための最新コードドキュメント -
ChatGPT 4o
: どんなプロンプトにも対応する最新のコードドキュメント -
ChatGPT 4.5
: あらゆるプロンプトに対応する最新のコードドキュメント -
Claude Opus 4
: あらゆるプロンプトに対応する最新のコードドキュメント -
Grok3
: 任意のプロンプトに対応した最新のコードドキュメント
みんな違うこと言う。
Up-to-date も「最新の」Latest ではなく敢えての Up-to-date なのだろうし、context7 の機能性を表すために「常に最新の」という表現にすべきかとか悩んだ。色んな文脈を添えながら壁打ちして、最終的には冗長な気もするので「最新の」とし、「ための」や「対応する」ではなく、「応える」という表現がもっとも context7 を表していると判断し、以下になった。
Context7 MCP - どんなプロンプトにも最新のコードドキュメントで応える
Discussion