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
RxJava 1.x -> 2.x に移行した話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
uzzu
July 25, 2017
Technology
900
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
Context Receiversに思いを馳せる / Context Receivers
uzzu
0
760
StoreKitのこれまでとこれから / StoreKit 2 from 1
uzzu
5
21k
Autofill Framework
uzzu
0
150
アプリ内課金の最新事情 クライアントサイド編 / In-app Purchase in Cookpad 2019
uzzu
3
4.6k
Billing Client 2.0 acknowledgement
uzzu
0
17k
Promoting IAP対応から学ぶ外部アプリ内課金実装 / Promoting IAP and others
uzzu
2
1.6k
ブログ作り直した / My blog @ Othlo Tech
uzzu
0
210
新規アプリ開発を支えるユーザ・決済基盤
uzzu
2
2.9k
kotlin-mpp-library-tips
uzzu
1
6.5k
Other Decks in Technology
See All in Technology
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
870
EventBridge Connection
_kensh
5
670
Snowflakeと仲良くなる第一歩
coco_se
4
310
Microsoft Build Keynoteふりかえり
tomokusaba
0
120
自律型AIエージェントは何を破壊するのか
kojira
0
130
MCP Appsを作ってみよう
iwamot
PRO
4
290
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
310
Databricks における 生成AIガバナンスの実践
taka_aki
1
360
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
4
1.2k
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
170
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
170
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
3
1.1k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Fireside Chat
paigeccino
42
3.9k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Agile that works and the tools we love
rasmusluckow
331
21k
RailsConf 2023
tenderlove
30
1.5k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
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