- 株式会社サイバード
- ゲーム事業本部(イケメンスタジオ アプリチーム)
- 赤瀬 僚
一度のクラッシュが命取り!ユーザーの手元で起きた現象の把握で、アプリ品質の向上を
今回のソリューション:【SmartBeat/スマートビート】
スマートフォン向けゲームを中心に各種アプリの開発・運用を行っている株式会社サイバードでは、Cocos2d-xを使ったゲーム開発の際に、ユーザーの手元で起こるクラッシュやエラーといった問題を把握し切れないという課題を抱えていた。
そういった「見えない顧客の不満」を顕在化すべく導入したのが、スマートフォンアプリのエラー検知・解析ツール「SmartBeat(スマートビート)」だ。
導入によって明らかになったのは衝撃的な現実だった。実は、顕在化していたクラッシュは全体の「1%」にすぎなかったのだ。
現在はSmartBeatの活用によってユーザーの手元で起きている現象をリアルタイムに把握し、対応をすることが仕組み化されつつあるという。同社に新卒入社した現在3年目のエンジニア、赤瀬 僚さんに詳しいお話を聞いた。
新卒でサイバードへ、エンジニアとしてゲーム開発
2013年に新卒でサイバードに入社しました。最初はアプリ側の技術を調査するチームに半年間在籍し、その後「イケメンスタジオ」のチームに移りました。
これまでは「名探偵コナン×脱出ゲームCUBIC ROOM」や「ラブセン~V6とヒミツの恋~」というゲームタイトルの開発に関わってきました。
2014年11月からは、Cocos2d-xをゲームエンジンとして使った開発を行っています。開発チームはアプリだけで6人、サーバーサイドも含めると総勢11人ほどです。それに加えて企画が4人、デザイナーが2人おります。
アプリで起こっているクラッシュの状況を可視化するSmartBeat
やはりアプリの場合は、品質には非常に気を付ける必要があります。どんなにアプリ自体の内容が良くても、落ちやすかったりダウンロードに時間がかかってしまうだけでユーザーにネガティブな印象を与えてしまうので。
何かが起こった時には迅速に対応しなければ命取りになります。ストアでの評価にも影響があるので、本当に大事な部分です。
そういったクラッシュやエラーをレポート・解析してくれるサービスが、SmartBeatです。サービスが提供開始されて比較的すぐに検討を始め、3ヶ月ほど検証をしてから2015年の6月に導入しました。
実は2015年2月にリリースした「イケメン王国◆女王と真実のキス」というタイトルを開発するまで、Cocos2d-xでゲームを作ったことがなかったので、どういったクラッシュやエラーが起こるかという予測が立てにくかったんです。
そこでそれらを解析できるツールで、Cocos2d-xに対応している、という理由からSmartBeatを導入しました。
SmartBeatのメインの機能は、クラッシュレポートです。ユーザーの手元で何が起こったのか、エラー別にランキング形式で出てきます。
こちら側ではそれを順番に見て、件数が多く、影響範囲が大きいものから優先順位をつけて対応していきます。かなり細かく、どういったエラーが起きているのかを見ることが可能です。
▼アプリで起こっているエラーやクラッシュを可視化する「SmartBeat」
#実は把握していたエラー数は全体の1%に過ぎなかった!
SmartBeatを導入した結果、実は我々の予想をはるかに越える数のクラッシュが起こっていたことがわかりまして…。正直、これはまずいと。
今すごい勢いで修正を入れているところなんです。本当に様々な箇所で問題が起きていた、という事実が可視化されました。
例えばデータの持ち方や設計上の問題といった初歩的なものもありましたし、スマホアプリでCocos2d-xのようなフレームワークを使うことで生じるメモリ上の問題、といった高度な課題も顕在化しましたね。
これまでは、実際にユーザーさんの側で「何が起こっているか」ということを把握するのはなかなか難しかったんです。
クラッシュが起こると端末にデータが残るので、社内のデバックであれば端末から直接取り出して確認することができます。ただデバックできる人数にも限りがありますし、社内だけで全ての問題を洗い出すことはできません。
但しAndroid端末に関しては、お客様から送信されるエラーレポートを見て確認することはできていました。でも実際にSmartBeatで上がってきた件数を見たところ、レポートの数はその100分の1ほどでしかなかったことがわかったんです。
見えている部分は、本当に少なかったんですね。エラーが発生しているお客様のうち1%しか把握できていなかったということになるので、これは本当に衝撃的でした。
以前は「おそらくこういうことが起こっている」という仮説を立てて、それに対しての解決策を実施し、自分たちでテストをして結果を見ていました。
ただ本当にユーザーさん側でもそれが改良されているのか、はっきりしなかったんです。ある特定の環境下で起こる問題も多いので、ユーザーさんの実際の声や結果を直接吸い上げて対応していく方がはるかに有効です。
多機能なSmartBeatでクラッシュ状況を正確に把握・整理
SmartBeatのレポートに関しては開発中の機能についても上がってきますし、アプリケーションのバージョンごとにも管理できます。
非常に多機能なので、デバッグ機能をサービスに搭載しなくても、かなり広い範囲の問題を把握することが可能になりました。
よく使っているのは画面キャプチャー機能です。例えば「ボタンで落ちている」ということがわかっても、ボタンはたくさんありますよね。そういった場合に落ちている箇所を特定するために、クラッシュが発生する直前のユーザーの画面キャプチャを確認することができるんです。
エラーが特定の画面で起きているのか、全体で起きているのか、ということを掴めるだけで、対応スピードも大きく変わってきます。
そもそもレポートも1、2分のタイムラグで非常にリアルタイムに上がってくるので、即時対応することができます。そして対応中のものに関しては、誰が作業をしているのか、今どこのステータスか、ということも見ることができるようになっています。
更に重宝しているのは集計機能です。類似のエラー同士を自動でグルーピングした上でランキングをつけてくれます。
「このグループのエラーが0件になれば、全体で上がっているレポート数の何%が解決します」ということが一瞬で分かるようになっているんです。そして個別のクラッシュにタグをつけることもできるので、自分たちで似たような現象をまとめることも可能です。
▼類似のエラー同士が集計され、ランキング形式で表示される
クラッシュ数の8割減に成功!
先の7月3日に「イケメン王国◆女王と真実のキス」のAndroid版をアップデートしたのですが、SmartBeatの活用によって把握していたクラッシュの9割に対応した上でリリースすることができました。結果的に、前バージョン比で5分の1にまでクラッシュ数を減少させることができたんです。
「理由はわからないが、アプリでどうやら問題が起きているようだ」ということをユーザーさんからの評価などから感じ取っている企業さんであれば、SmarBeatを導入することで何が起こっているかを可視化することができます。
弊社ではもはや本当に重宝していますし、特にゲーム開発をされている企業さんには絶対におすすめですね。
今後も新しい技術やサービスをどんどん取り入れていく
現在では、SmartBeatで上がってきたレポートを解釈し、現状と照らし合わせながら問題点を把握して対応していく、という流れが仕組み化されてきました。チームも少人数ですし、レポートは誰でも見れるような状態にしています。
主に3名ほどが調べて共有して、全員で理解していき、必要があれば実際に対応していく、というフローと体制ができています。
会社としては、SmartBeatに限らず、このように新しいものはどんどん検証して導入していっています。エンジニアとしては、技術力そのものを磨きましょうというところも当然意識していますし、大事にしている価値観です。
今後も新しい技術やサービスがあれば、どんどん取り入れて、ユーザーにより満足してもらえるサービスを作っていきたいと思います。