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
YAMAUCHI RYOGA
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryoga_Yamauchi
September 06, 2020
Technology
0
73
YAMAUCHI RYOGA
KC3のROOM2で発表した勉強会の資料です。
Ryoga_Yamauchi
September 06, 2020
Tweet
Share
More Decks by Ryoga_Yamauchi
See All by Ryoga_Yamauchi
Unity勉強会
ryogayamauchi
0
39
Other Decks in Technology
See All in Technology
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
190
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
250
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
230
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
0
120
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
230
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
Mobile First: as difficult as doing things right
swwweet
225
10k
Agile that works and the tools we love
rasmusluckow
331
21k
Bash Introduction
62gerente
615
210k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
56
Leo the Paperboy
mayatellez
4
1.4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
Transcript
6OJUZͰࠓ͙͑͢Δ5JQTɾίπ 3PPN 2020/9/5 13:30~ 学内勉強会
໊લɿࢁཾզ େֶɿژ࢈ۀେֶ ֶɿ ৬ɿిࢠܭࢉػԠ༻෦ɾओװ झຯɿόΠΫʢ43ʣ 6OJUZ ΫϥΠΞϯτΤϯδχΞʢࢤʣ ࣗݾհ !:BNBVDIJ@3ZPHB ࣗݾհ
࣍ ήʔϜΦϒδΣΫτͷࢀরͷऔΓํʢѻ͍ํήʔϜΦϒδΣΫτʣ • "DUJPOͷ͍ํ ೖग़ྗͷऔΓํ .7$ͷΓํʢϝΠϯʣ
γϯάϧτϯͷ͍ํ Φϒβʔόύλʔϯͷ͍ํ • 3Y • 6OJ5BTLʢ͕࣌ؒ͋Εʣ • %*ʢ͕࣌ؒ͋Εʣ お題:タイマーを作る
ήʔϜΦϒδΣΫτͷࢀরͷऔΓํ ʢਖ਼͘͠ήʔϜΦϒδΣΫτʢʹΞλον͞Ε͍ͯΔεΫϦϓτʣͷࢀরͷऔΓํʣ Έͳ͞ΜͲ͏ͬͯήʔϜΦϒδΣΫτͷࢀরΛऔಘ͍ͯ͠·͔͢ʁ
ήʔϜΦϒδΣΫτͷࢀরͷऔΓํ $VCFΛ࡞ͬͨ࣌ʹɺͲ͏ͬͯ$VCFΛεΫϦϓτͰૢΓ·͔͢ʁ
ήʔϜΦϒδΣΫτͷࢀরͷऔΓํ ΦϒδΣΫτͷࢠڙʹΦϒδΣΫτ͕͋Δ߹
ήʔϜΦϒδΣΫτͷࢀরͷऔΓํ (BNF0CKFDU'JOE ͍ͬͯ·ͤΜΑͶʜʁ
<4FSJBMJ[F'JFME>Λ͚ͭΔͱ ήʔϜΦϒδΣΫτଆ͔ΦϒδΣΫτΛͤΔ QVCMJDͰެ։͍͍͚ͯ͠ͲɺΑ͘ͳ͍ ήʔϜΦϒδΣΫτͷࢀরͷऔΓํ ΤσΟλ্͔ΒΦϒδΣΫτΛࢦఆͰ͖Δ
ΦϒδΣΫτͷࢀর͕औΕ͔ͨΒ ͏(BNF0CKFDU'JOE ͱ͔͠ͳ͍͍ͯ͘͡ΌΜɻ ήʔϜΦϒδΣΫτͷࢀরͷऔΓํ
λΠϚʔΛ࡞Δ
λΠϚʔΛ࡞Δ ͱΓ͋͑ͣɺΤσΟλ͔Βೖྗ͞ΕͨΛදࣔͯ͠ΈΔ
λΠϚʔΛ࡞Δ Ͱ͖ͨ
λΠϚʔΛ࡞Δ 4UBSU ʹؔΛՃ͠·͢ ඵͣͭσΫϦϝϯτͯ͠දࣔ දࣔ
λΠϚʔΛ࡞Δ ͏͍ͨ͝
λΠϚʔΛ࡞Δ λΠϚʔ͠·͕ͨ͠ɺ͜ΜͳཁٻΛ͞Ε·ͨ͠ɻ ͢·Μ͕ɺϘλϯ͔ΒىಈͰ͖ΔΑ͏ʹͯ͘͠Εʂ
λΠϚʔΛ࡞Δ ݴΘΕΔͱࢥͬͯઌʹ༻ҙͯͨ͠ΘʂΑ͔ͬͨʂ
λΠϚʔΛ࡞Δ ·͔͞ɺϘλϯҰͭͷػೳΛՃ͢ΔͷʹΤσΟλʔ͔Βࢦఆͯ͠·ͤΜΑͶʜ
λΠϚʔΛ࡞Δ ͜ΜͳؔΛ࡞ͬͯ0O$MJDL ʹࢦఆͯ͠ىಈ͢Δ σϝϦοτ • ࢦఆͨ͠ΦϒδΣΫτͷ͔ؔ͠ࢦఆͰ͖ͳ͍ • ͍͍ͪͪΤσΟλʹͬͯࢦఆ͠ͳ͍ͱ͍͚ͳ͍
λΠϚʔΛ࡞Δ PO$MJDL"EE-JTUFOFSΛ͓͏ʂ ΫϦοΫ͞Εͨ࣌ͷॲཧΛࣄલʹొ͍ͯ͠Δ Ҿ"DUJPOܕɻ ϝϦοτ • 0O$MJDLͷϝιουΛQSJWBUFʹͰ͖Δ • ΤσΟλʔʹͬͯઃఆ͠ͳ͍͍ͯ͘ •
ଞͷΦϒδΣΫτͷؔΛࢦఆͨͯ͘͠ɺ͜͜Ͱ͍͍ͤ
λΠϚʔΛ࡞Δ "DUJPOͱɺϝιουࢀরͷ͜ͱʢίʔϧόοΫͱͯ͠͏͜ͱଟ͍ʣ ϝιουΛมతͳײ͡ͰͤΔɻ ྫ͑ɺఢΩϟϥΛͨ࣌ͪ͠ΌΜͱΞχϝʔγϣϯΛऴ͔͑ͯΒϓϨΠϠʔʹܦݧΛೖΕ͍ͨͱ͔
λΠϚʔΛ࡞Δ ྫ͑ɺఢΩϟϥΛͨ࣌ͪ͠ΌΜͱΞχϝʔγϣϯΛऴ͔͑ͯΒϓϨΠϠʔʹܦݧΛೖΕ͍ͨ࣌
λΠϚʔΛ࡞Δ ϓϨΠϠʔ͕͍Δͱͯ͠ɺ μϝʔδΛ৯ΒͬͨΒ͕࣌ؒ̎ඵݮΔػೳ͕ཉ͍͠Μ Ϙλϯ͔ΒىಈͰ͖ΔΑ͏ʹͳΓ·͕ͨ͠ɺ͜ΜͳཁٻΛ͞Ε·ͨ͠ɻ
λΠϚʔΛ࡞Δ ͦΜͳΜ؆୯ɺμϝʔδड͚ͨ࣌ʹ̎ඵ͕࣌ؒݮΔΑ͏ʹ͢Ε͑͑Μɻ
λΠϚʔΛ࡞Δ ը໘Λ࡞ͬͯɺϓϩάϥϜΛ࣮͠·͢ɺ
λΠϚʔΛ࡞Δ ͖ͬ͞ͱಉ͡Α͏ʹɺ1MBZFSʹ5JNFS7JFXͷࢀরΛ࣋ͨͤͯ͋͛Ε͍͍ͶΜɻ
λΠϚʔΛ࡞Δ Ͱ͖ͨ
λΠϚʔΛ࡞Δ ͜͜Ͱٙʹࢥͬͯཉ͍͜͠ͱ • 1MBZFS7JFXͬͯɺ1MBZFSΛ੍ޚ͢ΔϓϩάϥϜͷͣͳͷʹ5JNFS7JFX·Ͱ࣋ͬͯΔʜ • <4FSJBMJ[F'JFME>Ͱऔಘ͖͚ͯͨ͠ͲɺͦΕ͕Ͱ͖ͳ͍߹ͳ͍ͷʜ ͋ΔɻϓϩάϥϜ͔Βࣗಈੜͨ͠߹ҧ͏ํ๏Ͱ͞ͳ͍ͱ͍͚ͳ͍ɻ 1MBZFS5JNFSͷใΛ͖࣋ͭͰͳ͍
.7$ͱ .7$ͷ֓೦͕ొ͢Δ • 1MBZFSͷ֓೦ࣗମΛϨΠϠʔʹ͚Δ • ඳը 7JFX • ଞͷίϯϙʔωϯτͱͷΓऔΓ $POUSPMMFS
• σʔλ .PEFM Model View Controller $POUSPMMFSͰ੍ޚ͢Δ͜ͱʹΑͬͯɺ1MBZFS7JFXࣗମ5JNFSͷࢀরΛ࣋ͨͳͯ͘ྑ͘ͳΔɻ Hp:10 At:5 Df:3
.7$ͱ .7$ʹछྨ͕͋Δ Push MVC Pull MVC 引⽤:http://super-apparel-engineer.hatenablog.com/entry/2016/10/11/102637
.7$ͱ ᶃೖྗʢμϝʔδʣ Model View Controller Player Model View Controller Timer
ᶄ5JNFSΛ̎ඵݮΒ͍ͨ͠ ᶅ̎ඵݮΒ͢ ᶆ7JFXʹมߋΛ௨ ᶇλΠϚʔͷඵΛඳը
λΠϚʔΛ࡞Δ 1MBZFSͷϓϩάϥϜΛ࡞Δ ੜ࣌ʹ$POUSPMMFSੜ .PEFMੜ 5JNFSΛݮΒ໋͢ྩ
.7$ͱ 5JNFSͷϓϩάϥϜΛ࡞Δ 7JFX͕ެ։͍ͯ͠Δͷ6QEBUF5JNFϝιου͚ͩ $POUSPMMFS7JFXͱ.PEFMͷհ .PEFMϏδωεϩδοΫΛॻ͍ͯΔ͚ͩ ςετ͕ॻ͚ΔΑ͏ʹͳΔͷ͕ϝϦοτ
.7$ͱ ᶃೖྗʢμϝʔδʣ Model View Controller Player Model View Controller Timer
ᶄ5JNFSΛ̎ඵݮΒ͍ͨ͠ ᶅ̎ඵݮΒ͢ ᶆ7JFXʹมߋΛ௨ ᶇλΠϚʔͷඵΛඳը .PEFM͕มߋ͞Εͨ࣌Ͳ͏ͬͯ$POUSPMMFSʹ௨͢Δͷʁ Ͳ͏ͬͯ1MBZFSͷ$POUSPMMFS͔Β5JNFSͷ.PEFMͷࢀরΛͱͬͯ͘Δͷʁ
.7$ͱ Ͳ͏ͬͯ1MBZFSͷ$POUSPMMFS͔Β5JNFSͷ.PEFMͷࢀরΛͱͬͯ͘Δͷʁ Model View Controller Model View Controller Player Timer
GameModel .PEFMͷࢀরΛ౷ׅ͢ΔΫϥε γϯάϧτϯͰӡ༻͢Δ߹͕ଟ͍
γϯάϧτϯͱ GameModelがそれぞれのインスタンスを持っている Staticなのでゲームモデル⽣成時にInstanceも⽣成 GameModel.Instanceで参照をとってこれる これで他のゲームオブジェクトのModelをいじれるようになった
.7$ͱ ᶃೖྗʢμϝʔδʣ Model View Controller Player Model View Controller Timer
ᶄ5JNFSΛ̎ඵݮΒ͍ͨ͠ ᶅ̎ඵݮΒ͢ ᶆ7JFXʹมߋΛ௨ ᶇλΠϚʔͷඵΛඳը .PEFM͕มߋ͞Εͨ࣌Ͳ͏ͬͯ$POUSPMMFSʹ௨͢Δͷʁ
*0CTFSWFSͱ .PEFM͕มߋ͞Εͨ࣌Ͳ͏ͬͯ$POUSPMMFSʹ௨͢Δͷʁ "0CTFSWFSύλʔϯΛ͏ Subject Observer ᶃΠϕϯτͷൃߦ ᶄΠϕϯτͷߪಡ ͕มߋ͞ΕͨΑʂ௨ग़͢ ͦͷͰ7JFXΛมߋ͢ΔΑ͏ʹઌʹॲཧ ొ͠ͱ͔͘Β࣮ߦͯ͠Ͷʂ
*0CTFSWFSͱ TimerView TimerModel TimerController ˢ0O6QEBUF5JNF ʹͳͬͯΔ ˢ5JNFS$POUSPMMFSͷίϯετϥΫλͰ 4VCTDSJCF ߪಡ ॲཧͷొ
Λ͍ͯ͠Δ 4VCKFDU Πϕϯτൃߦଆ Λ࡞Δˠ *PCTFSWBCMFͰ4VCTDSJCFΛެ։͍ͯ͠Δˠ 4VCKFDU0O/FYU Ͱ௨Λग़͍ͯ͠Δˠ
*0CTFSWFSͱ ͜Εɺ͍ΘΏΔ3Y 3FBDUJWF&YUFOUJPOT తͳߟ͑ํʹͳ͍ͬͯ͘ΜͰ͚͢Ͳ 6OJUZʹඪ४Ͱ࣮͞Ε͍ͯΔͷʹ4VCKFDUͱ͔͕ͳ͍ʢࣗલͰ࣮͠ͳ͍ͱ͍͚ͳ͍ʣ ʢFWFOUͱ͔EFMFHBUFͱ͔͋Δͦͬͪ͠ͰͰ͖Δ͚Ͳ6OJ3YΛਪ͍ͨ͠ʣ IUUQTHJUIVCDPNOFVFDD6OJ3YSFMFBTFTEPXOMPBE6OJ3YVOJUZQBDLBHF ͜ͷϥΠϒϥϦɺ4VCKFDU͔Β3FBDUJWF1SPQFSUZɺ.FTTBHF#SPDLFSɺͦͷଞॾʑ࣮͞Ε͍ͯΔͷͰɺ σβΠϯύλʔϯͷษڧΛͯ͠ɺਖ਼ղΛ͜ͷϥΠϒϥϦͰ͑߹Θͤ͢Δͷ͍͍͔
*0CTFSWFSͱ ͜ͷϥΠϒϥϦͷ࡞ऀOFVF͞Μ • 6OJ5BTL • .BHJD0OJPO • .BTUFS.FNPSZ • ;4USJOH
.7$ͱ ᶃೖྗʢμϝʔδʣ Model View Controller Player Model View Controller Timer
ᶄ5JNFSΛ̎ඵݮΒ͍ͨ͠ ᶅ̎ඵݮΒ͢ ᶆ7JFXʹมߋΛ௨ ᶇλΠϚʔͷඵΛඳը 0CTFSWFS γϯάϧτϯ ࣮Ͱ͖ͨ
*0CTFSWFSͱ
*0CTFSWFSͱ ·ͱΊ • ڞಉ։ൃ͢ΔͨΊʹɺΞʔΩςΫνϟʢ.7$ͳͲʣ͕ඞཁͳ߹͕͋Δɻ • ΞʔΩςΫνϟΛ࡞ͬͨ͜ͱʹΑͬͯԿ͔͕Ͱ͖ͳ͘ͳΔ࣌ɺσβΠϯύλʔϯͰղܾͰ͖Δ͔ߟ͑Δ • ΦϒδΣΫτͷৼΔ͍Λߟ͑ͯίʔυΛॻ͘ • ͜ͷΦϒδΣΫτ͕͢Δ͖ͳͷදࣔɻϩδοΫ͖࣋ͭͰͳ͍ͱ͔ɻ
• γϯάϧτϯΛͬͯΈΔ • ͍ํ༻్ଞʹ͋Δ͚Ͳɺଟ༻ېࢭ • ΦϒβʔόύλʔϯΛͬͯΈΔ • ͍ॴΛߟ͑ͳ͍ͱεύήοςΟίʔυʹͳΔ߹͕͋Δ • ͬͯ์ஔ͍ͯ͠ΔͱϝϞϦϦʔΫ͢ΔՄೳੑ͕͋Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
6OJ5BTL 6OJ3Y"TZOD ඇಉظͷϥΠϒϥϦ • *FOVNFSBUPSͷΘΓ • BXBJUBTZODͰ੍ޚͰ͖Δ6OJ5BTLΛൃߦͰ͖Δ $PSPVUJOF 6OJ5BTL ΫϦοΫͪΛBXBJUͰ͖Δ
888ΛBXBJUͰ͖Δ $PSPVUJOFΛBXBJUͰ͖Δ
6OJ5BTL 6OJ3Y"TZOD ଞʹ͍Ζ͍ΖͱBXBJUͰͭ͜ͱ͕Ͱ͖Δ 4UBUF͕USVFͷؒͭ ͕มԽ͢Δ·Ͱͭ ෳͷ6OJ5BTLΛͭ Ωϟϯηϧॲཧ͕ΊΜͲ͍͘͞σϝϦοτ͋Δʜ $PSPVUJOFͩͱ.POPCFIBWJPVS͔Β͔͠ىಈͰ͖ͳ͍͚Ͳɺ 6OJ5BTLͦ͏͡Όͳ͍͔ΒΩϟϯηϧࢭΊΔλΠϛϯάΛ ཧ͠ͳ͚ΕͳΒͳ͍ɻ
ޮΑ͘ͳΔ͚ͲɺϝϞϦϦʔΫͷՄೳੑ্͕Δ
%* %FQFOEFODZ*OKFDUJPO ઃܭਤΛίϯςφʹ͓ͯ͘͠ Container PlayerView PlayerController ᶃ1MBZFS$POUSPMMFSΛίϯςφʹొʂ ᶄ1MBZFS$POUSPMMFS͍ͩ͘͞ʂ ᶅͲ͏ͧʂ
%* %FQFOEFODZ*OKFDUJPO ˢઃܭਤΛίϯςφʹ͓ͯ͘͠ <*OKFDU>Ͱ1MBZFS$POUSPMMFSΛˠ ड͚औΔ ࣗͰੜ͠ͳͯ͘Α͘ͳΔ ϝϦοτ • ςετ͕ॻ͖͘͢ͳΔ •
Πϯελϯεͷཧ͕͘͢͠ͳΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ