0
Linq to XXXX
第二回 LINQ勉強会
@Posaune
1
自己紹介
Posauneです。@Posauneです。まえかわです。
C#ラブ、F#すげえ、Ruby好き、Powershell好
き、Haskellがんばりたい
京都アジャイル勉強会(#京アジャ)やってま
す。
最近はテストとか品質とかUXとかも...
3
資料は来てから作りました
資料は少ないのでコードを沢山書こうと思い
ます
適宜ツッコミをすることにより初めて成立す
るセッションです
僕もRxは勉強中なので、一緒に勉強しましょ
4
Linq to ...
Linq to Object
メモリ上のデータをクエリする
Linq to XML
XMLテキストをクエリする
Linq to SQL (Entity)
DB上のデータを書く
5
Linq to ...
基本的に、「同じ型のデータが連なって出て
くる」というものならOK
フィルタリング(Where, Take, Skip)
加工(Select)
合成(Zip, SelectMany)
6
同じ型のデータが
連なるもの・・・?
7
Linq to Event
Eventも同じ型のデータが大量に列挙される
だからEventHandlerが使える、ですよね
8
とはいえ。。。
Event は非同期呼び出しなので、IEnumerable
とは本質的に合わない
同期呼び出し(Pull型)
非同期のものをPullで呼ぶと、いつ終わる
かわからないものがメインスレッドに来る
こわい
9
Pull型の呼び出し
10
そこでIObservable!
Push型の列挙を行う
非同期列挙
最初に、「これが起きたらどうするか」を
登録しておき、実際に発生した時に呼び出さ
れる、というイメージ。
11
Push型の呼び出し
12
Reactive Extensions!
IObservable / IObserver は.NET標準クラス
でも、実装したクラスは存在しない!
実装したクラスを簡単に作るのが、Reactive
Extensions
略称:Rx
13
まず基本から
Observableなデータソースをとりあえず作っ
てみる。
Observable.Rangeメソッド
Subject<T>型
14
HotとCold
ObservableにもHotとColdがある
Hot:”動的”なIObservable
何が起こるのかは繋いでみないと
わからない
すべてのつないだものに同じ列挙をPushする
Cold:”静的”なIObservable
つ...
HotとColdは
時間余ったらデモします
16
いよいよEventにつなぐ
Observable.FromEventというのがあるのです
17
Linq to Event
大量のデータをLinq的メソッドチェーンによりさばける
見やすい(鍛えれば)
書きやすい(慣れれば)
イベントの登録・解除も楽に
ラムダでも解除できるよ!
イベントのモックが簡単にできるようになる!
UI系の単体テス...
さて何しましょう?
最初はマウスイベントをもう少しガッツリや
ろうかとおもっていた
D&Dとかも割とスッキリ書ける
昨日見たセッションビデオが面白くて
ですね…
19
Curing Your Event Processing
Blues with Reactive Extensions
20
ホントはKINECTでやりたいお(´・ω・`)
でもKINECT高いんだお(´;ω;`)
だからLEAPでやるお!(`・ω・´)
21
DEMO:LeapでRx!
22
まとめ
Rx:Linq to Event
Event処理を簡潔に書けるようになる、かも
Eventだけじゃなく、非同期にデータが飛んで
くるものにはなんでも有効
23
学習リソース
neueccさんのBlog:http://neue.cc/category/
programming/rx
okazukiさんのBlog:http://okazuki.hatenablog.com/
entry/20120324/...
おまけ:
Interactive Extensions
Rxで便利げだったものがIEnumerableに逆輸入
されたもの
略称Ix
便利らしいけれど、殆ど見れていない…
@gushwellさんの学習リソース:http://
gushwell....
Upcoming SlideShare
Loading in...5
×

Linq to XXXX(Reactive Extensionsの紹介)

872

Published on

2013/08/24のLinq勉強会 #2での資料です。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
872
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Linq to XXXX(Reactive Extensionsの紹介)"

  1. 1. Linq to XXXX 第二回 LINQ勉強会 @Posaune 1
  2. 2. 自己紹介 Posauneです。@Posauneです。まえかわです。 C#ラブ、F#すげえ、Ruby好き、Powershell好 き、Haskellがんばりたい 京都アジャイル勉強会(#京アジャ)やってま す。 最近はテストとか品質とかUXとかも好きで す。節操がない系エンジニア。 2
  3. 3. 3
  4. 4. 資料は来てから作りました 資料は少ないのでコードを沢山書こうと思い ます 適宜ツッコミをすることにより初めて成立す るセッションです 僕もRxは勉強中なので、一緒に勉強しましょ 4
  5. 5. Linq to ... Linq to Object メモリ上のデータをクエリする Linq to XML XMLテキストをクエリする Linq to SQL (Entity) DB上のデータを書く 5
  6. 6. Linq to ... 基本的に、「同じ型のデータが連なって出て くる」というものならOK フィルタリング(Where, Take, Skip) 加工(Select) 合成(Zip, SelectMany) 6
  7. 7. 同じ型のデータが 連なるもの・・・? 7
  8. 8. Linq to Event Eventも同じ型のデータが大量に列挙される だからEventHandlerが使える、ですよね 8
  9. 9. とはいえ。。。 Event は非同期呼び出しなので、IEnumerable とは本質的に合わない 同期呼び出し(Pull型) 非同期のものをPullで呼ぶと、いつ終わる かわからないものがメインスレッドに来る こわい 9
  10. 10. Pull型の呼び出し 10
  11. 11. そこでIObservable! Push型の列挙を行う 非同期列挙 最初に、「これが起きたらどうするか」を 登録しておき、実際に発生した時に呼び出さ れる、というイメージ。 11
  12. 12. Push型の呼び出し 12
  13. 13. Reactive Extensions! IObservable / IObserver は.NET標準クラス でも、実装したクラスは存在しない! 実装したクラスを簡単に作るのが、Reactive Extensions 略称:Rx 13
  14. 14. まず基本から Observableなデータソースをとりあえず作っ てみる。 Observable.Rangeメソッド Subject<T>型 14
  15. 15. HotとCold ObservableにもHotとColdがある Hot:”動的”なIObservable 何が起こるのかは繋いでみないと わからない すべてのつないだものに同じ列挙をPushする Cold:”静的”なIObservable つないだ瞬間に発火する 何が起こるか事前に決まっている つないだもの毎に列挙をPushする 15
  16. 16. HotとColdは 時間余ったらデモします 16
  17. 17. いよいよEventにつなぐ Observable.FromEventというのがあるのです 17
  18. 18. Linq to Event 大量のデータをLinq的メソッドチェーンによりさばける 見やすい(鍛えれば) 書きやすい(慣れれば) イベントの登録・解除も楽に ラムダでも解除できるよ! イベントのモックが簡単にできるようになる! UI系の単体テストが書きやすくなる System.Reactive.Testあたりを参照すべし イベントがFirst Classオブジェクトに! 18
  19. 19. さて何しましょう? 最初はマウスイベントをもう少しガッツリや ろうかとおもっていた D&Dとかも割とスッキリ書ける 昨日見たセッションビデオが面白くて ですね… 19
  20. 20. Curing Your Event Processing Blues with Reactive Extensions 20
  21. 21. ホントはKINECTでやりたいお(´・ω・`) でもKINECT高いんだお(´;ω;`) だからLEAPでやるお!(`・ω・´) 21
  22. 22. DEMO:LeapでRx! 22
  23. 23. まとめ Rx:Linq to Event Event処理を簡潔に書けるようになる、かも Eventだけじゃなく、非同期にデータが飛んで くるものにはなんでも有効 23
  24. 24. 学習リソース neueccさんのBlog:http://neue.cc/category/ programming/rx okazukiさんのBlog:http://okazuki.hatenablog.com/ entry/20120324/1330956809 xin9leさんのBlog:http://xin9le.net/rx-intro 動画 http://channel9.msdn.com/Blogs/codefest/ DC2010T0100-Keynote-Rx-curing-your- asynchronous-programming-blues http://channel9.msdn.com/Events/TechEd/Europe/ 2012/DEV413 24
  25. 25. おまけ: Interactive Extensions Rxで便利げだったものがIEnumerableに逆輸入 されたもの 略称Ix 便利らしいけれど、殆ど見れていない… @gushwellさんの学習リソース:http:// gushwell.ldblog.jp/archives/52257023.html http://www.nuget.org/packages/ Ix_Experimental-Main/ 25
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×