Masteries

技術的なことや仕事に関することを書いていきます.

Primusを公開しました

この記事は, 「Gaiax Advent Calendar 2016」の24日目の記事です. ...24日だぞ☆

本当は, 先日ちょうど退職エントリを書いたことですし, 「Gaiaxで学んだこと」みたいな感動超大作でも綴ろうかと思ったんですが, 終わりが見えない感じになっていたので, とりあえずPrimusを公開した件について書こうと思います.

github.com

なおPrimusについては, 先日開催された「エンジニア交流会〜マル秘?!こだわりの社内ツール大公開!~」でも紹介させて頂きました.

Primusについて

Primusが生まれた経緯などについては, 以前Fukuoka.pmでお話した「僕たちはどうしてもLINEのBotをローカルで開発したかったんだ」のスライドをご覧頂くと良いと思います:

要するに, LINE Messaging APIを利用したWebサービス開発をしている際, LINEのサーバから飛んでくるWebhookをローカルのマシンで受けて, いい感じにローカルの開発環境で開発したい! という要望を叶える為に開発したツールです.

LINE Messaging API専用ではない汎用的なツールに仕上げていますので, 例えばMackerelやFacebookのWebhookを受けたりすることもできます.

PrimusのGo言語化

Primusの初期バージョンは, とりあえずさっくりと試すため, PerlとNode.jsで実装していましたが, もっとお手軽に導入して使いたい! という声に答えるべく, 今回公開するにあたってGo言語で実装しなおしています.

ちょっと苦労したのはSocket.io周りで, ServerとClientの連携にあたって, 当初はWebSocket用のライブラリで愚直に実装していたのですが, Socket.ioにおける「ルーム」の概念を導入するのが非常に面倒で, 最終的にGo言語で実装されたSocket.ioライブラリを利用することにしました.

なお, Go言語で実装されたSocket.ioライブラリについては, いくつか公開されていますが, Primusではgithub.com/graarh/golang-socketioを利用しています.

まとめ

PrimusをGo言語化した上で公開しました. 初期バージョンのPerl+Node.jsよりは導入しやすくなったと思いますが, ドキュメントが全然整備できていないので, 次はそこですね...

割と, 「Webhookを受けたい」という場面は多いとおもっていて, 似たようなSaaSもあるそうですが, とはいえそういった時にPrimusは有用なツールの1つになると思うので, 引き続きメンテナンスを続けていきたいと思っています.