Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール
Ktorアプリケーションを起動し、Nettyを設定して、アプリケーションモジュールを定義します。
「Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
Ktorとは
Ktorは、サーバーとクライアントを構築するためのJetBrains製の非同期Kotlinフレームワークです。コルーチンを中心に設計され、プラグインベースで、マジックはありません。必要な機能はすべて明示的にインストールします。Ktorアプリケーションは通常のKotlinプログラムであり、DIコンテナは必要ありません。
Ktorの依存関係の追加
build.gradle.kts に、コアサーバーエンジン(最も一般的なのはNetty)と、Ktorのコアサーバーライブラリを追加します。
dependencies {
implementation("io.ktor:ktor-server-core:2.3.12")
implementation("io.ktor:ktor-server-netty:2.3.12")
implementation("ch.qos.logback:logback-classic:1.5.6") // logging
}embeddedServer:最小限のエントリーポイント
Ktorサーバーを起動する最も簡単な方法は embeddedServer です。エンジンファクトリ、ポート、設定ブロックを渡します。
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.routing.*
import io.ktor.server.response.*
fun main() {
embeddedServer(Netty, port = 8080) {
routing {
get("/") { call.respondText("Hello, Ktor!") }
}
}.start(wait = true)
}アプリケーションモジュール
大規模なプロジェクトでは、設定をモジュールに分割します。モジュールとは、Application に対する拡張関数です。モジュールではプラグインをインストールし、ルートを登録します。これにより、コードベースのテストと組み合わせが容易になります。
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}mainからモジュールを呼び出す
モジュールを組み合わせるには、embeddedServer ブロック内でモジュール関数を呼び出します。
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf(HOCON設定)
embeddedServer の代わりに、application.conf ファイル(HOCON形式)を使用し、EngineMain 経由で実行する方法もあります。設定ファイルではエントリーモジュールとポートを指定します。
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMainとembeddedServerの比較
コードで完全に制御したい場合(テストやシンプルなアプリに適しています)は embeddedServer を使用します。再コンパイルせずに環境ごとの設定を切り替えたい場合は、EngineMain と application.conf を使用します。
ApplicationCallオブジェクト
すべてのリクエストハンドラーは ApplicationCall を受け取ります。これにより、リクエスト(call.request)、レスポンス(call.response)、さらに call.respondText() や call.respond() などのヘルパーにアクセスできます。
環境設定とロギング
モジュール内で環境設定にアクセスするには environment.config を使用します。ロギングにはSLF4Jを使用します。src/main/resources/ に logback.xml を追加して、ログレベルと出力形式を設定します。
開発時のホットリロード
Ktorは development モードフラグによる開発時のホットリロードに対応しています。application.conf で有効にするか、プログラムから次のように設定します。embeddedServer(Netty, port = 8080, developmentMode = true) { ... }
プロジェクト構成の慣例
一般的なKtorプロジェクトの構成は次のとおりです。
Application.kt—main()エントリーポイントplugins/— Application拡張関数ごとに1ファイル(Routing、Serialization、Authなど)routes/— ドメインごとにまとめたルート定義models/— データクラス
確認問題
KtorにおけるApplicationモジュール関数には、どのような目的がありますか。
振り返り:Ktorプロジェクトのセットアップ
要点:
embeddedServer(Engine, port) { ... }.start(wait=true)は最も簡単なエントリーポイントです- 設定を
Applicationに対するモジュール拡張関数に分割します - 外部化した設定には
EngineMainとapplication.confを使用します - すべてのリクエストハンドラーは
ApplicationCallを使用してリクエストとレスポンスにアクセスします - 保守性を高めるため、
routes/パッケージにルートをまとめます
よくある質問
「Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール」レッスンは無料ですか?
はい。「Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール」で何を学びますか?
Ktorアプリケーションを起動し、Nettyを設定して、アプリケーションモジュールを定義します。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Ktorプロジェクトのセットアップ:embeddedServerとApplicationモジュール
- ルーティングと型付きパラメータ
- Content Negotiationとkotlinx.serialization
- 認証プラグイン:JWTとSession