2014年02月13日

Androidアプリの数

Androidアプリをインストールすればする程動作が遅くなってしまうのですが、原因を調査してみました。

もちろんアプリを増やすと、バックグラウンド動作が増加して負荷が増加するわけですが、バックグラウンド動作のないアプリをインストールして、アプリの「数」が動作に影響がないのか試してみました。(4.1.1JB)

結果、数百のオーダーでアプリをインストールすると、バックグラウンド動作のありなしに関わらず動作の低下を招くようです。

はっきりとした原因はわからないのですが、ストアアプリがインストールアプリのリスト探索を定期的にしているようで、この処理が通常の動作に影響しているように感じます。

iOSアプリの場合は、全くと言って良いほど、アプリの「数」による影響はありません。

もし、ストアアプリが原因であるなら今後のアップデートに期待したいですね。

posted by CatappWorks at 12:24| Comment(0) | Android

2013年12月20日

Android 高速化に関して

Android を利用されている方の多くは、高速化に関してかなり関心を持っているように思いますが、
ネット上の情報には、Android の高速化に関して正しくないと思われる記事を見かけます。

それら間違いの多くは、パソコンの高速化と同じ原理が、スマホ(Android)にも当てはまるという考えから来ているのかもしれません。

*** 1, タスクキラーでメモリを開放すれば高速化 ***

パソコンでは、物理メモリが圧迫されるとメモリの一部を内蔵ディスクなどにスワップする仕組みがあり、アプリケーションを実行するために十分なメモリを確保できれば、高速化できるというものがあります。

しかし、Androidでは事情が異なります。

一般的なAndroidにはスワップがありません。そしてメモリが足りない場合は動作しません。また、空きメモリがある場合は無駄だという設計思想により、利用しなくても取り敢えずメモリを確保しようとします。どんなに十分なメモリがあっても、常に80%程度使用中になると思います。単純に空きメモリを増やす行為はあまり意味がありません。

それでは、何が問題なのでしょうか。
メモリが足りずにパフォーマンス低下を招く主な理由は以下のものです。

アプリには「ライフサイクル」という概念があり、「停止」→「初期化処理」→「動作中」→「終了処理」→「停止」を繰り返します。もし、空きメモリが少なくなると、OSが利用しなくなったバックグラウンドのアプリに「終了処理」の命令を出して終了させようとします。

しかし、「終了処理」の作りが悪く重い処理であった場合はこの処理が原因でパフォーマンスの低下を引き起こします。したがって、Androidには明示的にアプリを終了させない設計思想があるため、どんなにメモリが多い機種であっても、「空きメモリが少ない」状態がいずれ訪れ、「終了処理」のためのパフォーマンス低下を引き起こします。

高速化のポイントは「終了処理」をいかに発生させないかにあります。

そうです。いわゆるタスクキラーアプリを利用すると「終了処理」が発生しません。「動作中」から一気に「停止」へ強制的に移ります。

これが、タスクキラー高速化の主な理由です。実は「メモリの空き」はあまり関係ありません。

※タスクキラーの副作用として、強制的な不正終了によるアプリ管理のデータへのダメージ、整合性を崩すなどの問題があります

*** 2, キャッシュを削除すると高速化する ***

良く見かける記事は、「利用していないデータや探索キーがあるため、無駄を削除すれば高速化する」というものですが、人が認識できる程度の違いが出るとは思えません。むしろ高速化のための仕組みのキャッシュを削除することが原因のパフォーマンス低下の弊害が予想できます。

しかしながら、高速化できるであろう理由は2つあります。内蔵ストレージ(SSD)の性質上、空き容量が著しく少なくなると、書き込み速度が極端に低下します。

たとえば、空き容量が10%程度の状態であり、キャッシュ削除により20%程度まで回復できたとすれば速度向上が確認できると思います。

もうひとつの理由は、アップデートなどが理由で、キャッシュの整合性が崩れている場合です。誤動作によりパフォーマンスが低下している状態であれば高速化が見込めます。

筆者の経験では、後者の理由により高速化した(正常動作した)ことが多いと感じています。

*** まとめ ***

高速化というよりも、正常に動作させる工夫という方が正しいのかもしれませんね。

posted by CatappWorks at 11:28| Comment(0) | Android

2013年12月16日

Android用のアンチウイルスソフト

インターネット上で Android用のAnti-Virusアプリに関する議論を良くみかけます。

「Android OS にAnti-Virusアプリは必要か」

という議論ですが、筆者の考えは

「必要かどうか解らない場合は導入した方が良い」

です。
多くの人の考えは、スマホ=パソコン なので、Anti-Virusアプリは当然だというものです。間違った考え方ではありませんし、Anti-Virusアプリを導入することで、何らかの効果が得られることも事実です。
しかし、Android用Anti-VirsuアプリにはOSの制限により、パソコン程の実力はありません。過信は禁物です。

次のような悪質アプリにはまず反応してくれません。

・公式ストアからダウンロードした広告付きのカメラを使ったミラーアプリであるが、インターネットや個人情報のパーミッションを要求し、情報を外部に送信する

多くの人はこのようなアプリをブロックしたいと考えていると思いますが、実際にはこのようなタイプのアプリは駆除・ブロックしてはくれません。
何故なら、インストール時にパーミッションの同意をユーザが行っているため、ソフトウェアの動作としては正常な動きをしているためです。
(有名な悪意のあるアプリとして登録されている場合は駆除されます)

結局、ユーザ側が注意する以外に方法がないのです。

一般的なAnti-Virusアプリが駆除・防止してくれるもの

・登録された悪質アプリ(公式ストアまたは、非公式ストア)
・登録されたアプリ内の悪質モジュール
 (アプリ作者に悪意がなくても、広告モジュールが不正な動作をするもの)
・登録されたフィッシングサイトなどへのアクセス防止(ただし、標準ブラウザのみ)

一般的なAnti-Virusアプリが駆除、防止できないもの(パソコン用であれば防止しています)

・administrator権限で動く不正なアプリ(root化端末など)
・ブラウザで閲覧しただけで感染するもの
 (Androidでは筆者は聞いたことはありませんが、原理的にはありえます)
・パーミッションや許諾をユーザーに求めてから個人情報を取得するもの(不正取得ではありませんし...)

★アプリ紹介 http://catapp.sakura.ne.jp/details1.html
posted by CatappWorks at 15:19| Comment(0) | Android