SlideShare a Scribd company logo
1 of 24
Download to read offline
デリゲートを理解して
脱初心者!
株式会社トルクス 山田
2015/07/15 iOSアプリ勉強会
Torques Inc. 2015
自己紹介:山田 宏道
• 株式会社トルクス 代表
Torques Inc. 2015
VRコンテンツ
• 「MotherBird」

ニコニコ超会議(オッキューランド)
Torques Inc. 2015
ときどき、講師
Torques Inc. 2015
今日は、デリゲート
• iOSアプリ開発でつまづくポイント
Torques Inc. 2015
開発で重要な4要素
• Tools(Xcode, Android Studio, Eclipse)
• Language(Swift, Obj-C, Java, PHP, ..)
• Libraries, Frameworks(iOS SDK, etc)
• Algorithms, Design Patterns(←ココ!)
Torques Inc. 2015
デザインパターンとは
<クラスのつくりかたの事例集>
• GoF(The Gang of Four)が有名だが、
全部知っておく必要はない
• Delegation Patternというやり方があ
り、ある仕組みを作るのに便利、となっ
ている。
Torques Inc. 2015
クラス、メソッドの復習
Torques Inc. 2015
クラス、メソッドの復習
class Human {
var name: String = "Default"
var stamina: Int = 100
var pos: CGPoint = CGPoint(x: 0, y: 0)
init( name: String ) {
self.name = name
}
func sayHello() {
println("My name is (name)! @ ((pos.x),(pos.y))“)
}
}
// -----
var me = Human(name:"Yamada")
me.sayHello()
Torques Inc. 2015
SwiftのProtocol
「プロトコルに準拠している」
=「必要な条件を満たしている」
=「必要なメソッドを実装している」
Torques Inc. 2015
SwiftのProtocol
protocol PlayerProtocol {
func runTo( target:CGPoint )
}
class Player: Human, PlayerProtocol {
}
Torques Inc. 2015
SwiftのProtocol
protocol PlayerProtocol {
func runTo( target:CGPoint )
}
class Player: Human, PlayerProtocol {
}
<実装デモ>
Torques Inc. 2015
SwiftのProtocol
protocol PlayerProtocol {
func runTo( target:CGPoint )
}
class Player: Human, PlayerProtocol {
func runTo( target:CGPoint ) {
println("ε=ε=ε=┌(;*´Д`)ノ")
}
}
Torques Inc. 2015
SwiftのProtocol
var players = [Player(name: "P0"),Player(name:
"P1"),Player(name: "P2"),Human(name: "Hiro")]
var ball = CGPoint(x: 10, y: 10)
for p in players {
p.sayHello()
if let pr = p as? PlayerProtocol {
pr.runTo(ball)
}
}
Torques Inc. 2015
SwiftのProtocol
「プロトコルに準拠している」
=「必要な条件を満たしている」
=「必要なメソッドを実装している」
Torques Inc. 2015
delegate
「任せられる人に、任せる」
=「必要な実装をしているオブジェクトに、任せる」
=「プロトコルに準拠しているオブジェクトに、任せる」
Torques Inc. 2015
パルプンテDelegate
protocol ParupunteProtocol {
func performParupunte()
}
class GameSystem {
}
class Hero : Human {
func sayParupunte() {
}
}
// -----
var game = GameSystem()
var hero = Hero(name: "ああああ")
hero.sayParupunte()
Torques Inc. 2015
パルプンテDelegate
protocol ParupunteProtocol {
func performParupunte()
}
class GameSystem: ParupunteProtocol {
func performParupunte(){
println("パルプンテ!")
}
}
Torques Inc. 2015
パルプンテDelegate
class Hero : Human {
var parupunteDelegate: ParupunteProtocol?
func sayParupunte() {
if( parupunteDelegate != nil ){
parupunteDelegate.performParupunte()
}
}
}
// -----
var game = GameSystem()
var hero = Hero(name: “ああああ")
hero.parupunteDelegate = game
hero.sayParupunte()
Torques Inc. 2015
パルプンテDelegate:全体
protocol ParupunteProtocol {
func performParupunte()
}
class GameSystem: ParupunteProtocol {
func performParupunte(){
println("パルプンテ!")
}
}
class Hero : Human {
var parupunteDelegate: ParupunteProtocol?
func sayParupunte() {
if( parupunteDelegate != nil ){
parupunteDelegate.performParupunte()
}
}
}
// -----
var game = GameSystem()
var hero = Hero(name: “ああああ")
hero.parupunteDelegate = game
hero.sayParupunte()
Torques Inc. 2015
AvatarMaker
• 実践的な問題をご用意しました!
• github.com/HiromichiYamada/
AvatarMakerProblem
• ↑”AvatarMaker”で検索してみてください
Torques Inc. 2015
AvatarMaker
• MainViewController
• WearPickerViewController
Torques Inc. 2015
AvatarMaker
• 実装例:デモ
Torques Inc. 2015
ありがとうございました
• facebook hiromichi.yamada
• 他に、詳しく知りたい技術とかあったらアン
ケート等にお願いします。

More Related Content

More from Hiromichi Yamada

SMCN #03 Oculus Quest と VRコンテンツを知ろう
SMCN #03 Oculus Quest と VRコンテンツを知ろうSMCN #03 Oculus Quest と VRコンテンツを知ろう
SMCN #03 Oculus Quest と VRコンテンツを知ろうHiromichi Yamada
 
UnityでつくるVRアプリ 〜VRの作法とVRTK〜
UnityでつくるVRアプリ 〜VRの作法とVRTK〜UnityでつくるVRアプリ 〜VRの作法とVRTK〜
UnityでつくるVRアプリ 〜VRの作法とVRTK〜Hiromichi Yamada
 
【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」
【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」
【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」Hiromichi Yamada
 
子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみた子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみたHiromichi Yamada
 
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13Hiromichi Yamada
 
Oculus 体験・勉強会「VRコンテンツ制作入門」
Oculus 体験・勉強会「VRコンテンツ制作入門」Oculus 体験・勉強会「VRコンテンツ制作入門」
Oculus 体験・勉強会「VRコンテンツ制作入門」Hiromichi Yamada
 
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおしたHiromichi Yamada
 

More from Hiromichi Yamada (8)

SMCN #03 Oculus Quest と VRコンテンツを知ろう
SMCN #03 Oculus Quest と VRコンテンツを知ろうSMCN #03 Oculus Quest と VRコンテンツを知ろう
SMCN #03 Oculus Quest と VRコンテンツを知ろう
 
UnityでつくるVRアプリ 〜VRの作法とVRTK〜
UnityでつくるVRアプリ 〜VRの作法とVRTK〜UnityでつくるVRアプリ 〜VRの作法とVRTK〜
UnityでつくるVRアプリ 〜VRの作法とVRTK〜
 
【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」
【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」
【地域おこしVR研究会】第1回勉強会「VR業界動向とコンテンツ制作入門」
 
子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみた子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみた
 
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
 
Oculus 体験・勉強会「VRコンテンツ制作入門」
Oculus 体験・勉強会「VRコンテンツ制作入門」Oculus 体験・勉強会「VRコンテンツ制作入門」
Oculus 体験・勉強会「VRコンテンツ制作入門」
 
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした
 
Words
WordsWords
Words
 

Recently uploaded

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

デリゲートを理解して脱初心者! iOSアプリ勉強会