56
@RyotaMurohoshi 2014/10/28 RxJava Night

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

@RyotaMurohoshi

2014/10/28'RxJava'Night

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

残念ながら、初心者ですごめんなさい

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

突然ですが質問です!

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

RxJavaなどをもうすでにガッツリやっている方?

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

RxJava、Hello*world

はしたよって方?

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

RxJavaよくわからないけど興味あるよって方?

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

プログラミング言語Groovy

使っている!or!知っている方?

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

C#erな方、C#分かる方?

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

Unity使っている方?

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

ありがとうございました

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

お前だれよ• 名前":"室星亮太

• 仕事":"Unityゲーム開発(C#)、【前】Androidアプリ開発(Java)

• Twi6er":"@RyotaMurohoshi

• 投稿先":"h6p://qiita.com/RyotaMurohoshi

• 興味":"Unity、C#、Groovy

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

【初心者がやってみた】

Rx、チャレンジしてみたというテーマで、冒頭の質問に関係のある内容でお送りします。

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

会場が「Rxすごい人たち」ばかりだったら

ガチ焦りしています

生暖かい目で見てあげてください

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

みなさんはRxJavaを知りました。使ってみたいですね。まず、どこを見ますか?

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

RxJavaのwikih"ps://github.com/Reac3veX/RxJava/wiki

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

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);

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

ん?

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

なんだこれ?• [1,%2,%3,%4,%5,%6,%7,%8,%9]

• {%0%==%(it%%%2)%}

• it

• println%("Sequence%Complete")

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

Groovy

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

【よいとおもった、コレ便利!】

RxJava使うならば、Groovyもあり!

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

RxJavaのwikiのサンプルコード、結構Groovyで書かれている

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

Groovy• JVM言語

• Javaとの親和性が高い

• 簡潔な記述や柔軟な処理ができる

• Groovy2.4からAndroidに対応(今beta63)

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

RxJava、インターフェースを引数にとるメソッドばかりですね

.map(new Func1<OnClickEvent, Integer>() { @Override public Integer call(OnClickEvent clickEvent) { return 1; }})

無駄に長い...

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

無駄に長いのは嫌だ!• Java8ならばラムダ式

• Java8より前でもretrolambda

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

無駄に長いのは嫌だ!• Java8ならばラムダ式

• Java8より前でもretrolambda

• Groovyもあり!

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

Androidだと、

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

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()); } });

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

長い!

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

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()) }

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

すっきり!

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

Groovyのクロージャで、とってもすっきり!RxAndroid+Groovyの例-h/p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2

クロージャの書き方いろいろ!h#p://qiita.com/RyotaMurohoshi/items/2a30a74c0074e11d0207

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

RxGroovy• RxJavaのインターフェースを引数にとるメソッドで、Groovyのクロージャを渡せるようにするもの

• Groovy2.2以上ならクロージャの暗黙的な強制型変換により、RxGroovyなしでもクロージャを渡せる

• AndroidでGroovy2.4以上使うなら、RxGroovy無くてもOK

h"p://qiita.com/RyotaMurohoshi/items/3f1f3cde0e5c6785b2f1

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

Groovyで、RxJavaこんな短い記述で始められる@Grab(group='com.netflix.rxjava', module='rxjava-core', version='0.20.4')

import rx.Observableimport rx.functions.Action1

Observable.from("Taro", "Jiro", "Saburo").subscribe { println "Hello $it"}

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

RxJavaに限らず、Javaのライブラリをチョロっと試す時Groovyは超便利だと思います!

• クラスとかmainメソッドなしでいきなり書ける(スクリプト)

• Grapeにより、アノテーション一発でライブラリ使える

• GroovyShellで対話的に試せるh"p://qiita.com/RyotaMurohoshi/items/99475255e56f8fae712b

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

【よいとおもった、コレ便利!】

RxJava使うならば、Groovyもあり!でした!

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

さて、RxJava使いこなせるようになりたいですよね?

どうしましょう?

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

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)

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

Reac%ve'Extensions

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

RxJavaはReac(ve)Extensions(C#のライブラリ)を基にしている

RxJavaを使いこなしたいならば

Reac%ve'Extensionsの記事・投稿などの情報も役立つ!

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

【この情報が素敵!とっても分かりやすい!】

Reac%ve'Extensionsの資料でRxの勉強をし、RxJavaを使いこなす

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

もちろんJavaとC#の違いはあります

メソッド名が違うやつもあります(Whereとfilter、Selectとmap)

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

それでもRxの考え方を理解するのには、

とってもいいと思います!

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

プログラミングC#第7版11章は丸々Rx(Reac(ve*Extensions)

ごめんなさい、最初にこれ読むのはちょっとつらかったです

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

Reac%ve'Extensions(C#のライブラリ)の

素敵なブログ・記事を投稿されている方達がいます

その方達のブログはとても分かりやすかったです

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

xin9leさんRx入門

h"p://xin9le.net/rx/intro

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

xin9leさんのRx入門Rxの入門。プログラミングC#%第7版を読む前に、こちらを先に読みたかった。

初めにこちらを読むのがとてもいいと思います!

他にスライドもたくさん公開されています!

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

okazukiさんReac%ve'Extensions'再入門

h"p://okazuki.hatenablog.com/archive/category/Reac9ve%20Extensions

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

okazukiさんのReac*ve,Extensions再入門Reac%ve'Extensionsのメソッドを実際に動かしたサンプルコードがたくさん

リファレンスの説明文を見てもメソッドのイメージが湧きませんでしたが、

実際のコードと実行結果でイメージが湧きました!

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

neueccさん連載:Reac%ve'Extensions(Rx)入門

h"p://www.atmarkit.co.jp/fdotnet/introrx/index/

UniRxについて

h"p://neue.cc/2014/08/23_476.html7など

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

neueccさんかなり早い段階からReac%ve'Extensionsに注目されていてます

ブログ、スライドだけでなく@ITさんで連載もされています

Unityで使えるReac*ve,Extensions移植のUniRxの作者さんです

今日登壇されています

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

【この情報が素敵!とっても分かりやすい!】

Reac%ve'Extensionsの資料でRxの勉強をし、RxJavaを使いこなす

でした!

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

シンプルな例ですが、まず手を動かしてみました!

今後もやってみて、投稿していこうと思います

間違っていたら、優しくまさかり投げていただけるとうれしいです

RxAndroid+Groovy-: h0p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2

UnityでUniRxを使って(:(h+p://qiita.com/RyotaMurohoshi/items/7e1509e03d8e3a1eae4f

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

反省理論的な基礎の勉強を後回しにしすぎてしまった。

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

FRPやRxについてまったくふれず申し訳ないです!

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

【初心者だけれど】

Rx、Groovyで試すのありだと思うし、Reac%ve'Extensinsの資料はとっても参考になると思う。

でした。

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

ご清聴ありがとうございました。@RyotaMurohoshi

h"p://qiita.com/RyotaMurohoshi