LINEの仕組み from did2memo.net

LINEの仕組みや使い方などについて詳しく解説します

iOS7でLINEが落ちる原因と対策からiOSのアップデート後にアプリがバグる仕組みを考える

iOS7 (8) iPhone (133) iPhone 4S (2) iPhone 5 (2) iPhone 5c (4) iPhone 5s (18)

iOS7にアップデートしたり、iPhone 5s・iPhone 5cに機種変更した人が、iOS7でLINEのトーク画面を開くと落ちる現象が発生しています。これは、「iPhoneを機種変」することで発生するLINEアプリの不具合が原因なのですが、どうしてiOS7に「iOSをアップグレード」するときにも発生してしまうのか、考えてみます。

ちなみに、この不具合には条件があります。とりあえず、基本以外の着せ替えを使っていなければ発生しないタイプなので、これから機種変やアップデートする人は、着せ替えを「基本」に戻しておいてからにしてみてください。

問題と対策

条件の揃った人が、iPhone 4SやiPhone 5をiOS6からiOS7にアップデートしたり、iPhone 5sやiPhone 5cといった、始めからiOS7が搭載されているiPhoneに機種変してからLINEを起動してトークを見ようとするとホーム画面に戻ってしまう(強制終了して落ちる)という問題です。「iOS7にしたらLINEが使えなくなった」「LINEが見られなくなった」「トークできない」などとも言われます。

この原因と対策は「iPhone機種変後にLINEのトーク画面を開こうとすると落ちるバグについて」で紹介していますが、対策をひと言で言うと、「着せかえの設定を確認して、基本を選択する」というものです

対策:LINEを起動して、「その他」タブ→「設定」ボタン→「着せかえ」ボタンと進むと着せかえ設定を開くことができるので、そこで「基本」を選択します

なぜかiOS7にアップデートしてから、着せかえが解除された、という人がいるかもしれませんが、それでも設定が残っていたりして、問題が発生しているわけです。

他の画面で落ちる場合も、この着せかえ設定の不一致が問題になりがちなので、確認すると良いと思います。

一般的な対策

LINEの場合は着せかえ設定ピンポイントで復帰できますが、これから説明する問題発生の仕組みから、一度アプリをアンインストールしてからもう一度インストールし直す(再インストール)ことで、この「アプリがバグった状態」から復帰することが可能のはずです。

原因

原因というか、この問題のきっかけは、LINEアプリの「着せかえデータ」が、機種変によって「消えてしまう」からです。一方で、「どの着せかえを使うかの設定」が消えずに残るので、その間に不一致が起こってしまい、不具合が発生します。詳しくは先ほどのリンクを読んでみてください。

これは「iOS7」のバグというわけではなく、もともとiPhone(iOS)に「アプリをバックアップする際に、後からダウンロードできたり、再び作れるデータはバックアップしない」という仕組みが組み込まれているからです。これにより、バックアップや同期にかかる時間を短縮しています。「着せかえデータ」は後からダウンロードできるものなので、そのような扱いになっているのです。例えば、「アプリ本体(実行ファイル)」も再ダウンロードできるもの、ということでバックアップされません。どのファイルをバックアップしないか、というのは選択することができます。

/Library/Application Support

実際ダウンロードされた着せかえのデータ(コニー・ブラウン)は「/Library/Application Support」ディレクトリに保存されています。

iOS 5.0.1以降、このディレクトリに「support file」を保存することになっており、このsupport fileは、バックアップの際に削除される(細かい話はリンク先へ)ため、無くても復帰できるようにプログラムが書かれている必要があります(詳しくは:File System Programming Guide: File System Basics)。

iOSアップデート時にも削除される

つまり、「/Library/Application Support」のファイルは機種変時に引き継がれないため、iPhone 5sやiPhone 5cで今回の問題が発生しているわけです。

では、どうして同じ問題が「iOS7にアップデートしたiPhone 4S・iPhone 5」でも発生しているのでしょう。

iOSアップデート時の詳細な挙動について書かれている公式資料は見つけられなかった(参考)のですが、先ほどの説明から考えれば、「iOSのアップデート時にも、「/Library/Application Support」の中身は移行されない(削除される)」と考えるのが自然かと思われます。内部的に、一度バックアップを作成し、アップデート後のiOS上に展開するような作業になっているのかもしれません。もちろん、端末の残り容量によって消されるかどうかが変わるかもしれませんが、少なくともこの問題が発生した人は、/Library/Application Supportの一部または全てが削除されたのでしょう。

LINEの実装ミス

繰り返しになりますが、もちろん「/Library/Application Support」や「/Library/Caches」「/tmp」などのフォルダに保存したファイルが消されても動くようにせよ、というのはもともとAppleの開発者向け資料に書かれていることですし、使い心地を向上させるための機能です。「勝手に消された!」というのはおかしくて、これそのものはバグではありません。「消されても大丈夫なように動作しないLINEのバグ」が問題の原因であると言えそうです。

おまけ:空き容量が少ない場合、アイコンが表示されなくなるのもこのあたりの仕組みが原因かも

他のファイルについて考えてみます。例えばLINEのいろいろなところに現れる「アイコン画像」は、「/Library/Caches」以下に保存されています。このフォルダは、空き容量が減少したときにiOS側に削除される可能性があるため、iPhoneの空き容量が少ない場合にアイコン画像が消えてしまったり、ダウンロードできなくなる可能性も考えられます。というわけで、iPhoneの容量をフルに使うまで音楽を同期したりしないようにするのがおすすめです。

また、LINEのアップデート後に発生する「データが消えた・ログアウトされた」系の不具合も、このあたりの削除に対する対策が不十分なことが原因ではないかと考えられます。

メモ

/Documents

アプリケーションが再生成できない、ユーザが生成したコンテンツや、ドキュメントを保存するディレクトリ。

/Library/Application Support

iTunesやiCloudにバックアップしないファイルは、ここに保存する(そのとき、com.apple.MobileBackupアトリビュートをファイルにつける)。詳細。当然のことながら、バックアップからの復元後、このファイルがなくても問題なく動作できる必要がある。今回の話は、このディレクトリの除外がバックアップだけでなく、iOSアップデートの際にも発動するのではないか、というお話。

/Library/Caches

データベースのキャッシュや、ダウンロード可能なコンテンツを保存するディレクトリ。アプリは、システムが空き容量を確保するためにこのディレクトリの中身が削除されても問題なく動作するようにしなければならない。

/tmp

使い終わったらすぐに削除するようなデータを一時的に保存しておくためのディレクトリで、ファイルを置き続けてディスクスペースを消費し続けないように留意する。

参考にした重要資料

File System Programming Guide: File System Basics(英語)

ブログの更新情報はこちらから

RSS を 購読 する Facebook いいね! は こちら から Twitter で @did2memo をフォロー

コメント(7)

  1. 正巳
    2013年9月25日(水) 18:30

    着信 音が鳴らない

  2. KEN
    2013年10月7日(月) 11:29

    ios7にUPしたとたん

    LINE経由で動画を録画した際に音声が消されるもしくは録音されない。
    通常の動画録画の場合は正常に動作します。
    検証お願いします。

  3. KEN
    2013年10月7日(月) 11:31

    言い忘れました。
    i Phone 5 です。

  4. KEN
    2013年10月7日(月) 13:09

    すみません

    たんなる許可を拒否してただけでした。

    ご迷惑かけました。

  5. さきほ
    2013年11月25日(月) 20:54

    友達の画面がスクロールすると落ちる

  6. みにおん
    2013年12月22日(日) 14:30

    機種iPhone5s。
    パスワード変更のメールが届かない。
    携帯自体の迷惑メールを解除しても、ドメイン指定受信に設定してもダメでした。
    何か他に方法は、ありますか?

  7. チドリンリン
    2014年4月5日(土) 23:52

    娘のiphone 5ずっと使えていたのにlineはみることできるけど返信できなくなったらしい誰か教えて下さい!

新しいコメントを投稿