どうもこんばんは。
肉球 (@nikuq299com) です。
私はLINEニュースを良く利用するのですが、ここ最近、ニュースボタンをタップしたあとの画面表示が異常に遅かったため、色々試してみましたので、同じようなことで困った方の参考になればと思い、記録します。
はじめに
アプリが動かない場合は「キャッシュ」を疑え!
アプリやスマホ自体の挙動がおかしくなる場合、大抵はキャッシュが悪さをしています。
キャッシュとは、コンピュータなどの処理速度を早めるために用いられる一般的な実装方法です。
以下はWikipediaからの引用です。
キャッシュ (英: cache) は、CPUのバスやネットワークなど様々な情報伝達経路において、ある領域から他の領域へ情報を転送する際、その転送遅延を極力隠蔽し転送効率を向上するために考案された記憶階層の実現手段である。実装するシステムに応じてハードウェア・ソフトウェア双方の形態がある(今後コンピュータのプログラムなども含め全ての転送すべき情報をデータと表す)。
転送元と転送先の中間に位置し、データ内容の一部とその参照を保持する。データ転送元への転送要求があり、それへの参照が既にキャッシュに格納されていた場合は、元データからの転送は行わずキャッシュが転送を代行する(この状態をキャッシュヒット、キャッシュに所望のデータが存在せず元データから転送する状態をキャッシュミスという。なお、由来は不明で和製英語と思われるが日本の一部の文献及び資格試験において「キャッシュミスヒット」という用語が使われている)。もしくは出力データをある程度滞留させ、データ粒度を高める機能を持つ。これらによりデータの2種の局所性、すなわち時間的局所性と空間的局所性を活用し、データ転送の冗長性やオーバヘッドを低減させることで転送効率を向上させる。
コンピュータの各記憶領域を始めとして、ネットワークやデータベース、GPU、DSPなど様々なシステムの様々な階層に搭載されている。
我々の生活でもキャッシュは様々な場所で使われています。
例えば、電話の履歴表示はその最たるものではないでしょうか。
通常、電話は電話帳を開いて目的の電話番号を検索してタップすることで電話をかけることができます。
しかし、電話の着信履歴や発信履歴をタップして必要な電話番号をタップすれば目的の電話番号へ電話をかけることができます。
この履歴機能は、「電話帳で電話番号を検索する」という処理を省くことで、電話をかけるための処理速度向上に役立っています。
このキャッシュがなぜ悪さをするかというと、キャッシュは実際の処理結果ではないことが挙げられます。
前述の例の通り、キャッシュは過去の処理結果を蓄えておき、同様の処理結果になる (過去のアプリへ同じ命令を出している) 場合は、蓄えている過去の処理結果を使って、あたかも処理結果を返すように振る舞う仕組みです。
もし、このキャッシュに何らかの問題が発生した場合、アプリは処理を続行できなくなる場合があります。
LINE の反応が遅いときに試すこと
LINEの挙動がおかしいときはこれを試そう!
それでは、LINEに関わりそうなキャッシュを片っ端から掃除していきます。
今回はiPhoneを例に説明します。
アプリを再起動する
iPhoneはアプリ使用中に下部から上にスワイプする (ホームボタンがあるiPhone8 以前はホームボタンを押す) とホーム画面に戻りますが、アプリは終了していません。
完全にアプリを止める場合はもうひと手間加えて明示的にアプリを停止する必要があります。
まずは、ホーム画面の下部から上に向かってスワイプします (ホームボタンがある場合はホームボタンをダブルクリックする)。
そうすると、現在起動中のアプリ一覧を表示するので、止めたいアプリを画面上で選択し、アプリの画面を上に向けてスワイプします。
スワイプ後、この画面からアプリが消えていれば完全に停止したことになります。
ちなみに、私のLINEで起きた症状はこれだけでは治りませんでした(泣)。
デバイスを再起動する
もしかしたら、iOS側で何らかの問題が発生している可能性があるので、今度はiPhoneを再起動します。
iPhone は電源OFFのスクリーンショットを取ることができないため、手順だけ説明します。
私が利用しているiPhone Xで電源を切る場合は、右に設置しているサイドボタンと左に設置している音量ボタン (2つありますが、どちらでも良いです) を同時に押すことで、電源オフできる画面を表示します。
Appleのサポートサイトを見てもらえると、わかりやすい図とともに説明があります。
これでもLINEの症状は治りませんでした(泣)
LINE のキャッシュを削除する
この自体に陥るまで知らなかったのですが、LINEのアプリ上でキャッシュを削除することができます。
実は、この記事を書く前にこの作業をしてしまったのでスクリーンショットは取れていないのですが、キャッシュを削除する前は420MB以上のキャッシュを蓄えていました。
この作業をして、ようやくLINEがまともに動くようになりました。
まとめ
処理が重いときの問題は大抵キャッシュが悪さをしている!
今回LINEで発生した問題は、恐らくキャッシュが肥大しすぎたことが今回の問題だったのだと思います。
アプリに命令をすると、逐一キャッシュファイルへ使えるキャッシュを探しに行くけど全く無い、そして探すファイル数が多すぎるからキャッシュを使えるかどうかの判定処理だけで大きな時間がかかってしまい、処理速度が遅くなっていたのだと思います。
LINEに限らず、アプリやOSの処理が重い場合は、大抵キャッシュが悪さをしています。
WindowsやMacOSの挙動が怪しくなったら再起動、エクセルの挙動が怪しくなったら再起動というように、処理の過程でアプリ処理で利用するメモリ上のゴミを再起動という形で掃除すれば、大抵はなんとかなります。
「挙動がおかしかったらキャッシュを削除」は覚えておくと色々なトラブルを解決できます。
それでは。ごきげんよう。
コメントを残す