SlideShare a Scribd company logo
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.iOSもXamarin.Android
の話はしません。
さて、LINQ最高ですよね
前もお話させていただいた通り
Unityだと結構LINQが落ちました
原因はAOTコンパイラ関連のエラー。何が辛いってiOSだけ落ちる
つらい
なので作りました。
「UniLinq」という、Unityでも使える
LINQ互換ライブラリ(β)
UniLinqはmono/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 
referencesourceh"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のコード面白いですよ
• WhereやSelectの連弾、読みやすければやっていいと思います
蛇足
Unityに新登場したIL2CPPで、UniLinqいらない子?

More Related Content

PPTX
未来のプログラミング技術をUnityで -UniRx-
PDF
どうしてこのコードエラーになるんですか?
PPTX
【Unity道場スペシャル 2017札幌】おっさんでも美少女になれる?!VRアイドルの作り方
PPTX
若輩エンジニアから見たUniRxを利用したゲーム開発
PDF
Interactive UI with UniRx
PDF
Unityと.NET
PDF
UniRx完全に理解した
PPTX
PhotonCloudで一ヶ月ゲーム作った話
未来のプログラミング技術をUnityで -UniRx-
どうしてこのコードエラーになるんですか?
【Unity道場スペシャル 2017札幌】おっさんでも美少女になれる?!VRアイドルの作り方
若輩エンジニアから見たUniRxを利用したゲーム開発
Interactive UI with UniRx
Unityと.NET
UniRx完全に理解した
PhotonCloudで一ヶ月ゲーム作った話

What's hot (20)

PDF
Unityで意外と簡単・・・だけど難しいVRコンテンツ
PDF
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
PPTX
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
PDF
Unity での asset bundle による追加コンテンツの扱い方
PDF
こんなに違う!Unityアプリケーション講座
PDF
Unityのasset bundle運用実例@lordofknights
PDF
ゆるロボ製作所開発事例 – ドローコール削減
PPTX
Unity * スマートフォン開発で学んだこと
PDF
【Unity道場スペシャル 2018仙台】Unityでステージをつくるのじゃ
PPTX
Unity ゲーム開発
PPTX
ポコロンダンジョンズを彩るアニメーションノウハウ
PPTX
UE4ローカライズ事例 (UE4 Localization Deep Dive)
PDF
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
PPTX
開発費0円でニコニコ生放送を作ってみた
PDF
Linux も動く Microsoft Azure    HoloLens にも対応した次世代マルチプレイミドルウェア〜モノビットエンジンクラウド〜にて採...
PDF
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
PPTX
Unity入門ハンズオン
PDF
モンスターストライクにおける監視システムのあれこれ
PDF
Unityでデスクトップマスコットを作ろう
PDF
Swift Code in Swift - 2日間でゲームを作ってみた
Unityで意外と簡単・・・だけど難しいVRコンテンツ
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
Unity での asset bundle による追加コンテンツの扱い方
こんなに違う!Unityアプリケーション講座
Unityのasset bundle運用実例@lordofknights
ゆるロボ製作所開発事例 – ドローコール削減
Unity * スマートフォン開発で学んだこと
【Unity道場スペシャル 2018仙台】Unityでステージをつくるのじゃ
Unity ゲーム開発
ポコロンダンジョンズを彩るアニメーションノウハウ
UE4ローカライズ事例 (UE4 Localization Deep Dive)
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
開発費0円でニコニコ生放送を作ってみた
Linux も動く Microsoft Azure    HoloLens にも対応した次世代マルチプレイミドルウェア〜モノビットエンジンクラウド〜にて採...
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
Unity入門ハンズオン
モンスターストライクにおける監視システムのあれこれ
Unityでデスクトップマスコットを作ろう
Swift Code in Swift - 2日間でゲームを作ってみた
Ad

Viewers also liked (6)

PDF
.NET系開発者から見たJava
PPTX
C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~
PDF
Locality of Reference
PDF
「var禁止」禁止
PPTX
C#の書き方
PDF
C#でわかる こわくないMonad
.NET系開発者から見たJava
C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~
Locality of Reference
「var禁止」禁止
C#の書き方
C#でわかる こわくないMonad
Ad

More from Ryota Murohoshi (16)

PDF
UnityでC#6.0が使える未来がそろそろ来そう!
PDF
【Unity】気づいたら加わっていたあいつ【もくもく】
PDF
【ハピバ】未来に備えたKotlin、大好きだぜ!【Kotlin 1.0】
PDF
Javaのバージョニング問題の話しよっか
PDF
C#のList_TがIListを実装している件
PDF
広告ネイティブプラグインの辛かった話しよっか
PDF
UnityでC#を勉強しはじめた私の主張
PDF
普段C#を使っている僕から見たKotlin
PDF
T4使ってみた
PDF
UnityでのLINQ活用例
PDF
私とUnityとLINQと
PDF
「LINQ」っていう名前だけでも 覚えて帰ってください!
PDF
JXUGのLTだけれどもUnity+iOS+LINQの話をしようと思う!
PDF
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
PDF
共変戻り値型って知ってますか?
PDF
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
UnityでC#6.0が使える未来がそろそろ来そう!
【Unity】気づいたら加わっていたあいつ【もくもく】
【ハピバ】未来に備えたKotlin、大好きだぜ!【Kotlin 1.0】
Javaのバージョニング問題の話しよっか
C#のList_TがIListを実装している件
広告ネイティブプラグインの辛かった話しよっか
UnityでC#を勉強しはじめた私の主張
普段C#を使っている僕から見たKotlin
T4使ってみた
UnityでのLINQ活用例
私とUnityとLINQと
「LINQ」っていう名前だけでも 覚えて帰ってください!
JXUGのLTだけれどもUnity+iOS+LINQの話をしようと思う!
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
共変戻り値型って知ってますか?
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数

LINQ、Select連弾ってやります?