†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

ポププラはこまめに再起動して放置するが吉【メモリリークとの闘い】

ポプテピピックのスマフォゲー。ポププラ(ポプテピピック++)は、オートで敵を倒してくれるゲームなので、四六時中ゲームを起動しっぱなしで放置します。
www.youtube.com

☆ポププラは放置していると何が嬉しいのか?

  • コインが溜まる
    • 装備品の強化に使用する
  • 宝箱が溜まる
    • たまにレアモンスターが登場して倒すと出現。開けると装備品が出てくる

☆長時間稼働し続けるスマフォゲームという負荷テスト

通常、ひたすら稼働させて放置するゲームって珍しく、MMOのBotのようなゲームだなと思いながら遊んでいましたが、たまにアプリが強制終了している事がありました。

  • プレイヤーが突然固まって死んだり
  • コインをもらえる動画を視聴しようとすると強制終了
  • メンテナンスのため強制終了してたり
    • これはどうしようもない

強制終了するとコインは残りますが宝箱は消えてしまいます。
f:id:deokisikun:20190414141124p:plain:w100
これは地味に悲しい。もしかしたらレア装備が入っていたかもしれないからです。

放置ゲームなのにご褒美が消えてしまうのは頂けない。

カジュアルゲームなのに高品質を求められる

アプリが強制終了する理由はいろいろありますが、長時間起動し続けるという事は品質の高さを求められます。
ポププラはカジュアルゲームなのですが、そのゲームの性質上(長時間放置)、品質を高めざるを得ないというジレンマがあるように感じます。

メモリリーク絡みの強制終了では?

プログラムのバグによる強制終了は問題外として、メモリリーク絡みのアプリ終了はとてもいじらしく、長時間起動され続けるポププラでは発生する可能性が高いように感じました。

即座にアプリ終了となるような致命的なリークでなくとも長時間アプリケーションを起動していればボディブローのようにジワジワと効いてくる事があります。

しかもメモリリークの原因は多岐に渡ります。

  • 作成したプログラム自体がメモリリークを生み出している
  • OSのAPI自体にリークバグがある
  • OSSの各種モジュールに内在するリークバグ
  • 広告設置用のADツール自体のリークバグ

プラットフォームが2つ(AndroidiOS)あるならば、当然リークの原因となる要素も2倍です。
開発している方々大変だ!

さらに端末自体のリソース制限によってリークしてなくても強制終了させられる事もあります。

ソフトウェアデベロッパーはプラットフォーマーではないので、超えられない壁があります。

☆ユーザーである僕らができる事

スマフォアプリのユーザーの端末はバラバラという過酷なデベロップ環境において、アプリ強制終了を絶対起こらなくするのは不可能だと思います。


なので極力リソースが空きっ腹状態で動作させるため、こまめにアプリを再起動するが吉なのです。