Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Gradleを使えるようになるために
Search
kariyayo
May 08, 2014
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gradleを使えるようになるために
kariyayo
May 08, 2014
More Decks by kariyayo
See All by kariyayo
MobX の話
kariyayo
0
390
echoサーバーを書いてI/Oと仲良くなる話
kariyayo
3
880
SpringはどうやってDIしているのか? #jjug_ccc
kariyayo
4
3.7k
Apexで複数環境のLambda関数をデプロイする話 #jawsug
kariyayo
1
2k
近況報告といろいろ作るのが楽しい話 #yokohama_north
kariyayo
0
920
目指せ3つ星インデックス #yokohama_north
kariyayo
2
890
Spring Boot と Swagger #渋谷java
kariyayo
4
5.8k
Other Decks in Programming
See All in Programming
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
210
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
250
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
270
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
350
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
170
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
480
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.3k
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
240
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
1.9k
スマート反転とウェブアクセシビリティ
camiha
0
210
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Music & Morning Musume
bryan
48
7.4k
Design in an AI World
tapps
1
320
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
240
Making the Leap to Tech Lead
cromwellryan
135
10k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
670
Site-Speed That Sticks
csswizardry
13
1.5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
Writing Fast Ruby
sferik
630
63k
Transcript
Gradle を使えるように Gradle を使えるように なるために なるために
目次 目次 Gradle とは とりあえず動かす Gradle を使えるようになるためにはどうすれば? 超シンプルな例 超シンプルな例を詳しく見てみる Android
アプリプロジェクトのビルドスクリプト まとめ
Gradle とは Gradle とは JVM で動くビルドツール ビルドスクリプトをGroovy で書く ライブラリの依存関係管理もできる Spring
など、Java のプロダクトのビルドで使われている Android アプリのビルドにも使われる(今後標準になる?)
Gradle を使えるようになるには Gradle を使えるようになるには どうすれば? どうすれば? ドキュメントを読もう! gradle-<version>-all.zip をDL すると手に入るサンプル
でも何も分からない状態だとちょっと読みづらい・・・ 読むための知識を身につけよう! ユーザーガイド DSL リファレンス
とりあえず動かす とりあえず動かす Gradle をダウンロードしてパスを通して実行してみる
ビルドスクリプトはbuild.gradle にGroovy で書く build.gradle と同じディレクトリで実行してみる build.gradle に記述した通り"hogehoge" が出力されてる!
実際は、実行したい処理は タスク として記述する gradle <task name> でタスクを実行する -q オプションをつけるとタスクの出力のみを表示する
タスク一覧を表示。hoge 以外にも最初からいくつかある
タスク同士は依存関係を持つことができる fuga タスクはhoge タスクに依存している fuga タスクを実行すると、先にhoge タスクが実行される
tasks タスクの--all オプション タスクの依存関係も表示してくれる
ちょっとまとめ ちょっとまとめ build.gradle にビルドスクリプトを書く 処理はタスクという単位で書いたり実行したりする tasks タスクで(gradle tasks )実行できるタスクを確認でき る
-q オプションでタスクの出力以外を表示しない タスク同士は依存関係を持てる gradle tasks --all で依存関係を確認できる
超シンプルな例 超シンプルな例 下記はJava をビルドするためのビルドスクリプト Groovy でスクリプトを書いていくと言うよりDSL を使って 設定を記述していくような感じ
プラグインの設定 プラグインによってタスクや設定項目が増える ユーザーガイド => Java プラグインでJava をビルドするタスクが増える Java プラグイン 他
ディレクトリ構成 Java プラグインを使うとき、以下のようなディレクトリ構 成になっていることが想定されている カスタマイズは可能 ユーザーガイド => Java クイックスタート ├──
└── ├── │ ├── │ │ └── │ │ └── │ └── └── ├── └──
ライブラリの依存関係管理 repositories ライブラリをダウンロードしてくるMaven リポジトリを 指定する dependencies プロジェクトで使用するライブラリを指定する ユーザーガイド => 依存関係管理の基本
ちょっとまとめ ちょっとまとめ build.script には、Groovy でごりごり実装していくのではな くDSL を使って設定を記述していく感じ プラグインを使ってタスクを追加できる プラグインで何ができるかはユーザーガイドで調べること ができる
Gradle でJava をビルドする場合は、デフォルトで想定され るディレクトリ構成がある Maven リポジトリを使ったライブラリの依存関係管理がで きる
超シンプルな例を詳しく見てみる 超シンプルな例を詳しく見てみる apply は何者? Project オブジェクトのapply() メソッド build.gradle ではProject オブジェクトのメソッドが呼べる
DSL リファレンスで他のメソッドも分かる -> ただのメソッド呼び出しがGroovy のおかげで設定項目のよ うに見える メソッド呼び出しの() を省略できる メソッドの最後の引数がMap であるとき、名前付き引数 のように指定できる Project
repositories とdependencies もProject のメソッド クロージャを引数として受け取るメソッド DSL リファレンスに「スクリプトブロック」として書かれ ている クロージャとはJavaScript の無名関数のようなもの
じゃあmavenCentral() もProject のメソッド? 違う リファレンスを見てもProject にmavenCentral() はない じゃあ、誰のメソッドを呼び出しているのか?
DSL リファレンスで repositories スクリプトブロックを調べる "The RepositoryHandler is passed to the
closure as the closure's delegate." Delegates to: RepositoryHandler from repositories [ 引用 ] Gradle ビルド言語リファレンス クロージャ内からRepositoryHandler にアクセスできる mavenCentral() メソッドは、RepositoryHandler オブジェク トのメソッド DSL リファレンス -> RepositoryHandler
なぜクロージャ内からRepositoryHandler の メソッドを呼べるのか? クロージャの暗黙的引数であるdelegate を利用している delegate 変数にRepositoryHandler オブジェクトが渡される "delegate" を省略してメソッド名のみで呼ぶことができる
(this のように省略できる)。つまり、以下の2 つは同じ
ちょっとまとめ ちょっとまとめ build.gradle ではProject のメソッドが呼べる DSL リファレンスでProject を調べれば、build.gradle に何 を書けるのか分かる
メソッドの中にはクロージャを渡せるものがあり、スクリ プトブロックとなる ブロック内(クロージャ)では、Project 以外のオブジェク トのメソッドも呼べる ブロック内から参照できるオブジェクトはDSL リファレ ンスの「Deletes to: 」を見ると分かる
Android アプリプロジェクトの Android アプリプロジェクトの ビルドスクリプト ビルドスクリプト Android Studio で作成したプロジェクトを見てみよう!
Gradle 関連のファイルをピックアップ
gradlew, gradlew.bat, gradle/ Gradle ラッパーという仕組みがある ユーザーガイド => gradlew コマンドを実行するとgradle-wrapper.properties に
書いてあるバージョンのGradle をダウンロードして使って くれる 各環境にあるgradle コマンドを使うのではなく、プロジェ クト上のgradlew を使うことで環境依存を減らせる Gradle ラッパー
build.gradle ビルドスクリプトを記述するファイル ビルドスクリプトが2 つあるのはなぜ?
マルチプロジェクト Gradle はサブプロジェクトを持つ階層型のプロジェクト構 成を定義できる Android ではマルチプロジェクト構成となっている Android 開発ではライブラリプロジェクトをサブプロジェク トとして追加していくことができる ユーザーガイド
=> マルチプロジェクトのJava ビルド
settings.gradle マルチプロジェクト構成におけるサブプロジェクトを定義 する
settings.gradle の中身 include は何者? Settings オブジェクトのinclude() メソッド settings.gradle ではSettings オブジェクトのメソッドが呼べ
る DSL リファレンス -> Settings
build.gradle 中身を見てみよう!もう調べられるはず!
ちょっとまとめ ちょっとまとめ Gradle ラッパーで環境によらず同じバージョンのGradle を 使える Gradle ではマルチプロジェクト構成にできる サブプロジェクトはsettings.gradle で定義
settings.gradle ではSettings のメソッドが呼べる Android アプリ開発ではマルチプロジェクト構成になる
全体のまとめ 全体のまとめ Gradle では色々できる 何ができるかはドキュメントを読むと分かる だけど何も知らないとドキュメントは読みづらい 以下の点を知っておくと読みやすくなると思う Gradle にはおおまかにどんな機能があるか build.gradle
に記述できる内容をどうやって調べるか
今日出てきたGradle の機能たち タスク プラグイン ライブラリの依存関係の管理 マルチプロジェクト Gradle ラッパー を見ると各機能について調べられる 標準的な各種プラグインで何ができるかもユーザーガイド
を見れば分かる ユーザーガイド
build.script ではProject のメソッドが呼べる でProject を調べることでbuild.script に何 を書けるか分かる スクリプトブロック内では、delegate されたオブジェクト のメソッドも呼べる
何がdelegate されたのかはDSL リファレンスの各スクリ プトブロックの「Delegates to: 」を見れば分かる クロージャのdelegate 変数で実現してる マルチプロジェクト構成ではsettings.gradle も必要になる settings.gradle ではSettings のメソッドが呼べる DSL リファレンス
ドキュメントを読もう! gradle-<version>-all.zip をDL すると手に入るサンプル ユーザーガイド DSL リファレンス
おしまい おしまい