クイックスタート
このガイドでは、簡単な動作例を使ってAndroidでKotlin gRPCを使い始める方法を説明します。
クイックスタート
前提条件
Kotlin バージョン 1.3 以降
JDK バージョン7以降
Android SDK、APIレベル 16 以降
Android Studio または Android コマンドラインツール をインストールしてください。
以下の環境変数を設定して、他のツールやスクリプトがAndroid SDKの場所を見つけられるようにしてください。
export ANDROID_SDK_ROOT="<path-to-your-android-sdk>"
USBデバッグ が有効になっているAndroidデバイス、または Android仮想デバイス
注記
gRPC Kotlin は Android デバイス上でサーバーを実行することをサポートしていません。このクイックスタートでは、Android クライアント アプリはローカル (非 Android) コンピューターで実行されているサーバーに接続します。サンプルコードを取得する
サンプルコードは、grpc-kotlin リポジトリの一部です。
リポジトリを zip ファイルとしてダウンロードして解凍するか、リポジトリをクローンしてください。
git clone https://github.com/grpc/grpc-kotlinexamplesディレクトリに移動
cd grpc-kotlin/examples
サンプルを実行する
サーバーをコンパイルする
./gradlew installDistサーバーを実行する
./server/build/install/server/bin/hello-world-server Server started, listening on 50051別のターミナルから、クライアントをビルドしてデバイスにインストールします。
./gradlew :android:installDebugデバイスからクライアント アプリを起動します。
Name ボックスに「Alice」と入力し、Send をクリックします。以下の応答が表示されます。
Hello Alice
おめでとうございます!gRPCを使用したクライアント・サーバーアプリケーションを実行できました。
gRPCサービスを更新する
このセクションでは、追加のサーバーメソッドを追加してアプリケーションを更新します。gRPCサービスは Protocol Buffers を使用して定義されます。.proto ファイルでサービスを定義する方法の詳細については、Basics tutorial を参照してください。今のところ、知っておく必要があるのは、サーバーとクライアントスタブの両方に SayHello() RPCメソッドがあり、クライアントからの HelloRequest パラメータを受け取り、サーバーからの HelloReply を返すことで、メソッドが次のように定義されているということです。
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
protos/src/main/proto/io/grpc/examples フォルダの helloworld/hello_world.proto を開き、同じリクエストとレスポンスタイプで新しい SayHelloAgain() メソッドを追加してください。
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// Sends another greeting
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
ファイルを保存してください!
アプリケーションを更新する
例をビルドすると、ビルドプロセスによって HelloWorldProtoGrpcKt.kt が再生成され、生成された gRPC クライアントおよびサーバークラスが含まれます。これにより、リクエストとレスポンスタイプの入力、シリアライズ、取得用のクラスも再生成されます。
ただし、例のアプリケーションの手書き部分で新しいメソッドを実装し、呼び出す必要があります。
サーバーを更新する
Kotlin クイックスタートページの サーバーの更新 に記載されている手順に従ってください。
クライアントを更新する
以下の手順に従ってください。
client/src/main/kotlin/io/grpc/examplesフォルダからhelloworld/MainActivity.ktを開きます。sayHello()への呼び出しを含む関数を見つけます。以下のコード行が表示されます。val response = greeter.sayHello(request) responseText.text = response.messagesayHelloAgain()への呼び出しを追加し、レスポンスメッセージの作成方法を変更します。上記のコード行を以下に置き換えます。val response = greeter.sayHello(request) val againResponse = greeter.sayHelloAgain(request) val message = "${response.message}\n${againResponse.message}" responseText.text = message
更新されたアプリケーションを実行する
前と同様にクライアントとサーバーを実行します。examplesディレクトリから次のコマンドを実行します。
サーバーをコンパイルする
./gradlew installDistサーバーを実行する
./server/build/install/server/bin/hello-world-server Server started, listening on 50051別のターミナルから、クライアントをビルドしてデバイスにインストールします。
./gradlew :android:installDebugデバイスからクライアント アプリを起動します。
Message ボックスに「Alice」と入力し、Send をクリックします。以下の応答が表示されます。
Hello Alice Hello again Alice
次は何をするか
- gRPCの仕組みをgRPCの紹介とコアコンセプトで学習してください。
- Kotlin/JVM の Basics tutorial を参照してください。
- APIリファレンス(APIリファレンス)を探索してください。