このレポジトリは、翻訳済みRFCをJSON形式で管理しています。
data/N000/rfcNXXX.json : 段落区切りの文書data/N000/rfcNXXX-trans.json : 各文章の翻訳を付与した情報data/N000/rfcNXXX-summary.json : RFCの要約rfcNXXX-trans.json のJSON構造
title: タイトルデータ(オブジェクト)
text : 英語の原文(文字列)。先頭は必ず「RFC XXXX - 」から始まるja : 翻訳後の日本語(文字列)。タイトルのため体言止め。先頭は必ず「RFC XXXX - 」から始まるcontents : 各段落の内容(配列)
text : 英語の原文(文字列)ja : 翻訳後の日本語(文字列)。箇条書き以外のときは、ですます調で表現することindent : 表示するときのインデント数(整数)raw : 図表やプログラムのフラグ(true: 翻訳せずにそのまま表示)section_title : 章節項の見出しフラグ(true: 見出しタイトル)rfcNXXX-summary.json のJSON構造
number: RFCの番号(整数)model: 要約を生成したAIのモデル(Geminiで出力したときは “gemini-3-flash”、Claudeで出力したときは “claude-sonnet-5-5” のようなモデルID)created_at: 要約生成日時(”2026-02-15T00:00:00.000000” 形式で今日の日時)。summaryを修正したときのみ更新すること"summary": [ : 要約内容(配列)… インデントは2
**やコードブロックの記号(バックスラッシュ)は使わないこと) … インデントは4] : インデントは2新しいRFCの翻訳は Claude が行います(Google翻訳などの機械翻訳は使いません)。
手順は .claude/skills/translate-new-rfc/SKILL.md、翻訳を担当するサブエージェントは .claude/agents/rfc-translator.md に定義しています。
main.py --trans-prepare / --trans-export / --trans-import / --trans-finish は、翻訳対象の抽出と訳文の検証・適用だけを行う補助コマンドです。
要約(rfcNXXX-summary.json)も Claude が作成します。手順は .claude/skills/summarize-rfc/SKILL.md に定義しています。
作成・修正したら python3 main.py --rfc <RFC番号> --summary-check で形式を検証してください。
RFCは仕様書です。読者は日本語訳から実装の可否を判断します。したがって訳文の良し悪しは「読みやすさ」ではなく「原文と同じ規範強度・同じ識別子を復元できるか」で決まります。 以下は訳文が満たすべき必須要件です。人手による修正、AIによるレビュー、新規翻訳のいずれもこの規約に従ってください。
RFC2119/RFC8174のキーワードは規範強度そのものであり、意訳してはいけません。 下表の訳語を1対1で使い、末尾に原語を丸括弧で併記します。
| 原文 | 規範強度 | 日本語訳 |
|---|---|---|
| MUST / SHALL / REQUIRED | 必須 | 〜しなければなりません (MUST) |
| MUST NOT / SHALL NOT | 禁止 | 〜してはなりません (MUST NOT) |
| SHOULD / RECOMMENDED | 推奨 | 〜すべきです (SHOULD) |
| SHOULD NOT / NOT RECOMMENDED | 非推奨 | 〜すべきではありません (SHOULD NOT) |
| MAY / OPTIONAL | 任意 | 〜してもよい (MAY) |
(MUST) のように半角丸括弧で書き、直前に半角スペースを入れます。W012)。(MUST) も2つです。
E014、1つも併記がない段落は W011)。should や is required to の箇所に (SHOULD) (MUST) を付けないこと。原文にない規範性を足してしまいます(E015)。must / should は通常の助動詞であり、規範キーワードではありません。
この規約の対象外です。プロトコルのフィールド名・変数名・OID名などの識別子は、原文と一字一句同じ表記で 訳文に残します。機械翻訳はCamelCaseを平坦化するため、ここが最も壊れやすい箇所です。
smLaunchOwner → 「Smlaunchowner」、id-signedData → 「id-signeddata」smLaunchOwner → 「smLaunchOwner」、id-signedData → 「id-signedData」CEDEX, HMAC, PKIXCERT など)も原文の表記を維持します。application/geo+json-seq)は、
/ や + の前後の空白を除去します。raw が true の段落(図表・プログラム・ASN.1定義など)は ja を空文字にします。
一切翻訳・修正しないこと。Bradner, S. など)を「、」「。」で区切ったり誤訳したりせず、原文表記のまま残します(E011)。https://)や余計な空白(https ://)を入れず、半角表記(https://)を維持します(E012)。RFC更新(Updates)や正誤表(Errata)セクションにおける差分指示子は、前後の対比文脈を踏まえて次のように翻訳します。
OLD: → 「旧:」NEW: → 「新:」PROPOSED/NEW: → 「提案/新:」E013 相当の誤訳)。section_title が false)はですます調で統一します。section_title が true)は体言止めにします。
hello コマンドを処理します」hello コマンドの処理」o * - 1. など)を原文のまま残し、記号より後だけを訳します。title.ja は必ず RFC XXXX - で始め、体言止めにします。機械翻訳由来の訳文は、特定の誤訳単語(例: drop=滴、cell=細胞、close=近い、party=宴会など)の品詞や文脈誤判定に引きずられ、文全体の構文(係り受け、語順、肯定・否定の逆転、時刻表記の分断など)が歪んでいることが多々あります。
単語を置換した際は、単語単体の差し替えにとどまらず、段落全体として技術的・日本語的に意味が通っているかを必ず精査し、必要に応じて段落全体を自然な日本語へ改稿してください。
翻訳を修正したら、必ず次を実行して機械的に検証してください。
python3 tools/lint_translation.py --rfc <RFC番号> --format text
このlinterは上記1〜5のうち原文と照合して決定的に判定できる違反のみを検出します
(意訳の良し悪しは検出しません)。E で始まるコードは必ず修正し、W は内容を確認
した上で対応します。JSONの構文が壊れていないことも併せて確認してください。
python3 -m json.tool data/N000/rfcNXXX-trans.json > /dev/null
どのRFCから直すかは tools/rank_rfcs.py が決めます。他のRFCからの被引用数を
重要度の代理指標とし、linterの検出数を深刻度として掛け合わせて順位を出します。
python3 tools/rank_rfcs.py --scan # 全件スキャン (帯ごとに --dir 指定で再開可)
python3 tools/rank_rfcs.py --report --check E002 --limit 30
修正が済んだRFCは再スキャンすると検出数が減り、自動的に順位が下がります。 進捗管理用の状態ファイルは持ちません(linterの結果そのものが進捗です)。
訳語が複数ありうる用語は、下表の訳語に統一します。同じ原語を1つのRFCの中で訳し分けないこと。
| 原文 | 訳語 | 備考 |
|---|---|---|
| shared secret key | 共有秘密鍵 | 「共有シークレットキー」「共有秘密の鍵」は使わない |
| shared secret | 共有シークレット | 後ろに key が続かない場合。”shared secret information” は「共有シークレット情報」 |
| shared secret keying material | 共有シークレット鍵素材 | 「共有秘密鍵素材」「共有秘密鍵マテリアル」などは使わない |
| congestion | 輻輳 | 「混雑」「渋滞」は使わない(道路の渋滞を述べる箇所を除く) |
| ingress | イングレス / 入口 | 文脈に応じてどちらでもよい(迷ったらイングレス)。「侵入」は使わない(原文が intrusion 等の場合を除く) |
機械翻訳に由来する既知の誤訳語も使わないこと: traffic→「交通」、cell→「細胞」、salt→「塩」、 handshake→「握手」、peer→「仲間」、torn down→「取り壊し」「引き裂き」。 ただし、原文が道路・航空・車両の往来を述べている箇所の traffic は「交通」(航空交通管制、交通事故など)、 生物学の cell は「細胞」が正しい訳です。
用語集の違反は linter の W014 で検出されます。また、原文の数値や識別子が訳文から大量に
消えている段落(LLMによる捏造・切り詰めの疑い)は W013 で検出されます。
tools/ : 恒久的に使うツール(linter、優先順位付け)。消さないこと。scripts/ : 一括置換などの使い捨てスクリプト。作業後に破棄してよい。