「KotlinのFlutter」という言い方は、技術的にはやや曖昧です。
Flutterは Dartを主言語とするUIフレームワークであり、Kotlinは Flutterそのものを書くための言語ではありません。
ただし、Flutterを実務で使うと Androidネイティブ領域との連携が必ず出てきます。
そのときに Kotlinが重要な役割を担うため、現場では慣用的に「Kotlin × Flutter」という言い方がされます。
本記事では、この関係を正確に整理します。
大前提:FlutterとKotlinは役割が違う
Flutterとは
- Googleが提供するクロスプラットフォームUIフレームワーク
- アプリケーションコードは Dart で記述する
- 単一コードベースで iOS / Android / Web / Desktop を対象にできる
Kotlinとは
- Android公式の主要プログラミング言語
- Android OSのAPIや既存Android SDKを扱うための言語
- Flutterプロジェクト内では Android側の実装言語として登場する
つまり、
Flutter = UI / アプリロジック(Dart)
Kotlin = Androidネイティブ側(プラットフォーム実装)
という分業構造になります。
KotlinがFlutterで使われる代表的な3パターン
Platform ChannelでFlutter(Dart)からKotlinを呼び出す
Flutterだけでは扱えない、または扱いにくいAndroid固有機能を使う場合、Platform Channel を通して Flutter と Android(Kotlin)を接続します。
仕組みの概要
- Dart側から「このメソッドを呼びたい」と要求
- Android側(Kotlin)がそれを受け取り、処理して結果を返す
主なチャンネルの種類
- MethodChannel
- リクエスト → レスポンス型の呼び出し
- 「この処理をして、結果を返してほしい」という用途
- EventChannel
- イベントストリーム型
- センサー値や状態変化など、継続的に流れるデータ向け
※「MethodChannelは単発、EventChannelは継続」という説明は簡略表現であり、正確には 呼び出しモデル(request/responseか、streamか) の違いです。
使われる場面
- Bluetooth / NFC / USB などの低レベル制御
- Android限定SDK(決済、広告、独自ハードウェア)
- 既存のKotlin資産をFlutterから使いたい場合
Flutterプラグイン開発でKotlinを書く
Flutterには「プラグイン」という仕組みがあり、Dart API + 各プラットフォームのネイティブ実装を1つのパッケージとして提供できます。
構成イメージ
- Dart側:Flutter向けのAPI
- Android側:KotlinでAndroid APIを実装
- iOS側:Swift / Objective-C(必要に応じて)
この形が向いているケース
- 複数アプリで再利用したい機能
- pub.devで公開・共有したいライブラリ
- Platform Channelをアプリ内に直書きしたくない場合
実務では、「最初はアプリ内のMethodChannel → 成熟したらプラグイン化」という流れもよくあります。
Add-to-app:既存KotlinアプリにFlutterを組み込む
Flutterは「ゼロからFlutterで作る」だけでなく、既存のAndroidアプリ(Kotlin)に部分的に組み込むこともできます。
これを Add-to-app と呼びます。
典型的な用途
- 既存Kotlinアプリの一部画面だけFlutter化
- 新機能だけFlutterで先行開発
- 段階的にFlutterへ移行したい場合
技術的ポイント
- ホストアプリはKotlin / Javaどちらでも可
- Flutterは「モジュール」として組み込まれる
- ナビゲーションやライフサイクル連携を設計する必要あり
この構成では、Kotlinがアプリの土台、FlutterがUIの一部という関係になります。
よくある誤解と注意点
誤解①「FlutterはKotlinでも書ける」
→ 誤り
FlutterのアプリコードはDartで書きます。
KotlinはあくまでAndroidネイティブ側の実装言語です。
誤解②「EventChannelは一方通行」
→ 半分正解・半分誤解
EventChannelは「イベントをStreamとして公開する」仕組みで、
命令を双方向に投げ合う用途には向きません。
そのため、実質的に ネイティブ → Flutter のデータ配信で使われることが多い、というのが正確です。
注意点:Kotlin / Gradle のバージョン問題
FlutterのAndroidビルドには 最低限必要なKotlin Gradle Pluginのバージョンがあります。
- 要件を満たさないとビルドエラーになる
- 既存AndroidアプリにAdd-to-appする場合、特に衝突しやすい
- 「Flutterを入れたら突然ビルドが壊れた」という原因になりがち
これは経験則ではなく、公式に要件が定義されています。
結論:正確に言い換えるとこうなる
「KotlinのFlutter」という言葉を、技術的に正確に言い換えるなら、
Flutter(Dart)で作ったアプリが、Androidネイティブ領域(Kotlin)と連携する構成
を指しているケースがほとんどです。
その連携方法には、
- Platform Channel
- Flutterプラグイン
- Add-to-app
という明確なパターンがあります。
補足:もし本当に聞きたかったのが別物だった場合
まれに「KotlinのFlutter」という言葉で、
- KotlinでマルチプラットフォームUIを書く仕組み
- FlutterとKotlin系(Compose Multiplatform / KMP)の比較
を指しているケースもあります。
その場合は 完全に別の技術領域になるため、Flutter vs Kotlin系クロスプラットフォームという切り口で整理し直す必要があります。
以上、KotlinのFlutterについてでした。
最後までお読みいただき、ありがとうございました。








