logo

鎌イルカのクラフト記

article icon

Minecraft ModPackをAIマルチエージェントで翻訳した話

はじめに

最近、Minecraftの「Steampunk LPS」ってModPackにどハマりしています。

スチームパンクの世界観をベースにした大型ModPackで、蒸気機関から始まり銃器や化学プラント、果ては宇宙開発まで繋がるかなりボリューミーな内容です。ただ、当然ながら全部英語。序盤はまだ良かったんですが、クエストブックの説明文が長文になってくるとさすがに辛くなってきました。

日本語化パッチを探してみると、コミュニティが作ってくれたものは一応あったんですが、かなり古いやつで対応してないmodがほとんどの状態。これはもう自分で翻訳するしかないなと。

「じゃあAIに丸投げするか」と思い立ったのが全ての始まりでした。

翻訳の規模を調べて絶望した

まずModPackに含まれるjarファイルを調査しました。317個のjarを展開して中身を確認したところ、翻訳対象は89mod、23,000以上の翻訳キー。さらにクエストブック(FTB Quests)が31ファイル

1つのmodあたり平均260キー、多いものだと数千キーもあります。手作業でやったら何ヶ月かかるか分からない量です。

とはいえ、ちょうど普段の開発で使っているAIマルチエージェントシステムがあるので、こいつに働いてもらうことにしました。

マルチエージェントシステムで翻訳する

私が運用しているマルチエージェントシステムは、戦国時代の指揮系統をモチーフにした構成になっています。

  • 将軍(Shogun): 全体の方針決定と最終承認
  • 家老(Karo): タスクの分解・割り当て・進捗管理
  • 足軽(Ashigaru)×7: 実際の翻訳作業を並列実行
  • 軍師(Gunshi): 品質チェックと戦略立案

家老が89modを足軽たちに振り分け、各足軽が並列で翻訳していく流れです。足軽1人あたり10〜15modを担当し、完了したら家老に報告。家老が進捗を集約して次のタスクを割り振る、という具合です。

translate-modスキル

最初は素朴にAIへ「このJSONを日本語に翻訳して」と投げていたのですが、すぐに問題が出ました。Minecraftのmod翻訳には独特の用語体系があり、AIが毎回微妙に異なる訳語を当ててしまうのです。

そこで開発したのがtranslate-modというClaude Code用のスキルです。

仕組みはPythonによる2段階パターンマッチ方式です。

  1. 辞書マッチ: 1,085エントリの専用辞書から完全一致・部分一致で訳語を確定
  2. AI翻訳: 辞書でカバーできなかった残りをAIが文脈を見て翻訳

辞書には「Redstone → レッドストーン」のような定番から、「Crushing Wheel → 粉砕ホイール」のようなmod固有の用語まで収録しています。辞書でまず確実な訳を当て、AIには判断が必要な部分だけを任せることで、訳語の一貫性と翻訳速度を両立できました。

品質管理は3回レビュー

翻訳が終わっても終わりじゃなかったです。品質管理として軍師による3段階レビューを実施しました。

初回レビューの平均スコアは**★3.0程度。「意味は通じるけど不自然」という状態です。ここから修正を重ねて★4.2 → ★4.5と上がり、最終的には★5.0相当**まで持っていきました。

レビュー観点は主に以下の3つです。

  • 用語の統一性: 同じアイテムが別の訳になっていないか
  • 文脈の適切さ: ゲーム内で違和感のない表現か
  • フォーマット: JSONとして正しいか、特殊文字が壊れていないか

苦労したこと

球根問題

一番印象に残っているのが「球根問題」です。

銃器mod(TFMG)に "light_bulb"(電球)というアイテムがあるのですが、これが「球根」と翻訳されてしまいました。英語の "bulb" には「植物の球根」と「電球」の2つの意味があり、AIが文脈を読み違えたわけです。

辞書に bulb → 電球 を追加して修正したところ、今度は別のmod(BetterEnd)の "bulb_lantern" が「電球ランタン」になってしまいました。こちらは植物系のランタンなので「電球」もおかしい。最終的に「バルブランタン」という訳に落ち着きましたが、同じ単語でもmod/文脈によって訳が変わる典型的な例でした。

jarのJSONパースエラー

modのjarファイルを展開してJSONを読む際、一部のmodがBOM付きUTF-8だったり、JSONの末尾にカンマがあったりして標準パーサーが落ちるケースがありました。地味ですが数が多いと結構な手間です。

Zone.Identifier

WSL2環境特有の問題として、Windowsからコピーしたファイルに Zone.Identifier という代替データストリームのゴミファイルが大量に付いてくる現象がありました。翻訳対象のファイル一覧にノイズが混ざるため、事前にフィルタリングする処理を入れて対応しました。

最終成果

最終的な翻訳成果をまとめると以下の通りです。

  • 対象mod数: 89mod
  • 翻訳キー数: 23,000+
  • クエストファイル: 31ファイル
  • 辞書エントリ: 1,085
  • 品質スコア: ★3.0 → ★5.0(3回レビュー後)

89modの日本語化って個人レベルではかなり大きい規模だと思います。これを数日で完了できたのはマルチエージェントシステムの並列処理のおかげです。

まとめ

「英語のModPackを丸ごと日本語化したい」という個人的な欲求から始まったプロジェクトでしたが、結果的にAIマルチエージェントの実践的なユースケースになりました。

特に学びが大きかったのは辞書とAIのハイブリッド戦略です。AIに全部任せると訳語がブレる。辞書だけだと文脈判断ができない。両者を組み合わせることで、大規模翻訳でも品質を維持できることが実証できました。

翻訳済みのリソースパックは自分の環境で快適に動いており、ようやくクエストブックを日本語で読みながらスチームパンクの世界を楽しめています。

ではまた!

目次