解決編:iPhoneユーザ辞書の中身が消える>iOS7(またはiCloud)の極悪仕様
6月 09
Macネタ iCloud, iOS7, iPhone, iPhoneユーザ辞書, Mac OS X, OSX Mavericks, Tips, ことえりユーザ辞書, トラブルシューティング, 中身, 仕様, 解決編 No Comments
以前のエントリーの解決編なのですが、、、
結論的なことを先に書きますと、Appleのデフォルト環境つまりAppleが用意している手段のみ、での解決はできない(現段階)ので、これを解決と言って良いのかどうかは微妙です。
iPhoneユーザ辞書の中身が消える>iOS7(またはiCloud)の極悪仕様 « Macネタ | 物語研究所 “夢前案内人”
前回エントリーを上梓した段階ではウェブ検索しても手掛かりになる情報は見付かりませんでした。より正確に言えば、iPhone上の同期したユーザ辞書が消える、リセットしても新規登録できないという症状は同じだが、iCloudの同期を一旦オフにしてとか、入力補助機能をゴニョゴニョすると治るという記事ばかりで、当環境で発生している現象には該当しない情報ばかりだった。それでも、駄目で元々で一応実行してみたが、案の定治りはしなかった。
半年以上を経過して改めて検索してみると以下の記事を見付けた。
この記事で紹介されているリンク先
にアクセスして、ここから更に顛末のそもそもの記事
を読んでみると “ザリガニが見ていた…。” 管理人:zariganitoshさんも全く同じだと言える現象に遭遇してる! これでビンゴに違いない! なるほど、書いてある「いつの間にか膨れ上がってしまったユーザ辞書」というのも該当する。 なので示されている手順を実行する前に、ことえりのユーザ辞書を大々的にダイエットすることに。 ユーザ辞書のダイエット、編集の仕方および、バックアップの取り方は別エントリーにしましたので、こちらを参照してください。
→ OSX Mavericks ことえりユーザ辞書の編集と、そしてバックアップ方法 « Macネタ | 物語研究所 “夢前案内人”
ユーザ辞書同期不全 [1] の状態を解消する手順そのものは “徹底的にユーザ辞書を同期してみる – ザリガニが見ていた…。” を参照して頂くとして、要点、注意点、また私の環境では挙動が少し違った故に違った対応をした部分などを附記しておきます。
-
- 件の「iOS7のユーザ辞書をリセットするスクリプト」は、iTunesでiPhoneのバックアップを実行してコンピュータ上に出来たバックアップ・ファイル(~/Library/Application Support/MobileSync/ に生成される)を読み取りに行って、この中のユーザ辞書に該当する部分のデータだけを取り除いたデータを別ファイルとして保存してくれる(ユーザ辞書部分だけ無くなったバックアップ・ファイルが出来る)。という動作をするものです。ので、このバックアップ・ファイルを作ってからiPhoneを初期化した後に、このバックアップ・ファイルから復元するとユーザ辞書が空っぽになった(その他の状態は元通りの)iPhoneになるということです。(下の画像参照)
- 理屈的には、バックアップを取る直前にiPhone上の操作でユーザ辞書をリセットしたもののバックアップを取れば同じになると思えるのですが、実際実行してみるとこの方法は上手くいかない。少なくとも私がやった限りでは上手くいかなかった。 後述する別件でもこのスクリプトが有効だったことを考え合わせると、単にユーザ辞書のサイズが膨大だったのだけでなく、辞書の内容ではなく辞書ファイルの容れ物(つまりはフォーマッティング)が破損していたのではないか?と推測します。だから辞書の登録削除の操作をしても正常に削除処理はされずに辞書データは残ったままだったのだと。ユーザ辞書が或る閾値を超えて大きくなるとフォーマットの整合性が損なわれる可能性も考えられます。そういえば確かにiPhone上で文字変換操作をしても候補に出てこないのに、iTunesに接続して表示されるステータスを見ると容量は減っていなかったので、ユーザ辞書の内容が消えたのではなく、データにアクセス出来なくなっていただけと考える方が辻褄が合います。
-
- iCloud書類のリセットの作業を行うMac一台(以下「メイン機」)だけを残して、同じApple ID でiCloudにサインインしている全てのディバイスをサインアウトすると共にユーザ辞書を削除。
- ここで実は私はハマッてしまったのだが、デスクトップ機は内蔵HDDのクローンをバックアップとして外付けHDDに保存していて、時々内蔵HDD上のシステムのメンテがてら外付けのシステム(サブのシステム)から起動するのだが、こちらのアカウントでもiCloudにサインインしている状態だったのに加えて、メイン機に於いてもMacの動作に問題が起こった時の動作確認トラブル・シューティング用の別アカウントが作ってあって、こちらでもiCloudにサインイン状態だった等々を失念していて「https://www.icloud.com にアクセスして、アカウント設定 >> 詳細設定 >> 書類とデータのリセット」を実行。 見かけの操作上はリセット出来たように見える(そう表示される)も、ユーザ辞書がリセットされずに、リセットされていると思って一連の操作を済ませてiCloud同期を再開させると古い辞書が同期されて挙句 iPhoneのユーザ辞書が(見かけ上)消えてしまうという元の木阿弥に。 一台でもサインアウトしていないものが残っているとリセットは実行されないみたい(あくまで挙動からの推定)。
-
- ここまで徹底しないといけないのかな?と半信半疑ですが「実際自環境ではこうしないと上手くリセットされなかった」ということで書いておきます。
-
- メイン機のメインのアカウント一つだけ残して(この段階ではメイン機メイン・アカウントはまだ触らない)、その他の全て・・・サブのアカウント、サブ機の過去に一回でもiCloudを利用したことのあるアカウント全て、Windows機で利用したこともあるなら当然これも、iCloudからサインアウト、より徹底したいならiCloudアカウント自体を削除した上で、ユーザ辞書を削除。当然iPhoneに於いてもiCloudアカウントを削除。メイン機メイン・アカウントはiCoud環境設定で「書類とデータ」の同期だけオフにする。
- ユーザ辞書の削除の仕方もより完璧を期する方法がありまして、以下の通りします。
~/Library/Dictionaries を開き、この中の「CoreDataUbiquitySupport」と「ユーザ辞書」を削除。(下の画像参照) ユーザ辞書の本体は「CoreDataUbiquitySupport」の方で「ユーザ辞書」はこれのコピー。OSX Mavericks からこういう仕様に変更になっていて、「ユーザ辞書」も残したのは下位バージョンからの移行を考慮に入れてのことだと思われます。なので将来的には「CoreDataUbiquitySupport」一本になっていく気がします。 - メイン機のメイン・アカウントで(まだ、このアカウントではiCloud同期は有効である点に注意されたし) ~/Library/Mobile Documents/com~apple~TextInput フォルダを削除 → しようとすると「“com~apple~TextInput”を iCloud から削除してもよろしいですか?」とアラートが出る。(下の画像参照)この挙動から ~/Library/Mobile Documents/ 以下はDropBoxと同じ、このフォルダ以下の構成を触るとそれがそのままiCloudサーバに反映されるという機能の仕方をしていると分かる(だから、この時点でiCloudサーバとのリンクを切らないでおく必要があるのです)。削除後、念の為に https://www.icloud.com にアクセスして確認してみると com~apple~TextInput フォルダ自体は自動で再生成されていたが中身は空になっていた。
- ここでメイン機メイン・アカウントのiCloud同期をオフに(iCloudアカウントを削除)する。このうえで上記と同じ要領でユーザ辞書を削除する。(この段階でユーザ辞書のバックアップは確保できていること。まだならバックアップを先に済ませてください)
- 多分しなくても大丈夫なように思いますが念の為にコンピュータを再起動し、更に念には念を入れ(私の場合、先の失敗で懲りているので)全てのディバイスで「iCloud がオフの状態が維持されているか」「ユーザ辞書の中身は間違いなく空か」を確認した上で、メイン機メイン・アカウントにてバックアップからユーザ辞書を登録し直しました。
- メイン機のメイン・アカウントでテキスト・エディタを起動してことえりにて文字入力&変換を実行してみて登録単語が候補に現れてくるのを確認して、あとは順次iPhone、その他のディバイスのiCloud同期を(「書類とデータ」も)オンにし、文字入力&変換が正しく行えているかを確認して終わりです。
おまけの後日談:
本件とは別に後日、iPhoneの同期をiTunesから行おうとすると「空き容量不足です」という警告が出て同期が正常完了できない状態に陥った。新しいアプリを増やしたとか、同期する音楽、動画ファイルを増やしたとかは一切ないのにです。よく見るとiPhoneの容量表示インジケーターで「その他」の領域が異常に大きくなっていて、これ以前に同期してあった「音楽」「動画」「書類とデータ」の合計と数値的に一致するので、何らかの誤動作でフォーマットが壊れて何のファイルか正しく認識されなくなって「その他」扱いになっているのだろうと推測されました。こうなるとこれは最早「容量を無駄に使っているだけのゴミ」なのでiTunesから復元を実行するしかない。
最初、普通に復元・・・復元実行プロセスの最初の段階でバックアップが実行されるバックアップからの復元・・・を実行したら、データ破損したそのままの「その他が大容量を占めている」状態で復元されてしまった。
「ありゃりゃ、こりゃ困ったね」と思い、、、ここで閃いた。「もしかしたら(先述の)ユーザ辞書をリセットするスクリプト で処理したバックアップ・ファイルから復元を実行したら解決するのではないか?」と。
これは勘である。根拠などない。やってみて駄目だったら他の手を考えれば良いだけ。と考え実行してみたら問題はクリアされた。
このことから帰納的に考えるに、iPhoneのユーザ辞書のフォーマットが破損することが他の領域も巻き込んで正しく認識されなくなる事態を引き起こす場合があるのだろう。と。 もちろん、誤認識され「その他」の領域が異常に大きくなって「空き容量不足です」警告が出るトラブルの全てがこれに該当すると、たった一つのケースで言えるわけはありませんが、このトラブルに遭遇した方は「物は試し」と「やってみるだけやってみて上手く行ったらラッキー」くらいに考えて参考にして下されば幸いです。
2014年6月10日 5:46 追記
zariganitoshさんのページの片方、スマートフォン用のページのURLと気付かずにリンクしていたのでパソコン版の方のURLへ修正。