Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Zli × DeNA 合同LT にて発表

3c7020b33ae8880dd9514b6469a28ae0?s=128

Yuta Tomiyama

January 22, 2020
Tweet

Transcript

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

  2. 自己紹介 HN: マヤミト 本名: 富山 雄太 会津大学 学部2年 Kotlin大好きおじさん GitHub:

    https://github.com/yt8492 Facebookのすがた Twitterのすがた ID:yt8492
  3. Gradleとは オープンソースのビルドツール Androidアプリ開発などで使われている ビルドスクリプトはGroovyもしくはKotlin DSLで書かれる

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

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

    共通化ができてよさそう!
  6. 趣味のプロジェクトで導入してみた

  7. プロジェクトで使用した技術 - サーバー - gRPC - SQLDelight - Android -

    Jetpack - Dagger2 - gRPC - 共通 - Kotlin Coroutines
  8. Gradle Multi-projectとしての構成 - common - 共通のDomain ModelやUseCaseの定義 - proto -

    .protoファイルからJavaのStubやKotlinのラッパーを生成 - 各プロジェクトが生成されたファイルを参照する - server - android
  9. このプロジェクトにおける開発の流れ 1. commonにDomain ModelやUseCaseの定義を書く 2. protoにmessageやserviceのprotoを書き、./gradlew :proto:generateProto を実 行 JavaのStubやImplBase、Kotlinのラッパーが生成される

    3. serverとandroidでUseCaseのinterfaceをそれぞれ継承して処理を書く
  10. common

  11. proto

  12. proto

  13. server

  14. server

  15. android

  16. android

  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に 参照先のプロジェクトを追記
  18. Android Studioでプロジェクトを作る

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

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

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

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

  23. まとめ - Gradle Multi-projectを用いると、サーバーとAndroidを1つのプロジェクトで開発す ることができる - 共通部分の定義が楽になる - ProtobufのStub生成などをProjectに分けることができる Gradle

    Multi-Projectは間違いなくDXが向上するのでぜひ試してみてほしい
  24. ありがとうございました!