0Pricing
Kotlin Academy · レッスン

アノテーションの使用

コードにアノテーションを付けます

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

アノテーションとは

アノテーションはコードにメタデータを付加します。アノテーション自体が動作を変更することはありませんが、ツール、コンパイラー、ライブラリがそれを読み取り、処理を決定します。

アノテーションは、@ に続けて名前を記述し、適用対象の要素の直前に配置します。

最初のアノテーション

標準ライブラリには、便利なアノテーションがいくつか用意されています。@Deprecated は、今後使用すべきでないコードを示し、呼び出し箇所に警告を表示します。

@Deprecated("Use newGreet() instead")
fun greet() = "Hi"

fun newGreet() = "Hello"

fun main() {
    println(newGreet())
}

引数付きアノテーション

アノテーションには、コンストラクターのパラメーターと同じ形式で引数を渡せます。@Deprecated はメッセージを受け取り、必要に応じて ReplaceWith のヒントも指定できます。

@Deprecated(
    message = "Renamed for clarity",
    replaceWith = ReplaceWith("sum(a, b)")
)
fun add(a: Int, b: Int) = a + b

fun sum(a: Int, b: Int) = a + b

fun main() {
    println(sum(2, 3))
}

警告を抑制する

@Suppress は、アノテーションを付けた要素について特定の警告を表示しないようコンパイラーに指示します。警告名は文字列として渡します。

@Suppress("UNUSED_VARIABLE")
fun main() {
    val unused = 42
    println("Runs without the unused-variable warning")
}

JvmStatic とその仲間

KotlinのJVMへのコンパイル方法に影響するアノテーションがあります。@JvmStatic、@JvmField、@JvmNameはバイトコードを制御し、Javaから呼び出す側にとって扱いやすいAPIを提供します。

純粋なKotlinコードでは何の効果もありませんが、相互運用では重要です。

class Math {
    companion object {
        @JvmStatic
        fun square(x: Int) = x * x
    }
}

fun main() {
    println(Math.square(5))
}

アノテーションの使用箇所ターゲット

プロパティからは、フィールド、getter、setter、コンストラクター引数など、複数のJVM要素が生成されることがあります。使用箇所ターゲットは、アノテーションをどこに付けるかを指定します。

構文は@get:、@set:、@field:、@param:です。

class User(@get:JvmName("fetchName") val name: String)

fun main() {
    val u = User("Ada")
    println(u.name)
}

Java相互運用のためのThrows

Kotlinにはチェック例外がないため、@Throwsを追加しない限り、Javaから呼び出す側にthrows句は見えません。@Throwsは例外の型をバイトコードのシグネチャに記録します。

import java.io.IOException

@Throws(IOException::class)
fun readData(): String {
    return "data"
}

fun main() {
    println(readData())
}

複数のアノテーション

1つの要素に複数のアノテーションを重ねて付けられます。それぞれを別の行に記述するか、スペースで区切ります。順序は問いません。

@Deprecated("old")
@Suppress("DEPRECATION")
fun legacy() = "still here"

fun main() {
    println(legacy())
}

式へのアノテーション

アノテーションは、トップレベルの関数やクラスだけでなく、式やローカル宣言にも付けられます。関数本体の中で@Suppressを使う場合によく見られます。

fun main() {
    @Suppress("UNUSED_VARIABLE")
    val temp = computeOnce()
    println("Done")
}

fun computeOnce() = 99

OptInと実験的API

ライブラリは、安定していないAPIに独自のオプトイン用アノテーションを付けます。それらを使うには、@OptIn(SomeApi::class)でリスクを認識していることを示すか、アノテーションを伝播させます。

これにより、実験的な機能を意図せず使うのではなく、明示的に選択できます。

fun main() {
    // @OptIn would appear here when calling an experimental function
    println("Opt-in keeps unstable APIs visible")
}

なぜアノテーションを付けるのか

アノテーションを使うと、ツールに意図を伝えられます。コンパイラーは非推奨の呼び出しに警告を出し、シリアライズライブラリはフィールドをマッピングし、テストフレームワークはテストメソッドを見つけ、DIフレームワークは依存関係を接続します。

  • ロジックではなくメタデータ
  • コンパイル時または実行時に読み取られる
  • 設定をコードの近くに置ける

クイックチェック

アノテーションの使い方について理解度を確認しましょう。

振り返り

組み込みアノテーションの使い方を学びました。

  • @Deprecated、@Suppress、@Throws
  • JVM相互運用: @JvmStatic、@JvmName
  • @get:や@field:などの使用箇所ターゲット
  • 実験的APIのオプトイン

次は独自のアノテーションを定義します。

よくある質問

「アノテーションの使用」レッスンは無料ですか?

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

「アノテーションの使用」で何を学びますか?

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

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

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

「アノテーションの使用」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. アノテーションの使用
  2. アノテーションの定義
  3. リフレクションの基礎
  4. 実践的なリフレクション
← Kotlin Academyに戻る