Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gradle Multi-projectで始める最強のAndroid個人開発
Search
Yuta Tomiyama
January 22, 2020
Programming
68
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gradle Multi-projectで始める最強のAndroid個人開発
Zli × DeNA 合同LT にて発表
Yuta Tomiyama
January 22, 2020
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
ビルドプロセスをデバッグしよう!
yt8492
2
490
モバイルアプリ開発を始めよう!
yt8492
0
120
Git勉強会
yt8492
0
220
なんでもやってみる勇気
yt8492
0
140
Android Autoが思ったよりしんどい話
yt8492
0
250
apollo-kotlinにcontributeした話
yt8492
0
200
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
1k
今だからこそ知りたいKotlin Multiplatform
yt8492
0
350
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.4k
Other Decks in Programming
See All in Programming
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
Press start. Python's next generation.
willingc
PRO
2
110
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.7k
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
180
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
470
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
470
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
190
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
430
Flow は今どうなっているか
mizdra
PRO
0
690
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
250
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
470
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
Embracing the Ebb and Flow
colly
88
5.1k
WCS-LA-2024
lcolladotor
0
800
Being A Developer After 40
akosma
91
590k
Writing Fast Ruby
sferik
630
63k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Design in an AI World
tapps
1
290
Skip the Path - Find Your Career Trail
mkilby
1
190
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Six Lessons from altMBA
skipperchong
29
4.5k
Transcript
Gradle Multi-projectで始める 最強のAndroid個人開発
自己紹介 HN: マヤミト 本名: 富山 雄太 会津大学 学部2年 Kotlin大好きおじさん GitHub:
https://github.com/yt8492 Facebookのすがた Twitterのすがた ID:yt8492
Gradleとは オープンソースのビルドツール Androidアプリ開発などで使われている ビルドスクリプトはGroovyもしくはKotlin DSLで書かれる
Multi-project Gradleのプロジェクトはサブプロジェクトを作成することが可能 複数のサブプロジェクトを作成することができ、サブプロジェクトのサブプロジェクトを作 成可能 -> 責務ごとに分けたり、成果物ごとに分けることが可能
個人でのアプリ開発 サーバーもAndroidも全部1人でやる -> AndroidエンジニアはKotlin好きが多いのでサーバーもKotlinでやる サーバーとAndroidのプロジェクトを分ける -> サーバーとAndroidでモデルなどを二重に定義する面倒臭さ、モデルに変更があった 場合に片方に変更漏れなど 1つのプロジェクトでサーバーとAndroidを両方開発する(Multi-project) ->
共通化ができてよさそう!
趣味のプロジェクトで導入してみた
プロジェクトで使用した技術 - サーバー - gRPC - SQLDelight - Android -
Jetpack - Dagger2 - gRPC - 共通 - Kotlin Coroutines
Gradle Multi-projectとしての構成 - common - 共通のDomain ModelやUseCaseの定義 - proto -
.protoファイルからJavaのStubやKotlinのラッパーを生成 - 各プロジェクトが生成されたファイルを参照する - server - android
このプロジェクトにおける開発の流れ 1. commonにDomain ModelやUseCaseの定義を書く 2. protoにmessageやserviceのprotoを書き、./gradlew :proto:generateProto を実 行 JavaのStubやImplBase、Kotlinのラッパーが生成される
3. serverとandroidでUseCaseのinterfaceをそれぞれ継承して処理を書く
common
proto
proto
server
server
android
android
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に 参照先のプロジェクトを追記
Android Studioでプロジェクトを作る
IntelliJ IDEAでモジュールを追加する
settings.gradleにモジュールがあるか確認する
build.gradleに参照したいプロジェクトの依存を書く
サブプロジェクトのGradleタスクの実行方法 ./gradlew :サブプロジェクト名:タスク名 例: ./gradlew :proto:generateProto ./gradlew :server:run
まとめ - Gradle Multi-projectを用いると、サーバーとAndroidを1つのプロジェクトで開発す ることができる - 共通部分の定義が楽になる - ProtobufのStub生成などをProjectに分けることができる Gradle
Multi-Projectは間違いなくDXが向上するのでぜひ試してみてほしい
ありがとうございました!