LoginSignup
3
1

More than 3 years have passed since last update.

Daggerの依存関係を視覚化してくれるプラグインScabbardを試してみる

Last updated at Posted at 2020-01-14

はじめに

2019年12月に公開されたばかりのScabbardというプラグインを試してみたのでやり方を投稿します。

Scabbardとは?

Daggerの依存関係を画像化して表示してくれるというプラグインです。

公式より:
temp-cheat-sheat.png

Missing Binding箇所も表示してくれる
missing-binding.png

導入

Getting Startedを見ながら導入していきます。
環境は以下になります。

Mac OS 10.15.2 (Catalina)
Android Studio 3.5.3

リポジトリはDagger2+Retrofit2(+OkHttp3)+ViewModelのDIの最小構成[その1]のリポジトリを使用します。

1. GraphVizをbrew installする

GraphVizというソフトが必須のようなのでターミナルからインストールします。

brew install graphviz

Homebrewのインストール方法は割愛します。
Linux、Windowsの場合のインストール方法はこちらを参照してください。

2. build.gradleを設定する

プロジェクト単位のbuild.gradleに以下を追加します。

build.gradle
buildscript {
    repositories {
        ...
        maven {
            url "https://plugins.gradle.org/m2/" // 追加
        }
    }
    dependencies {
        ...
        classpath "gradle.plugin.dev.arunkumar:scabbard-gradle-plugin:0.1.0" // 追加
    }
}

また、モジュール単位のbuild.gradleに apply: pluginを追加し、DataBindingのようにenabled trueを記述します。

build.gradle
apply plugin: "scabbard.gradle"
...
scabbard {
    enabled true
}

ここまででビルド時にDaggerコンポーネントの依存関係を図示したpngファイルを生成してくれるようになります。

格納先は{project_root}/app/build/tmp/kapt3/classes...以下です。

スクリーンショット 2020-01-14 11.14.14.png

3. IDEにプラグインをインストールする

IDE上に短剣アイコンを表示させるためにプラグインをインストールします。
スクリーンショット_2020-01-14_10_48_52のコピー.png

このアイコンをクリックすると2. で生成したpngをIDE上で表示してくれるようになります。

Android Studio > Preferences... > Plugins > MarketPlace
にて、「Scabbard」を検索します。
スクリーンショット 2020-01-14 10.46.13.png

「Install」を選択してプラグインをインストールします。
スクリーンショット 2020-01-14 10.46.41.png

Restart IDEと表示されるのでIDEを再起動します。

プロジェクトをビルドし、AppComponent.ktを表示すると、インターフェースの横に短剣アイコンが追加されているのが分かります。

スクリーンショット 2020-01-14 10.57.14.png

短剣アイコンをクリックすると、以下のように依存関係を表示してくれます。
スクリーンショット 2020-01-14 10.50.56.png

以上で完了です!

おわりに

Daggerの依存関係を記述をミスって「Missing Binding」エラーが表示されると、どこで間違えているか追うのが大変ですが、このプラグインを使うと依存関係が視覚化されるので解決しやすくなるかなと思いました。

まだv0.1.0との事なので、今後の更新にも期待です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1