Unity を検索

UnityにおけるIPv6サポート

2016年5月10日 カテゴリ: テクノロジー | 4 分 で読めます
Placeholder image Unity 2
Placeholder image Unity 2
取り上げているトピック
シェア

Is this article helpful for you?

Thank you for your feedback!

Appleは2016年6月1日以降、App Storeに登録されるすべてのアプリはIPv6ネットワークのサポートを必須とする、と発表しました。たくさんのUnity開発者がApp Storeでゲームを公開していますから、私たちも時間をとってその対応を検討してきました。なお、この要件は、新しいアプリの登録と更新の両方に適用されます。

IPv6って?

Internet Protocol Version 6(IPv6)は、Internet Protocol (IP)の最新バージョンです。インターネット上でネットワーク上のコンピュータの識別とトラフィックのルーティングを行う通信プロトコルです(Wikipediaより)。端末は、IPv4ネットワーク(今まで通り)とIPv6ネットワーク、または両方のプロトコルが同居するネットワークで動作することができますが、Appleの新しい審査の要件は、このうちIPv6ネットワークでアプリが動作する必要がある、ということになります。

ここで、IPv4とIPv6はお互いにトンネリング技術によってもう一方のプロトコルのネットワークを通過することができるが、それら自体は相互に通信できないことに注意しておきましょう。

UnityはIPv6をサポートしているの?

はい、もちろん!WWWとUnityWebRequestは、Appleの高レベルネットワーキングAPIを利用しているので、そのままでIPv6に対応しています。また、私たちは過去数か月間かけてUnityの.NET/IL2CPPライブラリーにIPv6ネットワークのサポートを加えることに取り組んできました。最後の.NET/IL2CPPに関連するIPv6のバグは、5.3.4p4のパッチリリースで修正されています。UNETにおける修正がひとつだけ残っていますが、それも今後数週間で修正がリリースされる予定です。私たちのコミュニティにおける偉大な仲間たち(Exit Gamesのような)のおかげで、Unityエンジンに潜んでいた数多くのバグを取り除き、以下のプラットフォームでIPv6ネットワークをサポートすることができました!

  • エディター(Windows/Mac/Linuxすべて)
  • プレイヤー(Windows/Mac/Linuxすべて)
  • iOS
  • Android

今後、上記以外のプラットフォームについてもIPv6のみのネットワークのサポートを追加していく予定です。

以前のバージョンについては?

ネットワークリソースへのアクセスにWWWかUnityWebRequest APIだけを使用している場合は問題ありません。もちろん、万が一に備えて入念にテストするのがよいでしょう。

また、複数の旧バージョンに.NET/IL2CPPの修正をバックポートし、4.7.2、5.1.5、5.2.5としてリリースする予定です。

で、どうしたらいいの?

まず、すべてのゲームの機能が意図した通り動作するかどうか、IPv6ネットワーク上でゲームをテストします。Appleのガイドで、OS X 10.11以降を搭載したMacを使ってIPv6のみのネットワークを構築する方法を解説しています。これでApp Storeのレビュワーと同じテスト環境を構築できますから、IPv6のテストを始めるのにぴったりなのです。IPv4とIPv6ネットワークは相互に通信できませんから、何の問題もないか確認するためにはIPv6のみのネットワークでテストする必要があるのです。もしテスト端末がIPv6とIPv4両方に接続してしまっていると、通信処理はIPv4を使って成功できてしまいます。

次に、プログラムに以下のような問題を起こす可能性があるコードがないかチェックしましょう。

  • IPv4アドレス(127.0.0.1, 8.8.4.4のような)の使用。こういったハードコードされたアドレスはすべて削除する必要があります。接続しているネットワークに応じた適切なアドレスが使われるよう、ホスト名を使用しましょう。
  • IPAddress.AddressFamily プロパティの使用。もしこのプロパティを元に処理を分岐している場合、IPv6の場合の対応をちゃんとしなくてはいけません。
  • IPAddress.Any と IPAddress.Loopback フィールドの使用。これらはIPv4用であり、IPv6用ではありません。IPv6のサポートのためには IPAddress.IPv6Any と IPAddress.IPv6Loopback フィールドを使いましょう。

上記に挙げたもの以外の問題が発生した場合、必要な修正が行われたバージョンを使用していることか確認してください。まだ使っているバージョンで修正がリリースされていない場合、修正バージョンがリリースされるまで待ってからバージョンアップしてください。

サードパーティ製で通信を行うネイティブもしくはマネージドのプラグインもIPv6ネットワークと互換性がない可能性がありますので、プラグインベンダーに確認することをおすすめします。

最後になりますが、もしIPv6に関わるUnityのバグに遭遇したら、ぜひ私たちにご報告をお願いします。そうすれば迅速に問題を修正することができるでしょう。また、App Storeの審査要件に関する問題は、私たちのiOSとtvOS開発についてのフォーラムでどうぞ。そこで一緒に問題を解決しましょう。

更新: 4.7.2がリリースされました!: http://unity3d.com/get-unity/download/archive
更新その2: 5.2.5がリリースされました!: http://unity3d.com/get-unity/download/archive (5.3.xの下)
更新その3: 5.1.5がリリースされました!: http://unity3d.com/get-unity/download/archive (5.2.xの下)

2016年5月10日 カテゴリ: テクノロジー | 4 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

取り上げているトピック