やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

Drecom Tech Espresso #6 "おなかソフトのDontDestroyOnLoad" に行ってきました #おなかソフトのドンデス

ドリコムさんで開催された『Drecom Tech Espresso #6 "おなかソフトのDontDestroyOnLoad"』に行ってきたので雑なメモ。

drecom.connpass.com

伊藤周さん、@toru_inoueさん、女子大生のとりすーぷさん、西村拓也さんのパネルディスカッション形式で進行されました。写真撮ってなかったけどこんな感じで進行。

とりすーぷさんは若干遅延のある系?女子大生でした。すばらしい。

西村さんの新刊

ダービースタリオン マスターズで学ぶ ゲームUI/UX制作 実践ガイド Unity対応版

ダービースタリオン マスターズで学ぶ ゲームUI/UX制作 実践ガイド Unity対応版

Singletonについて

  • 捨てるコードとか、逃げ場があるところだと使うけど、テスト書きにくいのでまともなコードでは使わない(井上さん)
  • SceneManagerとか、もともとUnityでstaticなものをラップしたSingletonは使う(とりすーぷさん)
    • 急ぐときは仕方ないときもある
  • Sigletonなしで作ってみたら、めんどくさい(西村さん)
  • シーンをまたいで引き継ぐとき、サウンド、オーディオには使う
  • Zenjectの機能でSingletonなオブジェクトを持てるので、いわゆるSingletonMonoBehaviour的なものは使わない
    • [8/1 追記] 問題なのはSingletonなオブジェクトそのものではなくstatic変数による参照保持なので(テストが書けない原因)、Zenjectを使えばテストではモックに差し替えることも容易で問題ない、という話。とりすーぷさんから補足いただいて追記
  • MainThreadDispatcherみたいなものとか、よくあるパターン
  • .NET 4.6ではLazy<T>が使える。C# in Depthに書いてあるパターン
  • テストしなければよい(暴論)
  • ステートを持たせなければよい、シーンをまたいで引き継がなければよい
  • Singleton自体は悪くないが、他の人に色々追加されてしまう

Sceneを切り替えるか否か

  • オブジェクトの引き継ぎ、管理コストを減らしたいので、1シーンで実装しよう、という本になってる(西村さん)
    • DontDestroyOnLoadしたオブジェクトの管理がたいへん
    • チーム開発だが、Sceneのヒエラルキーは触らないのでコンフリクトは発生しない
    • prefabで切り替ている
    • テストプレイのための工夫をしないと常に最初から実行になる
  • MultiSceneを使っている。ViewのシーンとModelのシーンを分けて重ねる(とりすーぷさん)
  • Zenject便利

MVP, MVC

  • チームによる(井上さん)
  • MとVが密結合になると壊れやすい。今はMVPに統一している(とりすーぷさん)
    • 個人開発であってもルールがあると迷いがなくなる
  • コンシューマーから来たので馴染みがない考え方だったが、気づいたらMVPになってた(西村さん)
    • アウトゲームはPassive ViewのMVP
    • インゲームはSupervising Controller
  • uGUIはMVP、インゲームはそうでなくイベントをReactiveXで扱っている(とりすーぷさん)

画面に写ってたのたぶんこれ

qiita.com

サウンド系

  • Singletonで作って呼び出す形、もっといい方法はないか
  • CRI ADX2 LE 個人開発で使える。UnityのAudioMixerは馴染まなかった(とりすーぷさん)
  • 自作するならSingleton、どうせテストしない(井上さん)
  • ボタンを押したときに必ず通る処理があるので、そこでデフォルトの音を鳴らすようにして漏れをなくしている(西村さん)
  • 鳴らすサウンドの指定はenum。stringは事故が怖い

ネットワークライブラリ

  • UNETの話はしたくない
  • 選択肢は、Photon Cloud、モノビットエンジン
  • PhotonRx作った(とりすーぷさん)
  • もしくは自作する

niconare.nicovideo.jp

所感

かなりUnityを使い込んでいる方々による生々しい話が聞けて、とても有意義な勉強会でした。 すでに第2回開催の話も出ているようで、期待しています!