Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RxJSのカスタムオペレータに挑戦しよう!
Search
ponday
March 16, 2018
Programming
0
160
RxJSのカスタムオペレータに挑戦しよう!
Angular触ろうの会 in Fukuoka #5(2018/03/16)の発表資料です。
ponday
March 16, 2018
Tweet
Share
More Decks by ponday
See All by ponday
関数型でGoFのデザインパターンやってみる
honda
0
950
TypeScriptの型表現
honda
10
2.8k
Web Componentsの今
honda
1
370
これまでのReact、これからのReact
honda
0
240
Gatsbyお試し
honda
0
110
styled-components or emotion?
honda
0
610
Web ComponentsとAngular
honda
0
130
Atomic Design周りについての私見
honda
1
540
え、まだWeb Componentsを未来の技術だと思ってるの?
honda
2
680
Other Decks in Programming
See All in Programming
VS Code をプロダクトにどう取り込むか
onomax
1
360
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
Git Rebase
bkuhlmann
11
1.6k
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
雑に思考を整理する技術と効能
konifar
60
29k
Anthropic Cookbook のおすすめレシピ
schroneko
7
970
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
240
使ってみよう Azure AI Document Intelligence
kosmosebi
2
310
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
130
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
49
29k
Docker and Python
trallard
34
2.7k
Side Projects
sachag
451
41k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Typedesign – Prime Four
hannesfritz
36
2.1k
Thoughts on Productivity
jonyablonski
58
3.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
40
4.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
What's new in Ruby 2.0
geeforr
337
31k
Into the Great Unknown - MozCon
thekraken
10
990
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Transcript
RxJSのカスタムオペレータに挑戦しよう! Angular触ろうの会 in Fukuoka #5 / Mar 16, 2018 ponday
(@ponday_dev)
Profile Honda, Yusuke (@ponday_dev) Community - chibi-developer - ng-fukuoka Like
- JavaScript / TypeScript / Kotlin - RxJS / Angular / Vue.js Other skills - C# / Java / Python - Spring Boot SIer / System Engineer
loves
loves
カスタムオペレータ - 自分で独自のオペレータを定義できる - バージョン5.5でpipeが提供され、使いやすくなった - 汎用的なものは大体提供されているので、使う機会はそこま で多くない - ある程度使い慣れた人向けの機能(?)
https://github.com/ReactiveX/rxjs/blob/master/doc/operator-creation.md 公式ドキュメント
None
分かりづらい
読み解く
オペレータ?
None
入力:Observable<T> 出力:Observable<R>
None
型を付けるとこう
型を付けるとこう ココ
Observable.create - 名前の通り、Observableのインスタンスを生成する。 - 引数にSubscriber => Subscription※な関数を取る ※ 正確にはSubcriber =>
TeardownLogic TeardownLogicにSubscriptionも含まれるのでわかりやすさのため
Subscriber - next/error/completeに加えてunsubscribeも持つ - Subscriberを通して次のオペレータやsubscribeに処理を渡す ことができる。
サンプルオペレータの動作 sourceをsubscribeして値を取得
サンプルオペレータの動作 sourceの値をcallbackで処理して戻り値をnext
サンプルオペレータの動作 callbackでエラーが起これば errorに分岐
サンプルオペレータの動作 sourceのerrorやcompleteはそのまま流す
一番外側の関数はオペレータ = Observable => Observable な関数を生成するのが仕事。
どちらかと言うと中身のほうが重要
まとめ - 結構シンプルに実装できる。見慣れない要素が出てくるので 難しそうに見えるだけ。 - 乱用すべきではない(と思う) - 標準のオペレータのみで簡潔に表現できるならそのほうが良い - 読みやすさを向上できるなら利用して良い
- ちゃんとサンプルで型を付けてくれていれば ソースリーディングの入り口に良かった気はする
相変わらずRxJSは公式のドキュメントがイマイチ...
こんなところに日本語情報が https://booth.pm/ja/items/659290
※ カスタムオペレータについての記述はありません
サンプル
数値をn倍する
条件に一致しない値が流れたらerrorを起こす