せっかくの大型連休、ゴールデンウィークだというのに雨が続くらしい。

釣りへ出かける気分にもなれない。というより最近はCodexの衝撃とともに、Codexへの指示とレビューに時間を取られまくって消耗し切っている。

もはや私はAIの奴隷に成り下がっているのではないか。

AIが人間社会を楽にしてくれるなんて嘘っぱちじゃないか。人間作業だったら数週間かかるものを一瞬でAIが生成してくれるからといって、人間側はまったく楽にならないのだ。

なぜなら、AIの生成物のレビューに時間がかかる。イメージと違う成果物が出てきたら、当然、自分ではすぐ直せないほど高度なものなので、指示書を書き直して再度依頼する。そんなことを高速で繰り返すものだから、こちらは休みなく働かされ続ける。

少しでも時間にゆとりが出ようものなら、Codexの /status を見て「課金プランを使い切っていないともったいない」という感情が働き、次の指示を考えなければならない。ターミナルだって4窓をCodexに使い、各窓をさらに左右に分割し、人間側が操作できるCLIをなんとか確保している。

Codex用にターミナルを複数並べている作業画面

きっと私が間違っているのだろうが、最近はそんな日々を送っていたため、だいぶ病んでいる。

現実逃避すべくマイクラを再開したのは自然な流れだろう。

Note

ただ、この状態はその後少しだけましになった。手元のMacに張り付いてCodexの様子を見続けるのではなく、さくらのサーバー上にリポジトリをcloneして、Codexに記事リライトを定期実行させる仕組み を作ったからだ。結局AIに仕事を増やされている気もするが、人間がずっとターミナルを監視し続ける時間は少し減った。

久しぶりに一から始めるマイクラ

久しぶりにMinecraftを一から始めた。雨の連休、釣りに行けない気持ちを抱えたまま、仮想世界の砂浜へ降り立つ。

画面を見ていると、これは小田原サーフだろうか、などと勝手に脳内補正が始まる。現実の海へ行けないなら、ブロックの海辺でよいではないか。

久しぶりに一から始めたマイクラの砂浜のような風景

ただ、ゲームを始めてすぐ、マイクラそのものよりも「CodexにModをインストールさせてみよう」という気持ちが勝ってしまった。ここがもう病の深いところである。

以前にも手作業でModを入れたことはあったのだが、仕組みをちゃんと理解していないせいか、とても面倒な印象が残っていた。手動ではやりたくない。こういった作業こそCodexに任せるのが正解だろう。

そこで思い出したのが、座標を常に画面上へ表示したいという話だった。

デフォルトでもF3のデバッグ画面を開けば座標は確認できる。ただ、情報量が多すぎて見づらいし、普段のプレイ中にずっと出しておくには少し邪魔だ。必要なのは、座標だけを小さく常時表示してくれる仕組みである。

MiniHUDを見つける

調べてみると、まさに欲しかったものとして MiniHUD があった。

MiniHUDは、いわば小さなF3画面のように、座標などの情報を選んで表示できるクライアント側Modである。Modrinthの説明でも、MiniHUDは「mini F3」的なHUDや各種オーバーレイを提供するクライアントサイドModとして紹介されている。

また、MiniHUDを使うには共通ライブラリである MaLiLib も必要になる。MaLiLibは、設定画面、ホットキー、GUIまわりなど、masa氏系Modで共通利用される部品をまとめたライブラリという位置づけらしい。

こういう依存関係を自分で追いかけるのが面倒だったので、すぐにMinecraft用のプライベートリポジトリを作り、git clone で取り込み、Fork、IntelliJ IDEA、Codexあたりの初期化を済ませた。

GitHub Issuesには、次のような指示を追加した。

codex --search exec --full-auto で以下タスクを順番に自動で進めてください。

---

MiniHUDをインストールして、座標を表示できるようにしてください。
この実装を始める前に、まずは実行計画を立てて下さい。
それをTODOリストとしてMarkdownファイルに落とし込んでください。

このIssueのURLをCodexへ貼り付けて作業開始。数分でMod導入まで進んだ。

MiniHUDなどのModを導入したMinecraftの画面

このスピード感は確かにすごい。人間が公式ページを読み、依存関係を確認し、バージョンを合わせ、ダウンロード先を探し、配置先を調べる。その一連の調査と作業を、Codexはかなりの速度で進めてくれる。

ただし、速いからといって楽になるとは限らない。ここから人間は、何が入ったのか、どこへ置かれたのか、バージョンは合っているのか、起動して本当に動くのかを確認し続けることになる。

今度はModの表示を変えたくなる

座標が表示できるようになると、さらに余計なことを思いつく。

MiniHUDの表示で WESTEAST と出ている部分を、「西」「東」のように日本語化できないだろうか。

ただの表示文字列を変えるだけなら簡単そうに見える。だが、Modは普通のアプリではなく、Minecraft本体のバージョン、Modローダー、依存Mod、マッピング、ビルド設定が密接に絡む。ここを理解しないまま触ると、急に難しくなる。

調べるとMiniHUDはオープンソースだった。そこで速攻でforkして、ソースコードをcloneし、IntelliJ IDEAで開いて、表示文字列らしき箇所を変更してみた。

MiniHUDのソースコードをIntelliJ IDEAで開いて表示文字列を改修している画面

ところが結果として、この方法はうまくいかなかった。

ソースコードを直してもダメだった理由

今回つまずいたポイントは、ソースコードを直すこと自体ではなく、ビルドしたModが自分のMinecraft環境に合っていなかったことだった。

MinecraftのModは、単に「MiniHUDのソースをビルドすれば動く」というものではない。

  • Minecraft本体のバージョン
  • Fabric、Forge、LiteLoader、OrnitheなどのModローダー
  • MaLiLibなど依存Modのバージョン
  • そのブランチが想定しているマッピングやビルド設定

これらが揃って初めて、入れ替え可能なJARになる。

私の環境では、実際に入っているMiniHUDはFabric向けの新しめのJARだった。一方で、ソース側で触っていたブランチやビルド結果は、古いMinecraft系統や別ローダー向けの流れに寄っていた。

つまり、文字列を変えたJARを作ることはできても、それが今起動しているMinecraft環境にそのまま刺さるとは限らない。Mod改造で怖いのはここである。

アプリ開発なら「ビルドできたのでOK」と言いたくなるが、Minecraft Modの場合は、ビルド成功と実行環境への適合は別問題だ。

JARを直接直す方針に切り替える

そこで方針を変えた。

ソースからMod全体をビルドし直すのではなく、今動いているJARファイルの中にある翻訳リソースだけを差し替える。

JARファイルはJava Archiveの略で、実体としてはZIPに近い構造をしている。中には、Javaのクラスファイル、Modのメタ情報、画像、言語ファイルなどが入っている。

MiniHUDの表示文字列が言語ファイル側にあるなら、そこだけを編集してJARへ戻せばよい。

イメージとしては、次のような流れになる。

jar tf minihud-fabric-26.1.2-0.39.2.jar | grep 'assets/minihud/lang'

JARの中に assets/minihud/lang/en_us.jsonja_jp.json のような言語ファイルがあることを確認し、対象のキーだけを書き換える。最後に、ZIPとしてJARへ戻す。

cp minihud-fabric-26.1.2-0.39.2.jar minihud-fabric-26.1.2-0.39.2.jar.bak
zip -u minihud-fabric-26.1.2-0.39.2.jar assets/minihud/lang/en_us.json assets/minihud/lang/ja_jp.json

もちろん、これは正規のMod開発手順というより、ローカル環境で使うための小さな改造である。配布するならライセンス確認、ソース管理、再ビルド手順、依存関係の整理が必要になる。

ただ、自分の環境で「WESTを西にしたい」程度なら、JARの言語リソース差し替えはかなり現実的だった。

結果として、改造版のModを動かすことができた。画面上の方角表示が日本語になり、座標表示も常時確認できる。やりたかったことは達成である。

改造版MiniHUDで方角表示を日本語化できたMinecraftの画面

今回わかったこと

AIエージェントにMod導入を頼むのは、かなり相性がいい。

依存関係を調べる、ダウンロード先を探す、ファイルを配置する、設定ファイルを確認する、起動ログを見る。こういう作業は、Codexが淡々と進めやすい領域だ。

一方で、Modのソースコード改修は話が変わる。ビルドできるかだけでなく、そのJARが現在のゲーム環境に合っているかを見なければならない。

特にMinecraft Modでは、次の観点を先に確認した方がよい。

  • 今動いているMinecraft本体のバージョン
  • 使っているModローダー
  • 導入済みModと依存Modのバージョン
  • 変更したい文字列がコードなのか、言語ファイルなのか
  • ソースからビルドする必要があるのか、JAR内リソース差し替えで足りるのか

今回は、最初から「方角表示の日本語化」が目的だった。であれば、ソースコード全体を触るより、言語ファイルを探す方が筋がよかった。

そして何より、JARを直接触るならバックアップは必須である。Modを更新したら改造は消えるし、壊れたJARを置くとMinecraftが起動しなくなることもある。試すなら、いつでも元に戻せる状態でやるべきだ。

AIに任せるほど、人間のレビューは増える

結局のところ、AIに頼むと作業は速くなる。

しかし、作業が速くなると、人間側のレビュー頻度も上がる。依頼、確認、修正依頼、確認、別案、確認。これを高速で回すので、気づけば人間の方がずっと働かされている。

とはいえ、雨の連休にマイクラを再開し、座標表示Modを入れ、さらに表示文字列の改造まで試せたのは面白かった。

AIに奴隷化されているのか、AIを使い倒しているのか。正直、境界はよくわからない。

ただ少なくとも、釣りに行けない雨の日の現実逃避としては、なかなか濃い遊びになった。

これから始めるなら

Minecraftを一から始めた砂浜の画面

Minecraft: Java & Bedrock Edition

この記事のようにMiniHUDやModを入れて遊ぶなら、目的はJava版です。最近はJava版とBedrock版がセットになったPC向けコード版として販売されているので、これから始めるならまずこのあたりを確認すると迷いにくいと思います。

ただし、購入ページではWindows版と表記されることがあります。Microsoftアカウント、利用環境、ランチャーの案内は購入前に確認しておくのが無難です。

AmazonでMinecraft: Java & Bedrock Editionを見る

関連リンク