Kotlinのsuspend関数とは?非同期処理の基本的な書き方をやさしく解説!
生徒
「Kotlinで非同期処理を書くときに、suspendってよく出てくるんですけど、これって何ですか?」
先生
「suspendは、Kotlinのコルーチンで使う特別な関数につけるキーワードです。関数の動きを一時的に止めて、あとで再開できるようにする仕組みなんですよ。」
生徒
「一時的に止めるって、どういうことなんですか?アプリは止まらないんですか?」
先生
「いい質問ですね。アプリ全体は止まらずに、関数の中の処理だけを一時的に止めて、必要なタイミングで再開するイメージです。これから詳しく説明しますね。」
1. suspend関数とは?Kotlinの非同期処理に必要なキーワード
suspend関数とは、Kotlinで非同期処理を行うために使う特別な関数のことです。suspendというキーワードを関数の前につけることで、「途中で止めたり、あとで再開したりできる関数」になります。
通常の関数は一気に処理を進めますが、suspend関数は「いったん処理を止めて、他の処理を先に動かす」ことができるので、アプリが固まらないというメリットがあります。
2. 日常の例でイメージしよう!
たとえば、ご飯を炊くときに「炊飯ボタンを押してから、できるまで待つ」必要がありますよね。でもその間、何もしないで待っていたら時間がもったいないです。
そこで、「ご飯を炊いている間にサラダを作る」というように、別の作業を同時に進めるのが非同期処理の考え方です。suspend関数は、「炊飯を開始して、できるまで一時停止しておく」ような働きをします。
3. Kotlinのsuspend関数の基本的な書き方
では、実際にsuspendを使って非同期処理を書く方法を見てみましょう。
import kotlinx.coroutines.*
suspend fun fetchData(): String {
delay(1000) // 1秒待機(非同期)
return "データを取得しました"
}
fun main() = runBlocking {
println("取得中...")
val result = fetchData()
println(result)
}
4. 実行結果を見てみよう
取得中...
データを取得しました
このコードでは、fetchDataという関数がsuspend関数として定義されています。中でdelayを使って1秒間待機してから、文字列を返しています。
runBlockingは、main関数の中でsuspend関数を使うために必要な「土台」です。
5. なぜdelayが使えるの?
delayは、Kotlinのコルーチンライブラリに含まれている「非同期で時間を待つ関数」です。アプリを止めずに待てるというのが特徴です。
Thread.sleepのようにアプリ全体を止めるのではなく、コルーチンだけを一時的に止めるので、他の処理はそのまま進められます。
6. suspend関数のポイント
- suspend関数は通常の関数では呼び出せない:コルーチンの中からでないと呼び出せません。
- delayのような「一時停止」系の関数が使える:非同期処理との相性が抜群です。
- 戻り値も普通の関数と同じように扱える:ただし、呼び出しにはコルーチンが必要です。
7. suspend関数を呼び出すときに必要なもの
さきほども登場したrunBlockingは、「コルーチンの実行環境」をつくるために使います。
他にも、launchやasyncといった関数を使って、コルーチンを起動する方法もありますが、ここではrunBlockingだけを使って説明しています。
fun main() = runBlocking {
val message = fetchData()
println(message)
}
このように、suspend関数を呼び出すときには、コルーチンの中から実行する必要があります。
8. suspend関数の中で他のsuspend関数を呼べる?
はい、suspend関数の中では、他のsuspend関数を自由に呼び出すことができます。
これは、処理を分けて書くことでコードを見やすく、わかりやすくするためにとても便利な仕組みです。
suspend fun getUserInfo(): String {
delay(500)
return "ユーザー情報"
}
suspend fun getUserDetail(): String {
val info = getUserInfo()
return "$info の詳細"
}
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
9. suspend関数は非同期処理のカギ
Kotlinで非同期処理を書くときに避けて通れないのがsuspend関数です。
delayのような「止められる処理」が使えるのもこの関数だけ。アプリを止めずにスムーズに動かすための魔法のキーワードとも言えます。
最初は難しく見えるかもしれませんが、「待てる関数」「止まれる関数」と覚えておくと理解しやすいですよ。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験