DroidKaigi 2016 で 紹介された Android開発に役立つ ライブラリ 集 と スライドリンクまとめ

# Overview

早期割引で申し込めなかったので、申し込みを諦めいていましたが、良さそうな情報は後で勉強のネタになるので、watch & pick & stock !

[DroidKaigi 2017 まとめ は こちらです](http://qiita.com/hidenorly/items/a300e1426b144435bff4)

# Language

## Lightweight-Stream-API

Java 7やそれ以前向けに、iteratorsを書き直したStream APIです。

* 本家
 * https://github.com/aNNiMON/Lightweight-Stream-API
* 記事
 * [Androidでリスト操作するなら、Lightweight-Stream-APIが便利 - Qiita](https://qiita.com/tsumuchan/items/8e438a2ea653fa786c23)

## Retrolambda

Java 6, 7やAndroid向けにJavaのラムダをサポートするためのgradle plug-in.

* 本家
 * https://github.com/evant/gradle-retrolambda
* 記事
 * [Androidでラムダ式を使いたい - Qiita](https://qiita.com/kamimoo/items/f4b3ef22ca0327e88e32)

## ThreeTenABP

Android向けのJSR-310 (Date and Time API)のbackportです。

* 本家
 * https://github.com/JakeWharton/ThreeTenABP
* 記事
 * [Androidで使える日付処理系のライブラリーを試してみた - Qiita](https://qiita.com/futabooo/items/206b71ee8022ac685ece)

# UI

## ObservableScrollView

新しいPlayストアアプリなどで実現されているような以下 (ksoichiroさんのqiitaより引用)

>
* スクロールに連動してバーの表示が切り替わる
* スクロールによってバーは消えるがタブは常に残る
* バーの表示/非表示が完全に切り替わらない位置で手を離すと、アニメーションで完全に切り替わる

を実現しやすくするもの。

Apache 2 license

* 本家
 * https://github.com/ksoichiro/Android-ObservableScrollView
* 記事
 * [Google Playストアアプリのようにスクロール時にActionBarやToolbarの表示を切り替える - Qiita](https://qiita.com/ksoichiro/items/259c2b2b496070b90695)


ListViewのようなものは、スクロール位置を外部から取得できないが、このライブラリにより、onScrollChanged, onUpOrCancelMotionEventが実装でき、Play Store appで実装されているようなスクロールに応じた挙動を実現しやすくしてくれる。

## ViewAnimator

* 本家
 * https://github.com/florent37/ViewAnimator

* Animationをラクラク使えるようにするutility library
組み込みの関数によるanimationだけでなく、SVG animationなども可能に。
* Apache 2 license

## font: Calligraphy

Custom fonts in Android the easy way...

* 本家
 * https://github.com/chrisjenx/Calligraphy
* 記事
 * [androidでTextViewに埋め込みフォントを使う - ひらい ぶらり Hi-Library](http://shinbashi.hatenablog.com/entry/2015/04/14/010639)

## RecyclerView

* 本家
 * http://developer.android.com/intl/ja/reference/android/support/v7/widget/RecyclerView.html
* 記事
 * [【Android】RecyclerViewの基本的な実装 - Qiita](https://qiita.com/HideMatsu/items/a9ab48608e4f681d31fe)
 * [[Android] RecyclerView を使ってみました - adakoda](http://www.adakoda.com/adakoda/2014/07/android-recyclerview.html)
 * [android - How to add a fast-scroller to the RecyclerView - Stack Overflow](https://stackoverflow.com/questions/27798212/how-to-add-a-fast-scroller-to-the-recyclerview)

# Data binding

## DataBinding

いわゆるboilerplateを楽にするもので、Google I/O 2015で発表があったもの。

* 本家
 * http://developer.android.com/intl/ja/tools/data-binding/guide.html

* 記事
 * [[Android] – Data Bindingつかってみた – PSYENCE:MEDIA](https://tech.recruit-mp.co.jp/mobile/android-data-binding/)
などが詳しい。

# DI : Dependency Injection

## butterknife

Androidのviewに対するfieldとmethodのbinding

* 本家
 * https://github.com/JakeWharton/butterknife
 * http://jakewharton.github.io/butterknife/

* 記事
 * [ButterKnifeが素敵だ - Qiita](https://qiita.com/RyotaMurohoshi/items/93b9fc131a6863a5a772)

## Dagger

AndroidとJava向けの高速dependency injectorです。

* 本家
 * http://square.github.io/dagger/

* 記事
 * http://hajimes.github.io/dagger/

## roboguice

Android 用の DI コンテナ。

* 本家
 * https://github.com/roboguice/roboguice

* 記事
 * [RoboGuice使い方メモ - Qiita](https://qiita.com/opengl-8080/items/a4aeed22eea759b7e556)

# Rx (Functional Reactive Programming)

* Refer to [wikipedia](https://en.wikipedia.org/wiki/Functional_reactive_programming) / [kamimuraryo-san's slide](http://www.slideshare.net/kamimuraryo/frp-functional-reactive-programming)

## RxAndroid

Android specific bindings for [RxJava](https://github.com/ReactiveX/RxJava).

* 本家
 * https://github.com/ReactiveX/RxAndroid
* 記事
 * https://qiita.com/tags/rxjava
 * [RxJava学習のベストプラクティスっぽいもの // Speaker Deck](https://speakerdeck.com/sys1yagi/rxjavaxue-xi-falsehesutohurakuteisutuhoimofalse) (best practice)

RxJava : Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

# Network

## Retrofit

AndroidとJava向けのtype-safeなHTTP clientです。

* 本家
 * http://square.github.io/retrofit/

* 記事
 * [RetroFitでAndroidのREST通信&JSON変換を幸せにする - Qiita](https://qiita.com/HamaTech/items/5eacdecc29d943ba46f5)
 * [AndroidQueryをやめてRetrofitを使ったら捗った話 | KonifarPod](http://konifar.com/1511)
あたりも参照のこと。

# Image utility

## glide

>
media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.


Android向けのmedia管理とimage loadのframeworkです。
media decodeやmemoryとdiskのcache、そして、resource管理を簡潔に簡単に使うためのwrapperです。

なお、今はGoogleの glide

* 本家
 * https://android.googlesource.com/platform/external/glide/
 * https://github.com/bumptech/glide

* 記事
 * [画像ライブラリGlideの使い方 - Qiita](https://qiita.com/hotchemi/items/375d63261f2eed2b18e1)
 * [PicassoとGlideのどちらを使うべきか？ - Qiita](https://qiita.com/rejasupotaro/items/ead90beaeaa2a6eace35)
も参考

## fresco

facebookの開発している画像utility library

* 本家
 * https://github.com/facebook/fresco
 * http://frescolib.org/docs/index.html

* 記事
 * [画像ライブラリFresco - Qiita](https://qiita.com/yysk/items/1e5c06e2fd7688883773)

# Database

## Realm

mobile向けのdatabaseです。SQLiteやCore Dataの置換を目的にしています。
何千行ものコードと何週もの労力を新体験に費やせるようになります (めっちゃ便利ということ)

>
A mobile database.
>
Realm is a replacement for SQLite & Core Data. It can save you thousands of lines of code & weeks of work, and lets you craft amazing new user experiences.


* 本家
 * https://realm.io/jp/
* 記事
 * http://wasabeef.jp/realm-for-android/
 * [Realm for Android - Qiita](https://qiita.com/wasabeef_jp/items/92bb700e37a0a57fc765)

## Orma

Android-Ormaは、Android向けのSQLite databaseのwrapperとしての軽量で高速なORMです。

>
Android-Orma - A lightning-fast ORM for Android as a wrapper of SQLiteDatabase

* 本家
https://github.com/gfx/Android-Orma

* 記事
 * [天下一「AndroidのORM」武道会（2014年版） - Qiita](https://qiita.com/pside/items/ba7f8fcbd304d702eda6)
 * [天下一「AndroidのORM」武道会（2015年版） - Qiita](https://qiita.com/pside/items/0c78f1166c09338c88c4)

# Publish/Subscribe

## EventBus

Androidに最適化されたevent busで、activity, fragment, thread, serviceなどの間のcommunicationを簡潔にします。少ないコードで、より良い品質で。

>
Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.


* 本家
 * https://github.com/greenrobot/EventBus
* 記事
 * [Android の EventBus がめちゃくちゃ便利な件について - ボクココ](http://www.bokukoko.info/entry/2014/12/18/Android_%E3%81%AE_EventBus_%E3%81%8C%E3%82%81%E3%81%A1%E3%82%83%E3%81%8F%E3%81%A1%E3%82%83%E4%BE%BF%E5%88%A9%E3%81%AA%E4%BB%B6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)

## Otto

Guavaベースのevent busで、Androidサポートに特化したものです。

>
An enhanced Guava-based event bus with emphasis on Android support.

* 本家
 * https://github.com/square/otto
 * http://square.github.io/otto/
* 記事
 * [Otto を使って快適 pub/sub 生活 - Qiita](https://qiita.com/funnything/items/eac185f979c4f88798ef)


# Debug / tuning

## stetho

Android applicationsに対するdebug bridgeです。

Chrome Developer Toolsを使用してChrome Desktop Browserからリモートデバッグを実現する.
ネットワークパフォーマンスの解析等を可能にするが, SQLiteやPreferenceの中を覗くこともできる. 

* 本家
http://facebook.github.io/stetho/

* 記事
[Yukiの枝折: Android: StethoでSQLite, Preferenceの中を覗く](https://yuki312.blogspot.jp/2015/03/android-stethosqlite-preference.html)

## takt

「FPSを表示」することが出来るライブラリ

* 本家
 * https://github.com/wasabeef/Takt
* 記事
 * [Choreographer 〜 AndroidでFPSを意識してみる話 〜 - Qiita](https://qiita.com/wasabeef_jp/items/a98571081f6c3224744a)

## timber

Androidの通常のlog classの上に位置するutilityで、小さく、拡張性の高いLog APIを提供します。

>
A logger with a small, extensible API which provides utility on top of Android's normal Log class

* 本家
 * https://github.com/JakeWharton/timber
* 記事
 * [Androidのログ出力をいい感じにする #potatotips 9 // Speaker Deck](https://speakerdeck.com/cutmail/androidfalseroguchu-li-woiigan-zinisuru-number-potatotips-9)
 * [Logcatのソースへ飛ぶ機能をTimberに盛り込んでみた。 - Qiita](https://qiita.com/shiraji/items/5815bfe667d042051119)

## Crashlytics

パワフルで、軽量なcrash reportのソリューション。

>
powerful, yet lightest weight crash reporting solution.

* 本家
 * https://try.crashlytics.com/
 * https://fabric.io/kits/android/crashlytics/summary
* 記事
 * https://qiita.com/tags/crashlytics

## leakcanary

memory leakを全部検出します！

* 本家
 * https://github.com/square/leakcanary
* 記事
 * [LeakCanaryでメモリリークを検出する - Qiita](https://qiita.com/rejasupotaro/items/4a8cfe0abda2d83145dd)
 * [LeakCanary: Detect all memory leaks! – Square Corner Blog – Medium](https://medium.com/square-corner-blog/leakcanary-detect-all-memory-leaks-875ff8360745)

## Hugo

debug build向けに、annotationをトリガーに、logを呼び出しをするためのライブラリ。

>
Annotation-triggered method call logging for your debug builds.


* 本家
 * https://github.com/JakeWharton/hugo
* 記事
 * [声に出して読みたい Android のライブラリ - その3 - Qiita](https://qiita.com/KeithYokoma/items/4914bce0a00152741a5e)  

> デバッグ時にメソッドコールをロギングしてくれるライブラリで、ログ出力をしたいメソッドに対して@DebugLogアノテーションをつけることで、そのメソッドの呼び出しと終了がロギングされます。呼び出されたスレッドと、終わるまでに要した時間も出力されます。

## gradle ribbonizer plugin

debug build の launcher icons を 変更します.

* 本家
 * https://github.com/gfx/gradle-android-ribbonizer-plugin

# slides : Day 1

linkが流れているもののみ。

* Welcome talk
 * https://speakerdeck.com/mhidaka/droidkaigi-2016-welcome-talk-day-dot-1
* OSSの動向を捉えた実装方針
 * https://speakerdeck.com/wasabeef/day1-keynote-in-droidkaigi-2016
 * https://github.com/wasabeef/awesome-android-libraries
 * https://github.com/wasabeef/awesome-android-ui
* Droidkaigi rxjava
 * https://www.slideshare.net/secret/Ahb0jhlbUJ8lXU
* Master of Canvas
 * http://www.slideshare.net/mimayuki7/master-of-canvas
 * https://github.com/amyu/DroidKaigiMasterOfCanvas/blob/master/DroidKaigi2016.pdf
* Go MobileでAndroidアプリ開発
 * http://www.slideshare.net/takuyaueda967/go-mobileandroid
* DroidKaigi2016 windows環境での効率的なアプリ開発手法 
 * http://www.slideshare.net/tkawashita/droidkaigi2016-windows
* 僕がテスト書け書けおじさんになった経緯とその過程でやったこと 
 * https://speakerdeck.com/yuyakaido/droidkaigi-2016
* Android studio 2.0のinstant run
 * https://speakerdeck.com/atsushieno/how-instant-run-works-at-droidkaigi2016
 * http://qiita.com/atsushieno/items/141f790a9bbaa93b62c1
* fastlane for Android による継続デリバリー
 * http://www.slideshare.net/nafu003/fastlane-for-android
* 史上最速のAndroid
 * http://www.slideshare.net/kmt-t/android-59476486
* Advanced Android Espresso
 * http://chiuki.github.io/advanced-android-espresso/#/
* android dev tools knowledge
 * http://www.slideshare.net/shinobuokano7/android-dev-tools-knowledge
* Android Lintの正しさを学ぼう
 * http://www.slideshare.net/Nkzn/androidlint-droidkaigi
* 用途に合わせたAnimationの実装手法
 * http://www.slideshare.net/TakaoSumitomo/ss-58409105
 
* Fragments: Why, How, and What For? Brenda Cook
 * https://speakerdeck.com/kenodoggy/fragments-why-how-and-what-for

* Dagger2とRealmを利用したモダンな開発
 * https://speakerdeck.com/funnelbit/droidkaigi2016

* Androidの省電力について考える
 * https://speakerdeck.com/ynakanishi/droidkaigi-2016-androidfalsesheng-dian-li-wokao-eru

* パーミッションモデルの過渡期への対応
 * http://www.slideshare.net/ak_shio_555/ss-58412835

* 明日、敗訴しないためのセキュアコーディング
 * http://www.slideshare.net/KengoSuzuki1/ss-58412489

* 怖くないgradleでのビルド環境設定とBazel
 * http://www.slideshare.net/shimadatatsuya/gradlebazel


## Day 2

* Support Libraryノススメ
 * http://yaraki.github.io/slides/droidkaigi2016/#1

* クックパッドにおけるAndroidエンジニアの役割とその変遷
 * https://speakerdeck.com/sys1yagi/kutukuhatutoniokeruandroidensiniafalseyi-ge-tosofalsebian-qian

* 生まれ変わったUI Automatorを使いこなす
 * https://speakerdeck.com/sumio/how-to-use-brand-new-ui-automator-perfectly

* Customizing Theme and Style for Material Design
 * http://www.slideshare.net/yanzm/customizing-theme-and-style-for-material-design-droid-kaigi-2016

* パフォーマンスを追求したAndroidアプリを作るには
 * https://speakerdeck.com/t_egg/droidkaigi-2016-pahuomansuwozhui-qiu-sitaandroidapuriwozuo-runiha

* カメラアプリはじめの一歩
 * https://speakerdeck.com/mhidaka/camera-2-apihazimefalse-bu

* Loving Lean Layouts
 * https://speakerdeck.com/queencodemonkey/droidkaigi-2016-loving-lean-layouts

* Support Library 総復習
 * https://speakerdeck.com/androhi/support-library-zong-fu-xi

* Advanced Kotlin for Android
 * https://speakerdeck.com/ntaro/advanced-kotlin-for-android-number-droidkaigi-number-droidkaigib

* Fearless Localization and Internationalization Across the Nations
 * http://www.slideshare.net/SienaAguayo/fearless-internationalization-and-localization-across-the-nations

* ライブコーディング・Androidのライブラリを作ってみよう
 * http://www.slideshare.net/masatakakono1/android-58450612

* Android実プロダクトへのKotlinの導入事例
 * https://speakerdeck.com/boohbah/number-droidkaigi-ji-cun-falseandroidpuroziekutoni-kotlinwodao-ru-sitahua

* What's the difference between JavaScript and Java?
 * https://speakerdeck.com/izumin5210/whats-the-difference-between-javascript-and-java

* Android,Brillo,ChromeOS
 * http://www.slideshare.net/l_b__/androidbrillochromeos

* Androidエンジニアになって2年の学び
 * https://speakerdeck.com/ryugoo/android-ensinianinatute-2-nian-falsexue-hi

* Build your custom Rx Observable/Subscriber
 * https://speakerdeck.com/hkurokawa/operator

* 5年続く「はてなブックマーク」アプリを継続開発する技術
 * http://www.slideshare.net/YuNobuoka/5-58454512

* Fireside Chat About Official AndroidApp
 * http://blog.nkzn.info/entry/2016/02/19/170321

* ChromeとAndroidの過去・現在・未来
 * http://www.slideshare.net/shinobuokano7/chromeandroid-58461091