Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RxJava 1.x -> 2.x に移行した話
Search
uzzu
July 25, 2017
Technology
910
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RxJava 1.x -> 2.x に移行した話
https://potatotips.connpass.com/event/60015/
uzzu
July 25, 2017
More Decks by uzzu
See All by uzzu
あなたは 何をして 何をもたらすのか? / reskilling-at-tokyo-2026
uzzu
0
38
Context Receiversに思いを馳せる / Context Receivers
uzzu
0
780
StoreKitのこれまでとこれから / StoreKit 2 from 1
uzzu
5
22k
Autofill Framework
uzzu
0
160
アプリ内課金の最新事情 クライアントサイド編 / In-app Purchase in Cookpad 2019
uzzu
3
4.7k
Billing Client 2.0 acknowledgement
uzzu
0
17k
Promoting IAP対応から学ぶ外部アプリ内課金実装 / Promoting IAP and others
uzzu
2
1.6k
ブログ作り直した / My blog @ Othlo Tech
uzzu
0
230
新規アプリ開発を支えるユーザ・決済基盤
uzzu
2
3k
Other Decks in Technology
See All in Technology
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
350
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
350
GoにおけるFFIのこれまでとこれから
goccy
5
2.5k
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
150
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
130
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
160
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
220
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
980
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.4k
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
280
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
150
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.8k
Exploring anti-patterns in Rails
aemeredith
3
500
Agile that works and the tools we love
rasmusluckow
331
22k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Why Our Code Smells
bkeepers
PRO
340
58k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
RailsConf 2023
tenderlove
30
1.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
420
The Curious Case for Waylosing
cassininazir
1
500
Transcript
RxJava 1.x -> 2.x @uzzu
None
⽅針 ・基本minimum releaseしたい ・master branchで1.xと2.xを共存させない ・適切な記述には書き換えない ・シナリオテストをトピック毎に通す
1. null許容なコードをnull⾮許容な形に修正 2. 依存ライブラリをnull⾮許容な形に修正 3. シナリオテスト実施、リリース 4. 統合⽤branch作成、RxJava1.xとRxJava2.xを共存させる 5. 依存ライブラリ利⽤箇所にRxJava2Interopを適⽤
6. シナリオテスト実施 7. 依存ライブラリの2.x対応 8. 依存ライブラリ利⽤箇所のRxJava2Interop利⽤箇所を削除 9. シナリオテスト実施 10. 本体コードにRxJava2Interopを適⽤ 11. シナリオテスト実施 12. Observable Sourceを2.x対応、 RxJava2Interop利⽤箇所を削除 13. シナリオテスト実施 14. 1.x, RxJava2Interopを削除 15. 実⽤段階アナウンス & masterマージ 16. リリース(予定)
1. null許容なコードをnull⾮許容な形に修正 2. 依存ライブラリをnull⾮許容な形に修正 3. シナリオテスト実施、リリース 4. 統合⽤branch作成、RxJava1.xとRxJava2.xを共存させる 5. 依存ライブラリ利⽤箇所にRxJava2Interopを適⽤
6. シナリオテスト実施 7. 依存ライブラリの2.x対応 8. 依存ライブラリ利⽤箇所のRxJava2Interop利⽤箇所を削除 9. シナリオテスト実施 10. 本体コードにRxJava2Interopを適⽤ 11. シナリオテスト実施 12. Observable Sourceを2.x対応、 RxJava2Interop利⽤箇所を削除 13. シナリオテスト実施 14. 1.x, RxJava2Interopを削除 15. 実⽤段階アナウンス & masterマージ 16. リリース(予定)
null⾮許容対応 ・2.xからnull⾮許容 ・これだけでminimum releaseできそう ・Completable, ⾃作Optional<T>, 空List<T>
1.xと2.xの共存 ・共存した状態でトピック毎に リリース可能な状態にはしていた ・ただ頭がおかしくなりそうだった ・共存しながらminimum releaseしつつ 徐々に移⾏は困難と判断 ・適宜masterブランチを取り込み2.x対応
ਆ https://github.com/akarnokd/RxJava2Interop
地味なTIPS (via: https://github.com/ReactiveX/RxJava/issues/4445)
シナリオテストの実施 ・リリース前に実施するシナリオテストを トピック毎に実施 ・動作互換性の担保
より適切なreactive streamの記述には書き換えない ・綺麗にするのは我慢 ・コードレビューのしやすさと 動作互換性を優先 ・2.x勉強がてらリファクタリングできる 隙があってもいいと思う
実⽤段階アナウンス リリース済 バージョン RCバージョン 次の バージョン
実⽤段階アナウンス ・Rx⽤語の変更差分 ・コーディングにおける注意点 ・依存ライブラリのAPI Changesの列挙 ・「RxJava2やっていこうな」
None
まとめ ・⼤掛かりな移⾏になりそうだったら… ・minimum releaseできそうならしよう ・まず⾮null許容対応をしよう ・RxJava2Interopを使おう ・1.xと2.xの共存は周辺整備しないと無理 ・テスト書こう ・「RxJava2やっていこうな」
End RxJava 1.x -> 2.x