便利すぎる!iOSアプリでネットワークテストをNetwork link Conditionerを使って行う
はじめに
iOSでもAndroid端末でもフロントエンドでも何かしらの通信を行ってコンテンツを取得しているでしょう。
簡略化した図を以下に記載しています。
特にシミュレーターではオフィスを快適なネットワークを支えているケースがほとんどなので実機のスペック、環境でのテストなどはすることができません。
今回はNetwork Link Conditionerを使って、意図的にネットワーク環境を設定してから通信速度チェックをして確認していこうと思います。
Network Link Conditionerとは
Network Link Conditionerとは
iOS端末で、またはシミュレータ上で起動している端末のネットワーク状況を仮想的に3GやLTEなどにしたりするもの
です。
なぜ必要なのか
たとえばHTTPリクエストを送ってコンテンツを取得して、この一覧をUITableViewに表示するViewControllerがあるとします。
また、Cellが選択されると、新しいViewControllerがもつViewに遷移します。
このようなケースでクラッシュしそうなケースは何でしょうか。
たとえば
- コンテンツが10個あるのにセルが11個あって
コンテンツ[11]
としてしまってクラッシュ
などが考えられますが、まず第一は
- ViewControllerがコンテンツを取得している間にCellが一つもないのに押されて、遷移しようとしてクラッシュ
というケースが考えられます。
このようなケースは通信速度が速いと押す暇がないので、あまり気づきません。
しかし、ネットワークを仮想的に遅くしてみるとクラッシュ原因が見つかったりするのでテストする価値はあると思います。
ちゃんと図ををもって説明しようと思います。
通信速度が速い場合
取得をするアクションを押すと、、、
速攻表示されます。
通信速度や遅い場合
取得をするアクションを押すと、、、
取得まで時間がかかります。
よくあるケースですが、注意深く実装していないと以下のようにloadingのときは押せたりします。
もちろん遷移をできないからクラッシュするわけです。
まずはインストールする
以下のように"More Developer Tools"を選択します。
そして、Apple Developerでログインします。
以下のような画面が出るはずです。
ここからはXcodeのバージョンごとに分かれます。
Xcode 8以上
Additional Tools for Xcode XXX
を入れてください。マイナーバージョンまでないものもあるので、メジャーバージョンされあっている、かつダウンクレードだったら使えます。
例:
- 9.2 : Additional Tools for Xcode 9
それ以下
その場合は
Hardware IO Tools for Xcode XXX
をインストールしてください。
続き
.dmg
ファイルを開いて"Hardware" -> "Network Line Conditioner.prefPane"をインストールします。
すると以下のようにセットアップできます。
各種プロフィール
比較表
今回は下り(Downlink)のプロフィールを比較しています。
profile | bandwidth(帯域) | パケット欠損率 | 遅延 |
---|---|---|---|
LTE |
50mbps | 0% | 50ms |
Wifi |
40mbps | 0% | 1ms |
Wifi 802.11ac |
250mbps | 0% | 1ms |
3G(FOMA) |
780kbps | 0% | 100ms |
Very Bad Network |
1mbps | 10% | 500ms |
High Latency DNS |
max | 0% | 0ms |
100% Loss |
max | 100% | 0ms |
DSL |
2mbps | 0% | 5ms |
Edge |
240kbps | 0% | 400ms |
一般的にはWifi
、LTE
、3G
が主だと思います。
4G対応地域
LTEは4Gの一種です。
DOCOMOの場合は、以下のような対応です。
全国スケールでみることはできなかったので、適当に選びました。
だいたいLTE(800MHz)以上には対応していることがわかります。
通信制限時の速度
通信制限時の速度はだいたい128kbpsになるそうなので、Edge
が一番近いかなと思います。
なので通信制限のかかったユーザーのテストにはEdge
を使えば良さそうです。
カスタムプロフィール
"Manage Profile"からカスタムプロフィールを設定します。
以下のサイトを参考にDocomo 通信制限時というものを設定しました。
実際に試してみる
一応ですがios端末を使っている時にmacにも影響がないか調べます。
また、今回は以下のスピードテストを使います。
モバイルが使えるので以下の画像読み込み版にしました。
OFF時
macbook pro
iOSシミュレータ
Wifi
macbook pro
iOSシミュレータ
3G
macbook pro
iOSシミュレータ
Very Bad Network
macbook pro
iOSシミュレータ
まとめ
- macbookも同時に通信がかかるのでマルチタスクで画像をあげたり、ブラウズするときは不便
- chromeなどもフロントエンドではできるので、きちんとあらゆる通信環境で試す必要がある