カテゴリ: Kotlin 更新日: 2026/02/15

Kotlinのインライン関数の基本とメリットを解説!初心者でも理解できる書き方

Kotlinのインライン関数の基本とメリットを解説
Kotlinのインライン関数の基本とメリットを解説

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

生徒

「Kotlinの"インライン関数"ってなんですか?プログラムを書くときにどう使うのかよくわかりません。」

先生

「Kotlinのインライン関数は、関数をコンパイル時に展開して、処理のスピードを早くするための仕組みです。」

生徒

「関数を展開する?ちょっと難しそう…」

先生

「大丈夫ですよ。紙に書いたメモをその場で読むのと、誰かにその都度読んでもらうのを比べると、メモを直接読むほうが早いですよね?それと似たイメージです。くわしく説明しますね!」

1. インライン関数とは何か?

1. インライン関数とは何か?
1. インライン関数とは何か?

Kotlinのインライン関数(inline function)とは、関数呼び出しのたびに発生する「呼び出しコスト」を減らすため、inlineキーワードを付けてコンパイル時に処理本体を呼び出し元へ展開する仕組みです。紙のメモをいちいち取りに行くのではなく、必要な一文をその場に貼っておくイメージだと考えると直感的です。

特に「関数型の引数(ラムダ式など)」を受け取る関数で効果を発揮します。ラムダは通常、小さなオブジェクトを作って受け渡しますが、インライン化されるとその場で中身が展開されるため、無駄な生成やジャンプが減り、処理が軽くなる可能性があります。小さな処理を何度も呼ぶ場面ほど相性が良い、というポイントだけ押さえておきましょう。

初心者向けの超シンプルなイメージ例


// 「あいさつ」をその場に貼り付けるイメージ
inline fun say(block: () -> Unit) {
    block() // 展開されてここに直接貼られる
}

fun main() {
    say { println("こんにちは Kotlin!") }
}

上のコードでは、sayに渡したラムダの中身(println)が、呼び出し元に直接差し込まれる形になります。書く側は関数を分けて読みやすくでき、実行時は余計な呼び出しが減って軽くなる、というのがインライン関数の基本的な価値です。

2. インライン関数の基本的な書き方

2. インライン関数の基本的な書き方
2. インライン関数の基本的な書き方

インライン関数は、関数の宣言にinlineキーワードを付けるだけです。形としてはinline fun 関数名(引数: 関数型) { ... }となり、呼び出し側が渡す「小さな処理(ラムダ)」を受け取ります。まずは最小限の書き方と、呼び出し時の読みやすい書き方(トレイリングラムダ)を確認しましょう。


// ラムダ(Stringを受け取って何も返さない処理)を受け取るインライン関数
inline fun greet(name: String, action: (String) -> Unit) {
    println("準備中…")
    action(name) // 渡された処理を実行(インライン化で呼び出し元へ展開される)
    println("完了しました")
}

fun main() {
    // これが「トレイリングラムダ」:最後の関数引数がラムダなら()の外に書ける
    greet("太郎") { n ->
        println("こんにちは、$n さん!")
    }
}

ポイントは3つです。

  • (String) -> Unitは「文字列を受け取り、値は返さない処理型」を表します。
  • 呼び出し時、最後の引数がラムダならかっこの外に書けるため読みやすくなります。
  • inlineにより、action(name)の中身が呼び出し元に差し込まれる形で展開されます。

同じ呼び出しは次のようにも書けます(意味は同じ)。書きやすい方を選べばOKです。


greet("太郎", { n -> println("こんにちは、$n さん!") })

このように「宣言はinlineを付ける」「引数でラムダを受け取る」「呼び出しはトレイリングラムダで読みやすく」の3点を押さえるだけで、インライン関数の基本は十分つかめます。

3. インライン関数のメリットとは?

3. インライン関数のメリットとは?
3. インライン関数のメリットとは?

インライン関数を使うメリットは主に以下の3つです。

  • ① 実行速度が速くなる:関数の呼び出しではなく処理が展開されるため、余分な関数呼び出しのコストがなくなります。
  • ② ラムダ式の使用でも効率的:ラムダ式は匿名関数のようなもので、通常は使うたびにオブジェクトが作られますが、インライン関数ではその必要がなくなります。
  • ③ 可読性を保ちつつパフォーマンスを向上:関数で分けることでコードは読みやすくなりますが、速度が落ちる問題をインライン化で防げます。

4. 通常の関数との違いを見てみよう

4. 通常の関数との違いを見てみよう
4. 通常の関数との違いを見てみよう

普通の関数とインライン関数では、コンパイル後のコードの構造に違いが出ます。

たとえば、次のようなコードがあります。


fun regular(action: () -> Unit) {
    println("start")
    action()
    println("end")
}

これをmain関数から呼ぶと、関数を呼び出すたびに処理が移動する必要があります。しかし、インライン化された場合は、その中身が直接main関数に挿入されます。

5. インライン化が向いているケース

5. インライン化が向いているケース
5. インライン化が向いているケース

インライン関数は、次のようなケースで特に効果を発揮します。

  • ・ラムダ式を複数回実行するような関数に使うと高速化しやすい
  • ・処理を渡す関数をたくさん作るようなコードで効率が上がる
  • ・小さな処理の繰り返しで関数呼び出しのコストを減らしたい場合

一方で、関数の中に大きな処理がある場合や、たくさんの場所で呼び出すと逆にプログラムが肥大化することがあるので、適切に使うことが大切です。

6. インライン関数を使うときの注意点

6. インライン関数を使うときの注意点
6. インライン関数を使うときの注意点

インライン関数を使うときは次の点に注意しましょう。

  • 再帰関数には使えない:関数の中で自分自身を呼び出すような処理にはインライン化できません。
  • 大きすぎる関数に使うと逆効果:処理が大きすぎると、呼び出しごとにコードが展開されてしまい、逆にプログラムが重くなります。

小さな処理に限定して使うのがコツです。

7. Kotlinにおけるinlineキーワードの役割まとめ

7. Kotlinにおけるinlineキーワードの役割まとめ
7. Kotlinにおけるinlineキーワードの役割まとめ

Kotlinのinlineキーワードは、関数の処理を呼び出し元に展開することで、速度を上げ、メモリ効率も良くする便利な仕組みです。

「関数を使って読みやすくしたいけど、処理速度も落としたくない!」という場合には、インライン関数はとても効果的です。

まとめ

まとめ
まとめ

Kotlinのインライン関数(inline関数)は、関数の中身を呼び出し元に直接展開するという特徴を持っています。これにより、関数の呼び出しにかかる処理コストがなくなり、特にラムダ式を使った処理では効果的です。関数型の引数を多用するKotlinならではの設計とも相性がよく、「読みやすく保ちつつ、高速化も実現したい」という場面で非常に有効なテクニックです。

たとえば、ユーザーの操作を記録したり、ボタンのクリック時に何らかの処理を挟みたいとき、inlineキーワードを使えばその処理が無駄なく展開され、アプリの動作が軽くなります。関数を適切に使えばコードは読みやすくなりますが、毎回呼び出すコストが気になる場面では、インライン化が真価を発揮します。

ただし、全ての関数をインラインにすればいいというわけではありません。再帰関数には使えず、処理が大きすぎると逆にアプリが重くなることもあります。適切な使いどころを見極めて、軽量かつ保守しやすいコードを書くことが、Kotlinプログラミングにおける良い設計の第一歩です。

ここで、もう一度インライン関数の活用例を振り返ってみましょう。次のサンプルコードでは、処理前後のログと一緒に、インライン関数でラムダを展開しています。


inline fun logAndRun(action: () -> Unit) {
    println("処理開始")
    action()
    println("処理終了")
}

fun main() {
    logAndRun {
        println("ユーザーの操作を記録しました")
    }
}

このように、inlineを使うことで処理の流れが一目で分かり、余計なオブジェクト生成も省かれます。Kotlinならではの柔軟な書き方で、実行速度と可読性を両立させる設計が可能になります。

Kotlinのinline関数は、関数の最適化とラムダ処理の軽量化において非常に重要な技術です。処理の内容が小さく、呼び出しが多い場面では、積極的に活用することでアプリの品質向上が期待できます。パフォーマンスと読みやすさを両立させたコーディングを目指すなら、ぜひ使い方をしっかりマスターしておきましょう。

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

生徒

「インライン関数って最初は難しそうだったけど、実際に書いてみたら意外とシンプルですね!」

先生

「そうですね。処理を関数にまとめながらも、速度を落とさずに実行できるのがポイントです。」

生徒

「ラムダ式を何度も使うときとか、小さい処理をスッキリ書きたいときに向いてるんですね!」

先生

「そのとおり。インライン関数は、Kotlinらしいコードの書き方に慣れていくための大事な要素ですよ。少しずつでいいので、実践しながら覚えていきましょう。」

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

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

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinのインライン関数とは何ですか?初心者でもわかるように教えてください。

Kotlinのインライン関数とは、inlineキーワードを使って関数の中身を呼び出し元に直接展開する仕組みです。関数の呼び出し時に処理がコピーされるため、無駄な処理が省かれ、実行速度が速くなります。
関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説