NVIDIAのオープンウェイト共同声明を全文対訳で記事化した日 — 訳語「公開」の衝突とSVG図解4枚
NVIDIAが共同声明「Open Weights and American AI Leadership」のPDFを公開していた。オープンウェイトのモデルこそアメリカのAIリーダーシップを支える、という主張に25団体が名を連ねる3ページの文書で、読んでみると段落ごとの論理の積み上げがはっきりしている。全文対訳にする価値があると思い、Claude Code に翻訳させて公開記事にすることにした。
形式は最初に固定した。英文を青の引用ブロックで先に置き、その直下に日本語訳を続ける。段落ごとにこの対を繰り返す。訳文だけを載せると、訳の癖や省略をあとから検証できない。原文が常に隣にあれば、読み手が自分の目で突き合わせられる。
作業自体は淡々と進むはずだった。実際にはこの日、何度も手が止まることになる。ただ、いちばん長く頭に残ったのはトラブルではなく、「公開」という二文字のほうだった。
3ページ・10段落・署名25団体を対訳に
本文10段落に加えて、タイトル・日付・署名25団体まで含めた全部を英文→日本語訳の順に並べさせた。声明の性質上、署名団体の一覧も情報の一部なので省略しない。
dev サーバーの起動を待つ間に、4段落目の "across cloud chips, applications, and services" の訳がカンマの区切りと合っていないのを見つけて、原文どおりに直させた。厳密訳と宣言した以上、区切り一つも原文に合わせる。
devサーバーが「database is locked」で落ちた
表示確認のためにページを開いたら、対訳ブロックの代わりにViteのモジュール取得エラーが出た。リロードしても変わらない。ログを調べさせると、devサーバー自体が Nuxt Content の SQLite「database is locked」で落ちていた。
見覚えのあるエラーだったので、先に過去issueを引かせた。案の定、既知の事象だった。孤児プロセスが残るパターンではなく、stale journal が残るパターンで、2026-02-04 に踏んだのと同じ形。journal を削除して再起動し、約3,190ルートのコンテンツDBを作り直して復旧した。
再構築が終わってから、対訳ブロックと表の描画を最上部から署名・出典まで通しで見させた。コンソールエラーはゼロ。英文の引用ブロックと訳文の対も、最後の段落まで崩れていない。
あとから届いたプロセスの失敗通知に一瞬ひやりとしたが、出どころを確認させると最初に落ちた1代目のもので、稼働しているのは復旧後の2代目だった。通知の正体まで見届けてから、この件は閉じた。エラーのたびにissueを書き残す運用にしてあるおかげで、切り分けから復旧まで迷いがなかった。issueは書いた日のためではなく、再発した日のために書いている。
SVG図解4枚をグリッドに乗せる
対訳ができたところで、図が欲しくなった。声明の主張は構造がはっきりしているぶん、文章のままだと積み上がりが見えにくい。svg-diagram スキルで、全体を1枚でつかめるエグゼクティブサマリー的な図と、段落の補足に効くチャートを合わせて4枚作らせた。すべて720幅・12カラム・8pxベースラインのグリッドに乗せる。
途中で一度、図2が崩れかけた。最下部に結論文を置いた構成になり、サブタイトルの主張と図の下の結論とで、言いたいことが二つに割れた。スキルが定める「1図1メッセージ」への違反で、こちらが指摘する前に Claude Code 側で気づいて直っていた。ルールをスキルに書いておくと、違反の検出まで作業側で回る。
私がやったのは、lint の機械検証がクリーンで通ったことの確認と、埋め込み後の検証を通しで見ることだった。検証は三段構えにさせた。まずSVGを個別のURLで開いて4枚とも配信200を確認し、次に記事ページ側で画像の読み込みとパースを検証し、最後に図1から順にブラウザで目視する。はみ出し・重なり・コンソールエラーはどれもなし。
グリッド逸脱やはみ出しの検出を人間の目だけに頼らず、まず機械に落とさせてから目視する。この順番だと目視は「最後の違和感拾い」に集中できる。
「公開」が二つの意味を背負っていた
埋め込みまで済んだ記事を頭から読み直していて、手が止まった。「オープンなモデルの公開」のような文で、同じ「公開」が二つの原語を背負っている。openness(開かれた状態)を「公開」と訳した箇所と、release(世に出す動詞)を「公開」と訳した箇所が同じ段落に同居して、どちらの意味なのか一読で取れない。
きっかけは、作業者ではなく読者のつもりで通読したことだった。段落単位で突き合わせていたときは、どの訳も個別には正しかった。通しで読むと、数段落おきに現れる「公開」が、そのたびに別の原語を指していた。
ここで言う openness はオープンソースの系譜の話で、日本語でももう「オープン」で通じる。むしろ「公開」と訳すほうが遠回りだ。openness 由来の箇所を全部洗い出させてカタカナの「オープン」に寄せ、「公開」は release / publish の動詞だけに残した。図の alt・figcaption も同じ基準でそろえ、記事末尾の訳語表に openness と release の行を足して、使い分けを読者にも明示した。
厳密に訳すほど、別々の原語が同じ日本語に畳み込まれていく。原語→訳語の対応を決めた時点では、この衝突は見えなかった。訳文の側だけを通して読み直したとき、初めて引っかかった。訳語の検査は双方向に要る。
最後の確認でブラウザが黙った
訳語修正後の図4の描画を確かめようとしたら、今度は Chrome DevTools MCP が応答しなくなった。Puppeteer を探させたら、この環境には Playwright が入っていたので、そちらでローカルにレンダリングさせて目視した。確認経路が一本死んだくらいで確認を省略しない。別経路で見届けてから報告させた。
MCP がなぜ黙ったのかは、まだ調べていない。
完成した記事は オープンウェイトとアメリカのAIリーダーシップ(全文対訳) として公開済み。原文は NVIDIA公開の声明PDF。
学びメモ
- 「database is locked」は stale journal パターンだった。journal 削除→再起動→約3,190ルートのDB再構築で復旧。過去issueがそのまま復旧手順書として働いた
- 図の最下部に結論文を足したくなったら黄信号。サブタイトルと結論のどちらかに一本化する(1図1メッセージ)
- SVGは lint で機械検証してから目視する。目視を「最後の違和感拾い」に絞ると見落としが減る
- 訳語は「原語→訳語」の対応を決めるだけでは守れない。訳文だけを通読して、同じ日本語が複数の原語を背負っていないか検査する
- openness は「オープン」、release / publish は「公開」。名詞側の概念をカタカナに逃がすと、動詞の「公開」が生き返る
- Chrome DevTools MCP が応答しなくなっても、Playwright のローカルレンダリングで目視確認を代替できる
積み残し
- Chrome DevTools MCP が応答しなくなった原因の調査(再現条件の切り分けから)