12 ポイント 投稿者 GN⁺ 2025-10-30 | 1件のコメント | WhatsAppで共有
  • Mojangが Minecraft: Java Editionの難読化を完全に廃止すると発表
  • 難読化はゲーム業界で一般的なセキュリティ慣行だったが、コードのアクセス性や Mod 開発に制約を与える要素でもあった
  • これまではクラス名・関数名・変数名がすべて難読化されており、Mod 開発とデバッグが複雑だったが、今後は 元のコード名を含むビルドが提供される
  • Mounts of Mayhemアップデート後の最初のスナップショットから難読化がなくなり、既存ツールとの互換性のため、しばらくは 難読化版と非難読化版を並行配布する
  • この変更により、Mod 開発、コード解析、クラッシュログの解釈、バグ修正がさらに容易になると期待される

Minecraftコード難読化の歴史

  • Java Editionはリリース初期から ソースコード保護のための難読化を使ってきた
    • コード内部のクラス名、関数名、変数名は意図的に 意味のない文字列へ変換され、公開されていなかった
    • そのため、Modderたちは各コードの役割を手作業で分析する必要があった
  • 2019年からMojangはこれを緩和するため、obfuscation mappings を公開
    • 難読化された名前を本来の意味を持つ名前へ対応付けるマッピングリストを提供
    • これによりModderはコード構造を理解しやすくなったが、それでもなお中間工程は残っていた

難読化廃止の決定

  • Mojangは 難読化そのものを廃止し、中間工程を完全になくすことを決定
    • “Mounts of Mayhem” の正式リリース後、最初のスナップショットから適用
    • 今後のすべてのバージョンで、変数名・フィールド名・クラス名など元の名前を含むコードが標準提供される
    • 開発者とModderは 直接的なコードアクセスと修正が可能になる
  • これはJava Editionの開放性を高め、Modエコシステムの障壁を下げる措置と受け止められる

Modder向けの移行段階

  • Mojangは 既存ツールの互換性問題を考慮し、移行期間を設ける
    • 次のスナップショットから 非難読化の実験版 (experimental release) もあわせて配布
    • Modderは新しいコード構造に合わせて ツールとワークフローを事前テストできる
    • その後、完全移行時には既存の難読化版は終了予定
  • 最初の完全非難読化バージョンは Mounts of Mayhemリリース後の最初のスナップショット

変更の目的

  • Mojangは「ModdingはJava Editionの中核」とし、難読化がその成長を妨げていたと説明
    • 複雑なコード解読なしに、より迅速な Mod制作・更新・デバッグ が可能になる
    • クラッシュログの可読性向上により、問題解決の速度も改善
    • Modder同士の協業や学習プロセスも簡素化される見込み

ライセンスおよび法的ガイドライン

  • 今回の変更は EULAやUsage Guidelinesには影響しない
    • 引き続きMinecraftおよびMod制作者は該当規定を遵守する必要がある
    • 各 jar ファイルにはEULAへ直接リンクする LICENSEファイル が含まれる
  • 今後の変更点:
    • バージョン .json から 難読化マッピング情報を削除
    • クライアント/サーバー jar ファイルの両方を非難読化状態で提供
    • 各 jar に 新しい LICENSEファイルを同梱

今後の方向性

  • Mojangはこれを「透明な未来への移行」と表現し、コミュニティフィードバックを積極的に集める予定
  • 難読化の解除はMinecraft Java Editionの歴史における 最もオープンな開発環境の変化 であり、
    Modエコシステムの成長加速と教育的価値の拡大が期待される

1件のコメント

 
GN⁺ 2025-10-30
Hacker Newsの意見
  • Minecraftがこれほど強力なモッドコミュニティを持つゲームでありながら、開発者たちが難読化されたJavaバイナリをデコンパイルして作業していたのは驚き
    10年以上にわたって難読化解除と再難読化を繰り返しながらツール群を発展させてきた彼らの献身はすごい

    • 2004年にMMOゲームを海賊サーバーで遊んでいたが、サーバー運営者がヘックスエディタで直接バイナリを修正して機能を追加していた
      まるで映画 Matrix のハッカーのように16進数を見ながら1文字ずつ書き換えていた姿が印象的だった
    • ソースコードがなくてもソフトウェアを改変できることの、また別の証拠
      ただしJavaはもともとデコンパイルが容易なので、本当の障壁はコード難読化よりもオブジェクト指向構造の複雑さにある
    • 実際には2019年からMojangが公式にマッピングファイルを提供し始めていた
      昔のようにコミュニティが自前で作って使う必要はない
    • Javaはデコンパイルしやすいので、JVMコードさえ理解すればすぐ手を入れられる
      VMの構造とオブジェクトディスパッチの概念さえ分かれば十分だった
      初期のMinecraftモッディングコミュニティは本当に楽しい場所で、私が経験したコーディングの中でも最も記憶に残る瞬間の一つだった
    • 私もMinecraftに詳しくなかったので、公式プラグインシステムがあるものだと思っていた
      ところが実際には、その大半がリバースエンジニアリングによって作られた生態系だったと知って驚いた
  • Minecraft、Roblox、Geometry Dash、Trackmaniaのようなゲームはコミュニティの力で成功した事例
    エンジンが閉鎖的だったり開発が難しかったりすると、Vision Proやメタバースのように成長しにくい
    趣味の開発者や小規模なユーザーが気軽に参加できてこそコミュニティが生まれる

    • Flight Simulatorシリーズも巨大なアドオン生態系を築いた
      だが最終的に重要なのは『良いゲーム』そのもの
      コミュニティが大きくなれば、その一部が自然とモッディングを始める
      たとえばRichard Burns Rallyはもともとモッディングを想定していなかったが、ファンが車、コース、オンライン機能まで追加した
      voxelエンジン Luanti でも似た現象が見られる
    • Robloxの初期のエンジン完成度は本当に高かった
      2006年に無料で数千本の3Dマルチプレイゲームを即座に起動でき、建物の破壊や地形変形も可能だった
      当時としては革新的で、その単純なアクセスしやすさが最終的に子ども市場を制した
    • Minecraftは例外だと思う
      アルファ版の時点からシングルプレイ体験が素晴らしく、サバイバルと創造性のバランスが完璧だった
      すでにその頃から数百万ドルの売上を上げていた
    • メタバースが失敗したもう一つの理由は、誰もそれを望んでいないから
      高価なVRヘッドセットをかぶりたい人はほとんどいない
    • VRエンジンが悪いという主張には同意しない
      Unity、Unreal、GodotはいずれもVR対応が優れている
      問題は開発コストに対してユーザー数が少ないという点
      アクセシビリティ、UX、酔い対策など考慮すべきことが多く、開発ははるかに高コストになる
      たとえば6DoF環境で字幕を表示するだけでも難しい
  • Mojangが2019年に公開したobfuscation mappingsは、難読化された名前を解読するためのリストだった
    そのおかげでモッダーたちは、もはやすべてのコードを推測する必要がなくなったが、なぜ半分しか公開しなかったのかは疑問

    • 多くのモッドツールがすでにコミュニティ命名体系に合わせて作られていたから
    • たぶん法務チームが難読化解除という言葉を聞いてパニックになったのだと思う
    • 単に法的理由や手続き上の都合だったのかもしれない
    • あるいは、そのマッピングが一部のクラスやメソッドだけを含む公式API形式だったのかも気になる
  • いつかMinecraft Java EditionをGitHubでオープンソース公開するのか気になる
    Skyrimのように、どのプラットフォームでも売れ続けそうだ

    • すでにオープンソースランチャーは、アカウント認証にさえ注意すれば正常に動作する
      ゲームファイルもMicrosoftのサーバーから無料で取得できるので、オープンソース化しても損はなさそう
    • 2010年にNotchは「売上が落ちたらソースコードを公開する」と約束していた
      当時のウェブページのアーカイブ
    • Doomのようにエンジンだけをオープンソース化するのも良い方法
      アート資産は引き続き著作権で保護される
    • 似た代替案としてはMinetestやLuantiがある
    • 今ならソースは公開し、アカウント認証サーバーへのアクセス権だけを有料のまま維持しても、売上への影響は大きくなさそう
  • 私は最近 Luanti で作業するほうを好んでいる
    Minecraftとほぼ同じ体験をモッドで実現でき、VoxeLibre のようなゲームモッドもある
    Luaで書かれたモッドのソースコードも大半が公開されている
    特に Zoonami はポケモンのようなゲーム体験を提供していて興味深い

    • LuantiにもAllTheMods 10やMeatballcraftのような大型モッドパックがあるのか気になる
    • ZoonamiはTuxemonが果たせなかった目標を達成しそう
  • Minecraftはすでに海賊版が容易なので、ソース公開による損害はほとんどないと思う
    ほとんどの人はMojangの認証サーバーを使うために正規アカウントを維持している
    非営利条件付きのオープンソース化すら可能なほど規模が大きい

    • ただし「営利禁止条項」が付くと、本当のオープンソースではなくソース公開(Source Available) に分類される
  • Proguardの攻撃的な難読化は、クラス名を複雑に変え、インライン化まで行ってコードを理解しにくくする
    今回の措置はその点で大きな前進

  • 良い知らせ! Minecraftモッディングコミュニティに新たな可能性が開かれる

  • コミュニティが作ったマッピングは自由ライセンスだったが、Microsoftのマッピングはそうではない
    一種のかもしれない

    • だが今ではマッピング自体が消えたので、その罠が何だったのかよく分からない
    • 変数名にも著作権が適用されるのか気になる
  • 本当にもっと簡単にするなら、モッディングを許可するライセンスでソースコードを公開するのが最善だと思う