冬休みなので変なものを作った

前々からあったら便利かなぁと思っていたものを作りました。

github.com

Scubaというものです。 FirebaseとNuxt.jsでさっと作りました。 Webサービスですが、グループウェア的な位置づけです。

f:id:anoChick:20190103035409p:plain

↑がWebhook編集画面です。

Webhookを作成すると、cloudfunctionsのURLが発行されます。 そのURLのリクエストに対応する処理を、ブラウザ上でいじれるというわけです。

主な用途

Slackのコマンドやボット作成

Slash CommandsやEventSubscriptions等、イベント発生時に特定のURLを叩くような仕組みで有効です。 Slackの場合だと、そのURLを使用するために、リクエストに含まれるチャレンジ文字列をレスポンスに含める挙動にする必要があります。 デプロイする必要がないので、こういった一時的にほしい実装とかを手軽に入れられて良いです。

res.send(req.body.challenge);

とするだけで検証を通す事ができて楽です。

Webhookを使ったサービス間連携の中間に入れる

サービスで提供されているWebhook連携をそのまま使うだけじゃ満足できない場合って有ると思います。 「○○の場合だけ通知したい」とか「文章フォーマットをカスタマイズしたい」とか。 そういうときに、Scuba Webhook でリクエストを受け、フィルタリング・整形をして、他サービスのWebhookURLを叩く。 のように、Webhook連携をちょっとカスタマイズ刷ることができます。

Form

Scubaには、Webhookとは別にFormという機能をつけました。 これは、平たく言うと「WebAPIをフォームとして提供する仕組み」です。

f:id:anoChick:20190103042435p:plain こんな感じで、アクセストークン・チャンネル名・メッセージを入力して送信すれば、指定チャンネルにメッセージを投稿できるようになります。

こういったフォームを、プログラムを書くことなく作る事ができます。

f:id:anoChick:20190103042614p:plain

「変数」がフォームで指定できる値のことで、この変数が、URL・パラメータに展開されて、リクエストを飛ばします。

以上です

どちらもかなり実験的なものなので、とっても謎な感じになりました。 次はもう少し人に理解してもらえるものを作ろうと思いました。