$30 off During Our Annual Pro Sale. View Details »

Gradle Multi-projectで始める最強のAndroid個人開発

Gradle Multi-projectで始める最強のAndroid個人開発

Zli × DeNA 合同LT にて発表

Yuta Tomiyama

January 22, 2020
Tweet

More Decks by Yuta Tomiyama

Other Decks in Programming

Transcript

  1. Gradle Multi-projectで始める
    最強のAndroid個人開発

    View Slide

  2. 自己紹介
    HN: マヤミト
    本名: 富山 雄太
    会津大学 学部2年
    Kotlin大好きおじさん
    GitHub: https://github.com/yt8492
    Facebookのすがた
    Twitterのすがた
    ID:yt8492

    View Slide

  3. Gradleとは
    オープンソースのビルドツール
    Androidアプリ開発などで使われている
    ビルドスクリプトはGroovyもしくはKotlin DSLで書かれる

    View Slide

  4. Multi-project
    Gradleのプロジェクトはサブプロジェクトを作成することが可能
    複数のサブプロジェクトを作成することができ、サブプロジェクトのサブプロジェクトを作
    成可能
    -> 責務ごとに分けたり、成果物ごとに分けることが可能

    View Slide

  5. 個人でのアプリ開発
    サーバーもAndroidも全部1人でやる
    -> AndroidエンジニアはKotlin好きが多いのでサーバーもKotlinでやる
    サーバーとAndroidのプロジェクトを分ける
    -> サーバーとAndroidでモデルなどを二重に定義する面倒臭さ、モデルに変更があった
    場合に片方に変更漏れなど
    1つのプロジェクトでサーバーとAndroidを両方開発する(Multi-project)
    -> 共通化ができてよさそう!

    View Slide

  6. 趣味のプロジェクトで導入してみた

    View Slide

  7. プロジェクトで使用した技術
    - サーバー
    - gRPC
    - SQLDelight
    - Android
    - Jetpack
    - Dagger2
    - gRPC
    - 共通
    - Kotlin Coroutines

    View Slide

  8. Gradle Multi-projectとしての構成
    - common
    - 共通のDomain ModelやUseCaseの定義
    - proto
    - .protoファイルからJavaのStubやKotlinのラッパーを生成
    - 各プロジェクトが生成されたファイルを参照する
    - server
    - android

    View Slide

  9. このプロジェクトにおける開発の流れ
    1. commonにDomain ModelやUseCaseの定義を書く
    2. protoにmessageやserviceのprotoを書き、./gradlew :proto:generateProto を実

    JavaのStubやImplBase、Kotlinのラッパーが生成される
    3. serverとandroidでUseCaseのinterfaceをそれぞれ継承して処理を書く

    View Slide

  10. common

    View Slide

  11. proto

    View Slide

  12. proto

    View Slide

  13. server

    View Slide

  14. server

    View Slide

  15. android

    View Slide

  16. android

    View Slide

  17. Android開発でのGradle Multi-projectのはじめかた
    1. 普通にAndroid Studioでプロジェクトを作る
    2. IntelliJ IDEAでプロジェクトを開き、
    File -> New -> Module -> Gradle -> Kotlin/JVM
    (Ktorを使いたい場合は File -> New -> Module -> Ktor)
    を選択、モジュール名などの設定をする
    3. プロジェクトルートのsettings.gradleにモジュールが追記されていることを
    確認(されていなかったら手動で設定)
    4. プロジェクトを参照したいプロジェクトのbuild.gradleのdependenciesに
    参照先のプロジェクトを追記

    View Slide

  18. Android Studioでプロジェクトを作る

    View Slide

  19. IntelliJ IDEAでモジュールを追加する

    View Slide

  20. settings.gradleにモジュールがあるか確認する

    View Slide

  21. build.gradleに参照したいプロジェクトの依存を書く

    View Slide

  22. サブプロジェクトのGradleタスクの実行方法
    ./gradlew :サブプロジェクト名:タスク名
    例:
    ./gradlew :proto:generateProto
    ./gradlew :server:run

    View Slide

  23. まとめ
    - Gradle Multi-projectを用いると、サーバーとAndroidを1つのプロジェクトで開発す
    ることができる
    - 共通部分の定義が楽になる
    - ProtobufのStub生成などをProjectに分けることができる
    Gradle Multi-Projectは間違いなくDXが向上するのでぜひ試してみてほしい

    View Slide

  24. ありがとうございました!

    View Slide