Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The History of Reactive Extensions

46,604 views

Published on

RxJava Night 2014/10/28

Published in: Technology

The History of Reactive Extensions

  1. 1. The History of Reactive ExtensionsHow extended Rx across languages 2014/10/28 RxJava Night #rxjnight Yoshifumi Kawai -@neuecc
  2. 2. SelfIntroduction @仕事 株式会社グラニ取締役CTO 神獄のヴァルハラゲート, モンスターハンターロアオブカード 最先端C#によるハイパフォーマンスWebアプリケーション @個人活動 Microsoft MVP for Visual C# / 野良C#エヴァンジェリスト Web http://neue.cc/ Twitter @neuecc
  3. 3. linq.js –LINQ for JavaScript そろそろメンテし てあげたい。。。
  4. 4. LINQ to BigQuery 最近はBigQueryにはまってLINQライブラリ作りなど LINQ to BigQuery -C#による型付きDSLと LINQPadによるDumpと可視化 http://neue.cc/2014/09/24_479.html https://github.com/neuecc/LINQ-to-BigQuery
  5. 5. Rx and Me
  6. 6. 私とRx 一番古い記事が 2009/09/04 http://neue.cc/category/programming/rx Rx関連の記事が現在70 (思ってたより多かった!)
  7. 7. 入門連載 連載は2回で止まってる。連 載逃げたとかかんとか…… 2011/11/01で内容的には些か古い (基本原理とかは変わってないの で必ずしも使えない記事というほ どではないですが) http://www.atmarkit.co.jp/fdotnet/introrx/introrx_01/introrx_01_01.html >また、今回のお礼を個別にささやかではありますがお食事というかたちでさせていただければと思うのですが、いかがでしょうか。
  8. 8. UniRx https://github.com/neuecc/UniRx Unity用のReactive Extensions実装 (.NET用のRxはUnityで動かないので自前で実装)
  9. 9. ReactiveX http://reactivex.io/ ReactiveX公式サイトのLanguagesにラインナップ されました(非公式Rxでは初)
  10. 10. Who is the creator of Rx?
  11. 11. Erik Meijer@headinthebox
  12. 12. 御意見番。 Issue見てると大事な変更とか議 論にはたいてい呼びかけられる
  13. 13. Haskellとの関わり Haskell 98策定者の一人 Programming in Haskellの動画解説とかも http://www.cs.nott.ac.uk/~gmh/book.html Parsec: A practical parser library DaanLeijen, Erik Meijer http://research.microsoft.com/en-us/um/people/emeijer/papers/parsec.pdf
  14. 14. @Microsoft Research Cω(しーおめが) –C#ベースの実験言語 http://research.microsoft.com/en-us/um/cambridge/projects/comega/ 2004年にコンパイラプレビュー公開 続報はない、というのもC# 3.0(LINQ) -2008に吸収された というわけでFather of LINQ でもある
  15. 15. @Microsoft Microsoft Live Labs Volta 盛大にコケた アイコンだけ生き残った(Volta => 電気うなぎ) Reactive Extensions 2009に実験ライブラリとして公開→かなり普及する(ただし標準 ライブラリ化はならず)→OSS化→他言語への波及 FRP自体はRx以前からあったけど、実験に留まらず粘り強く実用 レベルに落としこんでいったのは感嘆するな仕事だと思ふ
  16. 16. @Applied Duality 独立開業 Principles of Reactive Programming https://www.coursera.org/course/reactive (Martin Odersky, Erik Meijer, Roland Kuhn) –当然Scalaで。 Facebookの型付きPHPみたいな何か新言語 C#スタイルなNullableやGenericsやAsyncなどから貢献が伺える Microsoftに囚われず自由にやっ てるようでいいことですね!
  17. 17. その他の人々 Jafer Husain 最初のRx紹介者(MicorsoftでSilverlightの仕事で初期プロトタイプのRxを使った) http://themechanicalbride.blogspot.jp/2009/07/introducing-rx-linq-to-events.html その後Netflixに転職し、RxJavaを作成 (つまり言語を超えた普及に最も貢献したのはこの人ではないのだろうか!?) Mattew Podwysocki MSの人。地道にずっとRxJS頑張ってる:) Bart de Smet Rx 2.0の大半を作成、.NETの超絶エキスパート 現在はWindows Phone 8に搭載されたCortanaをRx使って構築 http://channel9.msdn.com/events/TechDays/Techdays-2014-the-Netherlands/Event-processing-at-all- scales-with-Reactive-Extensions 2014年4月のこの動画はRx入門の決定版とでもいうべき内容
  18. 18. LINQ –Rx
  19. 19. LINQ #とは .NETにおいて、RxはまずLINQがあった LINQ(to Objects)とは……Streamを処理する何か Where= fIlter, Select = map、文法的にはSQLだけど中身的には 今や当たり前にどこかで聞いたことあるアレソレ (当時は革新的だった!実用的な意味では今も現役に便利!) varquery = source .Where(x => x % 2 == 0) .Select(x => x * x);
  20. 20. Pull(Interactive) vs Push(Reactive) DataSource (IEnumerable<T>) Action 値の要求(Pull) DataSource (IObservable<T>) Action 値の送信(Push)
  21. 21. 時間軸を基盤にしたLINQ イベントを時間軸に乗った無限リストとみなす それによりシーケンスと「同じように」書ける(map, filter, etc...) Pushスタイル、IObservable<T> IEnumerable<T>はPullスタイル、その反対側にある Reactive Extensions(Rx) time 間隔は不定期でも可 終わりがなくてもいい(無限に続く)
  22. 22. Conclusion
  23. 23. Rx is not only C# むしろ他言語のほうが流行ってるのでは感 RxJava, ReactiveCocoa, RxJS/Bacon.js, etc... 要因は幾つかある(Rxの威力のうち非同期の側面は言語統合の非同期構文 (C# 5.0 async/await)が引き受けたから、たとえば非同期の待ち合わせはawait Task.WhenAll()など、うちの会社のサーバーサイド実装でも多用してる) とはいえ別に決して流行ってないわけではない、よ!#多分 not only LINQ? 切り離してもいいけれど、理解の難易度的にはLINQ(Pull/Interactive)との関 連性から結びだしたほうが捗るのではないかな? 別にLINQじゃなくても、自分のメイン言語のコレクション処理の構文と結び つけてみると馴染める、はずきっと

×