Unityのバージョンをなるべく最新にする試み


こんにちは。エンジニアの鈴木聡です。

現在開発中のプロジェクトでは、Unityの新機能をできるだけ使えるようにしています。そのためには、Unityのバージョンを最新のものにしていくことが重要です。

今回は、実際に使用を始めている機能や、苦労した点について書こうと思います。

新しい機能のプロジェクトでの使用

現在、プロジェクトにおいて、以下の新しい機能が使用されております。

Timeline(2017.1.0から)は演出の一部で使用が開始されていて、そのままリリースに取り込まれる方向で開発が進められています。

TestRunnerのPlayMode(5.6.0から)についても、EditModeと共にCIの流れに組み込まれており、全てのPullRequestに対してテストが走るようになっています。

最新を追い求めるが故の不具合との向き合い

Unity2017.3.0f3にバージョンアップを行なった際に、以下のような不具合が発生して、苦労することになりました。

  1. iOSでアプリを動作させると高確率でアプリがクラッシュしてしまう
  2. UnityUI(uGUI)でApplyした時にレイアウトが崩れてしまう
  3. TestRunnerが実行時に硬直を起こすようになった

これらについては、プロジェクト側での対応では難しいものについては、パッチリリースを待つことになります。

上記不具合については、Unity2017.3.1p1において1および2が解決された模様です。Unity開発チームの迅速な対応に感謝です。

(その後、RectTransformをスクリプトで更新した時の挙動が少し変わっていて少し苦労するのですが、それはまた別の話)

最新を追い求めるが故のAPI置き換えとの戦い

Unityのバージョンをアップデートすると、新しいAPIへの差し替えを促進するために、古いAPIにObsolete属性が置かれることがあります。

完全に古いAPIが消されるまでは、ある程度の時間的猶予があることが多いですが、それでも古いAPIを新しいものに置き換えていく作業もそれなりの手間がかかります。

プロジェクト内で使用しているAPIについては、その都度対応するという方向で問題ないのですが、外部アセットを使用している場合は、そのアップデートを待って忘れずに更新を入れる必要があります。

さらに、外部アセットがサポート終了になっている場合は、アセットの更新が行われませんので、プロジェクト内でアセットを解読してパッチを当てていくことになります。地道な戦いが続きます。

リリース後のアップデートはどうするのか?

リリース後のアプリについては、アプリの安定性がとても重要になります。アプリのクラッシュなどは確実に避けなければなりません。

バージョンアップについては、アプリ全体の動作について、品質保証チームの助力を仰ぐなど、十分な動作確認を行う必要があるでしょう。

最後に

Unityのバージョンを最新に保っていくことには、それなりの苦労が発生するとは思いますが、最新の機能が使えるようになるというメリットは大きいと思います。これからも可能な限り新バージョンを追い求めていければと思います。


Unite 2016 Tokyoに参加してきました


はじめまして!エンジニアの鈴木聡です!

04/04-05の2日間開催された、Unite 2016 Tokyoに参加しましたので、その記事を書かせていただこうと思います!

Unityの中の人がたくさん!

Unity公式のカンファレンスということもあり、Unityの中の人の生の声が聞けるのが大きな特徴だと思います!開発の方も来日されますので、結果として講演は英語が多めに…でも大丈夫です!同時通訳が完備されていますので!(でも本当は英語で直接理解した方がいいと思います…)
unite2016_room1_m

Unity新機能

すでによく知られているものからあまり知られていないものまで、多くの新機能が発表されていました。アセットバンドルに関しては、Manifest や LZ4 圧縮や UnityWebRequest など、多くの利便性の向上が図られていて、すぐにでも活用していきたいと思いました!

リリースはまだ先になりそうですが、タイムラインエディター(Sequence Tools)がかなり将来性を感じる内容で、力を入れて開発を進めるという意思を感じましたので、実用化に向けて今から楽しみな感じです!

高速化まわり

モバイルにも3Dレンダリングの波は確実に押し寄せてきていて、コンソールやPCで実現できている表現が徐々に入ってきていて、なかなか苦労が絶えない今日この頃だと思います。その実現のために高速化や最適化についても、実際の開発例からUnityの内部構造に至るまでの様々な講義が行われ、今後の開発に役立てられそうな情報が少なからず入手できたのではないかと思います!日々精進ですね!

まとめ

今回、初めて参加させていただいたのですが、他のカンファレンスとはまた違った空気があり、なかなかよかったのではないかと思います!ここで得た知見を今後の開発に生かしていきたいと思います!
unite2016_booth_m

以下CM

実は、弊社はUnite 2016 Tokyoのブロンズ協賛をさせていただいてました!Uniteに参加された方は、入場の時に袋を手渡されていると思いますが、その中にひっそりと入っていたKitKatは、弊社「剣と魔法のログレス」のマンドラというキャラの絵が入った特注品だったんですよ!unite2016_kitkat_mはい、チョコレート。

このKitKatについては後日談がありまして、とある事情で会場で配る予定よりも大量に上回る個数を作られることになったのですが、ご厚意によりUnity Technology様より弊社に余剰分を無償提供していただけることになりました!unite2016_kitkatbox_mどどーん!

機会がある度に配布させていただこうと思っておりますので、気になる方は会場などで弊社社員にお声掛けいただければ幸いです!