とにかくやるブログ

とにかくやるブログ

プログラムの備忘録とその他雑記を適当にやるブログ

【Androidプログラム】よく使うライブラリについてまとめる 前編

f:id:tewow:20190418215215j:plain
※関係ないアイキャッチ
 

 仕事の都合でいくつかのライブラリについてサラッと目を通しておく必要ができたので以下にバーっと羅列して、めちゃくちゃザックリ概要説明と参考にできそうなリンクを貼る。

 

 

 

 

・Retrolamda

Java5,6,7でラムダ式を使えるようにしたバックサポートツール
Java 8でコンパイルされたバイトコードJava 7以下の環境で動作するように変換

qiita.com

※Java8以上、kotlinではラムダは標準サポートされているので必要なし。




 

・Ribbonizer plugin

ランチャーアイコンの加工を行う。
例えば、リリース用とデバッグ用とでアイコンを変えたい場合などに使う。※Android8.0で追加されたAdaptiveIconには対応していないっぽいので今後は検討。

qiita.com

qiita.com


 

 

 

・Realm

モバイル向けの軽量データベース。
SQLiteの代替として使用され、SQLiteよりも高速で柔軟性が高い。

qiita.com

面白そうなので、機会があれば改めてまとめてみたい。

 

 

 

・Multidex

Android5.0以前の端末で発生するエラーの回避に必要なライブラリ。
Androidにおいてはアプリおよびアプリから参照するライブラリが特定の容量を超えるとビルドエラーが発生する。(呼び出し可能な参照の総数が 65535 なため)
このエラーを回避するために必要なライブラリが Multidex 。
なお、Android5.0以降においてはネイティブでこちらのエラー回避が実装されているため、このライブラリは不要。

developer.android.com

qiita.com


 

 

 

・Timber

ログの出力に使用するライブラリ。
ログはAndroidStudioのLogcatに出力される。
debug時にはlogcatへ、release時にCrashlyticsに飛ばすみたいなログ出力がコード変更なしで可能になる。

iyemon018.hatenablog.com

github.com

使ったことはあるけど、導入とか初期設定はしたことないので、これも機会を作ってやりたい。




 

・Puree

ロギングを行うライブラリ。
以下のような機能的特徴を持っている。

・フィルタリング:
取得したログにパラメータを付与したり、サンプリングを行うことができる。

・バッファリング:
通信エラーなどで送信ができなかったときにデータが消えないように一時的にデータを 保持できる。

・バッチ:
複数のログを一度にまとめて送ることができる

・リトライ:
送信失敗時に、一定時間経過で自動的に再送信を試みる。

techlife.cookpad.com


 

 

 

・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);

qiita.com


 

一旦、今回はここまで。