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.
@RyotaMurohoshi 
2014/10/28'RxJava'Night
残念ながら、初心者です 
ごめんなさい
突然ですが質問です!
RxJavaなどをもうすでに 
ガッツリやっている方?
RxJava、Hello*world 
はしたよって方?
RxJavaよくわからないけど 
興味あるよって方?
プログラミング言語Groovy 
使っている!or!知っている方?
C#erな方、C#分かる方?
Unity使っている方?
ありがとうございました
お前だれよ 
• 名前":"室星亮太 
• 仕事":"Unityゲーム開発(C#)、【前】Androidアプリ開発(Java) 
• Twi6er":"@RyotaMurohoshi 
• 投稿先":"h6p://qiita.com/Ryota...
【初心者がやってみた】 
Rx、チャレンジしてみた 
というテーマで、冒頭の質問に関係のある内容でお送りします。
会場が「Rxすごい人たち」ばかりだったら 
ガチ焦りしています 
生暖かい目で見てあげてください
みなさんはRxJavaを知りました。 
使ってみたいですね。 
まず、どこを見ますか?
RxJavaのwiki 
h"ps://github.com/Reac3veX/RxJava/wiki
RxJavaのWiki)filterメソッドの説明より 
h0ps://github.com/Reac<veX/RxJava/wiki/FilteringAObservables) 
numbers = Observable.from([1, ...
ん?
なんだこれ? 
• [1,%2,%3,%4,%5,%6,%7,%8,%9] 
• {%0%==%(it%%%2)%} 
• it 
• println%("Sequence%Complete")
Groovy
【よいとおもった、コレ便利!】 
RxJava使うならば、Groovyもあり!
RxJavaのwikiのサンプルコード、 
結構Groovyで書かれている
Groovy 
• JVM言語 
• Javaとの親和性が高い 
• 簡潔な記述や柔軟な処理ができる 
• Groovy2.4からAndroidに対応(今beta63)
RxJava、インターフェースを引数にとるメソッドばかりですね 
.map(new Func1<OnClickEvent, Integer>() { 
@Override 
public Integer call(OnClickEvent cl...
無駄に長いのは嫌だ! 
• Java8ならばラムダ式 
• Java8より前でもretrolambda
無駄に長いのは嫌だ! 
• Java8ならばラムダ式 
• Java8より前でもretrolambda 
• Groovyもあり!
Androidだと、
RxAndroidとRxJava、Bu.onクリック回数をTextViewに表示 
ViewObservable.clicks(findViewById(R.id.button)) 
.map(new Func1<OnClickEvent, I...
長い!
RxAndroidとRxJavaとGroovy、Bu0onクリック回数をTextViewに表示 
ViewObservable.clicks(findViewById(R.id.button)) 
.map { 1 } 
.scan { acc...
すっきり!
Groovyのクロージャで、とってもすっきり! 
RxAndroid+Groovyの例-h/p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2 
クロージャの書き方いろいろ!h#p:/...
RxGroovy 
• RxJavaのインターフェースを引数にとるメソッドで、Groovyの 
クロージャを渡せるようにするもの 
• Groovy2.2以上ならクロージャの暗黙的な強制型変換により、 
RxGroovyなしでもクロージャを渡せ...
Groovyで、RxJavaこんな短い記述で始められる 
@Grab(group='com.netflix.rxjava', module='rxjava-core', version='0.20.4') 
import rx.Observab...
RxJavaに限らず、Javaのライブラリをチョロっと試す時 
Groovyは超便利だと思います! 
• クラスとかmainメソッドなしでいきなり書ける(スクリプト) 
• Grapeにより、アノテーション一発でライブラリ使える 
• Groo...
【よいとおもった、コレ便利!】 
RxJava使うならば、Groovyもあり! 
でした!
さて、RxJava使いこなせるようになりたいですよね? 
どうしましょう?
RxJava&is&a&Java&VM&implementa1on& 
of&Reac1ve&Extensions:&a&library&for& 
composing&asynchronous&and&event> 
based&progra...
Reac%ve'Extensions
RxJavaはReac(ve)Extensions(C#のライブラリ)を基にしている 
RxJavaを使いこなしたいならば 
Reac%ve'Extensionsの記事・投稿などの情報も役立つ!
【この情報が素敵!とっても分かりやすい!】 
Reac%ve'Extensionsの資料でRxの勉強をし、 
RxJavaを使いこなす
もちろんJavaとC#の違いはあります 
メソッド名が違うやつもあります(Whereとfilter、Selectとmap)
それでもRxの考え方を 
理解するのには、 
とってもいいと思います!
プログラミングC#第7版 
11章は丸々Rx(Reac(ve*Extensions) 
ごめんなさい、最初にこれ読むのはちょっとつらかったです
Reac%ve'Extensions(C#のライブラリ)の 
素敵なブログ・記事を投稿されている方達がいます 
その方達のブログはとても分かりやすかったです
xin9leさん 
Rx入門 
h"p://xin9le.net/rx/intro
xin9leさんのRx入門 
Rxの入門。プログラミングC#%第7版を読む前に、こちらを先に読みたかった。 
初めにこちらを読むのがとてもいいと思います! 
他にスライドもたくさん公開されています!
okazukiさん 
Reac%ve'Extensions'再入門 
h"p://okazuki.hatenablog.com/archive/category/Reac9ve%20Extensions
okazukiさんのReac*ve,Extensions再入門 
Reac%ve'Extensionsのメソッドを実際に動かしたサンプルコードがたくさん 
リファレンスの説明文を見てもメソッドのイメージが湧きませんでしたが、 
実際のコードと実...
neueccさん 
連載:Reac%ve'Extensions(Rx)入門 
h"p://www.atmarkit.co.jp/fdotnet/introrx/index/ 
UniRxについて 
h"p://neue.cc/2014/08/2...
neueccさん 
かなり早い段階からReac%ve'Extensionsに注目されていてます 
ブログ、スライドだけでなく@ITさんで連載もされています 
Unityで使えるReac*ve,Extensions移植のUniRxの作者さんです ...
【この情報が素敵!とっても分かりやすい!】 
Reac%ve'Extensionsの資料でRxの勉強をし、 
RxJavaを使いこなす 
でした!
シンプルな例ですが、 
まず手を動かしてみました! 
今後もやってみて、投稿していこうと思います 
間違っていたら、優しくまさかり投げていただけるとうれしいです 
RxAndroid+Groovy-: h0p://qiita.com/Ryota...
反省 
理論的な基礎の勉強を後回しにしすぎてしまった。
FRPやRxについて 
まったくふれず申し訳ないです!
【初心者だけれど】 
Rx、Groovyで試すのありだと思うし、 
Reac%ve'Extensinsの資料は 
とっても参考になると思う。 
でした。
ご清聴ありがとうございました。 
@RyotaMurohoshi 
h"p://qiita.com/RyotaMurohoshi
Upcoming SlideShare
Loading in …5
×

RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など

8,899 views

Published on

2014/10/28にpixivさんで行われたRxJavaNightの@RyotaMurohoshiの資料です。

Published in: Technology
  • Be the first to comment

RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など

  1. 1. @RyotaMurohoshi 2014/10/28'RxJava'Night
  2. 2. 残念ながら、初心者です ごめんなさい
  3. 3. 突然ですが質問です!
  4. 4. RxJavaなどをもうすでに ガッツリやっている方?
  5. 5. RxJava、Hello*world はしたよって方?
  6. 6. RxJavaよくわからないけど 興味あるよって方?
  7. 7. プログラミング言語Groovy 使っている!or!知っている方?
  8. 8. C#erな方、C#分かる方?
  9. 9. Unity使っている方?
  10. 10. ありがとうございました
  11. 11. お前だれよ • 名前":"室星亮太 • 仕事":"Unityゲーム開発(C#)、【前】Androidアプリ開発(Java) • Twi6er":"@RyotaMurohoshi • 投稿先":"h6p://qiita.com/RyotaMurohoshi • 興味":"Unity、C#、Groovy
  12. 12. 【初心者がやってみた】 Rx、チャレンジしてみた というテーマで、冒頭の質問に関係のある内容でお送りします。
  13. 13. 会場が「Rxすごい人たち」ばかりだったら ガチ焦りしています 生暖かい目で見てあげてください
  14. 14. みなさんはRxJavaを知りました。 使ってみたいですね。 まず、どこを見ますか?
  15. 15. RxJavaのwiki h"ps://github.com/Reac3veX/RxJava/wiki
  16. 16. RxJavaのWiki)filterメソッドの説明より h0ps://github.com/Reac<veX/RxJava/wiki/FilteringAObservables) numbers = Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9]); numbers.filter({ 0 == (it % 2) }).subscribe( { println(it); }, // onNext { println("Error: " + it.getMessage()); }, // onError { println("Sequence complete"); } // onCompleted );
  17. 17. ん?
  18. 18. なんだこれ? • [1,%2,%3,%4,%5,%6,%7,%8,%9] • {%0%==%(it%%%2)%} • it • println%("Sequence%Complete")
  19. 19. Groovy
  20. 20. 【よいとおもった、コレ便利!】 RxJava使うならば、Groovyもあり!
  21. 21. RxJavaのwikiのサンプルコード、 結構Groovyで書かれている
  22. 22. Groovy • JVM言語 • Javaとの親和性が高い • 簡潔な記述や柔軟な処理ができる • Groovy2.4からAndroidに対応(今beta63)
  23. 23. RxJava、インターフェースを引数にとるメソッドばかりですね .map(new Func1<OnClickEvent, Integer>() { @Override public Integer call(OnClickEvent clickEvent) { return 1; } }) 無駄に長い...
  24. 24. 無駄に長いのは嫌だ! • Java8ならばラムダ式 • Java8より前でもretrolambda
  25. 25. 無駄に長いのは嫌だ! • Java8ならばラムダ式 • Java8より前でもretrolambda • Groovyもあり!
  26. 26. Androidだと、
  27. 27. RxAndroidとRxJava、Bu.onクリック回数をTextViewに表示 ViewObservable.clicks(findViewById(R.id.button)) .map(new Func1<OnClickEvent, Integer>() { @Override public Integer call(OnClickEvent clickEvent) { return 1; } }) .scan(new Func2<Integer, Integer, Integer>() { @Override public Integer call(Integer acc, Integer current) { return acc + current; } }) .subscribe(new Action1<Integer>() { @Override public void call(Integer clickCount) { TextView textView = (TextView)findViewById(R.id.text_view); textView.setText(clickCount.toString()); } });
  28. 28. 長い!
  29. 29. RxAndroidとRxJavaとGroovy、Bu0onクリック回数をTextViewに表示 ViewObservable.clicks(findViewById(R.id.button)) .map { 1 } .scan { acc, current -> acc + current } .subscribe { findViewById(R.id.text_view).setText(it.toString()) }
  30. 30. すっきり!
  31. 31. Groovyのクロージャで、とってもすっきり! RxAndroid+Groovyの例-h/p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2 クロージャの書き方いろいろ!h#p://qiita.com/RyotaMurohoshi/items/2a30a74c0074e11d0207
  32. 32. RxGroovy • RxJavaのインターフェースを引数にとるメソッドで、Groovyの クロージャを渡せるようにするもの • Groovy2.2以上ならクロージャの暗黙的な強制型変換により、 RxGroovyなしでもクロージャを渡せる • AndroidでGroovy2.4以上使うなら、RxGroovy無くてもOK h"p://qiita.com/RyotaMurohoshi/items/3f1f3cde0e5c6785b2f1
  33. 33. Groovyで、RxJavaこんな短い記述で始められる @Grab(group='com.netflix.rxjava', module='rxjava-core', version='0.20.4') import rx.Observable import rx.functions.Action1 Observable.from("Taro", "Jiro", "Saburo").subscribe { println "Hello $it"}
  34. 34. RxJavaに限らず、Javaのライブラリをチョロっと試す時 Groovyは超便利だと思います! • クラスとかmainメソッドなしでいきなり書ける(スクリプト) • Grapeにより、アノテーション一発でライブラリ使える • GroovyShellで対話的に試せる h"p://qiita.com/RyotaMurohoshi/items/99475255e56f8fae712b
  35. 35. 【よいとおもった、コレ便利!】 RxJava使うならば、Groovyもあり! でした!
  36. 36. さて、RxJava使いこなせるようになりたいですよね? どうしましょう?
  37. 37. RxJava&is&a&Java&VM&implementa1on& of&Reac1ve&Extensions:&a&library&for& composing&asynchronous&and&event> based&programs&by&using&observable& sequences. —"RxJavaのwiki"Homeより(h1ps://github.com/Reac<veX/RxJava/wiki)
  38. 38. Reac%ve'Extensions
  39. 39. RxJavaはReac(ve)Extensions(C#のライブラリ)を基にしている RxJavaを使いこなしたいならば Reac%ve'Extensionsの記事・投稿などの情報も役立つ!
  40. 40. 【この情報が素敵!とっても分かりやすい!】 Reac%ve'Extensionsの資料でRxの勉強をし、 RxJavaを使いこなす
  41. 41. もちろんJavaとC#の違いはあります メソッド名が違うやつもあります(Whereとfilter、Selectとmap)
  42. 42. それでもRxの考え方を 理解するのには、 とってもいいと思います!
  43. 43. プログラミングC#第7版 11章は丸々Rx(Reac(ve*Extensions) ごめんなさい、最初にこれ読むのはちょっとつらかったです
  44. 44. Reac%ve'Extensions(C#のライブラリ)の 素敵なブログ・記事を投稿されている方達がいます その方達のブログはとても分かりやすかったです
  45. 45. xin9leさん Rx入門 h"p://xin9le.net/rx/intro
  46. 46. xin9leさんのRx入門 Rxの入門。プログラミングC#%第7版を読む前に、こちらを先に読みたかった。 初めにこちらを読むのがとてもいいと思います! 他にスライドもたくさん公開されています!
  47. 47. okazukiさん Reac%ve'Extensions'再入門 h"p://okazuki.hatenablog.com/archive/category/Reac9ve%20Extensions
  48. 48. okazukiさんのReac*ve,Extensions再入門 Reac%ve'Extensionsのメソッドを実際に動かしたサンプルコードがたくさん リファレンスの説明文を見てもメソッドのイメージが湧きませんでしたが、 実際のコードと実行結果でイメージが湧きました!
  49. 49. neueccさん 連載:Reac%ve'Extensions(Rx)入門 h"p://www.atmarkit.co.jp/fdotnet/introrx/index/ UniRxについて h"p://neue.cc/2014/08/23_476.html7など
  50. 50. neueccさん かなり早い段階からReac%ve'Extensionsに注目されていてます ブログ、スライドだけでなく@ITさんで連載もされています Unityで使えるReac*ve,Extensions移植のUniRxの作者さんです 今日登壇されています
  51. 51. 【この情報が素敵!とっても分かりやすい!】 Reac%ve'Extensionsの資料でRxの勉強をし、 RxJavaを使いこなす でした!
  52. 52. シンプルな例ですが、 まず手を動かしてみました! 今後もやってみて、投稿していこうと思います 間違っていたら、優しくまさかり投げていただけるとうれしいです RxAndroid+Groovy-: h0p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2 UnityでUniRxを使って(:(h+p://qiita.com/RyotaMurohoshi/items/7e1509e03d8e3a1eae4f
  53. 53. 反省 理論的な基礎の勉強を後回しにしすぎてしまった。
  54. 54. FRPやRxについて まったくふれず申し訳ないです!
  55. 55. 【初心者だけれど】 Rx、Groovyで試すのありだと思うし、 Reac%ve'Extensinsの資料は とっても参考になると思う。 でした。
  56. 56. ご清聴ありがとうございました。 @RyotaMurohoshi h"p://qiita.com/RyotaMurohoshi

×