MessagePack ハッカソン 第2回に参加してきた
お久しぶりです。
今日は MessagePack Project のさらなる発展のためのハッカソン(?)に参加してきました。
自分は、「PHPの拡張機能作る」のが目標でした。*1
いや、実は、MessagePackがリリースされた当初から言っていたのに、なんかグダグダしているうちに2つほどすでに実装があるという状況で、とはいえ、どちらにも今のところろ課題があるので、提案されてる実装から、より良いものを作る+peclでの公開を目指す、ってところが実際の目標ってところでしょうか。
とはいえ、拡張機能とか作ったことがないので、昨日からちょいちょい予習しつつ、今日、参加してきました。
で、まあ細かいことはともかく、PHPに関して言えば、
- 今headに入っているバージョン では、unpacker が Unbuffered しかない。(+グローバルにバッファをもつ)のが嫌だ
- 提案されているバージョンでは、実装が pack_templateやunpack_templateというMessagePack側から提供されているマクロを使わずに実装している
あたりの良いところをとって実装できないかなーと考えていました。
それと、オブジェクト(クラス)のpackに関しては、他の言語間との互換性やプロトコルに準拠する意味で、プロパティ名を持たない、ただの配列としてpackする方向で実装の変更を行うことにしました。unpack時に取り出される順番に応じてプロパティに詰め込むなど、運用でカバー。PHPだけでpack/unpackするだけなら、serializeと同じような挙動で良いんですけどね。
で、実装できたところは、
- オブジェクトのpackの実装変更
- その他pack実装のリファクタ
- unpackerのクラス設計
unpackerは実装は全然すすみませんでした。。うーん、まあ、予想通りかな。ただまあ、イメージは湧いたので、地道にがんばろう。
これからの予定など
- unpacker 全般
- MessagePackUnpacker の実装
- MessagePackIterator の実装
- テスト書く
最後に
会場をかしてくださった楽天のみなさま、古橋くん、お疲れ様でした。
楽しかったです!