0Pricing
Kotlin Academy · レッスン

カスタムタスク

作業を自動化します

「カスタムタスク」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

Gradleのタスクとは

タスクは、コンパイル、ファイルのコピー、ツールの実行などを行うビルド作業の単位です。カスタムタスクを使うと、プロジェクト固有の定型作業を自動化できます。

タスクの登録

configuration-avoidance API を使い、tasks.register でタスクを登録します。遅延評価されるため、古い tasks.create よりも推奨されています。

tasks.register("hello") {
    doLast {
        println("Hello from Gradle")
    }
}

doFirst と doLast

タスクアクションは実行フェーズに実行されます。doFirst はアクションを先頭に追加し、doLast は末尾に追加します。これらの外側にあるコードは設定フェーズに実行されます。

tasks.register("greet") {
    doFirst { println("start") }
    doLast { println("end") }
}

タスクの説明とグループ

group と description を設定すると、./gradlew tasks の出力にタスクが整理されて表示されます。

tasks.register("cleanLogs") {
    group = "maintenance"
    description = "Deletes generated log files"
    doLast { /* ... */ }
}

型付きタスク

組み込み型のタスクを登録すると、既存の動作を再利用できます。Copy は宣言的にファイルをコピーします。

tasks.register<Copy>("copyDocs") {
    from("src/docs")
    into("build/docs")
}

タスクの依存関係

dependsOn を使って実行順序を指定します。依存先のタスクが先に実行されます。

tasks.register("deploy") {
    dependsOn("build")
    doLast { println("deploying") }
}

既存タスクの設定

プラグインによって追加された、事前登録済みのタスクを取得して調整できます。

tasks.named("test") {
    // configure the existing test task
}

tasks.test {
    maxParallelForks = 2
}

タスクの入力と出力

inputs と outputs を宣言すると、最新状態チェックが有効になります。何も変更されていなければ、Gradle はタスクをスキップします。

tasks.register("generate") {
    inputs.file("data/template.txt")
    outputs.file("build/generated.txt")
    doLast { /* generate */ }
}

インクリメンタルビルド

入力と出力を正しく設定すると、変更されていないタスクを再実行したときに UP-TO-DATE と表示され、処理は行われません。これがGradleの高速性を支える中心的な仕組みです。

カスタムタスククラス

再利用可能なロジックには、DefaultTask を継承し、@TaskAction メソッドを持つクラスを定義します。

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

abstract class GreetTask : DefaultTask() {
    @TaskAction
    fun run() {
        println("Hello")
    }
}

タスクの実行

ラッパーを使って、登録済みのタスクを名前で呼び出します。

// ./gradlew hello
// ./gradlew copyDocs
// ./gradlew deploy

クイックチェック

タスクの他の処理が終わった後、実行フェーズにアクションを実行したい場合、どのブロックを使いますか。

まとめ

カスタムタスクを使って作業を自動化できます。

  • tasks.register と doFirst/doLast
  • Copy などの型付きタスクと、実行順序を指定する dependsOn
  • 最新状態チェックのための inputs/outputs の宣言
  • @TaskAction を持つカスタム DefaultTask クラス

次はバージョンカタログです。

よくある質問

「カスタムタスク」レッスンは無料ですか?

はい。「カスタムタスク」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「カスタムタスク」で何を学びますか?

作業を自動化します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「カスタムタスク」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Gradle Kotlin DSL
  2. 依存関係とプラグイン
  3. カスタムタスク
  4. バージョンカタログ
← Kotlin Academyに戻る