You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
GUIアーキテクチャパターンとしてModel View Whateverを採用した際に、Rxのストリームをプレゼンテーション層からモデル層まで一気通貫でつなげてしまうのはアンチパターンである、という話をします。 前提 GUIアーキテクチャパターンにおける Model View Whatever パターン、とくにMVVMに近いパターンを前提とします。いわゆるサーバサイドの「web系MVC」は前提としません。 Model View WhateverパターンとPDS そもそもGUIアプリケーションでModel View Whateverというアーキテクチャパターンを採用する理由として、PDSの実現があります。このあたりの話は詳しくは実況中継シリーズ Vue.jsで実現するMVVMパターン Fluxアーキテクチャとの距離 - Re.Ra.Ku アドベントカレンダー day 13 - Re.Ra.K
compile 'io.reactivex:rxjava:1.1.4' compile 'io.reactivex:rxandroid:1.2.0' compile 'com.jakewharton.rxbinding:rxbinding:0.4.0' ※また、今回はライフサイクルイベントへのバインディングなどの処理は省きますので、お使いのライブラリに合わせて追加してください。 以上で下準備は終了です! ここから具体的なRxBindingを使った処理について見ていきましょう EditTextでEmailとPasswordの入力状態監視 まずは、ログイン画面などでよくあるEditTextの入力状態によってボタンのenableを切り替える処理です。 public class LoginActivity extends AppCompatActivity { // Regex patterns
はじめに リアクティブプログラミングでアプリを設計するにはどうすればいいんでしょうか?できるだけ直感的に理解できるようにビジュアル化して解説します。 今まで RxSwift についての以下の記事を書いてきました。 オブザーバーパターンから始めるRxSwift入門 RxSwift入門(2) 非同期処理してみる RxSwiftを深く理解する RxSwiftの機能カタログ まずは既存のイベント通知のやり方を置き換えたり、非同期処理に使ったり、「すぐ使える便利な道具」として RxSwift を使ってもらおうという趣旨で解説しています。 そのため「リアクティブプログラミングとは?」とか「関数型としての側面が〜」とか、オブジェクト指向プログラマにとって敷居が高そうと感じられてしまう言葉や説明を避けてきました。 概念よりもまずライブラリとして使って親しんでからの方が、概念も理解しやすいと思ったのです。R
この連載では、Javaでリアクティブプログラミングを行うためのライブラリである「RxJava」を使って、リアクティブプログラミングにおけるポイントや、RxJavaが持つ機能について学んでいきます。今回は、RxJavaおよびリアクティブプログラミングの概要について解説します。 対象読者 Java経験者(初心者可) RxJava未経験者 リアクティブプログラミング未経験者 RxJavaとは RxJavaは、Javaでリアクティブプログラミングを行うためのライブラリです。このライブラリは軽量であり、また、他のライブラリに対する依存がないのでRxJavaのjarをパスに通すだけで使えるようになります。対応しているJavaのバージョンは6からで、さらにAndroidもバージョン2.3(Gingerbread)からサポートしています。 そして、RxJavaは厳密には関数型リアクティブプログラミング(F
ブードゥーの秘術により、INotifyPropertyChanged不要で、値の変更を検知し、IObservable化します。例えばINotifyPropertyChangedじゃないところから、WidthとHeightを引き出してみます。 using Reactive.Bindings.Extensions; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.ObserveEveryValueChanged(x => x.Width).Subscribe(x => WidthText.Text = x.ToString()); this.ObserveEveryValueChanged(x => x.Height).Subscribe(x => Heig
追記(2017/05/2) redux-sagaでの非同期バージョンの紹介とリンクを追記。 追記(2017/2/23修正) 元記事の追記3にて言及を頂いたように、以下の「見易い版」コードは元コードが実現していた機能が抜けおちているという誤りがあります。遅くなりましたが、お詫びの上修正させていただきます。 修正内容は以下の「refreshボタン押下ですべての候補を消去」の項目に追記しました。 上記追記の趣旨として、リアクティブプログラミングはそれほど判り難いのだ、というご指摘になっていますが、返す言葉もございません。 はじめに 先日「リアクティブプログラミングとは何だったか」という記事を目にしまして、内容はたいへん興味深かったのですが、以下の記述がありました。 『宣言的』といえそうなのはわかりますし、パラダイムとして従来のコードとは一線を画すものであることは確かですが、どう贔屓目にみてもひた
この記事はRxJava Advent Calendar 2015 11日目の記事です。 RxJava・RxAndroidの紹介記事の中にはよく「面倒くさいASyncTaskを使わなくて済む」といったRxJavaを非同期処理の代わりとして紹介されています。 もちろん、非同期処理を置き換えられるという点はRxJavaの有効的な使い方の一つですが、RxJavaには他にも便利に使える機能があります。 今回はそれらの機能の一つであるSubjectについて紹介したいと思います。 Subjectとは 短く言うと「SubscriberとObservableの2つの機能を併せ持ったもの」です。 SubscriberにあるようなonNextやonError、onCompleteといったメソッドを呼び出せ、Observableのようにsubscribeメソッドを呼び出すことができます。 Subject<Stri
問題 以下のコードを実行するとside effectは何回表示されるか? var source = new Rx.Subject<number>(); var stream = source.do(i => console.log("side effect")); stream.subscribeOnNext(i => console.log("child1: " + i)); source.onNext(1); stream.subscribeOnNext(i => console.log("child2: " + i)); source.onNext(2); 答え 3回 なぜ2回ではないのか? Rxでは基本的にオペレータをつないだ時にストリームの接続が適用されるのではなく、Subscribeした時に初めて接続が適用される つまり、上記コードでいえば、streamというのは「source
この記事は bouzuya's RxJS Advent Calendar 2015 の 4 日目かつ RxJS Advent Calendar 2015 の 4 日目です。 はじめに 今日は ReactiveX の Operators の Transform について RxJS の API ドキュメントやソースコードを見ていきます。 また RxJS 4.0.7 を対象にしています。 Observable の変換 Observable.prototype.map ReactiveX - Map operator Observable.prototype.map API Document Observable.prototype.map Source Code Array.prototype.map でもおなじみのものです。動きについては説明は不要でしょう。 import { Observab
public fun BooleanArray.toObservable() : Observable<Boolean> = this.toList().toObservable() public fun ByteArray.toObservable() : Observable<Byte> = this.toList().toObservable() public fun ShortArray.toObservable() : Observable<Short> = this.toList().toObservable() public fun IntArray.toObservable() : Observable<Int> = this.toList().toObservable() public fun LongArray.toObservable() : Observable<L
TL;DR Promiseは単一イベントを扱うよ! Rxは複数イベントの流れ(ストリーム)を扱うよ! Rxで逐次処理させたいときはflatMap()で都度Observableを作っていくよ! Introduction RxJava大流行時代,その導入の理由(建前)としてよく語られるのは次のようなものが多い気がする. Promise(っぽいもの 複数の逐次 or 並行な非同期処理をいい感じに捌きたい データバインディング(的な Modelの変更をいい感じにViewに通知したい リスト処理 特に,非同期まわりでつらさMAXになるAndroid界においては,1つ目のPromiseっぽいのが結構需要高い気がしている.ただ,「Rxを使ってPromiseみたいなことができるよ!」と書いてある記事はあっても具体的な考え方等に触れているものはあまり見た記憶が無いので,本稿ではそこに着目していく. そもそも
TL;DR reduceはcompleteするまで値が返らない scanはnextで次々に値が返っていく 値を逐次利用したい場合はscan使いましょう 他言語でのreduce # in Ruby # reduceはinjectのalias (0..10).inject { |sum, n| sum + n } // in JavaScript (ECMAScript 2015) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].reduce((sum, n) -> sum + n) Reduce operator apply a function to each item emitted by an Observable, sequentially, and emit the final value ReactiveX - Reduce operator emit th
この記事は、既にRxをゴリゴリ動かしてリアクティブな世界を堪能してる人あたりを対象にしています。 Subject!!!! RxにはSubjectというものがあります。今回はこのSubjectを中心にRxのことを適当に話します。 Subjectってなに Subjectは既に色んな場所で解説されているとおり、IObservable<T>インターフェースとIObserver<T>インターフェースを両方実装したクラスです。といっても全然分からないので、さっさと動かしてみましょう。 public static void Main() { // subjectをつくる var subject = new Subject<int>(); // subjectを購読する var disposable = subject.Subscribe( x => WriteLine($"OnNext: { x }")
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く