CTOになるまで続けるブログ

My daily personal tech notes

WebHook とは何か

WebHook の概要

WebHook は、あるイベントの発生をトリガーとして特定の API を呼んでもらうための仕組みで、例えば GitHub だと、イベントとしてリポジトリへの push や fork など(他にもたくさんある)が扱える。

ユーザ目線で見たときの勘所としては、スクリプトを仕込むわけでなく API の URL を仕込むところ。 なので、WebHook の使用は、どこかに API が立っている(なければ立てる)という前提を必要とすることになる。 一方、サービス提供者目線で言うと、任意のコードを自身のサーバ上で実行する必要がない。よって、セキュリティの危険を犯すことなく、任意の連携処理をユーザに提供することが出来る。

WebHook の歴史

WebHook の起源は、Glider Labs の設立者である Jeff Lindsay さんが、2006年8月にポストした ブログ記事に遡る。 この記事では、Tim OReilly さんが「Web 時代の(シェルの)パイプに当たるものはなんなのか」という発言に言及した上で、WebHook のアイデアを展開している。

WebHook の活用事例

GitHub を例にすると、master ブランチへの push があった時に、Jenkins のビルドを開始させることで、CI を回すことが出来る。 また、issue の作成やコメントがついた時に、チャットボットに報告させることで、ChatOps な環境を作れる。(※1)

ちなみに、WebHooks の使い所は SSKDs ではなく LSUDs な部分。 例えば、ビジネスロジック的な活用として、契約が入った時に自動でバッチを実行させるとかっていうのは、両方とも内部サービスなら単純にハードコードすればいいはずなので、あえて WebHook に乗っかる必要もない。

筆者の所感

API 同士をシェルのパイプのように連携させるというのは面白いアイデアだが、WebHook とシェルのパイプでは大きく使い勝手の点で違っている。 シェルのパイプはターミナルの上で | を書くだけで実現できるが、 一方 WebHook は、Web ブラウザを開き管理ページにアクセスしてポチポチするという手間が必要だ。 ただ、Web というのはそういうものだし、単純にイベントとユーザが定義した任意の処理を紐づけられるというのは、アプリケーションの可能性を広げる非常に有用な機能である。

あと、WebHook は基本的に LSUDs なサービスを念頭に置いたアイデアである。多くのエンジニアにとって、ユーザとしての利用はあっても、実装者としての利用はなさそう。

出典