仕事でAndroid開発は続けてやっているものの、ひたすら、ぼっち開発で、ガラパゴス化が酷くなってきた予感があったので情報を得に行ってきました。
http://gdg-tokyo.connpass.com/event/38927/
以下の3つに参加
- Android テスト ハンズオン
- Mobile Vision and Cloud Speech API ハンズオン
- Android 開発のライブラリについて Shibuya.apk
Firebase系も気にはなりつつ、それは自分で調べたり、別の勉強会にも行くので今回はパス。
資料をまとめている方が居るので、他のセッションはこちらを!
http://qiita.com/winterwind26/items/29e6f0d6e057deff6bad
Android テスト ハンズオン
資料
http://qiita.com/cattaka/items/83f7a82ce80f352ef7c9
メモ
- 昔のAndroidに対応しているJUnitはバージョンが低かったから微妙だったので、今はJUnit4なので、今時な書き方になっている
- アプリの操作のテストはEspressoを使う
- 「./gradlew :app:dependencies」でgradleのdependenciesを確認できる
雑感
テストをしようって3年ぐらい言ってて、結局やらずにここまで来てしまったので、いい加減にやらないと…と思い参加。
時間内に全ては終わらなかったけど、この資料はとっかかりに良さそう。
Espressoとか、めっちゃ聞くので、近いうちに必ずやっとく。
Mobile Vision and Cloud Speech API ハンズオン
Mobile Vision
- 顔認識とかバーコード読み取りとか文字認識ができる
- 標準APIなので、どの端末でも使えるし、無料で使える
固定画像の顔認識
https://codelabs.developers.google.com/codelabs/face-detection/#0
更にカメラを使ったりしたいなら、このサンプルを確認すると良い
https://github.com/googlesamples/android-vision
play-servicesのバージョン指定は、最新の9.6は全部入れると大きすぎてビルドできないので、個別に指定
compile 'com.google.android.gms:play-services-vision:9.6.1'
Cloud Speech API
- 音声をテキストに変換するAPI
- gRPCを使ったストリーミング機能なので、めっちゃリアルタイムで通信できる
- gRPCはポケモンGOとかで使われてる
サンプル(speech/Speech 以下)
https://github.com/GoogleCloudPlatform/android-docs-samples
Google Cloud PlatformのAPIなので…
- Credentialファイルが必要
- Google Cloud Platformのサイトで作成してダウンロードして res/raw に入れる
- 実際にリリースするならCredentialファイル取られちゃうので、通常はサーバにアップしてトークンとかであれする
- 1アカウント1ヶ月1時間まで無料だが、それ以上は時間でお金がかかる
雑感
導入しやすい上に、結構な機能が使えるので、どちらももう少し触っておきたい。
Cloud Speech APIとか、いくらでも使いたい機能なんだけど、どうしても有料にはなってしまうので、ツールレベルというよりは、何かしらしっかりした有料のサービスベースでないと難しいところ。
Android 開発のライブラリについて Shibuya.apk
Shibuya.apk各社のアプリで使っているライブラリを晒して、集計して、まとめる企画。
分野ごとにランキングを発表して、以下のアプリ開発の方が補足。
- CyberAgent – FRESH!
- DeNA – マンガボックス
- ヤフー – スマホ最適化ツール
- ソウゾウ – メルカリアッテ
https://github.com/shibuya-apk/devfest-tokyo-2016
いくつかランキングと、前の方が話した内容のメモったものと、世間との隔たりを大きく感じたので雑感を。
言語
ランキングは、retrolambda(7app)、ThreeTenABP(5app)、AndroidAnnotations(4app)
- 2appだったが、Kotlinはやっぱり注目
- 雑感:Kotlinでようやく興味を持ったけど他は全然知らんかった…
通信
ランキングは、okhttp3(9app)、retrofit2(6app)、okhttp(6app)、volley(6app)
- okhttp3とretrofit2の組み合わせが鉄板
- volleyはカスタマイズしまくって脱却できなくなってるケースがあり、やっぱりこういうのは負債になってしまうのでシンプルなのが良い
- okhttp3とokhttpが同居しちゃってるケースもあったり
- 雑感:直近の案件とか、Google推奨が1番いいだろうってことで、HttpURLConnectionで頑張ってみてたけど、間違いだったか…どっちにしてもokhttpはやるつもりだったので、これで絶対やらないとヤバいって気持ちにはなれた
画像
ランキングは、glide(8app)、picasso(6app)、glide-transformations(6app)
- 雑感:使いどころすら分かってない…
動画
ランキングは、exoplayer(8app)、exoplayer-textureview(3app)、isoparser(2app)
- 雑感:最近、初めてVideoView使ったレベル
DB
ランキングは差がなく、ActiveAndroid(3app)、OrmLite(2app)、後は1appでsqlbrite、Android-Orma、Realm、greenDAO、DBFlow
- 好きなものを使えばいい感じだが、sqlbriteを勧めていたような話があったような気はするが、理由とかはよく理解できなかった
- 前に出てた方で、どれも使ってないって人も居た
- 雑感:どれを信じたらいいか判断がつかず、ライブラリなしでやってたので、使ってないっていう意見もあって少し安心
OrmLiteぐらいはどこかで使おうと思っているのと、今回話題に上がったsqlbriteはちょっと見てみる
JSON/Protocol Buffer
ランキングは、gson(14app)、jackson(3app)、wire(2app)
- 雑感:何の疑いもなくJSONObjectを使っていたので、gsonの利用数と、会場の「当然だよなぁ」って雰囲気に震えた…
確かに仕事で組み込んだ他社さん製のライブラリプロジェクトにgson入ってたな(あとvolley)
DI/View Injection
ランキングは、butterknife(8app)、Data Binding(2app)、kotterknife(1app)
- 今後はData Bindingが増えていくだろう
- kotterknifeはKotlin向け
- 雑感:Dagger2は知ってて、Data Bindingも最近知ったので、Data Bindingをやればいいんだなって思っては居たのでズレがなくて唯一安心したところ
butterknifeは全然知らなかったけれども
View
ランキングは、Android-ObservableScrollView(6app)、recyclerview-animators(5app)、RecyclerView-MultipleViewTypesAdapter(5app)
- 演出系とかは好みで
- RecyclerViewのViewTypeのハンドリングとかみんな苦労してるはずだけどどうしてるのか
- 雑感:RecyclerViewは最近ようやく使い始めたのと、そこまで複雑な処理をしてないので、ここの苦労はわからなかった
こういうところでライブラリを使ったほうがいいかもって選択肢も持っていければ
その他
- PermissionsDispatcherは、ほぼGoogle公認なのでオススメ
各社app
1アプリあたりのOSS利用個数平均
- CyberAgent – 52.9
- ソウゾウ – 39.0
- DeNA – 35.2
- ヤフー – 21.8
- Support Libraryを含むので、実際はもっと少ないはず
- 導入する人が個々で責任を持ってアップデートする会社があり
- 24時間以内に最新に上げるというルールがある会社もあり
- ライセンスをきっちり管理する関係上、承認に時間がかかるので、Support Libraryのバージョンもかなり古いものを使っているケースがある会社もあり
追記:発表資料アップされてた。
https://docs.google.com/presentation/d/11pCsJmahMIP9Gldt39nPnd0XX4lrvycpuNibPmDQ-SM/pub?start=false&loop=false&delayms=3000&slide=id.p6
感想
案件によっては、こういった対応が必要ないケースも多くあるけど、やっぱり知らないってのは恐ろしいことには違いないので、今回得た情報は、良い材料として使っていきたいところ。
と言いつつも、ブログは変わらず小ネタばかり上げていくと思うけど。