カテゴリ: Kotlin 更新日: 2025/06/30

Kotlinのnull安全演算子の使い方を解説!初心者でもわかる?.と?:の条件式テクニック

Kotlinのnull安全演算子を使った条件式の工夫(?.と?:)
Kotlinのnull安全演算子を使った条件式の工夫(?.と?:)

先生と生徒の会話形式で理解しよう

生徒

「Kotlinって、nullを扱うのが得意って聞いたんですけど、どうやってうまく処理するんですか?」

先生

「いい質問ですね。Kotlinには?.?:というnull安全演算子があって、nullのときでもエラーを出さずに処理できる工夫があるんですよ。」

生徒

「へえ、そんな記号があるんですね。どう使えばいいんですか?」

先生

「それでは、Kotlinでnullを安全に扱うための演算子?.?:について、順番にやさしく解説していきましょう。」

1. null(ヌル)とは?

1. null(ヌル)とは?
1. null(ヌル)とは?

プログラミングでは「値が入っていない状態」をnull(ヌル)と呼びます。

Kotlinでは、?(クエスチョンマーク)を使うことで、その変数がnullになる可能性があると明示できます。


val name: String? = null

このようにString?と書くと、「この変数には文字列かnullが入るかもしれないよ」とKotlinに伝えていることになります。

2. ?.(セーフコール演算子)の使い方

2. ?.(セーフコール演算子)の使い方
2. ?.(セーフコール演算子)の使い方

?.は、nullかもしれない値に対して安全にアクセスするための演算子です。

例えば、名前の長さ(文字数)を取りたいとき、普通に書くとエラーになります:


val name: String? = null
val length = name.length // ← エラー(nullにはlengthがない)

しかし?.を使えば、nullだった場合にエラーを出さずにnullを返してくれます。


val name: String? = null
val length = name?.length
println(length)

null

このように、安全にアクセスするための?.を使えば、プログラムが途中で止まらなくなります。

3. ?:(エルビス演算子)でデフォルト値を設定

3. ?:(エルビス演算子)でデフォルト値を設定
3. ?:(エルビス演算子)でデフォルト値を設定

?:は「もし左側がnullだったら右側を使う」という意味のエルビス演算子です。

例えば、名前がnullのときに「ゲスト」と表示したい場合、次のように書けます。


val name: String? = null
val displayName = name ?: "ゲスト"
println(displayName)

ゲスト

このように、nullのときに?:で代わりの値を指定することで、安全に値を使うことができます。

4. ?.と?:を組み合わせて使う

4. ?.と?:を組み合わせて使う
4. ?.と?:を組み合わせて使う

この2つの演算子は、?.で安全に値を取り出し、?:でnullだったときの代替値を用意することで、さらに使いやすくなります。


val name: String? = null
val length = name?.length ?: 0
println("文字数:$length")

文字数:0

この例では、nameがnullでもlengthが0になって、プログラムが安全に動きます。

5. null安全演算子を使うメリット

5. null安全演算子を使うメリット
5. null安全演算子を使うメリット

今までのように、いちいちif (name != null)と書かなくても、?.?:を使えば、短くて読みやすいコードになります。

また、プログラムの途中で落ちてしまうようなエラー(NullPointerException)を未然に防ぐことができるため、安全性の高いコードになります。

6. 実際のif文との違いを比べてみよう

6. 実際のif文との違いを比べてみよう
6. 実際のif文との違いを比べてみよう

これまでは次のように書いていました:


val name: String? = null
val length: Int

if (name != null) {
    length = name.length
} else {
    length = 0
}

これを?.?:を使うと、次の1行で書けます:


val length = name?.length ?: 0

とても簡潔で、しかもnullに強いコードになります。

カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!