はじめに
先にタイトルのオチを書いてしまいましょう!
人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話
↓
OSもこれまでの保守会社も違うiOSとAndroidアプリを一つの会社がまとめて受け持つことになり、過去の実装方針や思想の違いを感じながら保守を行い、いつ行われるかわからない次のリニューアルに向けで準備をすすめる話です。
弊社では現在デイリーアクティブユーザー120万人超えのモバイルアプリの保守をしています。
2011年から8年間iOSの保守のみを受け持って来たのですが、その実績から今年の5月末にAndroidもやってほしいと言われ、是非にということで、そのお話をお受けしました。
私自身がiOSよりもAndroid寄りのエンジニアなので、いつかAndroidの保守もやれればと思っていたことが、ついに現実になったのです!!
ところが、そんなに甘い話ではなかった
Androidは今まで保守していた会社が複数あり、内部の構造はかなり煩雑
クラスの命名規則が意味不明、変数はキャメルケースとスネークケースが入り混じり、可読性最悪
更に前回行ったUIリニューアルで問題が悪化、ライフサイクルを無視した書き方やそもそもライフサイクルが正常に呼ばれないなどたくさんの問題を抱えていました。
さて本題
色々すっ飛ばしますが、あの手この手を使って修正を行い、最低限想定通りな挙動をすることろまで修正を行うことができました。
この半年間何度ココロが折れそうになったことか。。。。(←ただ愚痴りたかっただけw)
でも今回のテーマは未来に希望を繋げる話です。
過去は過去ということで一旦水に流して本当に流せるのか?おい!、次のリニューアルにどんなことをやってやろうか考えてワクワクしたいと思います。
夢は大きく持って勉強していきましょ
言語
選択肢としてはほぼ一択と言っていいほどですよね
もし新規案件だとしたらフレームワーク使うという方法もあるかもしれません
Android
- Java
- Kotlin
iOS
- Objective-c
- Swift
アーキテクチャ
ここはそれなりに選択肢が多くなります。
初めてAndroidでMVVMに触れたときはかなりの衝撃で、それ以来AndroidではMVVMを溺愛しております
iOSのMVVMにはRxSwiftが不可欠、ならばいっそのことという感じで、Clean Architectureを選択
Android
- MVP
- MVVM
- Clean Architecture
- Flux
iOS
- MVC
- MVP
- MVVM
- Clean Architecture
- Flux
- Redux
- VIPER
Rx
正直まだRxはちゃんと使ったことがありません、今回引き継いたAndroid版で使っていて正直意味不明
学習コストが高いと言われるのはやはり間違っていないのだなという印象、でもこれがないと始まらないんですよね。。。
Android
- RxJava
- RxAndroid
- RxKotlin
iOS
- RxSwift
- RxCocoa
通信系
Androidに関してはVolleyはそもそもDeprecatedですし。。。
OkHttpとRetrofitの組み合わせはについては、何も言うことはありませんね
iOSはAlamofireをラップしたライブラリMoyaを選択します
更にシンプルに実装ができるそう
Android
- Retrofit2
- OkHttp3
- Volley
iOS
- Alamofire
- Moya
画像系
画像系からはすでに使ったことのあるものをチョイスしました
Android
- glide
- picasso
iOS
- SDWebImage
- AlamofireImage
DB
やはりレガシーなDBより高速でわかりやすいRealmを使用します
Android
- MySQL
- Realm
iOS
- CoreData
- Realm
Jsonパーサー
Jsonパーサーも同じく使ったことがあるものを選択です
Android
- gson
- Jackson
iOS
- Codable
- SwiftyJSON
DI
Android
せっかくkotlinを使うのだらkoinを使いましょう
- dagger2
- koin
その他
その他にも便利そうなライブラリをいくつか
Android
- Data Binding Library
- LiveData
- MergeRecyclerAdapter
iOS
- FrameAccessor
- NSLayoutAnchor
まとめ
という感じで、未来に向けてボクの考える最強のアプリ開発設計です。
でもまだまだ抜けはある気がする。。。
もしこれが全部使いこなすことができれば、それなりのレベルの開発者になれるはず。
そしてどんどん新しい技術が出ているので、これだけにこだわらずアンテナを広げていきたいなと思います!
そう言えば先日弊社が猫会社として取材されました!!
https://sippo.asahi.com/article/12960031
猫が好きな方はぜひ読んでみてください♪