はじめまして、ユキギガンテと申します。
Androidエンジニアとしてお仕事をしています。
グラブルとアプリ開発が好きです。
このアプリが誕生した経緯
それは私がAndroidエンジニアになる前のこと。
エンジニアになるために独学していた中で、自分でも何かアプリを作ってみたいと思ったのがきっかけです。noteに当時の話を投稿してみたのでよろしければご覧ください。
私大文卒エンジニアの成り上がり#note
旧バージョン
こんな感じ。
未経験の時代に独学で作っただけあって、ソースコードは凄い。
本当に動くのか、実験用に色々試したコードの集合体だ。
新バージョン
こんな感じ。
2個以上の同時検索や、オートリトライ設定等、検索面での機能を追加してる。
技術紹介
今回このアプリに取り入れている技術要素を紹介していく。
CleanArchitecture × MultiModule
言わずと知れたクリーンアーキテクチャ。
私もかなり好んでおり、業務でもよく採用する。そこにマルチモジュールを採用することで依存関係を厳格化している。DIにはDaggerを使用。
実際のモジュール構成はこちら
RxJava/Kotlin
ストリームで複雑な処理を作るのが好きなので、Rxを好んで使用している。
Coroutineも良いがストリーム操作においてはRxのほうが強いかなぁ。
検索機能における設定項目を複数実装したがそれもすべて1つのストリームで実現している。
//設定読み込み
loadSetting.execute(NoRequestValue)
.flatMap {
enableDuplicateRetry = it.find{ setting -> setting.first == SettingModel.DUPLICATE_RETRY }?.second ?: false
enableAutoRetry = it.find{ setting -> setting.first == SettingModel.AUTO_RETRY }?.second ?: false
//検索実行
searchRescue.execute(NoRequestValue)
}
.repeatWhen {
it.takeWhile {
(retryCount < RETRY_LIMIT_COUNT)
&& (enableAutoRetry || enableDuplicateRetry)
}.delay(RETRY_INTERVAL_TIME_MILLIS, MILLISECONDS)
...以下省略
MotionLayout (ConstraintLayout2.0)
画面の動きはMotionLayoutを用いて実装した。
全てxmlで定義が可能で、この動きに関する実装でコードは1行も書いていない。
SharedElementTransition
画面遷移のアニメーション。昔GooglePlayで使われていたやつ。
最近はNavigationでの実装で遷移アニメーションの扱いが若干楽になった気がするが、遷移アニメーション自体は割と昔からある。
Service
この常駐windowはServiceを活用して実装している。
よくServiceにViewを持てるのかと聞かれるが、気合で持たせるのである。
おわりに
このアプリは私が初めて作ったAndroidのアプリです。
それを今までずっとアップデートしてきていて、ついにフルスクラッチしました。
昔の自分のコードを見るのも面白いものです。今だから気づけることがたくさんあるので自分の成長を実感できます。
でもやはり、実際にアプリを使ってもらって、
レビューを貰ったり、応援の言葉を貰ったり、時には厳しい意見を貰ったりしながら開発していけるのが個人開発の醍醐味ですかね!
よろしければ、是非インストールしてみてください!
https://play.google.com/store/apps/details?id=com.app.yuqinta.kinofjob&hl=ja