「分散システムのためのメッセージ表現手法に関する研究」 - 筑波大学大学院を卒業しました

http://cdn-ak.f.st-hatena.com/images/fotolife/v/viver/20120401/20120401160645_original.jpg

このたび筑波大学大学院を卒業し、修士号を取得しました。卒業にあっては本当に多くの方々にご助力いただきました。この場を借りて御礼申し上げます。ありがとうございました。
現在は起業して、12月からアメリカに在住しています。新たな価値を生み出すべく "下から上まで" システムの設計と開発に携わっており、エキサイティングな毎日を送っています。

修論シーズンに日本にいなかったので、修士論文はメールで送って提出し、卒業式にも出席していないというありさまなので、本当に卒業できたのかどうか実感がないのですが、友人によれば「学位記はあった」らしいので、きっと大丈夫でしょう。(写真はカリフォルニア州マウンテンビューにて)


さて、せっかく時間を割いて書いたので、修士論文を公開することにしました。
分散システムのためのメッセージ表現手法に関する研究と題して、バイナリ形式のシリアライズ形式である MessagePack について述べています。特にこの文章では、MessagePack の型変換モデルについて詳しく述べています。実は MessagePack は、空間効率を高めたフォーマットだけでなく、各言語の型システムを相互に変換する機構をその設計思想に含んでいるのですが、文章にしたのはこの修士論文が初めてかもしれません。

目次

第1章 はじめに ... 1

第2章 関連研究 ... 3
 2.1 XDR
 2.2 SunRPC
 2.3 JSON
 2.4 Thrift
 2.5 ProtocolBuffers
 2.6 Avro
 2.7 JavaRMI
 2.8 CORBA
 2.9 既存のメッセージ交換手法の課題

第3章 MessagePack のモデルと設計 ... 8
 3.1 メッセージ交換手法の課題
 3.2 MessagePackの型変換モデル
 3.3 型システムの設計
 3.4 表現形式の設計
   3.4.1 型情報の格納
   3.4.2 データサイズの削減

第4章 プログラミング言語バインディング ... 13
 4.1 動的型付けオブジェクトAPI
 4.2 型変換テンプレート
   4.2.1 型変換テンプレートの拡張
   4.2.2 実装の難易度と実装の段階的な拡張

第5章 MessagePack の実装 ... 19
 5.1 実装上の課題
   5.1.1 ストリームの取り扱い
   5.1.2 コピーの削減
   5.1.3 メモリ確保の最適化
   5.1.4 リフレクションの削減
 5.2 Ruby実装の最適化
   5.2.1 ストリームデシリアライザ
   5.2.2 コピーの削減
 5.3 Java実装の最適化
   5.3.1 ストリームデシリアライザ
   5.3.2 コピーの削減
   5.3.3 直接型変換によるメモリ確保の最適化
   5.3.4 動的コード生成によるリフレクションの削減
 5.4 C,C++実装の最適化
   5.4.1 メモリゾーンによるメモリ確保の最適化

第6章 評価 ... 28
 6.1 機能評価
   6.1.1 異種の言語をまたいだメッセージの交換
   6.1.2 移植性
   6.1.3 動的型付けオブジェクトAPI
   6.1.4 型変換テンプレート
 6.2 性能評価
   6.2.1 C,C++実装の性能評価
      メモリゾーンの効果
   6.2.2 Ruby実装の性能評価
   6.2.3 Java実装の性能評価
 6.3 アプリケーションの開発
   6.3.1 kumofs
   6.3.2 LS4
   6.3.3 Fluentd

第7章 おわりに ... 37

付録 MessagePack の表現形式 ... 42
 A.1 Nil
 A.2 Boolean
 A.3 Integer
   A.3.1 PositiveFixnum
   A.3.2 NegativeFixnum
   A.3.3 uint8、uint16、uint32、uint64
   A.3.4 int8、int16、int32、int64
 A.4 Float
   A.4.1 float
   A.4.2 double
 A.5 Raw
   A.5.1 FixRaw
   A.5.2 raw16、raw32
 A.6 Array
   A.6.1 FixArray
   A.6.2 array16、array32
 A.7 Map
   A.7.1 FixMap
   A.7.2 map16、map32


分散システムのためのメッセージ表現手法に関する研究 [PDF]