LoginSignup
24
24

More than 5 years have passed since last update.

DroidKaigi2016に参加してみた - Kotlin / Espresso / Animation についての感想 -

Last updated at Posted at 2016-02-24

2016年2月18日 ~ 19日にあったDroidKaigi2016に参加したので、そこで見聞きした情報 + 感想を纏めてみました

ざっくりとした感想

  • Kotlin大人気
    • でもJavaにしか慣れていないと正直難しそう
    • 正式リリース直後のタイミングなので必要以上に盛り上がっている可能性もあるが、Kotlinセミナーへの参加者も多く今後Kotlinを取り入れたアプリが増えていきそう
  • Espressoを使いこなしたい
    • 現状ロジック周りのテストは行えているが、UI周りのテストの知見がないので学習していきたい
    • 自作Viewクラス等のテスト方法が分からなかったが、自作Matcher (後述) を使えば行けるかも…?
  • 画像/Animationが色々と進化しているしている
    • 自分がアニメーション、画像処理を行うアプリを作っていた時より色々とライブラリや機能周りが進化している
    • Picasso / Glide, Animationクラスの詳細については後述

Kotlin

Kotlinの良い所

  • null安全
    • 各変数に*nullを代入して良いか (nullableか) *の設定が存在するため、気がつけばnullが入っているということがなく、nullPointerが発生しない仕組み
    • JavaとKotlinのハイブリッド式の場合は上記の通りではないため注意が必要
      • Javaで記述したStringを返す関数の結果をKotlinで記述した変数に代入する際、その変数がnullableかどうかを選べる
      • Kotlinのnullableでない変数に上記関数の結果を代入し、かつ戻り値がnullだった場合にはnullPointerが発生する可能性が出てしまう
        • というよりnullableでない変数のnullチェックは基本行わないのでリスクが膨れ上がりそう
  • ソースの記述量が減る
  • Swiftに似ている(?)ためiOSエンジニアとの連携が取りやすいらしい
  • 便利なAnnotation集
    • @JvmFields
      • Javaから参照する際、getter / setterではなくプロパティアクセスができるようになる
    • @file:JvnName
      • 拡張関数の定義時に使用する
      • Javaから参照する際、JvnNameで指定した名前の配下にあるかの様に呼び出せる
        • Kotlin側の定義
          • @file:JvnName("sampleJvnName") String.extMethod = "some random return"
        • Java側での呼出し
          • sampleJcnName.extMethod();

Kotlinの悪い所

  • Java -> Kotlinの移行に時間がかかる
    • JavaコードをKotlinコードに一瞬で変換する機能はあるが、Kotlinの利点を得るためにはあまり使わない方が良さそう
  • ver1.0.0リリース前までは動作が安定していないバージョンが多かった
    • 正式リリースした以上、今後はそういう事が少ないとは思うが、まだ確証はなさそう
  • KotterKnifeを使う場合、Fragmentは使わない方が良さそう
    • "retainInstance = true"と定義した場合にLeakが発生する

Espressoで行うUIテスト

  • http://chiuki.github.io/advanced-android-espresso/#/
  • UI AutomatorやEspresso等、UIに関するテストが出来ていない状態なので是非今後参考にしていきたい
  • 基本的にソースをベースにした説明だったので、詳しくはスライドを参照

Espressoとは

  • 自動でUIテストをしてくれる便利な子
  • ちゃんとUIの生成完了を待ってくれたり、明示的にsleepさせたりする必要もない

CustomViewをEspressoでテストするために…

  • CustomMatchersを使うことでテストができそう
  • Dagger / Mockito等を使う事でテストできる範囲が大幅に増える
  • 色々とサンプルソースもスライド内に存在するので、是非触ってみたい

進化したアニメーション

Animationの種類一覧

View自身を動かすAnimation

  • ViewAnimation
    • 上記の通り見た目だけ動かすAnimation
    • ボタン等のアニメーションをしても、タップ居位置は変わらないので注意が必要
  • PropertyAnimation
    • 一番使い勝手が良さそうなAnimationクラス
    • ObjectAnimatorを使うか、ViewPropertyAnimatorを使うかの2種類の実装方法がる
      • コードだけで完結したい場合はViewPropertyAnimator
      • XMLも書いて良いよと言う場合はObjectAnimatorを使うと良い
      • ViewPropertyAnimatorの方がシンプル

Viewの見た目だけ動かすAnimation

  • AnimationDrawable
    • パラパラマンガやgifみたいなもの
    • 複数の画像を用意し、xmlで定義すれば使える
  • AnimatedVectorDrawable
    • SVGをアニメーションさせる
    • XMLでSVGを作成すれば使える
    • 滑らかなアニメーションを表現できる

複数のViewを含むAnimation

  • ActivityAnimation
  • FragmentAnimation
    • 要はActivity画面自体のアニメーション
    • Activity / Fragment切り替え時に使う
  • Transition
  • ActivityTransition
  • FragmentTransition
    • 要はAnimationの前と後での流れを定義して使うAnimation
    • ViewAを移動しながら画像を切り替える、等の場合に使うと良い

おまけ (ImageLoaderライブラリ)

  • オススメなライブラリとして以下の3つがある

    • Picasso
    • Glide
    • Fresco
    • 主な特徴は以下の通り
    • Picasso
      • 画像のデバッグが出来る
      • 導入に当たり増える容量が軽め
      • 関数の数が少ないため、使いやすい
    • Glide
      • Picassoと比べて表示が滑らか (FadeInする感じだった)
      • Picassoより処理の種類が多そう
    • Fresco
      • 比較的新しいライブラリ
      • View関連が強い
      • XMLで色々と指定が可能
24
24
0

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
24
24