背景
最近、新しいテスト環境用に Pixel 7 をセットアップしていた際に壁に突き当たりました。すべてが完璧に見えましたが、Play Store からシンプルなシステムユーティリティを取得しようとしたときのことです。プログレスバーが表示される代わりに、UI が一瞬止まり、謎めいたメッセージが表示されました。
Error retrieving information from server. [DF-DFERH-01]
DF-DFERH-01 というコードは Google のサーバーがダウンしていることを示唆していますが、実際にそうであることは稀です。通常、これはローカルデバイスとバックエンド間の通信の不具合を指しています。私の経験上、そのほとんどは認証トークンの期限切れか、ボトルネックとなっているローカルデータベースファイルの破損が原因です。
デバッグプロセス
デバイスを初期化したくなかったので、ハングの原因となっている変数を特定するために簡単な切り分けを行いました。
- ネットワークの切り替え: (厳しい DNS フィルタリングが設定されている)オフィスの Wi-Fi から 5G ホットスポットに切り替えました。エラーは解消されませんでした。
- 時刻同期: システム時刻を確認しました。デバイスの時計が 5 分でもずれていると、SSL/TLS ハンドシェイクが失敗します。すべてミリ秒単位で同期されていました。
- アプリ間のチェック: Gmail と Drive は 15MB の添付ファイルを問題なく同期していました。これにより、問題が Google アカウント全体ではなく、Play Store フレームワークに限定されていることが確認できました。
解決策 1:アプリデータの「ディープクリーン」
Play Store は、期限切れのセッショントークンを使用しようとして動かなくなることがよくあります。単にキャッシュをクリアするだけでは不十分です。ローカルストレージを消去して、新しいハンドシェイクを強制する必要があります。
- 設定 > アプリ > すべてのアプリを表示 に移動します。
- Google Play ストア を探します。
- ストレージとキャッシュ を選択します。
- キャッシュを消去 をタップし、次に ストレージを消去 をタップします(これによりアプリが削除されることはなく、ストアの一時的なデータベースのみが削除されます)。
- Google Play 開発者サービス を探し、同様の手順を繰り返します:ストレージとキャッシュ > 容量の管理 > データをすべて消去。
これを行った後、デバイスを 60 秒ほど放置してください。Play Store は初回起動時に内部のライブラリインデックスを再構築するための時間を必要とします。
解決策 2:ADB による自動化
テストデバイスのフリートを管理している場合やエミュレータを使用している場合、UI をクリックして回るのは時間の無駄です。ターミナルを使用して、3 秒でプロセスを終了しデータを消去できます。
# ストアとサービスを強制停止する
adb shell am force-stop com.android.vending
adb shell am force-stop com.google.android.gms
# 両方のパッケージのデータを消去する
adb shell pm clear com.android.vending
adb shell pm clear com.google.android.gms
# デバイスを再起動してクリーンなサービスを初期化する
adb reboot
解決策 3:Google アカウントの再同期
Android アカウントマネージャーが「半分ログインした」ような状態になることがあります。メールを確認する権限はあっても、Play Store API に必要な特定の OAuth2 スコープが欠けている状態です。
- 設定 > パスワードとアカウント を開きます。
- メインの Google アカウントをタップします。
- アカウントを削除 を選択します。
- スマートフォンを再起動します。これは、アクティブな RAM からアカウント情報を消去するために重要なステップです。
- 設定に戻り、再度ログインします。
これにより新しい認証トークンが生成され、通常はサーバー取得エラーを即座に回避できます。
解決策 4:Google サービスフレームワークのリセット(最終手段)
Google サービスフレームワーク (GSF) は、ハードウェア固有の ID を管理しています。この ID が破損すると、Google はどのデバイスがデータを要求しているのか判断できなくなります。注意: GSF のデータを消去すると、Slack や WhatsApp などのアプリのプッシュ通知が、再登録されるまでの数時間機能しなくなる可能性があります。
- 設定 > アプリ に移動します。
- メニュー(3 つの点)をタップし、システムを表示 を選択します。
- Google サービスフレームワーク を探します。
- ストレージとキャッシュ > ストレージを消去 をタップし、すぐに再起動します。
検証
これらの修正を適用した後、修正が有効であることを確認するために簡単なチェックリストを実行しました。
- Play Store を起動し、更新された利用規約に同意しました。
- 2MB の「電卓」アプリをダウンロードしました。
- 「保留中」のステータスが 5 秒以内に「ダウンロード中」に切り替わることを確認しました。
- 下部に「サーバーエラー」のトースト通知が表示されることなく、マイアプリ&ゲーム のリストが表示されることを確認しました。
学んだ教訓
- データ vs. キャッシュ: Android において「キャッシュ」は単なる不要なファイルです。「データ」はセッションのロジックを保持しています。[DF-XX] エラーが発生した場合は、迷わずデータを消去してください。
- 依存関係に注意: Play 開発者サービスの消去は影響が大きいです。Google Pay のカードがリセットされ、Wear OS ウォッチとのペアリングも解除されます。常に解決策 1(Play Store のみ)を最初に試してください。
- プロキシの干渉: デバッグのために Charles Proxy や Fiddler などのツールを使用している場合は、手動プロキシがオフになっていることを確認してください。Play Store は証明書ピン留め(Certificate Pinning)を使用しており、中間者攻撃を検知するとサーバーエラーを返します。

