iOS 9及びOS X El CapitanではHappy Eyeballs ((cf: Happy Eyeballsとは – 日本ネットワークインフォメーションセンター)) の挙動変更によって、ネットワーク接続にIPv6を優先するように変更されているとのことである。また、iPhone端末は今後IPv6へ完全移行することが予定されている。これによって、2016年初頭には、iOS9向けアプリをApp Storeにリリースする際はIPv6に対応している必要があるという。ここではiOSアプリのIPv6対応について個人的な所感を述べてみたい。
クライアントサイドについては通常のNSURLSessionやCFNetworkなどを使っている分には問題ない
通常のNSURLSessionやCFNetworkなどを使ったアプリについては、基本的には問題ないものと考えられる。これらについては、FoundationフレームワークやCoreFoundationと各携帯キャリアがうまく吸収してくれるため、それほど気にする必要性はないものと考えられる。『iOS9 で必要な IPv6 only Network への対応 – Qiita』によれば、過半数のアプリが対策なしで問題なく動くとのことである。
ただし、独自のネットワーク処理などでIPv4に依存したAPIを使用している場合はそうではない。この場合はIPv6に対応したAPIに移行するなどの対応が必要になる。
サーバーサイドのIPv6対応の必要性はあるのか
ウェブブラウザでなどのアプリでは不特定多数のサーバーにアクセスする関係上、IPv4しか対応していないサーバーがあったとしても、各キャリアの対応により、IPv6からでもIPv4のサーバーにアクセスできるようになる関係上、リクエスト自体は問題ないと考えられる。
ただ、個人的に不明瞭と考えているのは、ソーシャルゲームなどの特定のサーバーと接続する形式のアプリなどで、その特定のサーバーがIPv6に対応している必要があるかどうかである。
iOSのフレームワーク及びキャリアの吸収によってサーバーがIPv4しか対応していなくても、リクエスト自体は吸収されて問題ないものとは考えられるが、IPv4への変換を必要としない、IPv6だけで完結するリクエストを保証する必要があるかどうかまでは現時点では個人的にはよくわからない状態である。仮にサーバーサイドもIPv6対応が必要だとした場合、ネットワークの設定が必要になり、多大なコストを要求されるということも想定される。
それを踏まえると、いくらなんでもサーバーサイドまでIPv6対応を要求するということは考えづらいとはいえる。
最後に
来年初頭までにiOS向けアプリはIPv6に対応していなければならないということだが、ソーシャルゲームアプリなどクライアント・サーバーモデルのサービスにおいては、それがアプリだけに限定されるのか、サーバーにも影響を及ぼすのかよくわからない部分はあるものの、多くのアプリについてはIPv4に依存しないAPIを使用しているとのことであり、アプリだけについては、とりたてて対策をする必要はないものと考えられている。
ただし、ネットワーク関連については、App Transport Securityという厄介な仕様が追加されており、そちらの方が頭を悩ませるのではないかと考えられる。それについてはiOS 9/El Capitan/Xcode 7以降で要注意箇所およびApp Transport SecurityのTLS要件が思った以上に厳しかった件を参照されたい。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。