「アプリクラッシュはなぜ起こるのか」OS?端末?サーバー?ソース? SmartBeat PM 仲井さん インタビュー

公開日:

執筆者:編集部

FROSKインタビュー
今回はアプリのエラー検知ツール「SmartBeat」の開発やゲームに限らずさまざまなジャンルのアプリクラッシュ調査レポートを発表しているFROSK株式会社の仲井さんにインタビュー!

なぜゲームの不具合が起きるのか、起きないためにどういうことが行われているのかなど、現場での実感や専門的な知識を交えつつわかりやすく説明していただきました。

仲井さん

SmartBeat プロダクトマネージャー 
仲井 裕紀さん

エラー検知や原因の解析をサポートするサービス「SmartBeat」のプロダクトマネージャー。SmartBeatの1日あたりのエラー検出数は3000万件以上。現在2500以上のアプリに入っていて、アクティブユーザー数は2億人を超える。
10のアプリジャンルに分けてレポートしたアプリクラッシュ調査レポート2019年上半期はダウンロードで見ることが可能。

アプリクラッシュ調査レポート2019年上半期

HP:SmartBeat

デベロッパー向けにエラー検知や原因の解析をサポート

FROSKインタビュー

icoそれでは自己紹介をよろしくお願いします。
ico
仲井と申します。
現在はデベロッパー向けにエラー検知や原因の解析をサポートするサービス「SmartBeat」のプロダクトマネージャーをやっております。
顧客のデベロッパーにどういう課題があるかを聞いたり、SmartBeatの開発優先順位であるとか、今後のロードマップを考えたりということをやっています。
ico続いてFROSK株式会社の紹介をお願いします。
ico
会社ができたのは2012年で、B2D(ビジネス トゥ デベロッパーズ)をコンセプトにアプリの開発者支援ツールを提供してきた会社です。
今は2014年から始まったSmartBeatをメインに行っています。

アプリクラッシュはどうやって起こるか

FROSKインタビュー

ico今回はアプリクラッシュについて聞きたいんですけど、まずはどうやって起きるかを教えて下さい。
ico
アプリクラッシュを含む不具合には色々ありまして、大きく分けるとクラッシュして強制終了だったり、UIがうまく表示されないアプリが固まる画面の表示が仕様と異なるというだいたいこの4つですね。
なのでアプリを改善するには、こういう不具合のすべてを減らしていくのが重要かなと思っています。
ico
この中でも詳しく聞くと色々あるんでしょうね。
ico

相当ありますね。
端末のメモリの使いすぎで落ちることもありますし、中の実装ロジックに誤りがあってとか数え切れないくらい原因となるものはあります。

OSで言うと単純にOS自体の不具合の場合もありますが、OSの機能(API)の使い方が間違ってるとクラッシュすることもあります。

ico
使い方とかあるんですね。
それはリリース前のテスト段階だと分かりづらかったりするんですか?
ico

そうですね。
例えばいろんなシチュエーションの重ね合わせだったりするんですよ。
ある条件の場合のみ機能を利用すると発生するとか、特定のローディング時だけ発生するとか色々あるので。
その重ね合わせでいままで見つからなかったものが発生するとクラッシュが起きます

そもそもゲーム会社さんって無茶苦茶テストされてるんですよ
外部のテスト会社さんなどに協力してもらう場合もありますし、テストを、3ヶ月とか半年とか実施されます。
それでも見つからないクラッシュもあります

ico
それだけテストしてても起こるんですね。

端末とOSの組み合わせは2万4000パターン

FROSKインタビュー

ico
みなさん、テストはかなりガッツリやられてます。
それでもクラッシュが発生してしまうのは、1つとして端末数が原因なんです。
ico
端末数ですか。
ico
Android端末の種類っていっぱいあるんですけど、利用端末は、上位20端末で、やっと利用シェアが1/3くらいなんですよ。
そのようにたくさんの種類の端末が使われているので、事前にテストをやり切ろうと思ったら20端末でさえ大変なんですが、さらに品質を上げるために、シェアの80%くらいやりたい場合は、200端末くらいテストする必要があるんです。
さらにOSのバージョンと組み合わせると、古めのデータで2015年の場合なんですけど、それでも2万4000パターンあるんですよw

※参考:Androidに関するレポート 現在24,093の異なるデバイスが存在~

ico2万4000www
ico例え外部テスト会社にお願いする場合でも、テストしきれないんですよね。
icoそれはそうでしょうね。
ico
なのですべての環境でやり切るのは不可能かなと思います。
また、iOSでいうと最新バージョンが出て10日前後でシェアの50%がOSをアップロードするんですよ。
ico50%もですか?
ico
それくらいです。

なので10日間隔でiOSユーザーさんの半分の利用環境が変わってしまうため、スピードが早すぎてテストが間に合わないんです。

ico環境が変わるのってそんなに早いんですね。
ico
そうなんです。

そういうこともあって、テストが間に合わないねって話になってます。

ico
それはどうしようもないですね。
それを聞くと僕みたいなユーザー側でも少し可愛そうだなって感じました。
icoですよねw
icoみんなそんなにバージョン変わっていくんですね。
ico
けっこうアップデートされますね。
あとiOSって自動アップデートになってる方が多いので。
ico
なるほど。
自分は自動アップデートはOFFにしていますけど、そのままの方も多いんでしょうね。
端末の環境って想像以上に複雑なんですね。

アプリクラッシュの原因は毎回違う

FROSKインタビュー

ico続いてアプリクラッシュのよくある原因について教えて下さい。
ico毎回違いますね
icoそうなんですか!
ico
アプリによっても違いますし、単純なプログラムや実装のミスからたくさんあります。
正直まちまちですね。
ico
割合でいうと実装ミスとインフラ環境とかが原因の場合ってどっちが多いですか?
ico
運営していく中で影響の大きい不具合って、やっぱり実装ミスなんですよ。
実装ミスは全員に対して影響がある場合が多いので。
icoなるほど。
ico
発生数で言うと、特定の端末依存など一部の環境に発生するような影響が小さいものに比べると、実装ミスのほうが影響は大きいですよね。
ico
そうなりますよね。
じゃあ大規模なエラーって実装ミスなんですね。
ico
うーん・・ソースコードが間違っててということもありますけど、めちゃくちゃ重いファイルがたまたま入っててという場合もありえますね。
それも大きな意味で言うと実装ミスになるんですけど。
ico
そういう場合もあるんですね。
めちゃくちゃ画質いいものをそのまま使っちゃったとか?
icoありうるみたいですよ。
ico
それは原因としてあんまり考えたことなかったですね。
ico
そういうファイルサイズが大きいものが出てくる場面になったら、メモリの使いすぎになっちゃって落ちちゃうとか。

想定したユーザーの規模が当たらない場合も

ico自分がよく原因じゃないかと思ってるんですが、ユーザーが殺到しすぎて動かないっていうのは原因としては少ないんですか?
ico
もちろんそれが理由の場合もあります。
一般論にはなっちゃいますが、最初どれくらいの規模になるかは皆さん想定されてると思うんですけど、それが当たらない場合もありますね
icoやっぱりサーバーの規模を見誤るとかもあるんですね。
icoそれはありえると思いますよ。
ico
話題作ほど落ちるのでそういうことなのかなとは思ってたんですけど。
ico
話題の規模が想定以上の場合は、サーバー側で処理しきれないために、アプリ上にエラーとして検出されることもあります。
icoユーザーの数とんでもないゲームとかありますもんね。
ico
ありますね。
ただ、それ以外が原因の場合もたくさんあります

障害長期化の原因はサーバー?

ico
障害が長期化する場合ってユーザーの負荷が大きすぎて、それに対応するためにサーバーとかを強化しないといけないから時間がかかるってイメージなんですけど。
ゲームで障害が起こったときに、「またサーバーかよ」とかって決めつけて言ってるのは当たってないかもしれないんですね?
ico
当たってないこともあるでしょうね。

ただサーバーの増強ができない場合もあって、ボトルネックが別のロジックにあったりすると対策しないといけなかったりして。
アプリの作りによってやどういうエラーかで変わるのでケース・バイ・ケースで難しいですけど・・・。

icoよくある原因とかはなくて、毎回違うものなんですね。
ico
例えばアプリの中身をちょっと治すだけで良かったら、すぐアップデートするだけで治ります。

でも、アプリの不具合だったとしてもサーバーまで影響範囲が広がる場合、データを大きく入れ替えなきゃ動かないとかも、ありうるんですよね。
そうなるとユーザーが起動できない状態、つまりメンテナンスの表示にして、修正する必要がある場合もあります。

icoよくあるメンテナンスですね。
ico
そうです。
データやロジックを入れ替えるのでメンテナンス時間がすごく長くなったりもします。

テストも品質にも相当取り組んでいる

FROSKインタビュー

ico不具合が起きないような取り組みってどういう事があるんですか?
テストを相当するっていうのはあると思うんですけど。
ico
開発期間が遅延して、押されて押されて圧縮するのはテスト部分っていうのはあるあるだと思います。
また、安定や品質をどこまで大事にするかっていうのは、開発会社さんによっても違います。
すごいところはメモリをどこまで使うとか設計の段階で決めてたりするんです
するとすごく安定したアプリになったりとか。
そこは差が出ると思いますね。
ico大手でも大丈夫なところとダメなところがあるのでどういうところが違うのかなと思ってたんですけど、設計から考えてるところもあるんですね。
icoもちろん設計もしっかり考えてるというのもありますし、大手ってテストも相当やってるんですよ。
ico
なるほど。
トラフィックに対してどれだけサーバーにしっかりお金をかけてるとかだけじゃないんですね。
※トラフィック・・・インターネットやLANなどのコンピューターなどの通信回線において、一定時間内にネットワーク上で転送されるデータ量のこと
ico最近だと自動でサーバーのスケールアップをするサービスもありますし、それをうまく使われることもあるかもしれないですね。
icoそれならかなり安心ですね。
ico
デベロッパーさんって、無茶苦茶頑張られてるんですよ。

あるアプリでクラッシュ率を下げようって話があったんですけど、そのクラッシュ率を非常によい(低い)値まで下げられて、0.36%まで下げられたんです。
つまり、1万人のうち36人にしか影響ない状態です
そこまでやると、Storeのレビュー評価が上がったんです

ico1万人のうち36人に減らしただけでもスコアに影響するんですね。
ico
落ちるなどの評価をレビューに書かれると★1が多いので、一気に評価が下がってくるんですよ。
だからデベロッパーさんって品質はすごく大事にされてますね。
あとレビューに落ちるって書かれるアプリとクラッシュ率の相関を調査してわかったことがあって、約1%まで下げると落ちるって書かれることが少なくなるんです
なので1%を目指すと書かれなくなりますよってことは、よくデベロッパーの方にお伝えしていますね。

落ちづらい端末はiPhoneじゃない?

ico
アプリが落ちづらい端末ってあるんですか?
iPhoneって端末の種類が少ないので落ちづらいイメージがあるんですけど。
ico
確かに一般的にはiPhoneの方が落ちづらいって言われてるんですよ。

でも実は弊社のSmartBeatが入ってるアプリのクラッシュ率を取ると、あんまり変わらないんです

icoそうなんですか!
icoさっき言ったようにアップデートが早かったりとか色々あるので、iPhoneでもあんまり変わらなくなってきてしまうようですね。
icoじゃあゲームするならiPhoneが安定してるよって言うのはうそなんですねw
ico
うそとは言わないですけど、SmartBeat利用アプリで見たら変わらなかったですね。
あとiPhoneって最近Androidの最新端末と比べたらメモリが少なくなってきてるんです
icoAndroidは性能特化とかありますもんね。
ico
iPhone11で4GBで、これがPixel 4だと6GBだったかな。
だからメモリで言うとそんなに多いほうじゃなくなってきたんです。
そういうのもあってiPhoneが落ちにくいっていうのは言えなくなってきてますね

端末が進化してもアプリクラッシュは減らない

icoあと端末の進化によってアプリクラッシュって起きづらくなってるんですか?
ico
たぶん変わってないと思います。

それはゲームを見ていただくとわかると思うんですが、どんどんリッチになっていくじゃないですか。
もうずっとパフォーマンスの限界に挑戦し続けてるんですよねw

ico確かにw
icoそれについてはこれからも変わらないかもしれないですね。

真のエラーが検知できるのが「SmartBeat」

FROSKインタビュー

ico
次はSmartBeatについて聞かせてください。
ico
SmartBeatはエラー検知や原因の解析をしてアプリ品質を向上させることでレビューを改善するためのサービスです。
導入事例で言いますと、現在2500以上のアプリに入っていて、アクティブユーザー数は2億人以上です。
そして1日あたりのエラー検出数は3000万件を超えています。
ico3000万件ってすごいですね。
ico
そうなんです。
よく「不具合対策ちゃんとしていますか?」って言うんですけど、例えばGoogleのデベロッパーコンソールっていう、アプリをリリースしてる人は誰でも見られるツールがあって、そこでも一応エラーって取れるんです。
でもそのエラーの数よりSmartBeatで検出される数は約80倍多いんです。

FROSKインタビュー

ico
なので「ちゃんとしていますか?」って言うんですけど。
実は皆さん本当のエラーの数が、相当わかってない可能性がありますよっていう。
それがわかるのがSmartBeatというツールです。

FROSKインタビュー

icoSmartBeatの特長ってどういうところですか?
ico大きな特長をあげると

・リアルタイム検知で圧倒的な検知数。
・豊富なエラー情報で、修正工数が大幅削減。
・画面キャプチャでエラーが起きた画面がわかる。

この3つですね。

SmartBeatの詳細についてはこちら

ico一番の特長はリアルタイム検知ですか?
icoそうです!

なのでまずは本当のエラー数見てみませんかっていう話をしていますね。

なんでこんなに違うかと言うと、普通のツールってエラーが起きた後、そのアプリを再起動した時にエラーが起きたことを検知してるんですよ。
でもエラーが起きて動かなくなったらもう2度と使わないことってありますよね。
だから本当の数って取れない仕組みなんです。
SmartBeatはクラッシュした瞬間に取るので、ちゃんと取れるんです。
しかもソースコードレベルで何行目に問題があるかまでわかるんです。

ico他のところは再起動しないと取れないんですね。
ico再起動時のところが多いですね。
icoそれは再起動時にログが出るからですか?

※ログ・・・アプリの動作状況を記録したデータ。

ico
いえ、クラッシュしたタイミングでログは出るんですよ。

でもこのアプリがクラッシュして終了するまでの瞬間ってぐちゃぐちゃなので、ログを取るのが難しいんです
なので皆さん再起動してきれいになったタイミングで保存されているログを取るんですね。

ico
なるほど。
それだとその後使わなかった人の分は取れないですね。
ico
ですよね。
あと昔Androidで問題が起こった時って、報告を「はい」「いいえ」で選択して「はい」を選んだときしかとばなかったんですよ。
icoあー、それはだいぶ報告減ったでしょうね。
ico
そうなんです。
そういう差もあって、80倍差が出ましたよと。
ico恐ろしい差ですね。

非エンジニアの人にもわかりやすいツール

icoあと特長でいうと落ちた瞬間の画面キャプチャ(スクリーンショット)が取れるんですよ。
icoそれ大丈夫なのかなって気になったんです。
ico
個人情報についてですよね。
もちろん、ユーザーの方に、取得の同意を取った上でしか利用しないようにお願いしてますし、スマホ画面上に表示された通知などは撮らず、そのアプリの画面しか残らないようになってます。
ico通知とかは画像として残らないんですね。
ico
はい、導入しているアプリ内で表示している画面だけが対象なので、スマホの画面ってわけじゃないんです。
そのため、もちろん通知の表示内容は、取得しないですし、個人情報入力画面のときはその画面を取得対象から外せるようにできるので、アプリの画面のみを選んで画面キャプチャできるようになってます。
icoさすがによくできてますね。
ico
ありがとうございます。
やっぱり画像ってわかりやすいじゃないですか。
詳しい人じゃないとスタックトレースとかコードがとか言われてもわからないと思うんですけど、画像があればここで落ちましたとか言えるので。
だからSmartBeatは非エンジニアの人にもわかりやすいツールかなと思ってます。

※スタックトレース・・・プログラムが不具合を出して止まったときの実行記録。

開発段階から導入をおすすめしています

icoSmartBeatの導入はアプリのテスト段階からになるんですか?
ico
いえ、こちらからはもっと前の開発段階からをおすすめしています
もちろんテスト段階からでもいいですし、リリース後からという方もいらっしゃいます。
でも開発段階から入れておくとたまたま落ちたのも全部拾うので。
ico検知精度高いなら早く入れておけばその分工数減りそうですもんね。
ico
そうです。
リリースの1年前から入れてもらってるアプリは、リリースされて今何百万ダウンロードとかされてます。
調査する時間が圧倒的に少なくなるので、早めに入れるのをおすすめしています。

課題はメモリリークの原因究明

ico逆に課題はなにかありますか?
ico
課題は今対応してるところなんですけど、メモリの使いすぎで端末によって落とされるメモリリークという現象がありまして。
今発生数は取得できるように対応したんですけど、原因を究明するのは難しい状態です。
それを解明できるように改善をしていってますね。

あとメモリリーク以外にも落ちる動作っていっぱいあるので、それを全部解析できるようにっていうのも今後の課題かなと思います。

デベロッパーさんたちがすごく努力して作ったアプリをサポートできるように

FROSKインタビュー

icoそれでは最後にSmartBeatの今後の目標や展望を聞かせてください。
ico
やっぱりユーザーさんからすると、1度のクラッシュでゲームへの興味ってどんどんうせていくと思うんですよ。
それはできるだけ減らしていきたいなと思ってまして。

デベロッパーさんたちがすごく努力して作ったアプリなので、それをしっかり楽しんでもらうために、なるべくサポートできるように機能とか強化していきたいなと思っています。

今後もより楽しく詳しく、そしてエラーが少なくなるようなツールになれるように頑張っていきたいと思います。

ico今日は色々と勉強になりました。
ほんと生半可な知識で色々文句言っちゃてたなと思いました。
本日はありがとうございました!

FROSK株式会社

FROSKインタビュー
SmartBeatやアプリクラッシュ調査レポートを提供。
10のアプリジャンルに分けてレポートしたアプリクラッシュ調査レポート2019年上半期はダウンロードで見ることが可能。

アプリクラッシュ調査レポート2019年上半期はこちら
FROSKインタビュー

仲井さん

SmartBeat プロダクトマネージャー 
仲井 裕紀さん

エラー検知や原因の解析をサポートするサービス「SmartBeat」のプロダクトマネージャー。SmartBeatの1日あたりのエラー検出数は3,000万件以上。現在2,500以上のアプリに入っていて、アクティブユーザー数は2億人を超える。

HP:SmartBeat

アプリクラッシュ調査レポート2019年上半期

執筆者: 編集部