「起動高速化の秘話」 Sleipnir Mobile for Android 開発日記 5

Sleipnir Mobile for Android

こんにちは。「Sleipnir Mobile for Android」開発担当の西田です。先日リリースした「2.0」は予想以上に大きな反響があり、たくさんの方に使い始めていただくことができました。お陰様で、有料版の「Black Edition」が、通信カテゴリでなんと1位になりました! 皆様ありがとうございます。

「2.0」では、前回の開発日記で取り上げたエクステンション機能を搭載しました。

しかし、それ以上に話題になったことがあります。それは起動を5倍高速化したことです。第5回目となる今回の開発日記では、「2.0」での起動高速化について詳しく掘り下げたいと思います。

まずは指標を決める

指標がなければ、成果が分かりません。起動高速化における指標は、起動時間です。というわけで、最初の取り組みとして起動時間をどうやって計測するかを決めました。

とまあ大層な語り出しですが、大したことじゃないです。アプリケーションが起動してからメインの画面が表示されるまでの時間がわかるようにしてこれを指標にしました。

この後の様々な改善の効果測定は、これで準備OKです。

続いてプロファイリング

さて、どのようにして高速化を実現するかですが、手当たり次第・闇雲にプログラムを修正するのは大間違いです。時間がいくらあっても足りません。時間のかかっている処理を見つけてそれを改善するのが王道です。

そのために起動処理のなかから、どの処理にどれだけ時間がかかっているかを調べました。

具体的には、TraceView という開発ツールを使って起動処理を分析しました(プロファイリング)。その結果、改善で高い成果が得られそうな処理がいくつか見つかりました。

  • スプラッシュ画面のレイアウト
  • 人気トピックスのレイアウト
  • ブックマークや履歴など各種データベースの初期化

コヤツらをなんとかしましょう。ポイントは「何もしなければ0秒!」です。

省けるなら省く

「2.0」より以前は、スプラッシュ画面を表示していました。

スプラッシュ画面とは、インジケーターをくるくる回して起動処理の長さをゴマかす画面のことです。

このスプラッシュ画面を作るにも時間がかかっていました。皮肉なものですよね。

予定では起動高速化によりゴマかす必要もなくなるはずですので、背水の陣を覚悟しつつまるっと省きました。

必要になるまで処理しない

人気トピックスと各種データベースの初期化ですが、これらはよくよく考えれば、表示するまで/使用するまで処理する必要のないものです。

つまりは起動処理として行う必要がありません。必要になった段階で処理すれば良いのです。

というわけで、人気トピックスのレイアウトは表示されるまで、各種データベースの初期化は使用されるまで後回しにするよう修正しました。

結果

以上の改善を行なった結果、起動時間が 1/5、つまり起動速度が5倍になりました。

お陰様で「2.0」リリースの際には多くの方に喜んでいただくことができました。

今後も様々な面から高速化に取り組んでいきます。

FacebookやTwitterでご感想・ご質問や取り上げて欲しいことなどを受け付けています。お気軽にどうぞ。

本日の開発日記は以上です。それではまた!

レビューにPlayストアへのLINKあり
レビューを読む