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
LINQ、Select連弾ってやります?
Search
RyotaMurohoshi
April 11, 2015
Technology
1
36
LINQ、Select連弾ってやります?
2015/04/11のJXUG第4回で発表した資料です
RyotaMurohoshi
April 11, 2015
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
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
13k
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
180
AGIについてChatGPTに聞いてみた
blueb
0
130
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
1
300
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
130
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
120
電話を切らさない技術 電話自動応答サービスを支える フロントエンド
barometrica
1
110
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
240
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
180
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
100
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
2
560
Featured
See All Featured
Site-Speed That Sticks
csswizardry
0
33
Raft: Consensus for Rubyists
vanstee
136
6.6k
Designing the Hi-DPI Web
ddemaree
280
34k
It's Worth the Effort
3n
183
27k
Rails Girls Zürich Keynote
gr2m
94
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Building an army of robots
kneath
302
43k
Writing Fast Ruby
sferik
627
61k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Transcript
LINQɺSelect࿈ͬͯΓ·͢ʁ ʲreferencesourceʳ ྄ࣨଠ 2015/04/11())ୈ4ճ)Japan)Xamarin)User)Group)Conference
͍͢·ͤΜ
Xamarin.iOSͱXamarin.Androidͷ
͠·ͤΜʂ
͓લͩΕΑʁ • ໊લ":"྄ࣨଠ • ࣄ":"UnityͰήʔϜ։ൃ • Twi+er":"@RyotaMurohoshi • ߘઌ":"h+p:/ /qiita.com/RyotaMurohoshi
UnityΫϥελ͔Βདྷ·ͨ͠ʂ
ʮUnityͩͱLINQ͕݁ߏམͪͯਏ͍Αʂʯ ͍ͬͯ͏LTΛҎલͨ͠ऀͰ͢ɻ JXUGͷษڧձͰɺ͜ΜͳΛ͍͍ͤͯͨͩͯ͋͞Γ͕ͱ͏͍͟͝·͢ɻ
ͱ͍͏͜ͱͰࠓ Xamarin.iOSXamarin.Android ͷ͠·ͤΜɻ
ͯ͞ɺLINQ࠷ߴͰ͢ΑͶ
લ͓͍͍ͤͯͨͩͨ͞௨Γ Unityͩͱ݁ߏLINQ͕མͪ·ͨ͠ ݪҼAOTίϯύΠϥؔ࿈ͷΤϥʔɻԿ͕ਏ͍ͬͯiOS͚ͩམͪΔ
ͭΒ͍
ͳͷͰ࡞Γ·ͨ͠ɻ ʮUniLinqʯͱ͍͏ɺUnityͰ͑Δ LINQޓϥΠϒϥϦ(β)
UniLinqmono/monoͷLINQͷίʔυ Λϕʔεʹ͍͔ͭ͘खΛՃ͑࡞Γ·ͨ͠ UnityͷUnity&Technologies/monoͷLINQͷίʔυͱൺ AOTίϯύΠϧؔ࿈Τϥʔରࡦ͕͔ͳΓ͞Ε͍ͯ·ͨ͠
ͯ͞ɺ͜͜·ͰલৼΓͰ͢
͋Δɺࣄ͕݅ى͖·ͨ͠
ʮ͋ΕɺmonoͷϦϙδτϦʹ LINQ%to%Objectsͷίʔυ͕ͳ͍ʯ h"ps:/ /github.com/mono/mono/blob/master/mcs/class/System.Core/System.Linq/Enumerable.cs
ͳɺΜͩͱɽɽɽɽ
ຊͷλΠτϧ
LINQɺSelect࿈ͬͯΓ·͢ʁ ʲreferencesourceʳ
referencesource
referencesource
referencesource
ͦ͏Ͱ͢ͶɻLINQͷίʔυɺ referencesourceʹஔ͖ΘͬͨΜͰ͢Ͷ issueίνϥ%h'ps:/ /github.com/mono/mono/pull/1477ɹ
referencesource h"ps:/ /github.com/Microso2/referencesource h"p:/ /www.mono+project.com/docs/about+mono/dotnet+integra8on/
referencesourceͷLINQͷίʔυɺ ͱͯݟ͍ͯͯ໘ന͍Ͱ͢ɻྫ͑ɺWhereͱSelectͷ࿈
ಡΈͣΒ͘ͳ͍Ͱ͔͢ʁ List<A> aList = LoadList (); IEnumerable<D> dList = aList
.Select (a => CovetCtoD( CovetBtoC( ConvertAtoB( a ) ) ) );
ͬͪ͜ͷํ͕͖Ͱ͢ɻ࿈ʂ List<A> aList = LoadList (); IEnumerable<D> dList = aList
.Select (a => CovetAtoB(a)) .Select (b => CovetBtoC(b)) .Select (c => CovetCtoD(c));
͜͏ॻ͚·͢Ͷɺ࿈ʂ List<A> aList = LoadList (); IEnumerable<D> dList = aList
.Select (CovetAtoB) .Select (CovetBtoC) .Select (CovetCtoD);
ΦʔόʔϔουؾʹͳΓ·͢ʁ referencesource൛Ͱରࡦ͞Ε͍ͯ·͢ʂ
Whereͱ͔SelectΛޮΑ͘ΔͨΊʹ EnumerableΫϥεʹ෦Ϋϥε܈͕ఆٛ͞Ε͍ͯΔ • WhereSelectEnumerableIterator • WhereSelectArrayIterator • WhereSelectListIterator ͳͲ
Έͳ͞ΜͳΒɺଟίʔυݟͨํ͕ૣ͍Ͱ͢ h"ps:/ /github.com/Microso2/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs ɹ ͋ͱɺneue͞Μ͕ͱͬͯΘ͔Γ͘͢·ͱΊΒΕ͍ͯ·͢ h"p:/ /www.slideshare.net/neuecc/an3internal3of3linq3to3objects329200657
͓ଋ Xamarin͍͍ͳ͊ʙ Unityʹૣ͘དྷͳ͍͔ͳ͊ʙ
·ͱΊ • monoͷίʔυɺreferencesourceΛΨϯΨϯ׆༻͍ͯ͠·͢Ͷ • referencesourceͷLINQͷίʔυ໘ന͍Ͱ͢Α • WhereSelectͷ࿈ɺಡΈ͚͢Ε͍͍ͬͯͱࢥ͍·͢
ऄ Unityʹ৽ొͨ͠IL2CPPͰɺUniLinq͍Βͳ͍ࢠʁ