クイックスタート

このガイドでは、簡単な動作例を使用して、AndroidでKotlin gRPCを始める方法を説明します。

クイックスタート

このガイドでは、簡単な動作例を使用して、AndroidでKotlin gRPCを始める方法を説明します。

前提条件

サンプルコードを取得

サンプルコードは、grpc-kotlin リポジトリの一部です。

  1. リポジトリをzipファイルとしてダウンロード して解凍するか、リポジトリをクローンします。

    $ git clone https://github.com/grpc/grpc-kotlin
    
  2. examplesディレクトリに移動します。

    $ cd grpc-kotlin/examples
    

サンプルを実行

  1. サーバーをコンパイルします。

    $ ./gradlew installDist
    
  2. サーバーを実行します。

    $ ./server/build/install/server/bin/hello-world-server
    Server started, listening on 50051
    
  3. 別のターミナルから、クライアントをビルドしてデバイスにインストールします。

    $ ./gradlew :android:installDebug
    
  4. デバイスからクライアントアプリを起動します。

  5. Nameボックスに「Alice」と入力し、Sendをクリックします。次の応答が表示されます。

    Hello Alice
    

おめでとうございます!gRPCを使用してクライアント-サーバーアプリケーションを実行しました。

gRPCサービスを更新

このセクションでは、追加のサーバーメソッドを追加してアプリケーションを更新します。 gRPCサービスは、プロトコルバッファ を使用して定義されます。 .protoファイルでサービスを定義する方法の詳細については、基本チュートリアルを参照してください。今のところ、サーバーとクライアントスタブの両方に、クライアントからHelloRequestパラメータを受け取り、サーバーからHelloReplyを返すSayHello() RPCメソッドがあり、メソッドが次のように定義されていることだけを知っておく必要があります。

// 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;
}

ファイルを保存することを忘れないでください!

アプリを更新

サンプルをビルドすると、ビルドプロセスによって、生成されたgRPCクライアントおよびサーバークラスを含むHelloWorldProtoGrpcKt.ktが再生成されます。これにより、リクエストとレスポンスの型を生成、シリアライズ、および取得するためのクラスも再生成されます。

ただし、サンプルアプリの手書き部分で新しいメソッドを実装して呼び出す必要があります。

サーバーを更新

Kotlinクイックスタートページのサーバーの更新に記載されている指示に従ってください。

クライアントを更新

次の手順を実行します。

  1. client/src/main/kotlin/io/grpc/examplesフォルダからhelloworld/MainActivity.ktを開きます。

  2. sayHello()への呼び出しを含む関数を見つけます。次のコード行が表示されます。

    val response = greeter.sayHello(request)
    responseText.text = response.message
    
  3. sayHelloAgain()への呼び出しを追加し、応答メッセージの作成方法を変更します。上記のコード行を次のように置き換えます。

    val response = greeter.sayHello(request)
    val againResponse = greeter.sayHelloAgain(request)
    val message = "${response.message}\n${againResponse.message}"
    responseText.text = message
    

更新したアプリを実行

以前と同じようにクライアントとサーバーを実行します。 examplesディレクトリから次のコマンドを実行します。

  1. サーバーをコンパイルします。

    $ ./gradlew installDist
    
  2. サーバーを実行します。

    $ ./server/build/install/server/bin/hello-world-server
    Server started, listening on 50051
    
  3. 別のターミナルから、クライアントをビルドしてデバイスにインストールします。

    $ ./gradlew :android:installDebug
    
  4. デバイスからクライアントアプリを起動します。

  5. Messageボックスに「Alice」と入力し、Sendをクリックします。次の応答が表示されます。

    Hello Alice
    Hello again Alice
    

次のステップ