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したメンバーからも好評 ● 更に一緒に改善していく仲間を探しています!!! まとめ