【ハウツー】
Java向けソースコードに特化した内容ではあったが、Protocol Bufferについて一通り説明させていただいた。いかがだったであろうか。
最後に、今回使用したサンプル(修正後)を全て掲載する。読者の皆さんが、Protocol Bufferを理解するための一助になれば幸いである。
package mycom.journal;
option java_package = "jp.co.mycom.journal";
option java_outer_classname = "Persons";
option optimize_for = SPEED;
message Person {
message Name {
required string first_name = 1;
required string last_name = 2;
optional string middle_name = 3;
}
// 名前を表す。必須
required Name name = 1;
// 年齢を表す
optional int32 age = 2;
enum Gender {
MALE = 0;
FEMALE = 1;
}
optional Gender gender = 3 [default = MALE];
extensions 1000 to max;
}
// Person型を拡張し、「体重」フィールドを加える
extend Person {
optional int32 weight = 1000;
}
// RPCの戻り値として使用されるレスポンス
message HelloResponse {
required string message = 1;
}
// RPCサービスの定義
service HelloService {
rpc hello(Person) returns (HelloResponse);
}
import jp.co.mycom.journal.Persons;
import java.io.*;
import com.google.protobuf.ExtensionRegistry;
public class ReadWritePerson2 {
private static final String FILE_NAME = "person.data";
public static void main(String[] args) throws Exception {
// ファイルへの書き出し
Persons.Person.Builder shiraishiBuilder = Persons.Person.newBuilder();
Persons.Person.Name shiraishiName = Persons.Person.Name.newBuilder()
.setFirstName("白石")
.setLastName("俊平")
.build();
Persons.Person shiraishi = shiraishiBuilder
.setName(shiraishiName)
.setAge(30)
.setGender(Persons.Person.Gender.MALE)
.setExtension(Persons.weight, 65)
.build();
OutputStream out = new FileOutputStream(FILE_NAME);
shiraishi.writeTo(out);
out.close();
// ファイルからの読み込み
InputStream in = new FileInputStream(FILE_NAME);
ExtensionRegistry registry = ExtensionRegistry.newInstance();
registry.add(Persons.weight);
shiraishi = Persons.Person.parseFrom(in, registry);
in.close();
System.out.printf("名前:%s 年齢:%d 性別:%s 体重:%d%n",
shiraishi.getName(), shiraishi.getAge(),
shiraishi.getGender(),
shiraishi.getExtension(Persons.weight));
}
}
| XMLよりもシンプル! Google、独自記述言語によるデータ交換ツールを公開 [2008/7/9] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
[AKB48・指原莉乃]総選挙速報4位に「キープしたい」 [19:05 5/26] ホビー |
|
[モーニング娘。]新体制でガールズアワード初登場 新曲初披露に先輩・矢口も絶賛 [18:48 5/26] エンタメ |
|
[メン・イン・ブラック3]ソネンフェルド監督に聞く「3作の中で最も感情的な面で満足できる」 [18:30 5/26] エンタメ |
|
[注目映画紹介]「MY HOUSE」 モノクロの異色作 現代人の欲望の行きつく先とは [17:30 5/26] エンタメ |
|
「語れ!ガンダム」に安彦良和インタビュー、次回作構想も [17:20 5/26] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。