SlideShare a Scribd company logo
私とUnityとLINQと
@RyotaMurohoshi
2014/12/20&プログラミング生放送勉強会&第32回
質問です!
Unity
使っている方?
C#バリバリ使っている方?
LINQ
知ってた方?
LINQ
使っている方?
ありがとうございます
さっき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いいでしょ!
第1部、完
今日のテーマは、「私と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部のページで!
第2部、完
LINQ勉強したいなら
良い本はいっぱいありますよ!
私が「まず、こういうのがあったら」という本を書きました
第3部、UnityとiOSとLINQ
Unity+iOSだと、いろいろあって
突然エラーになることがあります
(*AOTコンパイル関連)
残念ながらLINQもなります
つらい
UnityであんまりLINQが流行っていない?
理由その2
iOSだと死ぬことがあるから
つらい
それを解決したい!
それが目標なライブラリを作成!
まだベータです!!!
UniLinq
続きは、C#アドカレで!
私とUnityとLINQと
@RyotaMurohoshi
2014/12/20&プログラミング生放送勉強会&第32回

More Related Content

PDF
「LINQ」っていう名前だけでも 覚えて帰ってください!
Ryota Murohoshi
 
PDF
UnityでのLINQ活用例
Ryota Murohoshi
 
PDF
Fluentとmongoで作るサービス
直也 堀松
 
PDF
リファクタリング勉強会 第2回
ikikko
 
PPTX
他人が書いたコードのリファレンスをSphinxで作る方法
Takeshi Sugiyama
 
PDF
LORPG(Linked Open RPG)とは何か?
Keisuke NAKAMURA
 
PDF
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
Hisao Soyama
 
ODP
カードゲームで学ぶテキストエディタ
Shougo
 
「LINQ」っていう名前だけでも 覚えて帰ってください!
Ryota Murohoshi
 
UnityでのLINQ活用例
Ryota Murohoshi
 
Fluentとmongoで作るサービス
直也 堀松
 
リファクタリング勉強会 第2回
ikikko
 
他人が書いたコードのリファレンスをSphinxで作る方法
Takeshi Sugiyama
 
LORPG(Linked Open RPG)とは何か?
Keisuke NAKAMURA
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
Hisao Soyama
 
カードゲームで学ぶテキストエディタ
Shougo
 

What's hot (20)

PPTX
Seq2Seqでボットづくり
Masato Fujitake
 
PDF
本気でPythonで宛名書きした話
Satoshi Yamada
 
PDF
Phpインタフェースについて
Hirokazu Katagiri
 
PDF
正しいプログラミング言語の覚え方
Kimikazu Kato
 
PDF
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
 
PDF
Node.js 奮闘日記
sasaron 397
 
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 
PPTX
Pythonでターミナルに画像表示
Masato Fujitake
 
PDF
LINQ、Select連弾ってやります?
Ryota Murohoshi
 
PDF
Code for iizukaとオープンデータ
Kindai University
 
PDF
S10 t1 spc_by_nowfromnow
Takeshi Akutsu
 
PPTX
クラーク創立25周年記念文化祭 秋葉原Ga専攻
Kentaro Abe
 
PDF
20160519 機械学習についてふわっと解説してみた
Urara Enomoto
 
PPTX
191208 python-kansai-nishimoto
Takuya Nishimoto
 
PPT
Lt python腕試しネタ
kiwofusi
 
PPTX
ググリワードを探す話
toru ishikawa
 
PPTX
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
 
PDF
ハードウェアエンジニアとRuby
hiroyuki kotera
 
PDF
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
infinite_loop
 
PDF
CombGuide
Ryu Ishii
 
Seq2Seqでボットづくり
Masato Fujitake
 
本気でPythonで宛名書きした話
Satoshi Yamada
 
Phpインタフェースについて
Hirokazu Katagiri
 
正しいプログラミング言語の覚え方
Kimikazu Kato
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
 
Node.js 奮闘日記
sasaron 397
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 
Pythonでターミナルに画像表示
Masato Fujitake
 
LINQ、Select連弾ってやります?
Ryota Murohoshi
 
Code for iizukaとオープンデータ
Kindai University
 
S10 t1 spc_by_nowfromnow
Takeshi Akutsu
 
クラーク創立25周年記念文化祭 秋葉原Ga専攻
Kentaro Abe
 
20160519 機械学習についてふわっと解説してみた
Urara Enomoto
 
191208 python-kansai-nishimoto
Takuya Nishimoto
 
Lt python腕試しネタ
kiwofusi
 
ググリワードを探す話
toru ishikawa
 
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
 
ハードウェアエンジニアとRuby
hiroyuki kotera
 
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
infinite_loop
 
CombGuide
Ryu Ishii
 
Ad

Viewers also liked (6)

PPTX
C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~
Fujio Kojima
 
PDF
【Unity】気づいたら加わっていたあいつ【もくもく】
Ryota Murohoshi
 
PPTX
Unityでlinqを使おう
Yuuki Takada
 
PDF
知って得するC# LINQ to Objects編
Shota Baba
 
PDF
UnityでC#6.0が使える未来がそろそろ来そう!
Ryota Murohoshi
 
PDF
LINQ in Unity
Yoshifumi Kawai
 
C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~
Fujio Kojima
 
【Unity】気づいたら加わっていたあいつ【もくもく】
Ryota Murohoshi
 
Unityでlinqを使おう
Yuuki Takada
 
知って得するC# LINQ to Objects編
Shota Baba
 
UnityでC#6.0が使える未来がそろそろ来そう!
Ryota Murohoshi
 
LINQ in Unity
Yoshifumi Kawai
 
Ad

Similar to 私とUnityとLINQと (13)

PDF
UnityでC#を勉強しはじめた私の主張
Ryota Murohoshi
 
PDF
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
 
PDF
非.NETerに向けたLINQの紹介
宏章 大橋
 
PPTX
LINQ概要
ShinichiAoyagi
 
PDF
An Internal of LINQ to Objects
Yoshifumi Kawai
 
PDF
LINQソースでGO!
Kouji Matsui
 
PPTX
LINQ の概要とかもろもろ
ShinichiAoyagi
 
PPTX
C#を始めたばかりの人へのLINQ to Objects
Fumitaka Yamada
 
PPTX
Linqの速度測ってみた
Core Concept Technologies
 
PDF
Linq To Fun
deflis
 
PDF
Final LINQ Extensions
Kouji Matsui
 
PPTX
Boost17 cpplinq
miki_hirofumi
 
PDF
JXUGのLTだけれどもUnity+iOS+LINQの話をしようと思う!
Ryota Murohoshi
 
UnityでC#を勉強しはじめた私の主張
Ryota Murohoshi
 
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
 
非.NETerに向けたLINQの紹介
宏章 大橋
 
LINQ概要
ShinichiAoyagi
 
An Internal of LINQ to Objects
Yoshifumi Kawai
 
LINQソースでGO!
Kouji Matsui
 
LINQ の概要とかもろもろ
ShinichiAoyagi
 
C#を始めたばかりの人へのLINQ to Objects
Fumitaka Yamada
 
Linqの速度測ってみた
Core Concept Technologies
 
Linq To Fun
deflis
 
Final LINQ Extensions
Kouji Matsui
 
Boost17 cpplinq
miki_hirofumi
 
JXUGのLTだけれどもUnity+iOS+LINQの話をしようと思う!
Ryota Murohoshi
 

More from Ryota Murohoshi (11)

PDF
【ハピバ】未来に備えたKotlin、大好きだぜ!【Kotlin 1.0】
Ryota Murohoshi
 
PDF
「var禁止」禁止
Ryota Murohoshi
 
PDF
Javaのバージョニング問題の話しよっか
Ryota Murohoshi
 
PDF
C#のList_TがIListを実装している件
Ryota Murohoshi
 
PDF
どうしてこのコードエラーになるんですか?
Ryota Murohoshi
 
PDF
広告ネイティブプラグインの辛かった話しよっか
Ryota Murohoshi
 
PDF
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
 
PDF
T4使ってみた
Ryota Murohoshi
 
PDF
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
Ryota Murohoshi
 
PDF
共変戻り値型って知ってますか?
Ryota Murohoshi
 
PDF
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
Ryota Murohoshi
 
【ハピバ】未来に備えたKotlin、大好きだぜ!【Kotlin 1.0】
Ryota Murohoshi
 
「var禁止」禁止
Ryota Murohoshi
 
Javaのバージョニング問題の話しよっか
Ryota Murohoshi
 
C#のList_TがIListを実装している件
Ryota Murohoshi
 
どうしてこのコードエラーになるんですか?
Ryota Murohoshi
 
広告ネイティブプラグインの辛かった話しよっか
Ryota Murohoshi
 
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
 
T4使ってみた
Ryota Murohoshi
 
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
Ryota Murohoshi
 
共変戻り値型って知ってますか?
Ryota Murohoshi
 
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
Ryota Murohoshi
 

Recently uploaded (10)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

私とUnityとLINQと