10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

qnoteAdvent Calendar 2019

Day 24

人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話

Last updated at Posted at 2019-12-23

#はじめに
先にタイトルのオチを書いてしまいましょう!

人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話

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
猫が好きな方はぜひ読んでみてください♪

10
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?