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
62
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
470
モバイルアプリ開発を始めよう!
yt8492
0
110
Git勉強会
yt8492
0
210
なんでもやってみる勇気
yt8492
0
130
Android Autoが思ったよりしんどい話
yt8492
0
250
apollo-kotlinにcontributeした話
yt8492
0
190
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
1k
今だからこそ知りたいKotlin Multiplatform
yt8492
0
340
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
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
150
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
570
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
360
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.4k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
560
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
200
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
140
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.1k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
350
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Claude Code のすすめ
schroneko
67
230k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
ラッコキーワード サービス紹介資料
rakko
1
3.7M
Ruling the World: When Life Gets Gamed
codingconduct
0
260
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
WCS-LA-2024
lcolladotor
0
640
Rails Girls Zürich Keynote
gr2m
96
14k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Everyday Curiosity
cassininazir
0
230
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
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が向上するのでぜひ試してみてほしい
ありがとうございました!