gRPC ❤ Kotlin
Gradle でビルドされた Kotlin プロジェクトの gRPC Java が、すぐに使えるサポートを提供していることをご存知でしたか? Kotlin は JetBrains によって開発された、JVM および Android をターゲットとするモダンな静的型付け言語です。Kotlin プログラムは既存の Java ライブラリとの相互運用が一般的に容易です。このエクスペリエンスをさらに向上させるために、protobuf-gradle-plugin にサポートを追加し、生成された Java ライブラリが Kotlin によって自動的に取得されるようにしました。これで、protobuf-gradle-plugin を Kotlin プロジェクトに追加し、通常の Java プロジェクトと同じように gRPC を使用できます。
ネイティブ Kotlin サポート
gRPC のネイティブ Kotlin サポートをお探しですか? Kotlin、gRPC に出会う を参照してください。以下の例では、Kotlin を使用した JVM アプリケーションと Android アプリケーションのプロジェクト設定方法を示します。
Kotlin gRPC クライアントとサーバー
完全な例は こちら にあります。
Kotlin プロジェクトの gRPC 設定は、Java プロジェクトの設定と同じです。
以下は、Kotlin 関連のセクションを強調した、サンプルプロジェクトの build.gradle のスニペットです。
apply plugin: 'kotlin'
apply plugin: 'com.google.protobuf'
// Generate IntelliJ IDEA's .idea & .iml project files.
// protobuf-gradle-plugin automatically registers *.proto and the gen output files
// to IntelliJ as sources.
// For best results, install the Protobuf and Kotlin plugins for IntelliJ.
apply plugin: 'idea'
buildscript {
ext.kotlin_version = '1.2.21'
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.5'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
// The rest of the projects dep are added below, refer to example URL
}
// The standard protobuf block, same as normal gRPC Java projects
protobuf {
protoc { artifact = 'com.google.protobuf:protoc:3.5.1-1' }
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
}
generateProtoTasks {
all()*.plugins { grpc {} }
}
}
これで、Kotlin ソースファイルから proto で生成されたメッセージと gRPC スタブを使用できます。デフォルトでは、Kotlin ソースは src/main/kotlin および src/test/kotlin に配置されるべきです。必要に応じて、./gradlew generateProto generateTestProto を実行し、IntelliJ をリフレッシュすると、生成されたソースが IDE に表示されます。最後に、./gradlew installDist を実行してプロジェクトをビルドし、./build/install/examples/bin/hello-world-client または ./build/install/examples/bin/hello-world-server を使用して例を実行します。
Kotlin の設定については、こちら で詳しく読むことができます。
Kotlin Android gRPC アプリケーション
完全な例は こちら にあります。
Kotlin Android プロジェクトの gRPC 設定は、通常の Android プロジェクトの設定と同じです。
トップレベルの build.gradle ファイルで
buildscript {
ext.kotlin_version = '1.2.21'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.5"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
そして、アプリモジュールの build.gradle ファイルで
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.protobuf'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// refer to full example for remaining deps
}
protobuf {
// The normal gRPC configuration for Android goes here
}
android {
// Android Studio 3.1 does not automatically pick up 'src/main/kotlin' as source files
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
非 Android プロジェクトと同様に、./gradlew generateProto generateProto を実行して proto コードジェネレーターを実行し、./gradlew build を実行してプロジェクトをビルドします。
最後に、Android Studio でプロジェクトを開き、Run > Run 'app' を選択して Android アプリをテストします。


Kotlin 開発者の gRPC エクスペリエンスを改善できることを楽しみにしています。protobuf-gradle-plugin の issue tracker または grpc-java の issue tracker に、改善のアイデアやバグを追加してください。