Edited at

Keynote: OSSの動向をとらえた実装方針のメモ

More than 1 year has passed since last update.


  • DroidKaigiのメモ書きを随時アップロードしていきます

  • スライドは上がり次第こちらに貼ります

スライドが上がっていたので公式の情報は以下をご参照ください。

https://speakerdeck.com/wasabeef/day1-keynote-in-droidkaigi-2016


発表者/発表内容


  • @wasabeef_jp

  • CAで作っているアプリのOSSの話

  • 採用したライブラリの紹介

  • 安定した(枯れた)ものを使う

  • 実装方針・設計の話は今回はなし


動向を追うためにやってること


  • github

  • Android Weekly/Arsenal

  • Twitter


導入


  • 少し前は解像度や機種依存がよく取り上げられていたが...

  • 現在は4系が主流になってきた

  • 開発手法がよく着目されている


言語は?


  • Kotlinは今回は選ばなかった

  • GoogleがKotlinをどう見ているのかがまだ分からないため

  • Javaを採用

  • RetroLambda

  • etc...


RetroLambda?


  • Lambda

  • MethodReference

  • Lightweight-Stream-API (OSS)

  • Stream

  • Optional (!)


ThreeTen Android


  • JSR-310

  • ジェイクさん?謹製

  • 時間の取り扱いがとても楽にできる


View


  • やっぱりSupport Library使うよね


    • RenderScript

    • PercentRayout


      • weightを使わなくてよくなる





  • あとAndroid-ObservableScrollViewもよく使うよね


    • RecyclerVire, ScrollView, ListViewなどのスクロール制御の監視

    • ずっと使い続けられると思われるため




フォント系ライブラリ


  • Calligraphy


    • アプリ全体にFontを適用

    • Javaからも可




ViewAnimator


  • アニメーションのコードはとても煩雑になりがち

  • ViewAnimatorを使うとすごくすっきりかける

  • 2ヶ月くらい前に出たばかり


DataBinding


  • Android Data Binding

  • Googleの中でもKotlinを使っている(!)

  • CustomSetters


    • Attributeの煩雑な書き方をしなくて良くなる



  • DataBindingUtil


Networking


  • Retrofit + OkHttp一択かと


Json


  • プロトコルバッファ?を使っている

  • 帯域の節約になる

  • Wire


Percelables


  • パーセラブル?

  • Parceler


    • AnnotationProcessingできる

    • ActivityからFragmentにBundleでデータを渡すときとかにすごく楽



  • Icepick


Image Loaders


  • 海外だとUniversal Image Loader

  • Picasso


    • シンプル

    • デバッグができる

    • Picassoはとても軽いところが優秀



  • Glide


    • Picassoとの違い

    • Gifを取り扱える

    • ブラーをかけた状態でBitmap Poolできる



  • Fresco


    • Viewが使える




ブラー系ライブラリ


  • blury

  • Android StackBlur

  • GPUImage


    • フィルターがかけられる

    • CA製ライブラリ




DI


  • Android Annotationはもう古い

  • Dagger2

  • Butter Knife


    • OnClick

    • OnTextChange

    • OnForcusChange




FRP


  • RxJava


    • 非同期、リスト操作が簡単

    • RetroLambdaがないとつらい

    • Retrofitと併用するのがよい

    • Leakが怖い

    • Subscribeしているかを確かめながら

    • mapの中でindexを使いたければ...rxjava-extra



  • RxAndroid


DB/ORM


  • ActiveAndroidを昔は使っていたが...

  • Realm


    • SQLiteでない

    • RxJava?



  • Android Orma (gfxさん謹製)


    • SQLite

    • Annotation Processing

    • RxJava




Event


  • Otto


    • Deprecated



  • EventBus


    • Threadの指定ができる




Debugging


  • Timber


    • ログを吐き出す



  • Hugo

  • Stetho


    • Chrome Developer Toolsを利用してNetwork、Dataの状況の把握ができる

    • Android Studioと何が違う?



  • LeakCanary


    • メモリリークを検出



  • Takt


    • wasabeefさん謹製

    • fpsを表示できる



  • Clashlytics


Other


  • Multi-Dex


    • メソッド数が65000に制限する

    • 65000を超えるとビルドできない

    • 最新のAndroid Studioだと動かないので注意が必要



  • ProGuard


    • ソースコード難読化

    • 不要なリソース、ファイルの削除ができる

    • 不要って?定義が難しい



  • Conclusion


    • 今回扱ったライブラリ数が60個以上

    • あのライブラリを使えば、あのライブラリが使えるetc...