SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
ML	
  	
  Nagoya	
  
2012/05/26
自己紹介
LINQってなんぞ?
LINQ	
  で何が出来るか。
メソッドチェイン


  string[]#names#=#{#"ニャル子",#"クー子",#    #               #        #
#        #         #"ハス太",#"シャンタッ君",#"まひろ"#};#

 IEnumerable<string>#query2#=#names#

 ##.Where(x#=>#x.Last()#==#‘太’)#

 ##.Select(x#=>#x);#

 foreach#(string#name#in#query2)#{#Console.WriteLine(name);#}#
メソッドチェイン
§ いつものC#の文。	
  
§ ラムダ式をよく使う。	
  
   § 	
  (x)	
  =>	
  Console.WriteLine(x.ToString());	
  
クエリ構文


string[]#names#=#{#"ニャル子",#"クー子",## #    #
#     #       #      "ハス太",#"シャンタッ君",#"まひろ"#};#

IEnumerable<string>#query#=#from#name#in#names#

##########################where#name.Last()#==#' '#

##########################select#name;#

foreach#(string#name#in#query){Console.WriteLine(name);}#

#
§ 用法用量を守って使い分けましょう。
More	
  Effective!

   § LINQ	
  で、More	
  Effective	
  って言ったらなんだろ
      う?	
  
   § Visual	
  Studio	
  11	
  、Windows	
  8もでるよね!	
  
   § Rx(Reactive	
  Extensions)	
  ?	
  
   § Ix	
  …	
  ?	
  
Rx	
  (Reactive	
  Extensions)
公式サイト
§ The	
  Reactive	
  Extensions	
  (Rx)...	
  
§ ...is	
  a	
  library	
  to	
  compose	
  asynchronous	
  and	
  event-­‐based	
  
   programs	
  	
  
§ using	
  observable	
  collections	
  and	
  LINQ-­‐style	
  query	
  
   operators.


ì  The	
  Reactive	
  Extensions	
  (Rx)...	
  

ì  非同期とイベントベースプログラムを組み合わせるライブラリ	
  

ì  観察可能なコレクションとLINQスタイルのクエリ演算子を使う
Rx	
  ってなんぞ?
§ Reactive	
  Extension	
  
§ 非同期処理と、イベント駆動プログラムを、
   observable	
  collection	
  と	
  LINQ	
  のクエリ演算子で扱
   えるようにしたMSのライブラリ。	
  
§ イベントや、時間をシーケンス(連続した列)を
   して考えたものを処理していく。	
  
§ IEnumerable<T>	
  ではなく、IObservable<T>	
  と
   IObserver<T>が使われる。	
  
どうして、Rx	
  があるのか
§ 次期Windows	
  OS(Windows8)では、非同期プログ
   ラミングを強制させられる。	
  
§ C#	
  5.0	
  では、async	
  /	
  await	
  構文が追加。	
  
   § かなり、簡単に非同期処理が書ける。
Rx	
  (IObservable<T>,	
  IObserver<T>)と	
  
今までのLINQ	
  	
  
(IEnumerable<T>,	
  IEnumrator<T>)との違い

§ IEnumerable<T>:	
  	
  元からあるコレクション(集合)を
   処理する	
  

§ IObservable<T>:	
  イベントや、時間、非同期のものを
   処理する。	
  
     §  Observable.Range	
  があるけど…	
  
§ どちらも、LINQ	
  クエリ演算子を使える。	
  
Rx	
  のコード例
    § 今回のRxのサンプルは、よくあるマウスイベント
       の合成です。
var$mousemove$=$Observable.FromEventPattern<MouseEventArgs>(this,$"MouseMove")$
$$.Sample(TimeSpan.FromSeconds(2))$
$$.Merge(Observable.FromEventPattern<MouseEventArgs>(this,$"MouseDown"))$
$$.ObserveOnDispatcher()$
$$.Subscribe($
$$$$x$=> drawSomething(x),$
$$$$ex$=>$Console.Write(ex.Message),$
$$$$()$=>$Console.Write("end")$
$$);$
Rx	
  のコード例
    § 今回のRxのサンプルは、よくあるマウスイベント
       の合成です。
var$mousemove$=$Observable.FromEventPattern<MouseEventArgs>(this,$"MouseMove")$
$$.Sample(TimeSpan.FromSeconds(2))$
               実際に合成しているメソッド
$$.Merge(Observable.FromEventPattern<MouseEventArgs>(this,$"MouseDown"))$
$$.ObserveOnDispatcher()$     UIスレッドで処理をする
$$.Subscribe($
$$$$x$=> drawSomething(x),$     シーケンスが読み込まれた際のメソッド
$$$$ex$=>$Console.Write(ex.Message),$     例外が吐かれた際に呼ばれる
$$$$()$=>$Console.Write("end")$
$$);$                                 シーケンスが読み込み終わった際に呼ばれる
§ C#を使うときに、	
  
  LINQ(IEnumerable)	
  や、	
  
  Rx	
  (IObservable)	
  を使うと、	
  
  プログラミングが楽しくなりますよ!	
  

Mais conteúdo relacionado

Mais procurados

サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
kjwtnb
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Hisateru Tanaka
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
 

Mais procurados (20)

TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
 
xv6から始めるSPIN入門
xv6から始めるSPIN入門xv6から始めるSPIN入門
xv6から始めるSPIN入門
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
Project Loom + Project Panama
Project Loom + Project PanamaProject Loom + Project Panama
Project Loom + Project Panama
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド - Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.spec
 
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
Node native ext
Node native extNode native ext
Node native ext
 
From Java To Clojure
From Java To ClojureFrom Java To Clojure
From Java To Clojure
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
R spec勉強会
R spec勉強会R spec勉強会
R spec勉強会
 
HDCLT
HDCLTHDCLT
HDCLT
 
Postgresql advent calender 2014 using jsonb by ecpg
Postgresql advent calender 2014 using jsonb by ecpgPostgresql advent calender 2014 using jsonb by ecpg
Postgresql advent calender 2014 using jsonb by ecpg
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
 

Destaque

Real Estate Career
Real Estate CareerReal Estate Career
Real Estate Career
hongnormous
 
Copyright!
Copyright!Copyright!
Copyright!
marklemb
 
DCNR Secretary Tour 2011
DCNR Secretary Tour 2011DCNR Secretary Tour 2011
DCNR Secretary Tour 2011
Delaware Nhc
 
Flight power point
Flight power pointFlight power point
Flight power point
lfulcher
 

Destaque (20)

Singularis
SingularisSingularis
Singularis
 
Singularis Lab presentation
Singularis Lab presentationSingularis Lab presentation
Singularis Lab presentation
 
Real Estate Career
Real Estate CareerReal Estate Career
Real Estate Career
 
Copyright!
Copyright!Copyright!
Copyright!
 
DCNR Secretary Tour 2011
DCNR Secretary Tour 2011DCNR Secretary Tour 2011
DCNR Secretary Tour 2011
 
C over
C overC over
C over
 
Leveraging knowledgelevers
Leveraging knowledgeleversLeveraging knowledgelevers
Leveraging knowledgelevers
 
ネット選挙運動解禁への取り組み
ネット選挙運動解禁への取り組みネット選挙運動解禁への取り組み
ネット選挙運動解禁への取り組み
 
Lab' green mung beans2003
Lab' green mung beans2003Lab' green mung beans2003
Lab' green mung beans2003
 
Chapitre1
Chapitre1Chapitre1
Chapitre1
 
ネット選挙運動解禁への取り組み
ネット選挙運動解禁への取り組みネット選挙運動解禁への取り組み
ネット選挙運動解禁への取り組み
 
Knowledgelevers expanded
Knowledgelevers expandedKnowledgelevers expanded
Knowledgelevers expanded
 
地方選挙向けネット活用法
地方選挙向けネット活用法地方選挙向けネット活用法
地方選挙向けネット活用法
 
Flip the Classroom in ELT: Gimmick or Revolution
Flip the Classroom in ELT: Gimmick or RevolutionFlip the Classroom in ELT: Gimmick or Revolution
Flip the Classroom in ELT: Gimmick or Revolution
 
9000 Series Panels Pdf
9000 Series Panels Pdf9000 Series Panels Pdf
9000 Series Panels Pdf
 
Session 1 Tiger Tools Slide Share
Session 1 Tiger Tools Slide ShareSession 1 Tiger Tools Slide Share
Session 1 Tiger Tools Slide Share
 
FUENTES DE ENERGIA
FUENTES DE ENERGIAFUENTES DE ENERGIA
FUENTES DE ENERGIA
 
Power plex
Power plexPower plex
Power plex
 
Flight power point
Flight power pointFlight power point
Flight power point
 
Flight power point
Flight power pointFlight power point
Flight power point
 

Semelhante a MlnagoyaRx02

Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
Oda Shinsuke
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
yancya
 
Lisp batton - Common LISP
Lisp batton - Common LISPLisp batton - Common LISP
Lisp batton - Common LISP
Masaomi CHIBA
 

Semelhante a MlnagoyaRx02 (20)

Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
 
VS勉強会 .NET Framework 入門
VS勉強会 .NET Framework 入門VS勉強会 .NET Framework 入門
VS勉強会 .NET Framework 入門
 
Wtm
WtmWtm
Wtm
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
 
Lisp batton - Common LISP
Lisp batton - Common LISPLisp batton - Common LISP
Lisp batton - Common LISP
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
 
LINQ概要
LINQ概要LINQ概要
LINQ概要
 

MlnagoyaRx02

  • 1. ML    Nagoya   2012/05/26
  • 3.
  • 4.
  • 5.
  • 6.
  • 9. メソッドチェイン string[]#names#=#{#"ニャル子",#"クー子",# # # # # # #"ハス太",#"シャンタッ君",#"まひろ"#};# IEnumerable<string>#query2#=#names# ##.Where(x#=>#x.Last()#==#‘太’)# ##.Select(x#=>#x);# foreach#(string#name#in#query2)#{#Console.WriteLine(name);#}#
  • 11. クエリ構文 string[]#names#=#{#"ニャル子",#"クー子",## # # # # # "ハス太",#"シャンタッ君",#"まひろ"#};# IEnumerable<string>#query#=#from#name#in#names# ##########################where#name.Last()#==#' '# ##########################select#name;# foreach#(string#name#in#query){Console.WriteLine(name);}# #
  • 13. More  Effective! § LINQ  で、More  Effective  って言ったらなんだろ う?   § Visual  Studio  11  、Windows  8もでるよね!   § Rx(Reactive  Extensions)  ?   § Ix  …  ?  
  • 14.
  • 15. Rx  (Reactive  Extensions) 公式サイト § The  Reactive  Extensions  (Rx)...   § ...is  a  library  to  compose  asynchronous  and  event-­‐based   programs     § using  observable  collections  and  LINQ-­‐style  query   operators. ì  The  Reactive  Extensions  (Rx)...   ì  非同期とイベントベースプログラムを組み合わせるライブラリ   ì  観察可能なコレクションとLINQスタイルのクエリ演算子を使う
  • 16. Rx  ってなんぞ? § Reactive  Extension   § 非同期処理と、イベント駆動プログラムを、 observable  collection  と  LINQ  のクエリ演算子で扱 えるようにしたMSのライブラリ。   § イベントや、時間をシーケンス(連続した列)を して考えたものを処理していく。   § IEnumerable<T>  ではなく、IObservable<T>  と IObserver<T>が使われる。  
  • 17. どうして、Rx  があるのか § 次期Windows  OS(Windows8)では、非同期プログ ラミングを強制させられる。   § C#  5.0  では、async  /  await  構文が追加。   § かなり、簡単に非同期処理が書ける。
  • 18. Rx  (IObservable<T>,  IObserver<T>)と   今までのLINQ     (IEnumerable<T>,  IEnumrator<T>)との違い § IEnumerable<T>:    元からあるコレクション(集合)を 処理する   § IObservable<T>:  イベントや、時間、非同期のものを 処理する。   §  Observable.Range  があるけど…   § どちらも、LINQ  クエリ演算子を使える。  
  • 19. Rx  のコード例 § 今回のRxのサンプルは、よくあるマウスイベント の合成です。 var$mousemove$=$Observable.FromEventPattern<MouseEventArgs>(this,$"MouseMove")$ $$.Sample(TimeSpan.FromSeconds(2))$ $$.Merge(Observable.FromEventPattern<MouseEventArgs>(this,$"MouseDown"))$ $$.ObserveOnDispatcher()$ $$.Subscribe($ $$$$x$=> drawSomething(x),$ $$$$ex$=>$Console.Write(ex.Message),$ $$$$()$=>$Console.Write("end")$ $$);$
  • 20. Rx  のコード例 § 今回のRxのサンプルは、よくあるマウスイベント の合成です。 var$mousemove$=$Observable.FromEventPattern<MouseEventArgs>(this,$"MouseMove")$ $$.Sample(TimeSpan.FromSeconds(2))$ 実際に合成しているメソッド $$.Merge(Observable.FromEventPattern<MouseEventArgs>(this,$"MouseDown"))$ $$.ObserveOnDispatcher()$ UIスレッドで処理をする $$.Subscribe($ $$$$x$=> drawSomething(x),$ シーケンスが読み込まれた際のメソッド $$$$ex$=>$Console.Write(ex.Message),$ 例外が吐かれた際に呼ばれる $$$$()$=>$Console.Write("end")$ $$);$ シーケンスが読み込み終わった際に呼ばれる
  • 21. § C#を使うときに、   LINQ(IEnumerable)  や、   Rx  (IObservable)  を使うと、   プログラミングが楽しくなりますよ!