ReCoCaで使っているAndroid向けライブラリ

ReCoCa (https://play.google.com/store/apps/details?id=com.itog_lab.android.recoca&hl=en) という車の燃費などを管理するアプリを公開してからまもなくリリースから5年が経とうとしていますが、パッと使った感じには大きな変更がないようにしながらも、継続的にさまざまな機能追加をし、さまざまなライブラリを使っています。以下ReCoCaで使っているライブラリとその所感を紹介します。

基本方針

一度導入したライブラリの利用を止める、他のライブラリに乗り換えるというのは機能追加のように効果を見込んだものではなく、コストもかかるため少人数での開発においては極力避けなければ行けません。そのため、将来に渡って使い続けられることに重きを置いています。

使っているライブラリ

バックエンド Parse.com

バックエンドはParse.comを使っています。Parse以前はバックエンドをHerokuにしたり、GAEにしたり、AWSにしたりといろいろ試して見ましたが、ReCoCaに関してはアプリにフォーカスするためmBaaSを導入しました。mBaaSはParse以外にもありますが、モバイルアプリのバックエンドとしてはParseがリードし続けていると思うので乗り換えることはないでしょう。

非同期処理 Bolts

上記ParseのAPIがBoltsに対応していることもあって使っています。JavaScriptのpromiseのJava番で、非同期処理をシーケンシャルに実行したり、複数の非同期処理の待ち合わせに使います。
promiseの考え方がわかっていても、Javaになるとどうしても定形文的なクラス、メソッドを書かないと行けないので見やすくはないですが、これは慣れるしかないかなと思います。

最近RxJavaが話題なので試して見たいとは思いますが、費用対効果を考えると乗り換えることは当面はなさそうです。

クラッシュレポート Crashlytics

いまはTwitterに買収されFabricという開発ツール郡の一つになっているクラッシュレポートツール。Google Playにも標準でクラッシュレポートツールがありますが、反映の早さや使いやすさなどこちらが圧勝のため使っています。

理想的には公開前に多機種での検証をするに越したことはないのですが、リソースが限られている場合はクラッシュレポートと次に述べるテスト配信、段階的公開を使うのも一つの手だと思います。

テスト配信 Google Play, β

テスター向けへの配信は、Google Playのα/β公開機能を使っています。アプリをリリースビルドしたらまずはα公開して社内でテスト、次に必要があればβ公開して社外テスターによるテスト、そののち段階的公開を行います。

新規開発アプリであればCrashlyticsの配信ツールβを使います。

利用状況解析 ParseAnalytics, Mixpanel, Google Analytics

基本Parseを導入すると解析も簡単に導入できるので有効にしています。DAU/MAUなどはこれでチェック出来ます。
Mixpanelは無料枠のAPIコール数が限られているので一部しか撮っていませんがファンネルなどユーザーの行動までわかるので、たまにチェックしているという感じです。
Google Analyticsは、、、実はだいぶ前に導入してからアップデートしてないwしないと。

広告 AdMob

以前はnendを使っていましたが、アダルト、ゲーム系の出稿が多いため乗り換え。自動車会社の広告がそこそこの頻度で出るので個人的にはクリックしたくなる広告が増えたのですが、CTRはそこまで変わりませんでした。

Twitter連携 Twitter4j

老舗のTwitterライブラリ。一度連携した後はノーアクションでTweetされるというのが、ユーザーがReCoCaを選ぶ理由のひとつにもなっているので使い続けています。

Twitter4jは今年8周年を迎え、お祝いを募集中です。
http://samuraism.jp/diary/2015/06/09/1433855580000.html

利用するのをやめたライブラリ

Aviary

所有車の写真を設定する際に使っていたライブラリ。国内のアプリだとメルカリに使われています。いつかのバージョンでビルドが通らなくなり、その後Adobeに買収されてCreativeSDKに統合されてからは追ってません。

TestFlight

やめたというか使えなくなったんだけどねwずっとiOSのみサポートしていて、やっとAndroid対応したので喜んで配信に使っていたのですがAppleに買収されて使えなくなるという、、無料を喜んでばかりはいられないと思いました。
TestFlight買収に見る無料サービスの怖さ - Hacking My Way 〜 itogのhack日記

今後導入予定のライブラリ

Data binding

これまでAndroidではViewのレイアウトとオブジェクトを結びつけるのに毎回findViewById()などを呼ばなくては行けませんでした。View Injectionするライブラリのりようも考えたことはありますが、View要素が頻繁に変わることはないことと、将来標準サポートされることを願って使いませんでした。ということで待ってました!

まとめ

以上がReCoCaで使っているライブラリ郡です。こう見るとそこそこ長期間に渡って使っている物が多く、その他の自社アプリ、受託開発アプリでも上記を使うことが多いです。

一方で、何度も導入を試してはあきらめているのがテスト系のツールです。最近Googleがこの辺にも力を注ぎ始めているようなので今後に期待です。