Skip to content

クライアントの依存関係の追加

プロジェクトで Ktor HTTP クライアントを使用するには、リポジトリを構成し、以下の依存関係を追加する必要があります:

  • ktor-client-core

    ktor-client-core には Ktor クライアントのコア機能が含まれています。

  • エンジン依存関係

    エンジンはネットワークリクエストの処理に使用されます。 特定のプラットフォームでは、ネットワークリクエストを処理するために特定のエンジンが必要になる場合があることに注意してください。

  • (オプション) ロギング依存関係

    構造化され、柔軟なロギング機能を実現するためのロギングフレームワークを提供します。

  • (オプション) プラグイン依存関係

    プラグインは、特定の機能でクライアントを拡張するために使用されます。

Ktor の依存関係を追加する前に、このプロジェクトのリポジトリを構成する必要があります:

  • Production

    Ktor の製品リリース(Production releases)は、Maven Central リポジトリで入手可能です。 ビルドスクリプトで次のようにこのリポジトリを宣言できます:

    Kotlin
    Groovy

    NOTE

    プロジェクトは Super POM からセントラルリポジトリを継承しているため、pom.xml ファイルに Maven Central リポジトリを追加する必要はありません。

  • Early Access Program (EAP)

    Ktor の EAP バージョンにアクセスするには、Space リポジトリを参照する必要があります:

    Kotlin
    Groovy
    XML

    Ktor EAP には Kotlin dev リポジトリが必要な場合があることに注意してください:

    Kotlin
    Groovy
    XML

依存関係の追加

異なるプラットフォームに対して、Ktor は -jvm-js などのサフィックスが付いたプラットフォーム固有のアーティファクト(例:ktor-client-core-jvm)を提供しています。Gradle は特定のプラットフォームに適したアーティファクトを自動的に解決しますが、Maven はこの機能をサポートしていません。つまり、Maven の場合は、プラットフォーム固有のサフィックスを手動で追加する必要があります。

クライアント依存関係

メインのクライアント機能は ktor-client-core アーティファクトで利用できます。ビルドシステムに応じて、次のように追加できます:

Kotlin
Groovy
XML

$ktor_version は、必要な Ktor バージョン(例:3.3.3)に置き換えることができます。

マルチプラットフォーム

マルチプラットフォームプロジェクトの場合、gradle/libs.versions.toml ファイルで Ktor バージョンと ktor-client-core アーティファクトを定義できます:

kotlin
[versions]
ktor = "3.4.0"

[libraries]
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }

次に、ktor-client-corecommonMain ソースセットに依存関係として追加します:

kotlin
sourceSets {
    commonMain.dependencies {
        implementation(libs.ktor.client.core)
    }
}

エンジン依存関係

エンジンはネットワークリクエストの処理を担当します。Apache、CIO、Android、iOS など、さまざまなプラットフォームで利用可能な異なるクライアントエンジンがあります。たとえば、次のように CIO エンジンの依存関係を追加できます:

Kotlin
Groovy
XML

マルチプラットフォーム

マルチプラットフォームプロジェクトの場合、必要なエンジンの依存関係を対応するソースセットに追加する必要があります。

たとえば、Android 用の OkHttp エンジンの依存関係を追加するには、まず gradle/libs.versions.toml ファイルで Ktor バージョンと ktor-client-okhttp アーティファクトを定義します:

kotlin
[versions]
ktor = "3.4.0"

[libraries]
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }

次に、ktor-client-okhttpandroidMain ソースセットに依存関係として追加します:

kotlin
sourceSets {
    androidMain.dependencies {
        implementation(libs.ktor.client.okhttp)
    }
}

特定のエンジンに必要な依存関係の全リストについては、エンジンの依存関係を追加するを参照してください。

ロギング依存関係

JVM 上では、Ktor はロギングの抽象化レイヤーとして Simple Logging Facade for Java (SLF4J) を使用します。SLF4J はロギング API を基盤となるロギング実装から分離し、アプリケーションの要件に最適なロギングフレームワークを統合できるようにします。 一般的な選択肢には LogbackLog4j が含まれます。 フレームワークが提供されない場合、SLF4J はデフォルトで no-operation (NOP) 実装になり、実質的にロギングが無効になります。

ロギングを有効にするには、Logback などの必要な SLF4J 実装を含むアーティファクトを含めます:

Kotlin
Groovy
XML

Ktor でのロギングの詳細については、Ktor Client でのロギングを参照してください。

プラグイン依存関係

Ktor では、認可やシリアライゼーションなど、デフォルトでは利用できない追加のクライアント機能(プラグイン)を使用できます。その一部は個別のアーティファクトで提供されています。必要なプラグインのトピックから、どの依存関係が必要かを確認できます。

マルチプラットフォームプロジェクトの場合、プラグインの依存関係は commonMain ソースセットに追加する必要があります。一部のプラグインには特定のプラットフォームに対する制限がある場合があることに注意してください。

Ktor バージョンの一貫性の確保

Ktor BOM 依存関係の使用

Ktor BOM を使用すると、依存関係ごとにバージョンを個別に指定することなく、すべての Ktor モジュールが同じ一貫したバージョンを使用することを保証できます。

Ktor BOM の依存関係を追加するには、ビルドスクリプトで次のように宣言します:

Kotlin
Groovy
XML

公開されているバージョンカタログを使用して、Ktor の依存関係の宣言を一元化することもできます。 このアプローチには以下の利点があります:

  • 独自のカタログで Ktor のバージョンを手動で宣言する必要がなくなります。
  • すべての Ktor モジュールを単一のネームスペースの下で公開します。

カタログを宣言するには、 settings.gradle.kts で任意の名前のバージョンカタログを作成します:

kotlin

その後、カタログ名を参照することで、モジュールの build.gradle.kts に依存関係を追加できます:

kotlin