Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
cocone Teck Talk Vol.2 - Singletonを使わないUnityを用い...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
cocone
August 17, 2021
Programming
0
2.7k
cocone Teck Talk Vol.2 - Singletonを使わないUnityを用いたApplication開発
Singletonは便利なんだけどあまり使いたくない… そんなあなたにSingletonを使用せずに実装されたApplicationの考え方や設計などを紹介します。
cocone
August 17, 2021
Tweet
Share
More Decks by cocone
See All by cocone
Cocone_Research_Center_2025.pdf
cocone
0
240
20240301_cocone_EMゆるミートアップvol6_LT資料
cocone
0
920
2024_cocone-wellbeing
cocone
0
5k
2023夏季合同企業説明会ココネ
cocone
0
380
cocone TECH TALK Vol.6 - リアルタイム対戦xバックエンドアーキテクチャ
cocone
0
650
cocone TECH TALK Vol.6 - ココネグループのブロックチェーン MOOI Network とのバックエンド連携
cocone
0
560
cocone TECH TALK Vol.6 - Kotlin バックエンドアーキテクチャ of アバターサービス
cocone
0
590
cocone corporation(JPN)/Handbook2022
cocone
1
30k
cocone Tech Talk vol.5 - Unity Dotsを使ってみた
cocone
0
2.5k
Other Decks in Programming
See All in Programming
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
CSC307 Lecture 03
javiergs
PRO
1
490
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
740
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
150
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
AI巻き込み型コードレビューのススメ
nealle
2
1.4k
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
240
Oxlintはいいぞ
yug1224
5
1.4k
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Evolving SEO for Evolving Search Engines
ryanjones
0
130
Navigating Team Friction
lara
192
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
Design in an AI World
tapps
0
150
Navigating Weather and Climate Data
rabernat
0
110
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
Transcript
Singletonを使わない Unityを用いたApplication開発 ポケコロツイン事例紹介
自己紹介 堀尾 大地 • ポケコロツイン clientエンジニア 職務経歴 • 株式会社Aiming(約5年) •
株式会社インディゴゲームスタジオ(約 1年) • cocone株式会社 <= イマココ 趣味 • ゲーム • youtubeでhololiveの配信を見る • 欅坂46/櫻坂46
目次 1. Singletonを使いたくない理由 2. ポケコロツインの実装紹介 3. まとめ
Singletonを 使いたくない理由
Unityを使ってApplicationを作る • UnityがSceneを起点としている • アプリやチームの規模が大きくなってくると複数のSceneができる • Scene間でデータのやり取りをする仕組みが欲しくなる
Unityを使ってApplicationを作る • UnityがSceneを起点としている • アプリやチームの規模が大きくなってくると複数のSceneができる • Scene間でデータのやり取りをする仕組みが欲しくなる ↓ そうだ、Singletonを使おう。
Singletonが手っ取り早くて実装も簡単…だけど? • Scene間のやり取りのために作ったのにどこからでも呼べる便利クラス化 • ボタン押したらボタン制御クラスが急にSingletonを呼び出したりしてこれどうやって 動いてるんだ…?ってなる • Singletonを1個作るとどんどん生まれる(割れ窓) • 複数のSingleton同士が依存しあって初期化を変えると全部死ぬ、処理が追えなく
なる
Singletonが手っ取り早くて実装も簡単…だけど? • Scene間のやり取りのために作ったのにどこからでも呼べる便利クラス化 • ボタン押したらボタン制御クラスが急にSingletonを呼び出したりしてこれどうやって 動いてるんだ…?ってなる • Singletonを1個作るとどんどん生まれる(割れ窓) • 複数のSingleton同士が依存しあって初期化を変えると全部死ぬ、処理が追えなく
なる ↓ 管理コスト高くない?
結局使う人による • 使用ルールを作って必要最低限だけをSingletonでカバーするとかなら全然いいと 思う • 人の入れ替わりが起こる運営型のProjectでずっと保守できる?
結局使う人による • 使用ルールを作って必要最低限だけをSingletonでカバーするとかなら全然いいと 思う • 人の入れ替わりが起こる運営型のProjectでずっと保守できる? ↓ やりたくない (できる or
できない ではない)
話をもとに戻します 論点はSingletonを使うか使わないか、どう使うかではなく Scene間のデータのやり取りをスムーズに行いたいだけ
話をもとに戻します 論点はSingletonを使うか使わないか、どう使うかではなく Scene間のデータのやり取りをスムーズに行いたいだけ ↓ SceneLoad時に必要な情報をScene側に 良い感じに渡せれば良いだけ!!!!!
ポケコロツインの 実装紹介
Scene C ざっくりとしたイメージ ApplicationManager (MonoBehaviour) Scene B ApplicationManagerで共有で使う インスタンスを初期化しておいて Load時に各Sceneに渡す
Scene A ApplicationOperator (c# class)
ApplicationManagerの役割 1. 起点となるSceneに設置されたGameObjectにAttachしApplicationのエントリポイ ントとなる 2. 初期化時にGameObjectをDontDestroy 3. Operatorを初期化してインスタンスを保持する
ApplicationOperatorの役割 1. 共通で使うインスタンスの初期化と保持 2. インスタンス同士の依存などを解決 共通で使う処理の例 Scene、UI、通信、AssetBundle、Sound、Localデータ、設定データ、ユーザーデータ…など…
SceneClassの定義 こんな感じのclassを継承して各Sceneに配置したGameObjectにAttachしておく
SceneのLoad
まとめ
良かった点 • Singletonを使わずにScene間のやり取りを実現でき た!!!!!! • インスタンスの使用スコープを絞ることが出来る • エントリポイントが明確なので処理が追いやすい • 再利用性が高い
悪い点(?) • 学習コストが高め • 雑にApplicationManager側に処理を作られる
結局、最終的には人をどうやって教育するかになりますね…
ご清聴ありがとうございました。