0Pricing
Kotlin Academy · レッスン

valとvar:初日から不変性を学ぶ

valとvarの違いと、不変性が重要な理由を理解します

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

変数を宣言する2つの方法

Kotlinには、変数を宣言するためのキーワードが2つあります。読み取り専用(不変)の参照にはval、可変の参照にはvarを使います。正しく選ぶことが重要です。

val:読み取り専用の参照

valは、初期化後に再代入できない参照を宣言します。Javaのfinalのようなものだと考えてください。
val name = "Kotlin"
println(name)
// name = "Java" // Error: Val cannot be reassigned

var:可変の参照

varは、再代入できる変数を宣言します。本当に変更が必要な場合にだけvarを使ってください。
var counter = 0
counter = 1
counter += 1
println(counter) // 2

型推論

Kotlinは初期値から型を推論します。また、コロンの後に型を明示的に記述することもできます。
val age = 25          // inferred: Int
val name: String = "Ana"  // explicit type
var score: Double = 0.0

valは不変オブジェクトを意味しない

valは参照の再代入を防ぎますが、オブジェクト自体は可変のままにできます。val MutableListにもアイテムを追加できます。
val list = mutableListOf(1, 2, 3)
list.add(4)        // OK! list is val but mutable
// list = mutableListOf() // Error: reassignment

デフォルトではvalを優先する

Kotlinのスタイルガイドでは、デフォルトでvalを使うことが推奨されています。コードがより安全になり、動作も理解しやすくなります。変更が必要な場合にだけvarへ変更してください。
val pi = 3.14159     // constant value
val greeting = "Hi"  // never changes
var retries = 3      // will be decremented

valとconst val

const valはコンパイル時定数(トップレベル、またはobject/companion内のプリミティブ型とString)に使います。valは実行時定数です。
const val MAX_SIZE = 100    // compile-time
val instance = MyClass()    // runtime

初期化されていないvar

初期化せずにvarを宣言することもできますが、型を必ず指定し、使用前に値を代入する必要があります。valは必ず初期化しなければなりません。
var result: String
result = "computed"
println(result)

スコープとシャドーイング

変数のスコープは、その変数を含むブロック内に限定されます。内側のスコープでは外側の変数をシャドーイングできますが、混乱の原因になるため、意味のある名前を使ってください。
val x = 10
run {
    val x = 20  // shadows outer x
    println(x)  // 20
}
println(x)      // 10

命名規則

Kotlinでは、変数と関数にcamelCaseを使います。定数(const val)にはUPPER_SNAKE_CASEを使い、クラスにはPascalCaseを使います。
val firstName = "Jane"     // camelCase
const val MAX_ITEMS = 50   // UPPER_SNAKE_CASE
class UserProfile           // PascalCase

不変性が重要な理由

不変データはデフォルトでスレッドセーフになり、テストしやすく、予期しない変更によるバグも減らせます。常に「この値を変更する必要があるか」と考えてください。

確認問題

Kotlinで読み取り専用(再代入できない)参照を宣言するキーワードはどれですか。

まとめ

valは読み取り専用の参照、varは可変の参照です。valを優先してください。型推論を使えば、型を明示的に書かずに済みます。次はKotlinの組み込み型です。

よくある質問

「valとvar:初日から不変性を学ぶ」レッスンは無料ですか?

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

「valとvar:初日から不変性を学ぶ」で何を学びますか?

valとvarの違いと、不変性が重要な理由を理解します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「valとvar:初日から不変性を学ぶ」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Kotlinのセットアップ:REPL、IntelliJ、オンラインPlayground
  2. valとvar:初日から不変性を学ぶ
  3. Kotlinの基本型:Int、Double、Boolean、Char
  4. 最初のKotlinプログラム:main、println、入力
← Kotlin Academyに戻る