IPv6のみのネットワーク

2016年6月1日から、IPv6のみのネットワーク接続に対応していないAppはApp Storeに提出できなくなりました。NSURLSessionおよびCFNetworkのAPIはすでにIPv6に対応しているため、多くのAppで変更の必要はありません。ただし、IPv4専用のAPIやハードコーディングされたIPアドレスを利用するAppでは変更が必要になります。Appを審査のためにApp Storeに提出する前に、IPv6との互換性があるかどうかを必ずテストするようにしてください。

IPv6ネットワークに対応する方法の詳細については、「IPv6 DNS64/NAT64 ネットワークをサポートする」を参照してください。

IPv6のみの環境でのAppテスト

必ずIPv6のみのネットワークでAppをテストするようにしてください。IPv6のみのネットワークがお手元にない場合、「IPv6 DNS64/NAT64の互換性の定期的なテスト」に記載された手順でテストネットワークを設定できます。

重要:WWANに対応したデバイスでテストする場合は、テストを実行する前にWWANをオフにしてください。これで確実にIPv6のみのWi-Fiがデバイスで使用されるようになります。

注意:WWANは「設定」>「モバイルデータ通信」>「モバイルデータ通信」でオフにできます(北米以外の英語ローカライズ版では、「Setting」>「Mobile」>「Mobile Data」)。

IPv4のリファレンス

IPv4のみの構成に対するリファレンスをAppからすべて削除する必要はありません。IPv6のみの環境で正しく動作する限り、IPv4のみの構成に対するリファレンスが存在し、それが使われていても問題ありません。

重要:IPv4とIPv6に対してコードを別個に用意するよりも、アドレスファミリーを許容するAPIを採用することをお勧めします。

サーバのアップデート

外部インターネットで運用されているサーバであれば、ただちにアップデートする必要はありません。サーバからDNS64/NAT64を経由してIPv6のみを使用したデバイスにアクセスできます。

注意:もちろん、IPv6に対応するようサーバをいずれアップデートする必要はあります。

iOS Appにサーバを組み込んでいる場合(Appとの間でファイルを送受信するWebサーバなど)は、IPv6のみの環境でも正しく動作することを確認する必要があります。

IPv4アドレスからの合成

システムAPIによるIPv6アドレスの合成に記載されている通り、iOS 9.2およびOS X v10.11.2から、getaddrinfoを使用してIPv4アドレスからIPv6アドレスを合成できるようになりました。Appのテストは、リリースされている最新バージョンのiOSを搭載したデバイスで行われます。

警告:自分でIPv6アドレスを合成することは簡単ではありません。特に、IPv4アドレスにWell-Known Prefix(64:ff9b::/96)を組み合わせてIPv6アドレスを合成することはセキュリティ上問題があります。この方法は一部のNAT64ネットワークで機能する場合もありますが、一般的な解決策ではありません。

IPv4ネットワークベースのアクセサリ

IPv6のみのネットワークで動作するようアクセサリを修正することを強くお勧めします。アクセサリをIPv6に対応させるか、IPv4のリンクローカルアドレスに対応させるという方法があります。双方のデバイスがIPv6のみのネットワーク上に存在すれば、いずれの方法でもAppがアクセサリと通信できるようになります。

以上のいずれの方法にもアクセサリが対応しておらず、対応するようアクセサリを修正することもできない場合、そのアクセサリはIPv6に対応するという条件に根本的にそぐわないということになります。

注意:以上の内容は、ローカルネットワークにおけるAppとアクセサリの間の通信でのみ当てはまります。Appのその他の要素については、IPv6のみの環境で動作することが求められます。