Web hooks
このあいだ, ウェブアプリケーションの生態系に関するあるすごいことに僕は気がついた. それからというもの, 僕は頭の良い人とあうごとにその考えをぶつけてきた. ブログにも書こう書こうと思っていたけれど, あいにく僕はきちんとしたブロガーではなかった. とある事情があって, ようやくその話を書くことにした.
そのアイデアは, 僕がウェブフック(web hooks)と呼んでいるものだ. すごく簡単なサーバサイドの仕組みで, ウェブアプリケーションのユーザが自分のデータを自分の好きなようにできる. 開発者は, ユーザが様々なイベントに呼応する URL を指定できるようにする. アプリケーションはデータや通知をリアルタイムで URL に渡すんだ.
このアイデアのせいで共産主義者よわばりもされたけれど, これはかつてウェブを新しいレベルに引き上げるものかもしれない. API や RSS がそうしたように. 問題はそれを誰も実装していないことだけれど, これはおかしな話だ. REST より簡単に実装できるんだからね.
API 群によって, ウェブサービスは互いにやりとりができる... 自分が一方の API を実装しているか, 開発者が意識的に相手を使おうとした場合に限れば. API と RSS フィードによって, 入出力のある分散アプリケーションプラットホームとしてのウェブという アイデアが見え隠れしはじめた. そう, 僕達がしているのはその話だ. けれどぴったりその話, というわけじゃない.
二つのウェブサービスがデータを共有できたらすごいということがわかった. 僕がいつも使う例は Basecamp と Harvest だ. 僕達は Harvest を買って時間管理をしたいけれど, 一方で複数の重複するデータを扱わなければいけない. 今回だとプロジェクトが複数ある.
もし Basecamp がプロジェクト作成にフックを用意していたら, つまり僕たちが指定した URL にデータを送ってくれたら, 僕達は Harvest の API を使ってそのデータを投稿するスクリプトが書けるのに.
アイデアはサービス同士が直接コミュニケートする, ということじゃない. 実際サービス同士がデータを共有する必要は何もないんだ. ただユーザが自分のやりたいことが HTTP 経由でできるようにしてほしい, という話だ. ユーザが PHP のスクリプトをどこかで動かせるようになるのは別に大変じゃない. 自分でスクリプトを書きたくないと思っても, それにウェブフックを使うサービスが十分にあれば あるデータを別のデータに合わせこみサービス同士をつなぐサービスだって出てくるだろう.
ウェブフックは全ての人に意味のあるものではないけれど, ユーザのデータを永続化して操作するアプリケーションには意味がある. ウェブフックによってユーザは少ないコストでとても多くのことができるようになるだろう.
以上, 僕のアイデアを紹介した. この話はもっと色々書くかもしれない. それと自分が使いたいものウェブフックについて, それを実装すべき人々への説得もがんばると思う. DevjaVu? では Subversion のフックを公開している. コミット後(post-commit) フックなどだ.
この話に反響があって, ウェブフックのある世界が少しでも広がればいいなと思う.