Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
torisoup
6,816 views
インタフェース完全に理解した
2018/9/6 Unity Zenject完全に理解した https://connpass.com/event/96928/ の登壇資料です
Technology
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Downloaded 38 times
1
/ 39
2
/ 39
3
/ 39
4
/ 39
Most read
5
/ 39
6
/ 39
7
/ 39
8
/ 39
9
/ 39
10
/ 39
11
/ 39
12
/ 39
Most read
13
/ 39
14
/ 39
15
/ 39
16
/ 39
17
/ 39
18
/ 39
19
/ 39
20
/ 39
21
/ 39
22
/ 39
23
/ 39
24
/ 39
25
/ 39
26
/ 39
27
/ 39
28
/ 39
29
/ 39
30
/ 39
31
/ 39
32
/ 39
33
/ 39
34
/ 39
35
/ 39
36
/ 39
37
/ 39
Most read
38
/ 39
39
/ 39
More Related Content
PDF
Observableで非同期処理
by
torisoup
PDF
UniTask入門
by
torisoup
PDF
UniRx完全に理解した
by
torisoup
PPTX
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PDF
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
PDF
UniRx の1歩目
by
infinite_loop
PDF
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
by
Unity Technologies Japan K.K.
Observableで非同期処理
by
torisoup
UniTask入門
by
torisoup
UniRx完全に理解した
by
torisoup
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
Riderはいいぞ!
by
UnityTechnologiesJapan002
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
UniRx の1歩目
by
infinite_loop
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
by
Unity Technologies Japan K.K.
What's hot
PDF
Unityでオニオンアーキテクチャ
by
torisoup
PDF
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
PPTX
async/await のしくみ
by
信之 岩永
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
by
Unity Technologies Japan K.K.
PPTX
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
by
Unity Technologies Japan K.K.
PPTX
UniRxでMV(R)Pパターンをやってみた
by
torisoup
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
PPTX
はじめてのUniRx
by
torisoup
PDF
コールバックと戦う話
by
torisoup
PDF
The Usage and Patterns of MagicOnion
by
Yoshifumi Kawai
PDF
Unityでパフォーマンスの良いUIを作る為のTips
by
Unity Technologies Japan K.K.
PDF
Unityではじめるオープンワールド制作 エンジニア編
by
Unity Technologies Japan K.K.
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
by
Yoshifumi Kawai
PDF
MagicOnion入門
by
torisoup
PDF
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
by
Unity Technologies Japan K.K.
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
by
YutoNishine
Unityでオニオンアーキテクチャ
by
torisoup
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
async/await のしくみ
by
信之 岩永
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
by
Unity Technologies Japan K.K.
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
by
Unity Technologies Japan K.K.
UniRxでMV(R)Pパターンをやってみた
by
torisoup
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
はじめてのUniRx
by
torisoup
コールバックと戦う話
by
torisoup
The Usage and Patterns of MagicOnion
by
Yoshifumi Kawai
Unityでパフォーマンスの良いUIを作る為のTips
by
Unity Technologies Japan K.K.
Unityではじめるオープンワールド制作 エンジニア編
by
Unity Technologies Japan K.K.
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
by
Yoshifumi Kawai
MagicOnion入門
by
torisoup
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
by
Unity Technologies Japan K.K.
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
by
YutoNishine
More from torisoup
PDF
Doozy UI 使おうぜ! #unity_lt
by
torisoup
PDF
ObserverパターンからはじめるUniRx
by
torisoup
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
PDF
Unityでオンラインゲーム作った話
by
torisoup
PDF
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
PDF
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
PDF
アバター生放送支援アプリ「アバれぽ」
by
torisoup
PPTX
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
PDF
Photon Cloud ことはじめ
by
torisoup
PDF
UniRxでPUNを使いやすくする
by
torisoup
PDF
Task vs Observable
by
torisoup
PDF
Unity講習会(初級)
by
torisoup
Doozy UI 使おうぜ! #unity_lt
by
torisoup
ObserverパターンからはじめるUniRx
by
torisoup
【Unity】 Behavior TreeでAIを作る
by
torisoup
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
Unityでオンラインゲーム作った話
by
torisoup
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
アバター生放送支援アプリ「アバれぽ」
by
torisoup
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
Photon Cloud ことはじめ
by
torisoup
UniRxでPUNを使いやすくする
by
torisoup
Task vs Observable
by
torisoup
Unity講習会(初級)
by
torisoup
Recently uploaded
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PDF
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PDF
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
PDF
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
PPTX
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
PPTX
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
PDF
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
PDF
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
PDF
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
インタフェース完全に理解した
1.
インタフェース 完全に理解した 2018/09/06 とりすーぷ
2.
自己紹介 • とりすーぷ(@toRisouP) • 株式会社バーチャルキャスト •
Unityクライアント開発 • 人類を美少女にする仕事をしてます
3.
インタフェース つかってる?
4.
今回の内容 • インタフェースについて適当につらつらと語る • クラスの継承との意味の違い •
使いみち • 小ネタ Zenject要素はありません
5.
クラスの継承とのちがい
6.
クラスの継承 • AはBである、という属性を引き継ぐ • is-aの関係を満たす •
多重継承できない • 派生クラスは基底クラスのルールを 変えることはできない • リスコフの置換原則
7.
インタフェースの実装 • インタフェースはわりと自由 • is-aの関係は無い •
要求されたふるまいさえ満たせばよい • 必ず「利用者」が存在する • インタフェース定義は利用側が行う
8.
インタフェースの用途
9.
インタフェースの用途 • 疎結合化するのによく使う • オープン・クローズ原則とか、依存関係逆転の原則とか言うアレ •
利用側で仕様を決めることができる • 実装の中身について利用側は知らなくていい • 実装の詳細については別パッケージに押し付けることができる
10.
疎結合化
11.
疎結合化 HumanPackageのやること • IDriveableの定義 • IDriveableを使って何をするか
12.
疎結合化 VehiclePackageのやること • IDriveableの実装をする
13.
インタフェースを使うメリット • 依存関係を整理することができる • オープン・クローズ原則、依存関係逆転の原則を満たすことができる •
利用側と実装側のパッケージをそれぞれ並行して作れる • 分担作業してもあとで破綻しない • ゲームジャムで特に有効
14.
依存の解決
15.
依存の解決 • インタフェースを使うと必須になる作業 • どの実装クラスを実際に使うの? •
インスタンス化は誰がして、どう管理するの?
16.
手法いくつか • Service Locatorパターン •
シングルトンに依存関係を書いて、 クラスが自分でシングルトンに問い合わせるやり方 • DI Containerパターン • DIContainerが各オブジェクトのインスタンス化を管轄する手法 • Zenjectはこれ
17.
どっちがいいのか • 規模が小さいならService Locatorでもよい •
実装がラクですぐ使える • シングルトンへの依存が生まれる点に注意 • DI Containerはハイリスク・ハイリターン • 柔軟な依存関係の制御が可能 • DI Container(Context)の管理自体がまた難しい
18.
インタフェースの小ネタ
19.
プロパティ
20.
プロパティを定義する • インタフェースは「プロパティ」の定義ができる • 必要なパラメータがあればプロパティにしておくと良い •
一応setもできるけど、おすすめはしない(get onlyが良い)
21.
GetComponent
22.
GetComponent • GetComponentはインタフェースを指定できる • 指定インタフェースを実装したコンポーネントがあると取得できる •
Unityの“Tag”代わりに使うこともできなくはない
23.
拡張メソッド
24.
拡張メソッドで機能追加 • インタフェースに拡張メソッドを追加できる • 実装済みの関数をインタフェースに含めることができる •
traitっぽくしたりすることができる
25.
インタフェースは実装を持てない
26.
拡張メソッドに実装を書くことはできる
27.
インタフェースをtraitっぽく使える
28.
Structとインタフェース
29.
structにインタフェース • structにインタフェースを被せることもできる • ただしインタフェース型に代入するとボックス化が起きる
30.
IEquatable<T> • Structの同値判定用のインタフェース • 同値判定をカスタマイズできる •
自動実装されるEquals()よりも、パフォーマンスが向上する • Structを定義したらこれも実装しよう
31.
実装例 • R#とかRider使ってれば、 ほぼ自動で実装してくれる • GetHashCode()とかも 勝手に作ってくれる
32.
明示的な実装
33.
明示的な実装 と 暗黙的な実装 •
インタフェースは「明示的な実装」ができる • インタフェース名を指定して実装 • 暗黙的な実装と、明示的な実装とでは挙動が異なる
34.
例
35.
比較 暗黙的な実装 明示的な実装
36.
比較 暗黙的な実装 明示的な実装 アクセスレベルが異なる!
37.
暗黙的な実装 • 暗黙的な実装をした時のアクセスレベルは「public」 • そのままメソッドコールできる
38.
明示的な実装 • 明示的な実装をした場合は、 インタフェース経由じゃないと呼び出せなくなる • 特殊なアクセスレベルになる
39.
まとめ • インタフェースの用途を覚えよう • 疎結合化するのに使える •
Zenjectを使いこなす前に、インタフェースへの理解が必須 • 意外と機能が多い • インタフェースを使いこなせばパフォーマンス向上する場面もある
Download