◉ANTIGRAVITY LABEN
記事一覧/Editor View
⟐ Editor View/2026-07-16上級

UI を日本語にしても、コミットログは英語のままでした — 無人エージェントの出力言語が揺れ続けた6週間の記録

日本語UIの設定を終えても、エージェントがリポジトリに残すコミットメッセージやコードコメントの言語は揺れ続けます。無人運用6週間で測った混在の実数値と、出力言語を層別に固定する契約の書き方、混在を機械的に弾くゲートの実装を記録しました。

Antigravity378日本語化AGENTS.md14無人運用7品質ゲート7

✦ プレミアム記事

日本語UIの設定を終えたのは、6月の初めのことでした。言語パックを入れ、AI 応答言語も日本語に指定して、画面はすっかり日本語になりました。しばらくは満足していました。

気づいたのは、その2週間後です。無人で回しているエージェントの成果を確認しようと git log --oneline -30 を叩いたとき、画面に流れてきたのは英語と日本語がまだらに並んだコミットログでした。Add: 記事更新パイプラインの冪等化 の3行下に fix: resolve race condition in the scheduler。同じエージェントが、同じ設定で、同じ週に書いたものです。

設定は何も間違っていませんでした。UI は日本語です。応答も日本語で返ってきます。それでも、リポジトリに残るものだけが揺れていました。

UI の言語と、成果物の言語は別々に決まっています

この現象を理解するのに、しばらくかかりました。整理してみると、言語を決めている場所は3つあり、それぞれ独立しています。

層何が決めるか読む相手無人運用で直る?
UI 言語言語パック・エディタ設定自分(画面の前にいる人)—(設定した時点で固定)
応答言語AI 応答言語設定・その場のプロンプト自分(会話の中)その場で気づいて直せる
成果物の言語モデルがその瞬間に置かれた文脈将来の自分・共同作業者・利用者誰も見ていないので直らない

1層目と2層目は設定で決まります。既に整理された手順があり、私もAntigravity 2.0 を日本語UI で快適に使うための設定に沿って進めました。会話の中で言語が混ざったときも、その場で「日本語でお願いします」と一言添えれば戻ります。

問題は3層目です。ここは設定項目ではありません。エージェントがコミットメッセージを書く瞬間、その入力にあるのは差分と直前の会話だけです。差分の中身が英語のコード(function、return、変数名)で埋まっていれば、モデルは英語の文脈にいると判断します。日本語のドキュメントを直した差分なら、日本語で書きます。つまり成果物の言語は、設定ではなく差分の中身に引きずられます。

人が画面の前にいれば、この揺れは目に入った瞬間に直せます。無人運用ではそうはいきません。誰も読まないまま次のランが走り、混在したまま積み上がっていきます。私が2週間気づかなかったのは、まさにそのためでした。

6週間、何がどれくらい混ざっていたか

気づいた時点から、直す前にまず測ることにしました。無人ランが触れた成果物を種類別に走査し、日本語(CJK 文字)を含むものと含まないものを数えています。対象は Antigravity のスケジュール実行が6週間で残した成果物です。

成果物の種類総数日本語英語1つの中で混在混在・非統一率
コミットメッセージ312 件198114736.5%
コードコメント(新規追加行)1,046 行402644—38.4%
生成ドキュメント(.md)44 件392311.4%
ログ出力の文字列188 行51137—27.1%

数字を見て、いくつか腑に落ちたことがありました。

生成ドキュメントの混在率が低いのは、記事本文という「日本語で書くことが差分から自明な文脈」だからです。逆にコードコメントが最も揺れているのは、周囲の識別子がすべて英語だからでしょう。混在率は、その成果物の周囲にどれだけ英語のトークンが並んでいるかにほぼ比例していました。

もう一つ、「1つの中で混在」の7件が厄介でした。Fix: スケジューラの競合状態を解消 and update tests のように、1行の中で言語が切り替わっているものです。これは種類別の集計では見つけにくく、後述するゲートで初めて拾えました。

そして、この6週間で成果物の言語について私が手で直した回数は 0回 です。気づいていなかったのだから当然ですが、無人運用の性質を端的に示している数字だと思っています。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦UI の言語・プロンプトの言語・成果物の言語は別々に決まります。無人運用では3層目だけが誰にも直されないまま蓄積します
✦コミットメッセージ・コードコメント・PR 本文・生成ドキュメントの言語を読み手ごとに固定する「出力言語契約」の書き方と、AGENTS.md への落とし込み
✦混在を機械検出する lang_gate.py の実装(CJK 比率・コードブロック除外・固有名詞の除外辞書)と、6週間の実測値・誤検知率・取りこぼし3件
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Editor View2026-09-10
日英で本数が合っていても、コードブロックは 148 ペアでずれていました
日本語版と英語版のファイル数が 1,057 対 1,057 で揃っていても、本文の構造までは揃っていませんでした。コードブロックと H2 の個数を数え直して出たずれ、文字数比では捕まえられなかった理由、40 行の検査スクリプトを書き残します。
⟐ Editor View2026-09-17
VS Code から持ってきた拡張が Open VSX に無いとき、どこまで追いかけるか
Antigravity へ移したあと、拡張機能だけが付いてこない理由と、足りない分を機械で洗い出して埋め方を決めるまでの手順です。Open VSX の公開者を確かめる方法、VSIX を台帳で固定する運用、レジストリ差し替えの副作用まで扱います。
⟐ Editor View2026-09-03
Antigravity の自動コミットメッセージを、どこまで受け入れるか決めました
Review ペインの自動コミットメッセージを、どこまで受け入れてどこから自分で書くか。prepare-commit-msg に Why 行を足す実装と、リベースやリバートで手が止まった実測を書き残します。