"GreeterProtobuf";上記の例では、「GreeterProtobuf」という名前で出力されるようになります。定義に紐付いたクラス、メソッドが含まれています。messageで定義しているRequest、Responseのクラスもstaticなインナークラスとして定義されています。この形では扱いづらいこともあるため、出力するファイル、クラスを分離することができます。true;このオプションをtrueにすることで(デフォルトはfalse)、OuterClassからはmessageに関する定義はなくなり、下記のBuilderインターフェース、実装クラスがそれぞれ別ファイルで出力されます。HelloReplyHelloReplyOrBuilderHelloRequestHelloRequestOrBuilder4Enumの定義protoファイルでは、Enumを定義することもできます。下記のように各要素に数値を指定して記述します。指定しないとエラーになってしまうので、必ず指定するようにしてください。0で定義している要素が、このEnumのデフォルト値として扱われます。定義したEnumをmessageのプロパティの型に指定することができます。いうEnumファイルも生成される(java_multiple_filesがfalseの場合はOuterClassの中に定義される)ため、あとは通常のJavaのEnumと同じように使用できます。先ほど定義したEnumをプロパティの型に指定しましたが、同じようにmesageを型にすることもできます。1;}上記の例では「User」というmessageを定義し、それをHelloRequestの2番目のプロパティの型に指定しています。protoファイルのパッケージ構成パターンここまでprotoファイルは「Greeter.proto」という1つのファイルに全て記述してきましたが、中のserviceやmessageをファイル自体で分けることもできます。protoファイルの配置場所として決められたディレクトリ内にさえ置かれていれば、その中のディレクトリ階層やファイル構成は関係なく、全て生成してくれます。最後に、いくつか想定されるファイル構成のパターンを参考として紹介します。serviceとその中で使うmessage、Enumを全て入れるまずは1つのファイルに全部を入れるパターン。service単位でファイルは分けて、その中で使うmessage、Enumの定義も同梱する構成。今回のGreeter.protoと同じですね。service、message、Enumを完全分離service、message、Enumそれぞれでファイルを作るパターン。今回の例で言うと、下記の4ファイルを作るイメージです。GreeterService.protoHelloRequest.protoHelloReply.protoMessageType.protoJavaの出力ファイルと近い構成になりますね。messageを一つにまとめるRequest、Responseのmessage、その中で参照するオブジェクトがセットのファイルをるパターン。GreeterService.protoHelloMessages.protoのようなファイルを作り、「HelloMessages.proto」にHelloRequest、HelloReply、MessageTypeが定義されているイメージです。Buffersのコードジェネレータや、protoファイルの記述について紹介しました。これで基本的な構成ができあがりました。次回はgRPCでのインタセプタやエラーハンドリングなどの実装方法について、紹介する予定です。はてなブログProプログラマとしての生き方とか、働き方とか、技術のことを雑多に書いていきます。CODE-セブンスコード-」のバックエンド技術DockerでMySQLを起動した時はバージョン差異に注意ブログの技術記事で書く内容をパターン分けしてみた2019年を雑に振り返る月別アーカイブはてなブログをはじめよう!take7010さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。