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
私とUnityとLINQと
Search
RyotaMurohoshi
December 20, 2014
Technology
0
28
私とUnityとLINQと
# 私とUnityとLINQと
## @RyotaMurohoshi
### 2014/12/20 プログラミング生放送勉強会 第32回
※もともとはSlideShareで公開していた資料です
RyotaMurohoshi
December 20, 2014
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
370
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
630
Odin Validationはいいぞ!
ryotamurohoshi
2
860
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.3k
Unityでも、新しいC#
ryotamurohoshi
0
1.2k
Riderはいいぞ!
ryotamurohoshi
1
3.2k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.2k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
36k
ImportedLinqのススメ
ryotamurohoshi
0
1.3k
Other Decks in Technology
See All in Technology
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
130
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
520
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
310
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
180
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
400
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
150
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1k
Featured
See All Featured
Building Applications with DynamoDB
mza
90
6.1k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Code Review Best Practice
trishagee
64
17k
A Philosophy of Restraint
colly
203
16k
What's in a price? How to price your products and services
michaelherold
243
12k
Embracing the Ebb and Flow
colly
84
4.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Transcript
࣭Ͱ͢ʂ
Unity ͍ͬͯΔํʁ
C# όϦόϦ͍ͬͯΔํʁ
LINQ ͬͯͨํʁ
LINQ ͍ͬͯΔํʁ
͋Γ͕ͱ͏͍͟͝·͢
ࢲͱUnityͱLINQͱ @RyotaMurohoshi 2014/12/20&ϓϩάϥϛϯάੜ์ૹษڧձ&ୈ32ճ
͖ͬ͞LINQͷͰ·ͨ͠Ͷ (※ࠓɺLINQ&to&Objectsͷ͔͠͠·ͤΜɻ)
͓͞Β͍
LINQΛ͏ͱͳʹ͕͍͍͔
ίʔυ͕؆ܿʹͳΔɻಡΈ͘͢ͳΔɻ
͏ͪΐͬͱݴ͏ͱɺ ྻɺϦετɺσΟΫγϣφϦ ͜ΕΒͳͲΛѻ͏ίʔυ͕ ؆ܿʹͳΔɻಡΈ͘͢ͳΔɻ
ΠϝʔδΘ͖·͢ʁ
RPGͷϓϨΠϠʔΛ࢘Δɺ͜ΜͳΫϥε͕͋Δͱͯ͠ɺ public class Player { public int HP { get;
set; } public string Name { get; set; } /* ଞͳΜ͔͍Ζ͍Ζ */ }
ࢮΜͰ͍Δ(HP͕0ҎԼ)ͷ ϓϨΠϠʔͷΛ͑Α͏ʂ
Ͳ͏ॻ͘ʁ
LINQΛ͏ͱίʔυ͕͘ͳΔʂ ͑Δ෦6ߦ // LINQΛΘͳ͍ͱ List<Player> playerList = GetPlayerList (); int
deadPlayerCount = 0; foreach (Player player in playerList) { if(player.HP <= 0) { deadPlayerCount++; } }
LINQΛ͏ͱίʔυ͕͘ͳΔʂ ͨͬͨ1ߦʹʂ͍ʂ // LINQΛ͏ͱ List<Player> playerList = GetPlayerList (); int
deadPlayerCount = playerList.Count (player => player.HP <= 0);
LINQΛ͏ͱίʔυ͕͘ͳΔʂ // LINQΛΘͳ͍ͱ int deadPlayerCount = 0; foreach (Player player
in playerList) { if(player.HP <= 0) { deadPlayerCount++; } } // LINQΛ͏ͱ int deadPlayerCount = playerList.Count (player => player.HP <= 0);
ѹత͡Όͳ͍͔ʂ
͍͚ͩ͡Όͳ͍ʂ ಡΈ͍͢ʂ
͖ͬ͞ͷ2ͭͷίʔυ ԿΛ͍ͯ͠Δͷ͔ௐΔ࣌ Ͳ͏ಡΉͷ͔ʁ
͜ͷίʔυɺͲ͏ಡΈ·͢ʁ // LINQΛΘͳ͍ͱ List<Player> playerList = GetPlayerList (); int deadPlayerCount
= 0; foreach (Player player in playerList) { if(player.HP <= 0) { deadPlayerCount++; } }
intܕͷdeadPlayerCountΛ0ͰॳظԽ foreachจͰplayerListΛ·Θ͢ ͠ཁૉͷplayerͷHP͕0ҎԼͳΒ deadPlayerCountΛΠϯΫϦϝϯτ
͋ɺͭ·Γʂ HP͕0ҎԼͷϓϨΠϠʔΛ͑Δͷ͔ʂ
ͬͯͳΔ 1ճ಄ͷதͰม͕ඞཁ
ҰํLINQʁͲ͏ಡΈ·͢ʁ // LINQΛ͏ͱ int deadPlayerCount = playerList.Count (player => player.HP
<= 0);
intܕͷdeadPlayerΛ࣍ͷͰॳظԽ͠Ζʂ playerListͷ࣍ͷ݅Λຬͨ͢ཁૉͩʂ ݅ཁૉͷHP͕0ҎԼͩʂ
΄΅ҙຯతʹɺ ʮHP͕0ҎԼͷϓϨΠϠʔΛ͑Ζʂʯ ࠨ͔ΒӈʹૉʹಡΊΔʂ
foreachจɺifจͷ ʮͲ͏ॲཧ͍ͯ͠Δ͔ʯ͕ॻ͔Ε͍ͯΔ LINQͰॻ͔Εͨͷ ʮԿ͕͍͔ͨ͠ʯ͕ॻ͔Ε͍ͯΔ
Ͳ͏Ͱ͔͢ʁ͜Μͳײ͡Ͱɺ ྻɺϦετɺσΟΫγϣφϦͳͲΛ ѻ͏ίʔυ͕͘ಡΈ͘͢ॻ͚·͢Αʂ
LINQ͍͍Ͱ͠ΐʂ
ୈ̍෦ɺ
ࠓͷςʔϚɺʮࢲͱUnityͱLINQͱʯ Unityͷͯ͠ͳ͍ʂ
ͯ͞ɺUnityίϛϡχςΟͰͷLINQ ͋Μ·Γྲྀߦͬͯͳ͍ؾ͕͠·͢ ͍ɺษڧձͰLINQ͍ͬͯΔਓͬͯฉ͘ͱ ͍ͬͯΔਓͷׂ߹͕গͳ͍ΜͰ͢
ཧ༝ͦͷ1 ͍ΖΜͳਓ͕UnityΛ͏͔Β
ୈ2෦ɺॳֶऀͱLINQ
Unity͍Ζ͍Ζ֮͑Δ͜ͱ͕͋Δ ಛʹϓϩάϥϛϯάॳΊͯͱ͍͏ਓ ͍Ζ͍ΖΒͳ͍ͱ͍͚ͳ͍ ·͊ɺLINQޙճ͠ʹͳΔͷํͳ͍ʁ
͋ͱɺ LINQΛ͔ͬ͠ΓཧղͦΜͳʹ؆୯͡Όͳ͍ ʮC#ͷؔ࿈ݴޠཁૉ͕ଟ͍͔Βʯ
• σϦήʔτ • ಗ໊ؔ"(ΠϯϥΠϯͳࣜ"or"εςʔτϝϯτ) • ϥϜμࣜͷॻ͖ํ • ڞ௨σϦήʔτܕ • ԆධՁ
• ֦ுϝιου • ੩తΫϥε • δΣωϦοΫ"(ͳΫϥεɺΠλʔϑΣʔεɺϝιου)" • ܕਪ • IEnumerable<T>ͱ"IEnumerator<T>
• yield • ಗ໊ܕ
͍ɺશ෦શʹཧղ͠ͳ͍͍͚ͯ͘Ͳ ͱΓ͋͑ͣग़͖ͯ·͢
ಛʹ࣍ͷͱಉ࣌ʹษڧͯ͠ʮΘ͔ΜͶʔʯ ͯͳΔਓ͕ଟ͍ؾ͕͠·͢ • σϦήʔτ • ϥϜμࣜͷॻ͖ํ • ڞ௨σϦήʔτܕ
͍ͯ͏͔ࢲͰ͢
·ͣLINQͷϝϦοτ ʮ͘ಡΈ͘͢ͳΔʯ Λ͑Δͷ͕େࣄͩͱࢥ͍ͬͯ·͢
͋·ΓC#Λৄ͘͠ͳ͍ਓʹLINQΛڭ͑Δࡍɺ • Where • Select ࠷ॳͷϝιου͕͜ΕϕετͰͳ͍ͱࢥ͍·͢ɻ
• ԆධՁ • IEnumerable<T> Λಉ࣌ʹڭ͑ͳ͍ͱ͍͚ͳ͍͔Β
ٯʹC#ΊͬͪΌৄ͍͠ਓʹͳΒ WhereͱSelect͕ྑ͍ͱࢥ͍·͢ʂ
ڭ͑ΔͷͳΔ͘ಉ࣌Ͱͳ͘ɺ ͻͱͭͣͭʂ
ͱ͜ΖͰ
ຊAndroidͷձUnity෦ΑΓ C87ʹͯUNIBOOK2 500ԁͰൢച͠·͢ (CD$or$όνϟʔνέοτ)
ࢲUNIBOOK2ʹॻ͖·ͨ͠ ͙͑͢ΔΦεεϝ!LINQ!ϝιου!4!બ
͋͑ͯͳΔ͘C#ͷݴޠཁૉΛొͤͣ͞ɺ ࣍ͷϝιουΛհ Count Any All First
UNIBOOK2͓ئ͍͠·͢ʂ ͍ΖΜͳςʔϚ͕Γͩ͘͞Μʂ ͜͏͝ظʂ ৄ͘͠ຊAndroidͷձUnity෦ͷϖʔδͰʂ
ୈ̎෦ɺ
LINQษڧ͍ͨ͠ͳΒ ྑ͍ຊ͍ͬͺ͍͋Γ·͢Αʂ ࢲ͕ʮ·ͣɺ͜͏͍͏ͷ͕͋ͬͨΒʯͱ͍͏ຊΛॻ͖·ͨ͠
ୈ̏෦ɺUnityͱiOSͱLINQ
Unity+iOSͩͱɺ͍Ζ͍Ζ͋ͬͯ ಥવΤϥʔʹͳΔ͜ͱ͕͋Γ·͢ (*AOTίϯύΠϧؔ࿈)
೦ͳ͕ΒLINQͳΓ·͢
ͭΒ͍
UnityͰ͋Μ·ΓLINQ͕ྲྀߦ͍ͬͯͳ͍ʁ ཧ༝ͦͷ2 iOSͩͱࢮ͵͜ͱ͕͋Δ͔Β
ͭΒ͍
ͦΕΛղܾ͍ͨ͠ʂ ͦΕ͕ඪͳϥΠϒϥϦΛ࡞ʂ ·ͩϕʔλͰ͢ʂʂʂ
UniLinq
ଓ͖ɺC#ΞυΧϨͰʂ
ࢲͱUnityͱLINQͱ @RyotaMurohoshi 2014/12/20&ϓϩάϥϛϯάੜ์ૹษڧձ&ୈ32ճ