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
0
57
Gradle Multi-projectで始める最強のAndroid個人開発
Zli × DeNA 合同LT にて発表
Yuta Tomiyama
January 22, 2020
Tweet
Share
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
ビルドプロセスをデバッグしよう!
yt8492
1
370
モバイルアプリ開発を始めよう!
yt8492
0
82
Git勉強会
yt8492
0
180
なんでもやってみる勇気
yt8492
0
110
Android Autoが思ったよりしんどい話
yt8492
0
220
apollo-kotlinにcontributeした話
yt8492
0
160
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
900
今だからこそ知りたいKotlin Multiplatform
yt8492
0
310
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.3k
Other Decks in Programming
See All in Programming
Basic Architectures
denyspoltorak
0
160
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
1
220
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
630
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
2k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
590
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
230
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
120
Python札幌 LT資料
t3tra
7
1.1k
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
180
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
0
45
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
Game over? The fight for quality and originality in the time of robots
wayneb77
1
73
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
47k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
270
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
43
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
110
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が向上するのでぜひ試してみてほしい
ありがとうございました!