カテゴリ: Kotlin 更新日: 2025/11/18

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のときに?:で代わりの値を指定することで、安全に値を使うことができます。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

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に強いコードになります。

まとめ

まとめ
まとめ

Kotlinのnull安全演算子である?.?:は、プログラミング初心者がつまずきやすいnullに関する問題を極めて自然に扱える強力な仕組みです。今回の記事では、nullという概念の基本から、セーフコールである?.、そしてエルビス演算子?:の使い方まで段階的に学びましたが、ふり返ってみるとどれもKotlinという言語が安全性と読みやすさを重視して設計されていることを実感できる内容でした。特に、nullを扱う場面はアプリ開発でも頻繁に登場し、そのたびに長い条件分岐を書くという作業は煩雑になりがちです。しかしKotlinでは、?.を使って安全にプロパティへアクセスし、?:を使って代替値を自然に指定することで、コードの流れを壊すことなく、読みやすく整った記述が可能になります。

null安全演算子は、単にコードを短くするためのものではなく、「エラーを防ぐ」という大きな役割も担っています。特に、プログラムの実行時に発生しやすいNullPointerExceptionは、開発の現場でもしばしば問題になりますが、Kotlinでnull安全な書き方を実践することで、こうしたエラーを未然に防ぎ、安定したプログラムを作ることができます。これは初心者だけでなく経験者にとっても価値が高い考え方であり、アプリ開発の中で重要な「例外回避」と「安全性の確保」という視点にもつながります。

さらに、?.?:は組み合わせて使うことで、より柔軟なnull処理が可能になります。セーフコールで一旦安全に値へアクセスし、もしその結果がnullだった場合にエルビス演算子で代替値を与えるという流れは、自然で読みやすく、かつ直感的に理解しやすいのが特徴です。この書き方に慣れておくと、複雑なデータ構造を扱う際にも落ち着いて処理ができるようになります。たとえば、入力フォームの値が空だった場合に初期値を設定したり、ネットワークから取得したデータがnullの場合に別の表示を行うといった処理も簡潔に書くことができます。

また、null安全演算子はKotlinの代表的な特徴として、多くのプログラムの基盤となる要素です。アプリ開発のあらゆる場面で活躍し、特にユーザー入力を扱う画面や、外部からデータを取得する場面では欠かせません。こうした特性から、null安全演算子をしっかり使いこなすことは、Kotlinを学ぶ上で欠かせない基礎力となります。今回の解説を通して、この仕組みを確実に理解し、自分自身のプログラムでも自然に使いこなせるようになることが理想です。

ここでは、今回学んだ内容をひとつにまとめたサンプルプログラムを紹介します。セーフコールとエルビス演算子を組み合わせ、複数ケースのnull処理を行う流れを確認しながら、実際の利用場面をイメージしてみてください。

null安全演算子を応用したサンプルプログラム


fun main() {
    val userName: String? = null
    val userAge: Int? = 20
    val userCity: String? = "東京"

    // ?. と ?: を組み合わせた処理
    val displayName = userName ?: "名前未設定"
    val nameLength = userName?.length ?: 0
    val displayAge = userAge ?: -1
    val cityLength = userCity?.length ?: 0

    println("ユーザー名:$displayName")
    println("名前の文字数:$nameLength")
    println("年齢:$displayAge")
    println("都市名の文字数:$cityLength")
}

このサンプルでは、さまざまなケースに対して?.?:を使い分け、安全に値を扱っています。どの変数にnullが入ってもプログラムが落ちることなく動作し、さらに代わりの値や長さを返すことで、後続の処理もスムーズに進みます。こうしたコードの書き方は、日常的なアプリ開発で頻繁に役立ち、複数の値を扱う場面でも自然に応用できます。

nullという概念は一見難しく見えますが、null安全演算子を身につけてしまえば、複数のケースを落ち着いて処理できるようになります。すると、プログラム全体の安定性も向上し、より正確で信頼性のあるアプリケーションを作れるようになります。Kotlinを使う上で必要な基礎知識として、今回学んだ内容は確実に役立つでしょう。

先生と生徒の振り返り会話

生徒

「nullって扱いづらいイメージがあったけど、?. と ?: を使えばこんなに自然に処理できるんですね!」

先生

「その気づきはとても大事ですよ。nullの扱いが上達すると、アプリの品質も安定してきますし、トラブルも減ります。」

生徒

「?. で安全に取り出して、?: で代わりの値を用意する流れがすごく読みやすいです!」

先生

「Kotlinは読みやすさを大事にしている言語ですからね。この書き方を自然に使えるようになると、もっと複雑な処理にも応用できますよ。」

生徒

「今回のサンプルみたいに、いろいろな値をまとめて扱う場面でも活かせそうです。」

先生

「その調子でどんどん試してみてください。null安全演算子はKotlinの基盤ですから、確実に理解しておくことで開発が一段と楽になりますよ。」

カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New2
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
New3
Swift
Swiftでエラー原因を可視化!ログとトレースのベストプラクティスを初心者向けに解説
New4
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Kotlin
Kotlin DSLとGroovy DSLの違いをやさしく解説!初心者でもわかるGradleスクリプトの使い分け
No.8
Java&Spring記事人気No8
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク