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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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.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
220
新規アプリ開発を支えるユーザ・決済基盤
uzzu
2
2.9k
kotlin-mpp-library-tips
uzzu
1
6.5k
Other Decks in Technology
See All in Technology
自宅LLMの話
jacopen
1
600
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
140
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
680
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.2k
20260619 私の日常業務での生成 AI 活用
masaruogura
1
220
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
600
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.1k
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
180
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
攻撃者視点で考えるDetection Engineering
cryptopeg
3
1.9k
RAG を使わないという選択肢
tatsutaka
1
250
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
120
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
410
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Statistics for Hackers
jakevdp
799
230k
Chasing Engaging Ingredients in Design
codingconduct
0
220
Marketing to machines
jonoalderson
1
5.5k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
New Earth Scene 8
popppiees
3
2.3k
Being A Developer After 40
akosma
91
590k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
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