Help us understand the problem. What is going on with this article?

EAP Androidアプリの技術トピック

More than 1 year has passed since last update.

今回は弊社プロダクト「EAP」のAndroidアプリの技術トピックについて紹介します。

開発言語: Kotlin, Java

EAPの最初のコミットは2017年10月です。当時のランチェスターの開発標準として、コードはJavaで記述していました。2018年6月から開発が始まったEAP1.3からは主要言語にKotlinを採用し、新規のコードはKotlinで記述しています。加えて、既存のコードもKotlinへの書き換えを行っています。

EAP以前にはプロダクションコードをKotlinで書くことがありませんでしたが、Kotlinスタートブック(通称:赤べこ本)やKotlinイン・アクションなどを読んでいたこともあって、開発当初から特に支障はありませんでした。これらの本を読まなかったとしても、Javaの経験があれば言語自体は理解しやすいですし、Android StudioにはJavaからKotlinへの一発変換機能があるので、移行しやすい言語という印象があります。

既存コードのKotlin化については、また別の機会にご紹介したいと思います。

アーキテクチャ: MVP

EAPではアプリの基本構成にMVP(Model-View-Presenter)を採用しています。アーキテクチャを採用する経緯など、詳しくは EAP MVPアーキテクチャの取り組み を御覧ください。

MVPについては比較的シンプルな構成のアーキテクチャのため学習コストが低く、さらにGoogleが提供するアーキテクチャのサンプルであるAndroid Architecture Blueprintsが公開されていることや、DroidKaigiなどのAndroid開発者向けカンファレンスでも頻繁に話題にされたこともあって、学習しやすいアーキテクチャといえます。

EAPの構成もMVPアーキテクチャに則った実装となっているため、開発言語と同様にこちらも理解するのに特に支障はありませんでした。

MVPの利点としてEAPのiOSアプリでは可読性の高さをあげていましたが、Androidアプリでも同様です。
具体的には、ViewとPresenterのインターフェースを規定することにより、ある程度どこに何を記述するのかを明確になります。これによって、コードレビューする際や、保守する場合などで途中からコードを把握する際にも、読むべきポイントを把握しやすくなります。コードを書く際でも、どこに書くべきかを考える負荷が減ることによって、対象の関心事に集中しやすくなるといえます。MVPについて他のメンバーにも感想を聞いたところ、同様の理由で概ね好評でした。

MVPの別の利点としては、Viewのない状態でのモック化が容易で単体テストのしやすさがありますが、EAPではこの利点を十分に生かしきれていないので、これからの課題かなと思います。

ライブラリ

採用しているライブラリについてもいくつか簡単に紹介します。

DataBinding

主にView Injectionの機能として、DataBindingを利用しています。同様のライブラリとしてButter Knifeがあり、個人的にはこちらを利用する機会が多かったのですが、これと比較してもボイラープレートの記述がだいぶ減って楽になった印象です。

OkHttp, Retrofit, Moshi

HTTP通信まわりは、デファクトスタンダードなSquare製のOkHttp, Retrofitと、JSONパーサとしてMoshiを利用しています。

RxJava, RxAndroid, RxKotlin

リアクティブプログラミングの目的というよりも、APIの非同期通信のライブラリとしてRxJavaRxAndroid、RxJavaのKotlin向けの拡張関数としてRxKotlinを利用しています。

Picasso

画像ローダとしては、Square製のPicassoを利用しています。特にSquare製のライブラリで統一するというポリシーではないのですが、いろいろとお世話になっています。ただ、Picassoについては開発が長年滞っているため、代替えとしてGlidefrescoなどへの置き換えをアプリチーム内で検討しています。

以上、EAP Androidアプリの技術トピックについて紹介しました。
これからも価値あるアプリの提供を目指して開発面でも様々な改善を続けていきますので、どうぞよろしくお願いします!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away