きっかけ
アプリ起動時、APIからのレスポンスが一定時間以上かかるためにタイムアウトが発生していた。4G回線で確認したが再現できない。 低速ネットワーク環境がないと開発もデバッグも満足にできないため調べてみました。
環境
- macOS Sierra
- Android Studio 3
- Androidの実機
- エミュレータ(Android Oをインストールしてます)
使用ツール
方法は2つ。
- エミュレータを使う。または、Charlesを使う。
- エミュレータはAndroid Studioから起動して、エミュレータの設定から回線速度をいじれます。
- CharlesはMacをProxyにしてスマホとサーバとのやりとりするソフト。Windowsだと他にもツールがあるようなのですがMacだとあまりないようなのでこれを使います。
エミュレータを使う
- エミュレータを起動して設定画面を開く。Pixelの場合はエミュレータの右側に設定メニューが並んでいたのでそこから開いてます。
2.メニューの「network type」から回線速度を選択する
-
選択した項目の回線スピードが分かりづらいです。。日本語での良いサイトが見つからなかったので、今回はウィキペディアを参考にしています。
-
EDGEはここです。そのほかの項目は適宜ご確認ください。
3.エミュレータで回線速度を測るwebページを開いて期待通りの回線速度か確認します。
4.アプリを起動してテストする。
Charlesを使う
- Charlesをインストールする
- Charlesを起動する。
- メニューの「Help」 → 「Local IP Address」 からmacのIPアドレスを確認する
- メニューの「Proxy」 → 「Proxy Settings...」を選択して表示されるポート番号を確認する
ここからはスマホ側の設定
1.WIFI設定を開いて、どれが適当なネットワーク設定を編集する。プロキシを手動に変更して、以下の2つを変更する。
- プロキシのホスト名
- プロキシのポート
2.ブラウザなどを開いて適当なページにアクセスする。
3.Charlesの左側のURL一覧の中に開いたページが表示されていることを確認する。
ここからはmac側の設定
1.Charlesのメニュー「Proxy」 → 「Throttle Settings..」を開く
2.Enable Throttleingにチェックを付けて有効にする。
- BandWidth を修正する
- Download。3Gだと数Mbpsから14Mbpぐらいらしいです。上記の画像では700kbpsを設定しています。
- Upload。アップロードはテストは考えていなかったので適当に設定しています。
4.エミュレータを起動して回線速度を測るwebページを開いて期待通りの回線速度か確認します。
4.アプリを起動してテストする。
終わりに
- AndroidはiOSと比べると、低速回線を準備するのが大変だと思っていましたが、エミュレータでも確認ができるので、思ってたよりラクに用意ができて良かったです。
- 4Gでも電車の中で1Mを切る時があります。低速回線時でも、ある程度はアプリを快適に使えるように確認やチューニングが必要だと思いました。
追記
Charlesは有料ですが(そのまま使えるような気もしますが)、無料で同じようなツールNetwork Link Conditionerがあるようです。