Masteries

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

Primus 機能追加のご紹介

この記事は, 「OSS紹介 Advent Calendar 2017」の9日目の記事です.

qiita.com

空いていたので, 「よし書くか!」と思って勢い良く登録したものの, 良いネタが思い浮かばなかったので, 今回は拙作OSSの機能追加情報を紹介をしたいと思います.

Primus

ちょうど1年くらい前, Primus*1というツールを公開しました.

papix.hatenablog.com

github.com

Primusは,

  • Primus Serverが受けたリクエストを...
  • WebSocketを通してPrimus Clientに送り...
  • Primsu Clientが, 開発者の手元で動くサービスへ同じリクエストを送る

...というツールです*2. Primusを使えば, 例えばLINEやSlackのBotを開発するとき, これらのサービスから送られてくるWebhookをPrimus Serverで受け, そこからPrimus Clientを経由して開発者の手元のマシンに転送することができます.

久々にコードを眺めていた所, Primus Clientがリクエストを送る先が決め打ちになっていて, 不便すぎるのでは? と思ったので, Primus Clientからリクエストを転送する先を設定ファイルで指定できるようにしました. ついでにREADME.mdも整備したり(id:ichigotake さんありがとうございます).

[server]
host = "localhost"
port = 14300
ssl = false

[[Route]]
channel = "sample1"

host = "localhost"
port = 8080
path = "/sample/endpoint"

こういう感じに書くと, Primus Serverの http://localhost:14300/receive/sample1 にリクエストを送った時, そのリクエストと同じリクエストが, http://localhost:8080/sample/endpointに送られます. 便利ですね.

今後の展望

  • 今は, 「Webhookを受け取って転送する」ことしか出来なくて, 「Webhookを受け取って転送し, その結果であるレスポンスを返す」ことができないので, 出来るようにしたい
  • Goの勉強をしながら, まずは動かそうという気持ちで書いているのでGoの流儀に則った良いコードにしていきたい
    • 以前, id:codehex さんに手直ししてもらったけれど, 今回の機能追加でいろいろガッとやってしまっている...

といった展望があります. 現状, 「ぜんぜんわからない, 俺は雰囲気でGolangをやっている」という感じなので, ちょっとGoを勉強して慣れてきたという方は実践がてら遠慮なくPull Requestを送りつけて頂けると, 完全に他力本願で申し訳ないのですが, 喜びます(自分もGoの理解深めるところ頑張っていきます...).

感想

機能追加というか, 雑に作りすぎた部分をようやく真っ当にしただけという気もする...?

*1:名前は言うまでもなく, Triad Primusから取っています. Primus Serverのデフォルトのポート14300も, Trancing PulseのBPM(143)から取ったのでした...

*2:同じことが出来るSaaSが存在すると昔教えていただいたのですが, 名前を忘れてしまった...