【Androidプログラム】よく使うライブラリについてまとめる 前編
※関係ないアイキャッチ
仕事の都合でいくつかのライブラリについてサラッと目を通しておく必要ができたので以下にバーっと羅列して、めちゃくちゃザックリ概要説明と参考にできそうなリンクを貼る。
・Retrolamda
Java5,6,7でラムダ式を使えるようにしたバックサポートツール
Java 8でコンパイルされたバイトコードをJava 7以下の環境で動作するように変換
※Java8以上、kotlinではラムダは標準サポートされているので必要なし。
・Ribbonizer plugin
ランチャーアイコンの加工を行う。
例えば、リリース用とデバッグ用とでアイコンを変えたい場合などに使う。※Android8.0で追加されたAdaptiveIconには対応していないっぽいので今後は検討。
・Multidex
Android5.0以前の端末で発生するエラーの回避に必要なライブラリ。
Androidにおいてはアプリおよびアプリから参照するライブラリが特定の容量を超えるとビルドエラーが発生する。(呼び出し可能な参照の総数が 65535 なため)
このエラーを回避するために必要なライブラリが Multidex 。
なお、Android5.0以降においてはネイティブでこちらのエラー回避が実装されているため、このライブラリは不要。
・Timber
ログの出力に使用するライブラリ。
ログはAndroidStudioのLogcatに出力される。
debug時にはlogcatへ、release時にCrashlyticsに飛ばすみたいなログ出力がコード変更なしで可能になる。
使ったことはあるけど、導入とか初期設定はしたことないので、これも機会を作ってやりたい。
・Puree
ロギングを行うライブラリ。
以下のような機能的特徴を持っている。
・フィルタリング:
取得したログにパラメータを付与したり、サンプリングを行うことができる。
・バッファリング:
通信エラーなどで送信ができなかったときにデータが消えないように一時的にデータを 保持できる。
・バッチ:
複数のログを一度にまとめて送ることができる
・リトライ:
送信失敗時に、一定時間経過で自動的に再送信を試みる。
・RxJava
非同期処理。
こいつは重いので今度個別に書く。
・Lightweight-Stream-API
StreamやOptionalの機能の一部を使うことができる。
・Streamとは
filterやmapなどのオペレータを挟んで流れるように値を加工・変換して値を得る処理。
■Not Stream
String[] names = {"hello", "world"}; List<String> upperNames = new ArrayList<>(names.size()); for (String name : names) { if (name.equals("hello")) { upperNames.add(name.toUpperCase()); } }
■Stream
String[] names = {"hello", "world"}; List<String> upperNames = Stream.of(names) .filter(name -> name.equals("hello")) .map(String::toUpperCase) .collect(Collectors.toList());
・Optional
if-null チェックの記述をシンプルに行うことができる。
■not Optional
Fragment fragment = getSupportFragmentManager().findFragmentByTag("sample"); SampleFragment sampleFragment; if (fragment != null && fragment instanceof SampleFragment) { sampleFragment = (SampleFragment) fragment; } else { sampleFragment = SampleFragment.newInstance(); }
■Optional
SampleFragment sampleFragment = Optional .ofNullable(getSupportFragmentManager().findFragmentByTag("sample")) .filter(fragment -> fragment instanceof SampleFragment) .map(fragment -> (SampleFragment) fragment) .orElseGet(SampleFragment::newInstance);
一旦、今回はここまで。