ReactとRxでだめなことやっちゃったやつです
こんにちは、アプリケーション共同開発部のみなみです。 iOSアプリ開発を始めてから様々なライブラリを使ってきました。その中で特に強力でおもしろいと感じたのが、Rx (Reactive Extensions)に影響を受けたReactiveCocoaや、RxのSwift実装であるRxSwiftです。Rxライブラリとそれが実現するリアクティブプログラミングは、アプリ開発を大きく変えました。この記事では普段の開発で感じたRxライブラリの威力や課題、そして未来について書きたいと思います。 Rxライブラリは何を変えたのか イベント通知の統一 フラグ変数、深いネストを一掃して見通しが良くなった 複雑な非同期処理を分かりやすく表現 Rxライブラリの課題 依存度の強さ イベントを実行することの影響が予測できない 高い学習コストが割りに合わない部分がある 課題への解決策 async/await Redux 未
AndroidエンジニアがRxを使うモチベーションって非同期処理に対するソリューションとしてが多いと思うんだけど、Futuer使ったりするのと比べて、使う側がそもそも非同期か同期かを知る必要がない点が優れていると思います— 有象無象 (@kgmyshin) 2017年9月28日 この件、多少説明した方がいいのではと思ったので記事にしました。 一応Androidの話です。題材はなんでもよかったんですがリポジトリパターンを題材としてみました。 あらかじめ言っておくと、コードの細かいツッコミは置いておいてもらえると。伝えたいのは 非同期か同期かを意識しなくていいとはどういうことか です。 Rxのなかった世界のころ 非同期がゆえに... こういうリポジトリのinterfaceを実装したいと考えます。 interface CourseRepository { fun resolveById(id:
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
ではなぜネットフリックスがマイクロソフト発祥のテクノロジを利用するようになったのだろうか。実は、RxJavaの初期の開発者であるJafar Husain氏は、もともとマイクロソフトに勤めていて、世界で最初にReactive Extensionsを紹介した人物でもあるのだ。その後にネットフリックスに転職し、RxJavaの誕生に深く関わることになる。 一方でオリジナルのRx.NETの作者であるErik Meijer氏もまた、マイクロソフトを辞めた後に、HackやDartなどの新興言語の支援に関わる他、Principles of Reactive Programmingといった学習コースをScalaの作者であるMartin Odersky氏らと開講するなど、言語の枠を超えて活躍している。 Rxとマイクロソフトのオープンソース 昨今のマイクロソフトのオープンソースへの傾倒を疑うものはもはやいないだ
All slide content and descriptions are owned by their creators.
Community Content 101 Rx Samples, a helpful collection of samples in the spirit of 101 LINQ Samples. Descriptions of the Rx Observable operators as well as the Rx Enumerable operators. Descriptions and samples of the Rx Disposable classes. Description of how to read the marble diagrams often used when explaining Rx. Free Third-Party Tools Reactive Framework Extensions Generator by Clarius Consulti
イベントページ: Rx Ja Night 2016 #1 会場: VOYAGE GROUP 最高のイベントでした。 RxJavaがメインではありましたが、他のReactiveXでも適用できる内容だったと思います。 主催の @fushiroyamaさん 、発表者のみなさま、会場を提供してくださったVOYAGE GROUPさま、ありがとうございました!! 15分セッション 1. 実際のアプリ開発で使った Rx を紹介 ( bl_lia さん) 2. ReactiveX のドキュメントにある図の見方の解説 ( yanzm さん) How to read "marble diagram" from Yuki Anzai 3. RxJava + Vert.x + jOOλ で Microservice 的な何かを作ってみた(業務的に)( chimerast さん) 4. Tapping Retry
Rx.Scheduler RxにはSchedulerと呼ばれる主要概念がある. 値がpushで飛んでくるというRxのインパクトの後ろに隠れがちなSchedulerではあるが, これにより, 処理系のスレッドモデル(並行性)と時間軸にまつわるタイミングの制御を統一的に扱えるようにしている. 後続へのoperatorへの値の送出タイミングの制御, Observableの処理スレッドの指定, タイマーのモックへの差し替えなどがSchedulerによって実現されている. さてJavaScriptの場合, 原則的には単一スレッドの世界になる. Javaや.NETの場合とは違い, RxのSchdulerの役割は回り続けるイベントループ抽象となる. 永久に回り続けるイベントループの中で, どの時点で処理をdispatachするかがSchedulerの役目だ. JavaScriptの世界にはメモリ空間を共
追記(2017/05/2) redux-sagaでの非同期バージョンの紹介とリンクを追記。 追記(2017/2/23修正) 元記事の追記3にて言及を頂いたように、以下の「見易い版」コードは元コードが実現していた機能が抜けおちているという誤りがあります。遅くなりましたが、お詫びの上修正させていただきます。 修正内容は以下の「refreshボタン押下ですべての候補を消去」の項目に追記しました。 上記追記の趣旨として、リアクティブプログラミングはそれほど判り難いのだ、というご指摘になっていますが、返す言葉もございません。 はじめに 先日「リアクティブプログラミングとは何だったか」という記事を目にしまして、内容はたいへん興味深かったのですが、以下の記述がありました。 『宣言的』といえそうなのはわかりますし、パラダイムとして従来のコードとは一線を画すものであることは確かですが、どう贔屓目にみてもひた
The document describes how to use RxJava to make asynchronous API calls and handle the results. It defines a searchRecipe method that returns an Observable object to search for recipes by keyword. Subscribers can subscribe to the Observable and handle the onNext, onError and onCompleted events to update the UI in response to the API call results. Operators like map, subscribeOn and observeOn are u
LINQPad は .NET コードのお手軽な実行環境、そして良質なデータ ビジュアライザとして全ての .NET ユーザの必携ツールといっても過言ではないといえるのではないでしょうか。入力補完などの一部の便利な機能は有料ではありますが、実際のところ、購入する価値は十分にあると思います。 それはさておき、LINQPad はどんなオブジェクトも .Dump() すれば見やすく表示してくれるというのが最高に魅力的です。これだけでも LINQPad は十分に便利で使う価値があります。ですが、LINQPad の便利さはそれに留まるものではありません。 …ということ等々を以前書いたりもしましたが、文章ばかりの記事でして面白みにも少し欠けていました。先の記事は割と総論的な内容だったので、趣向を変えて、面白く膨らませそうな LINQPad の便利な使い方について、折にふれて書いていこうと思います。 さて、
GUIを持つアプリケーションの設計では、ソフトウェアアーキテクチャパターン*1としてMVCパターンを使用し、MVCパターンを実現する上で、Modelの変更をViewやControllerへ通知する仕組みにデザインパターン*2としてObserverパターンを使用するのが古典的定番です。 ところが、Observerパターンを使ったModelには、Observableのリストを管理し、状態変更の際にリストに登録されるObserbable全てに通知する仕組みを実装する必要があり、結構な作業となります*3。 このModelからの通知をObserverパターンで実現する代わりに、イベントバスを使って実現すると、Modelの実装を簡潔にすることができます。Java SEではあまり事例を見かけませんが、Androidでは割とメジャーに使われているようです。 先日、Androidでイベントバスのライブラリを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く