Upload
ryota-murohoshi
View
2.918
Download
4
Embed Size (px)
DESCRIPTION
2014/10/28にpixivさんで行われたRxJavaNightの@RyotaMurohoshiの資料です。
Citation preview
@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/RyotaMurohoshi
• 興味":"Unity、C#、Groovy
【初心者がやってみた】
Rx、チャレンジしてみたというテーマで、冒頭の質問に関係のある内容でお送りします。
会場が「Rxすごい人たち」ばかりだったら
ガチ焦りしています
生暖かい目で見てあげてください
みなさんはRxJavaを知りました。使ってみたいですね。まず、どこを見ますか?
RxJavaのwikih"ps://github.com/Reac3veX/RxJava/wiki
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);
ん?
なんだこれ?• [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 clickEvent) { return 1; }})
無駄に長い...
無駄に長いのは嫌だ!• Java8ならばラムダ式
• Java8より前でもretrolambda
無駄に長いのは嫌だ!• Java8ならばラムダ式
• Java8より前でもretrolambda
• Groovyもあり!
Androidだと、
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()); } });
長い!
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()) }
すっきり!
Groovyのクロージャで、とってもすっきり!RxAndroid+Groovyの例-h/p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2
クロージャの書き方いろいろ!h#p://qiita.com/RyotaMurohoshi/items/2a30a74c0074e11d0207
RxGroovy• RxJavaのインターフェースを引数にとるメソッドで、Groovyのクロージャを渡せるようにするもの
• Groovy2.2以上ならクロージャの暗黙的な強制型変換により、RxGroovyなしでもクロージャを渡せる
• AndroidでGroovy2.4以上使うなら、RxGroovy無くてもOK
h"p://qiita.com/RyotaMurohoshi/items/3f1f3cde0e5c6785b2f1
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"}
RxJavaに限らず、Javaのライブラリをチョロっと試す時Groovyは超便利だと思います!
• クラスとかmainメソッドなしでいきなり書ける(スクリプト)
• Grapeにより、アノテーション一発でライブラリ使える
• GroovyShellで対話的に試せるh"p://qiita.com/RyotaMurohoshi/items/99475255e56f8fae712b
【よいとおもった、コレ便利!】
RxJava使うならば、Groovyもあり!でした!
さて、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)
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/23_476.html7など
neueccさんかなり早い段階からReac%ve'Extensionsに注目されていてます
ブログ、スライドだけでなく@ITさんで連載もされています
Unityで使えるReac*ve,Extensions移植のUniRxの作者さんです
今日登壇されています
【この情報が素敵!とっても分かりやすい!】
Reac%ve'Extensionsの資料でRxの勉強をし、RxJavaを使いこなす
でした!
シンプルな例ですが、まず手を動かしてみました!
今後もやってみて、投稿していこうと思います
間違っていたら、優しくまさかり投げていただけるとうれしいです
RxAndroid+Groovy-: h0p://qiita.com/RyotaMurohoshi/items/48bbbecea49591fd20a2
UnityでUniRxを使って(:(h+p://qiita.com/RyotaMurohoshi/items/7e1509e03d8e3a1eae4f
反省理論的な基礎の勉強を後回しにしすぎてしまった。
FRPやRxについてまったくふれず申し訳ないです!
【初心者だけれど】
Rx、Groovyで試すのありだと思うし、Reac%ve'Extensinsの資料はとっても参考になると思う。
でした。
ご清聴ありがとうございました。@RyotaMurohoshi
h"p://qiita.com/RyotaMurohoshi