“Googleのアプリプロテクト”でAndroid向けゲームに不具合発生か。国内開発者が死ぬ気で直した謎の不具合【UPDATE】

Pocket
reddit にシェア
LINEで送る

国内個人開発者のじぃーま氏は7月7日、同氏が手がける複数作品における、ある厄介な不具合の解決を報告した。同氏によれば、この不具合は「特定の一部Android端末でのみ、アプリの起動ができなくなる」という、深刻かつ対処の難しい不具合だったようだ。弊誌はこの不具合の経緯と対処について、じぃーま氏に詳しい話を伺った。

『カタストロフィレストラン』

じぃーま氏は、合同会社ズィーマとして単独でモバイル向けゲームを手がける個人開発者だ。同氏は人類の文明が終わった世界を舞台とする「ポストアポカリプスシリーズ」をはじめとして、多数の個性的なモバイル向けゲームをリリース。人類最後の生存者となった未来の子孫に向けて物資を送る“SF仕送りアドベンチャー”『TimeMachine』や、脳みそだけのヒロインの体を再生する“恋愛アドベンチャー(?)”『MyLove.』などをiOS/Android向けに送り出している。いずれも基本プレイ無料配信となっており、安定したユーザーレビュー高評価を誇っている。また、先月6月3日には新作『カタストロフィレストラン』をリリースし、こちらも早速ユーザーレビュー高評価を受けている。

しかし、ある不具合がじぃーま氏の頭を悩ませていた。同氏のゲームが、特定のAndroid端末にて動かない現象だ。この現象は、新作『カタストロフィレストラン』をはじめ、同氏のリリースしてきたいくつかのゲームに発生していた様子だ。不具合を解決するため、じぃーま氏は奔走した。手がかりとしては、起動しない不具合はモバイルブランド「arrows(アローズ)」のAndroid端末で発生する様子が見られたようだ。そこでじぃーま氏は、検証用のarrows端末を手配。6月27日には端末を入手した旨を伝え、不具合のさらなる原因究明に取り組んでいた。

そして、同日にはいくつかの不具合発生条件が浮かび上がった。「arrows端末で発生する」ほか、「アプリのファイル(apk)を、Google Playストア経由でインストールすると発生する」などの条件だ。しかし、一体いかなる原因による不具合であるかは、依然として見当がつかない状態だった。そして7月7日、ついにじぃーま氏より解決の報告がなされる。不具合の“犯人”は、よりによってGoogleが提供するアプリ改ざん防止機能「Automatic Integrity Protection(以下、AIP)」だったようだ。

AIPは、Android開発元であるGoogleが提供するアプリ改ざん防止機能だ。この機能は、たとえば「課金アイテムを不正なチートで入手する」などの行為を防いでくれるシステムだ。開発者にとって導入も簡単。しかし、この機能がどうしても不具合の原因として怪しいのだという。

じぃーま氏は、今回の不具合の発生するプロセスについて「ただのカンというレベル」としつつも見解を語ってくれた。AIPに原因があると考えた理由としては、apkファイルを検証してみた結果があるそうだ。ざっくりいうと、apkとはAndroid端末が起動するアプリやゲームのファイルだ。そしてGoogle Playストアでは2021年8月から、このapkを端末などに合わせて自動生成してくれる「Android App Bundle(aab)」と呼ばれる形式が標準化されている。

じぃーま氏によれば、apkがaabから自動生成される際には、AIPがなんらかの処理を施しているという。ゲームファイルがユーザー端末に届く前に、プロテクトシステムが手を加えているわけだ。そして、この自動生成されたapkファイルでは、GooglePlayストアを通さずとも不具合が発生するのだという。一方で、じぃーま氏がaabを通さず直接apkを作って端末にインストールした場合には、問題なく動作するそうだ。直接作ったファイルは問題なく、AIPの処理が入ったファイルは問題あり。必然的に、「AIPが怪しい」との推測が成り立つわけである。同氏は、この現象についてGoogleに問い合わせているとのこと。

じぃーま氏はこの不具合に対処している最中、不具合が発生している端末を、ゲームの対応外としようかと悩んだという。というのも、この不具合は近年発売されたarrows端末では発生しないようで、なおかつ発生端末の数もさほど多くない。じぃーま氏は、対応外として切り捨てる対応も、たしかに「もっともだ」と理解を示している。一方で、じぃーま氏は「新作がプレイしたい」といってくれるファンの存在や、過去作にも同不具合が存在する点を鑑み、検証用端末を買ってしまったのもあって最後まで修正をやり切ったとのこと。なお、arrowsが条件であると特定する上では、開発者向けツールであるGoogle Play Consoleのクラッシュレポートが大いに役立ったそうだ。

じぃーま氏は、環境依存の問題はたまにあるものの、単発の不具合ばかりで再現性がないことがほとんどとコメント。一方で、今回の不具合は、「不具合の発生環境が限られ、かつ必ず再現する」バグでありさらに厄介だ。どの環境でも起きるわけではないため、原因の究明は困難。その一方で、不具合が発生したユーザーは、「必ずゲームが遊べなくなる」という状況に陥ってしまうわけである。そうした重大かつ対処しづらいバグを、懸命に修正したじぃーま氏の姿勢は見事だ。

なお、じぃーま氏は「手元の端末では問題が解決したものの、お客さんの端末で100%解決したのか心配なところはまだあります」とも伝えている。もしも不具合に遭遇した際には、端末機種やAndroidバージョン、発生状況など、詳しく報告してみるのもよいだろう。詳細なレポートほど、開発者による不具合との戦いに役立つ武器はないからだ。

『カタストロフィレストラン』は、Android/iOS向けに基本プレイ無料で配信中。こちらはすでに不具合対策済みだ。なお、同氏の過去タイトルについても、本日から明日中にかけて修正アップデートを配信予定だという。

【UPDATE 2022/7/21 12:20】
開発者のじぃーま氏によれば、Googleから同氏に向けて、プログラムが修正された旨の連絡があったとのこと。7月15日以降にリリースされたアプリには、問題が修正されたAIPが適用されるそうだ。一方で、14日以前にリリースされたアプリについては、新しいバージョンのリリースが必要となる様子である。

Pocket
reddit にシェア
LINEで送る