Webmention (和訳)への理解を深めるために、 Webmention を受信するサーバを実装してみた。
具体的な実装コードは server.rb を参照。
実装した部分
-
3.2 Receiving Webmentions (和訳)内の
MUST
と明記されている仕様- 3.2.1 Request Verification
- 3.2.2 Webmention Verification
- 3.2.3 Error Responses
- 受信した Webmention データのメモリ内への保存
- メモリ内に保存した Webmention データを JSON 形式で返却する API
実装していない部分
-
SHOULD
,MAY
と明記されている仕様- 非同期処理による Webmention の検証
- 受信した Webmention データの永続的ストレージへの保存
テスト方法
-
webmention-testpinger
- 全ての Webmention ping を正常に処理した
-
Webmention Rocks! の Receiver Test #1, Receiver Test #2
- いずれもパスした
感想・考察
-
MUST
と明記されている仕様だけであれば、実装は難しくない - 非同期処理による Webmention の検証を行うのも、 Sidekiq や Amazon SQS を使えばさほど難しくなさそう
- 送信者が Webmention リクエストのステータスを確認するページを用意するのは手間がかかりそう
- 非同期処理の進行状況をモニタリングするダッシュボードのような機能を作ることになるので
- 実用的なものにするためには、相応のボリュームの実装が必要そう
- 非同期処理のほかにもセキュリティ対策など
- すでにプロダクション用途のサービスが存在するので、一般ユーザーの立場ではそれらを利用するのが現実的
- 以下の二つは OSS なので実装も参照できる