Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Androidアプリを リアーキテクチャした話 2021.09.16 morizooo Tech Night © 2021 Mirrativ, Inc.
Slide 2
Slide 2 text
●Profile ●morizooo(@morizo_999) ●ミラティブAndroid担当(2018/2〜) ●マイブーム:高級食パン,APEX
Slide 3
Slide 3 text
99 ● リアーキテクチャをした理由 ● リアーキテクチャを実施した流れ ● 現在取り組んでいること 今日話すこと
Slide 4
Slide 4 text
目次 99 リアーキテクチャを した理由
Slide 5
Slide 5 text
99 ● 副業メンバーからのフィードバック ○ 既存のコードのキャッチアップがつらい ○ ルールがないのでどのように書けばいか迷う ● 既存コードが原因で離脱してしまうことも → チームとしてスケールするために見直しが必要 理由
Slide 6
Slide 6 text
99 ● 厳密なルールがないのでActivityに処理が集中 ○ 6000行のActivityが存在😇 ● 最凶のBaseクラス ○ すべてのActivityが1000行のクラスを継承 ○ 状態の変更が意図せず起こってしまう ● EventBusでたらい回しにされる ○ たらい回しの途中で状態が更新されていることもある ● 度重なるパッチコード対応で意図がわからない ● Android Annotationsの学習コスト 既存コードの問題の例
Slide 7
Slide 7 text
目次 99 リアーキテクチャを 実施した流れ
Slide 8
Slide 8 text
99 ● Baseクラスを解体 ● ライブラリへの依存(Android Annotationsなど)をなくす ● パッケージ構造の整理 ● Kotlin化する 詳細はTech Blogへ!! https://tech.mirrativ.stream/entry/android-dx 既存コードの問題を整理(2019/04 - 2019/10)
Slide 9
Slide 9 text
99 ● Fluxアーキテクチャを選定 ○ 状態管理の問題を解消できそうだった ○ iOSもFluxを選定していた ● Fluxでのリファレンス実装を作成 ○ 12月時点のPRで新規画面ではFlux実装を必須にした ○ 現在でも都度都度議論して随時更新している 理想形の作成と周知(2019/10 - 2019/12)
Slide 10
Slide 10 text
99 FLUXアーキテクチャについて ActionCreator Dispatcher Store View User Interaction ActionEvent EventBus State (BindModel)
Slide 11
Slide 11 text
99 ● コードはTech Blogに詳細を書いたので見てください!! https://tech.mirrativ.stream/entry/2021/06/01/102044 FLUXアーキテクチャについて
Slide 12
Slide 12 text
99 ● 触ったところをFluxに書き換えていくようにした ○ プロダクト開発が最優先 ○ 既存コードの変更はnice to have ○ 追加開発に時間がかかるようになってきたものは、長めに 開発期間をもらう等の交渉はした ○ QA時に影響がありそうな部分は伝えて見てもらう ■ targetSDKのバージョンアップはフルチェック → お祭りとして強気に変更していた FLUXアーキテクチャに置き換え(2020/01 -)
Slide 13
Slide 13 text
99 ● 画面リニューアルの場合はまるっと書き換えた ○ 既存のコードは引きづられるので見ないほうがいい ● 更新がない画面はそのまま残っている ○ リーアキテクチャするメリットが無い 現在では普段触る部分はFluxになっている FLUXアーキテクチャに置き換え(2020/01 -)
Slide 14
Slide 14 text
目次 99 現在 取り組んでいること
Slide 15
Slide 15 text
99 ● Multi Module化 ○ ビルド速度早くしたい ○ 機能単位のモジュールは作ったので移行中 ● Jetpack Composeの導入 ○ 状態が以前の状態に左右されず処理がわかりやすい ○ リファレンス実装作って導入済み ■ 今は各々実装しながら議論しているところ 現在の取り組み
Slide 16
Slide 16 text
99 ● 今QのOKR 現在の取り組み
Slide 17
Slide 17 text
99 ● 段階的にリアーキテクチャをすすめた ○ まずは既存コードの見通しをよくする ○ 理想系を決めて周知し、プロダクト開発と一緒に書き換え ていく ● リアーキテクチャの効果 ○ 副業時にコードが辛いと離脱した人も今では社員に! ○ 最近Joinしたメンバーからも好評 ● 更に一緒に改善していく仲間を探しています!!! まとめ