Kotlinのdelay関数の使い方を完全ガイド!非同期で遅延処理を実装する方法
生徒
「Kotlinで何秒か待ってから処理をしたいんですが、どうやって遅らせるんですか?」
先生
「Kotlinでは、delayという関数を使うことで、非同期的に処理を遅らせることができますよ。」
生徒
「非同期っていうのは、普通の遅延と違うんですか?」
先生
「その違いも含めて、これからわかりやすく説明していきますね!」
1. delay関数とは?
delay関数は、Kotlinのコルーチンの中で使うことができる非同期の遅延処理です。例えば「3秒待ってから次の処理をする」といった場面で使われます。
非同期とは、「待っている間に別のことができる」ような動きのことです。これに対して、同期処理は「終わるまでじっと待つ」イメージです。
delay関数はThread.sleep()のように完全に止めてしまう処理とは違い、軽く一時停止するような感覚で使えます。
2. delay関数の基本的な使い方
delay関数は、ミリ秒単位(1000ミリ秒 = 1秒)で待ち時間を指定します。基本的な使い方は次の通りです。
import kotlinx.coroutines.*
fun main() = runBlocking {
println("処理1:開始")
delay(2000) // 2秒間待つ
println("処理2:2秒後に実行")
}
このプログラムでは、「処理1」が表示されたあと、2秒間何も表示されずに待ち、その後「処理2」が表示されます。
このようにdelay関数は、コルーチンの中で一時的に待機するために使われます。
3. delayとThread.sleepの違い
Thread.sleep()とdelay()はどちらも「待つ」処理ですが、大きな違いがあります。
- Thread.sleep():完全にスレッドを停止する
- delay():他の処理を邪魔せずに非同期で待つ
たとえば、アプリ全体が止まってほしくないときにはdelayを使うのが最適です。
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(3000)
println("3秒後の処理")
}
println("すぐに表示される処理")
}
このコードでは、「すぐに表示される処理」が先に出て、その3秒後に「3秒後の処理」が出てきます。
4. delayを使うにはrunBlockingが必要?
delayはコルーチンの中でしか使えないので、main関数などで使うときにはrunBlockingで囲む必要があります。
runBlockingとは、「コルーチンを待つ」ための特別な関数です。
import kotlinx.coroutines.*
fun main() = runBlocking {
println("スタート")
delay(1000)
println("1秒後に実行")
}
このように、runBlockingの中でdelayを使うことで、正しく非同期的に待機することができます。
5. delayを複数回使ってみよう
delay関数は複数回使っても問題ありません。順番に遅延処理を入れてみましょう。
import kotlinx.coroutines.*
fun main() = runBlocking {
println("処理A")
delay(1000)
println("処理B")
delay(1000)
println("処理C")
}
このコードでは、1秒ずつ待って順番に処理が実行されていきます。アニメーションのように時間を使って処理を進めたいときに便利です。
6. delayを使った簡単なカウントダウン
delayを使えば、簡単なカウントダウンも実現できます。
import kotlinx.coroutines.*
fun main() = runBlocking {
for (i in 5 downTo 1) {
println("$i...")
delay(1000)
}
println("スタート!")
}
このようにdelayを使えば、時間を使った演出や待機処理も自然に実装できます。
7. delay関数の注意点
delay関数は便利ですが、コルーチンの中でしか使えないという制限があります。通常の関数で使おうとすると、エラーになります。
そのため、delayを使いたいときはrunBlockingやlaunch、asyncなどでコルーチンを作成しましょう。
また、Androidアプリの中では、Dispatchers.Mainなどと組み合わせて使うことが一般的です。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
8. delay関数で処理にゆとりを持たせよう
プログラムの中には、すぐに次の処理をせず、少し待ってから動かしたい場面がよくあります。delay関数は、そんな「待つ」という操作をスマートに非同期で行ってくれる便利な機能です。
特に、アニメーションやネットワークアクセスのように「時間がかかる処理」や「少し間をあけたい処理」に使うと、ユーザーにとって快適な動作になります。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験