SlideShare a Scribd company logo
デリゲートを理解して
脱初心者!
株式会社トルクス 山田
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/13
Hiromichi Yamada
 
Oculus 体験・勉強会「VRコンテンツ制作入門」
Oculus 体験・勉強会「VRコンテンツ制作入門」Oculus 体験・勉強会「VRコンテンツ制作入門」
Oculus 体験・勉強会「VRコンテンツ制作入門」
Hiromichi Yamada
 
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした
Hiromichi Yamada
 
Words
WordsWords

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

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 

Recently uploaded (7)

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 

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