(2018/04/18 追記)
iFunBoxとiTunesのバージョンの組み合わせによってはiFunBoxが動作しなくなったので、
この復旧方法も不可能に近い状態です。何か改善方法が判ったら更新します。
尚、iFunBox 4 のベータ版についてはウィルス検出されるようなので試してません…
既にサービスが終了してしまった、iOS 向けソーシャルゲーム「先生!次はバトルの時間です。」ですが、
運営チームはなんとオフラインバージョンという素敵なプレゼントを遺してくれました。
これにより、サービスが終了してしまったにも関わらず、アプリケーションを削除しない限りは、
もしくは iOS のバージョンアップによりアプリケーションが動作しなくなるまでは
我々「先生 (プレイヤー)」 は毎日学園に登校して生徒たちと触れ合うことが可能なのです!!
しかし、幾ら注意をしていても iOS には空き容量が逼迫(逼迫)してきたと OS が判断したときに
ユーザーの意図などお構いなしにアプリケーション内のキャッシュデータを削除して
空き容量を確保しようとする罠 (機能) が存在します。
これにより、本来
この様に生徒の姿が表示されるはずが
こんな感じで生徒が表示されなくなってしまう場合があります。
実際、管理人も図鑑でカードイラストが問題なく見れていたために
数か月もこうなっていたことに気づいていませんでした。
しかし、気づいたからには修正しなければなりません。
すべては愛すべき生徒達とキャッキャうふふするため!!
そんな訳で前置きが長くなりましたが、
キャッシュデータが破損した時にPCからキャッシュデータだけを復旧する方法を
備忘録として残しておきたいと思います。
注意!!
管理人の当該 iOS 端末はわざと iOS7.1.2 のままにしているので
iOS8 以降の環境での検証は行っていません!
→ iOS 8.3 以降ではこの方法でのキャッシュデータの復旧はできないそうです orz
→ 2018/04/18 現在、iFunBox がまともに動作せず復旧はほぼ困難です i||iorzi||i
前提としては、キャッシュデータが残っているうちに
キャッシュデータを PC 側に抽出しておくことが必須となります。
管理人の場合は全くの偶然ではありますが、サービス終了直後に iPad mini から iPhone に
ゲームをコピーできないか試していたことがあり、
このときにキャッシュデータの抽出を行っていました。
残っていない場合は、データが無事な iOS 端末があればそこから抽出するか (方法は後述)、
抽出済のユーザーを探して提供してもらうしかないでしょう。(但し、かなりグレーかも……)
キャッシュデータのみをPCから復旧する手順
-
あらかじめ iOS 端末のバックアップを取得しよう
復旧作業を行う前に、念のため iOS 端末のバックアップを取得しておきましょう。
これは iTunes を用いて、「バックアップの暗号化」を行う設定で
「コンピュータにバックアップ」を取得するだけで OK です。
(これで取得しないとリストアした時にゲームなどのセーブデータなどが消えてしまうので注意!) -
iFunBox などの iOS 端末上の ipa ファイルを編集できるツールを用意しよう
キャッシュデータを直接 iOS 端末上の ipa ファイルに書き込む必要があるので、
iFunBox のような当該機能を持つアプリケーションを PC 側にインストールしましょう。インストールする時にはインストーラなどのウィルスチェックなどは忘れずに。
尚、本稿では iFunBox を利用する前提で記述しています。
-
iFunBox などのツールを起動し、アプリケーションの一覧から「バトルの時間」を見つけよう
こんな感じでアプリケーションの一覧の中に「バトルの時間」のアイコンが表示されるはずです。
見つけたら ipa ファイルを開く操作を行ってください。 -
キャッシュデータの格納先フォルダを表示しよう
「バトルの時間」でキャラクターデータなどが格納されているフォルダは
(/Container)/Library/Caches/Cache/ なので、そのフォルダを表示してください。このフォルダの下にキャラクターデータなどがフォルダに分割されて格納されています。
管理人が把握している限りではここには 2750 個のフォルダが存在するはずであり、
この例では 609 個しか存在しないことから 2141 個のフォルダが iOS により削除されたことが判ります。 -
PC 側に復元するキャッシュデータを用意しよう
キャッシュデータは事前に用意しておく必要がありますが、
(/Container)/Library/Caches/Cache/ 配下に存在していたデータフォルダを PC 側に用意してください。 -
用意したキャッシュデータを格納先フォルダにコピーしよう
これは 5. で用意したキャッシュデータ (2750個のフォルダ) をそのまま
4. のフォルダにコピー & ペーストするだけです。iFunBox の場合はドラッグ & ドロップで OK です。書き込むのにそれなりの時間を要するのでお茶でも飲みながら終わるのを待ちましょう。
-
キャッシュデータの格納先フォルダにデータが格納されたことを確認しよう
コピーした 2750個のフォルダがあると確認できれば OK です。
尚、iFunBox の場合、元々存在したフォルダ (この例では609個) に対しては強制的に上書きしたようです。 -
iFunBox などのツールを終了し、一旦 PC から iOS 端末を切断しよう
繋いだままでも問題はないと思いますが、念のため外しておきましょう。
-
iOS端末で「バトルの時間」を起動して、キャラクターが表示されることを確認しよう
表示されなかった生徒が表示されていたら復旧完了です。お疲れ様でした。
事前にキャッシュデータを取得しておく方法
これは単にゲームが問題なく動作しているうちに
(/Container)/Library/Caches/Cache/ 配下の 2750 フォルダを PC に取得しておくだけで OK と思います。
複数台の iOS 端末にバトルの時間をインストールしていたなら、無事な方の端末から抽出しても OK です。
手順的には上述の「キャッシュデータを復旧する手順」の 4. でフォルダを表示したところで、
2750 個のフォルダを PC 側にコピーする操作を行えばよいだけなので詳細は省略します。
尚、ツールによってはキャッシュデータを含めた ipa ファイル自体を抜き出すことも可能ですが、
ipa ファイルを PC 側で展開できない場合があるようなので注意が必要なようです。
(管理人はこれで暫く悩まされました)
iTunes の Mobile Applications にある
インストールイメージ (バトルの時間 1.6.4.ipa) からの復旧は可能か?
※調査未済のため推測である点ご容赦願います
iTunes から Mobile Applications 内の 「バトルの時間 1.6.4.ipa」 を iOS 端末にインストール
することで初期状態にすること自体は可能です。
しかし、ゲーム起動時にキャッシュデータの初期ダウンロードが行えないために殆ど何も表示されないか、
ゲーム本編に入れない可能性が高いと思います。
これに関しては推測ではありますが、一度 iTunes からアプリケーションをインストールした後、
iOS端末側でアプリを起動するより前?に「キャッシュデータを復旧する方法」でデータを入れてしまい
ダウンロード済と判断させればスキップできるのではないだろうかと考えています。
試してみたことがある猛者がいたら情報をいただけると助かります。
結局一番確実に復旧する方法って何?
一番確実な復旧方法はご存じのとおり、
暗号化した状態でPC上にバックアップを取得する方法を 細 目 に 実施しておいて、
キャッシュが破損したらリストアすることです。
これに勝る方法はありません(笑)
iTunes バックアップの暗号化オプションを使っても
残念ながら caches はバックアップされないみたいです……
つまり、確実に復旧できるのは次の条件を満たした時だけと推測されます。
(1) 運用する端末が iOS 8.2 以前であること
(2) iTunes バックアップで細目に暗号化バックアップを取ること (先生データの保管)
(3) iFunBox などのツールで予めキャッシュのバックアップをPCに取得しておくこと
これらの条件を満たせば何度でも上述の手順で復旧が可能です。
一方で、iOS 8.3 以降の端末の場合はキャッシュが消えてしまうと復元する術はない
ということが判ってきました。残念すぎる…。・゜・(ノД`)・゜・。
管理人もあまり実験していないので、色々調査が不足しているとは思います。
それでも、ここに記載した内容がキャッシュデータ問題で
お困りの先生(プレイヤー)諸氏の一助になれば幸いです。
ごめんなさい。著作権の問題がありますので私からキャッシュファイルを提供することはできません。
Sorry. I cannot provide the cache file because there is a copyright issue.
私はiOS 8.2より前のデバイスを持っています、しかし、私はキャッシュファイルを持っていません
キャッシュファイルのダウンロードアドレスを提供できますか?
どうもありがとう!