クイックスタート

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

クイックスタート

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

前提条件

  • Kotlin バージョン 1.3 以降

  • JDK バージョン7以降

  • Android SDK、APIレベル 16 以降

    1. Android Studio または Android コマンドラインツール をインストールしてください。

    2. 以下の環境変数を設定して、他のツールやスクリプトがAndroid SDKの場所を見つけられるようにしてください。

      export ANDROID_SDK_ROOT="<path-to-your-android-sdk>"
      
  • USBデバッグ が有効になっているAndroidデバイス、または Android仮想デバイス

サンプルコードを取得する

サンプルコードは、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サービスは 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 クイックスタートページの サーバーの更新 に記載されている手順に従ってください。

クライアントを更新する

以下の手順に従ってください。

  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
    

次は何をするか