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
46
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
0
40
Android Autoが思ったよりしんどい話
yt8492
0
150
apollo-kotlinにcontributeした話
yt8492
0
74
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
710
今だからこそ知りたいKotlin Multiplatform
yt8492
0
240
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.1k
サーバーフレームワークの仕組みが気になったので車輪の再発明をしてみた
yt8492
0
170
Compose for Webを始めよう
yt8492
0
360
Compose Multiplatform 1.0.0
yt8492
0
140
Other Decks in Programming
See All in Programming
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
280
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1.1k
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
170
EventSourcingの理想と現実
wenas
6
2.3k
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3.3k
Amazon Qを使ってIaCを触ろう!
maruto
0
400
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
290
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
330
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
CSC509 Lecture 12
javiergs
PRO
0
160
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
120
Featured
See All Featured
For a Future-Friendly Web
brad_frost
175
9.4k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
What's new in Ruby 2.0
geeforr
343
31k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Practical Orchestrator
shlominoach
186
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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が向上するのでぜひ試してみてほしい
ありがとうございました!