DroidKaigi2017 Day2レポート

DroidKaigi2017二日目!

2日目スタートしました!

昨日は自分の発表が気がかりでなかなか集中できませんでした。今日はひたすら楽しむぞ!

Android ORMの選び方 @gfx

  • ORMを使ったほうがはやくて品質も高くなる!
  • ORMとは
    • なぜローカルに保存する
      • WebAPIより信頼できる、早い
    • ユースケース
      • 下書きはローカルに保存
      • キャッシュ
    • 保存場所
      • SharedPreferences
      • file
      • SQLite Database
      • SQLite wrappers ORM
      • Original DB(Realm,ObjectBox ...)
    • SQLite Database
      • RDBMS
      • Transactions
    • ORM
      • Object - Relation Mapper
      • たくさんある。
    • ORMの機能
      • RDDMSのデータをホスト言語のObjectに変換
      • Query Builder
        • SQLを作る
        • 補完ででてほしい、型安全で、実行時エラーを防ぎたい
        • ドキュメントを読まなくても使える
      • Association( or Relathinship)
        • has-one / has-mary / many-to-many
      • Pub-Sub
        • Notifications
          • データの変更を通知される
      • Migration
        • モデルの変更 ALTER
      • OSSとして
        • ドキュメントみてできるか
        • CI/CD
        • メンテされていない
        • コミッターの数
        • コミットログ
    • 比較ORM
      • ActiveAndroid v 3.0.0
        • 簡単に使える
        • もうメンテされていない
        • 良いインタフェースもっている
        • アノテーションで必要な設定をする
        • migrationがひどい
        • タイプセーフではない
      • greeenDAO
        • ハイパフォーマンス
        • アノテーションで設定する
        • ビルドすると勝手にメソッドがはえる
          • 変更しても自動生成してくれない
          • 自分の書いたメソッドが埋もれる
        • Migration サポートしていない
        • にためほどタイプセーフではない
      • Requery
        • 新しいORM
        • Annotaion-processor-based
        • Rxもサポート
        • 開発がアクティブ
        • 他のDBをサポートするために、抽象化が激しい
      • Realm
        • タイプセーフでない
        • フルコミッターがたくさんいる
        • Magrationが難しい
      • Orma
        • ver1.0.0 is Release at 2016/01
        • アノテーションで必要な設定をする
        • baseクラスを必要としない、何も要求しない
        • タイプセーフ
        • Pu-Sub
          • rxjava2ベース
        • Migration
          • diffをとって自動で作ってくれる
          • リネームは対応していない
          • versioning
            • 手で入れる必要がない
            • hash値を自動で作ってくれる

How to implement material design animation @takahirom

  • Material Design
    • モーションの重要性
      • モーションには意味がある
        • わかりやすくする
      • モーションの原則
        • 即座に反応
        • 自然な動き
          • カーブに沿って動く
        • 他のマテリアルと協調動作
  • サンプルをみるとよい!
    • 言葉では難しいのとソースをみたほうがよいです!
  • ちゃんと実装できたらかっこいい!

Kotlin + RxJava + Dagger2 + Orma + Retrofit で作るAndroidアプリ @lvla0805

  • 各種ライブラリの連携の説明
  • Javaの部分をKotlinで書いたっという感じで使用できます

Error Handling in RxJava @yuyakaido

  • Error Handlingのオペレーターが多く難しそう
    • Error Handlingに関しては、5つぐらい
  • Catch系
    • エラー発生時にリカバリ
    • onError
      • エラーがエミットされたときに呼ばれるもの
    • onErrorReturn
      • エラーがエミットされたときに代わりのデータを返す
      • complateする
    • OnErrorResumeNext
      • エラーがエミットされたときに代わりのObservableを返す
      • complateする
  • Retry系
    • エラー発生時再度リトライ
    • retry
      • エラーがえみっとされた時にresubscribeする
      • リトライする回数を設定
    • retryWhen
      • エラーのまま終了する
      • エラー時にcompleteする
      • 時間をおいてリトライをする
  • ユースケース
    • エラートーストを表示する
      • onErrorを使う
    • エラーの種類で処理を分岐
      • OnErrorResumeNext
    • リトライをする
      • retryを使う
    • リトライするかユーザに尋ねる
      • returnWhen
  • Retroritのエラー処理を共通化
    • RxJava拡張
      • CallAdapterFactory
        • CallAdapterを継承し、帰る
        • adaptに入れる
      • これをRetrofitのaddするだけ

まとめ

あれ4セッションだけ???今日は企業ブースで議論を中心してました。Kotlinをプロダクトにいれている人たちのナマの声を聞けるチャンス!逃すわけにはいかないっということで発熱した議論しておりました。その様子はまた別の記事に。