せっかくブログをやっているので、にほんブログ村に登録してみました。 にほんブログ村は、様々なブログサイトのリンク集のようなサイトで、ブロガーたちは日々そのランキングを競っているのだとか。
にほんブログ村のようなサイトに、自分のブログが更新されたことを通知する方法として、ブログサービス側の Ping 自動送信機能を使う方法が一般的です。
しかし、残念ながら当ブログのプロバイダーであるはてなブログには、この機能がありません。 ということで、せっかくなら自分で作ってみようかなーというのが本記事の趣旨となります。 実は検索すればいろいろとタダでやる方法は出てくるのですが、ここでは Azure を活用してやってみようかと思います。
Ping 送信機能って何よ?
自分の管理しているブログが更新されたよ、という通知を HTTP リクエストでにほんブログ村に通知することを言います。 何の記事が更新されたかはにほんブログ村側で解析してくれるので、送信する側からは、各自に割り当てられた URL に対して HTTP リクエストを送るだけでよいようです。
何を使うか
今回やりたいことは、はてなブログ側の更新をトリガーにして、にほんブログ村に用意されている URL を叩ければよいわけです。 はてなブログの更新を検知するためには、 RSS フィードを購読すれば簡単にできそうです。 定期的に RSS フィードを巡回して、更新されていれば Ping の HTTP リクエストを送る、ということなので、 Azure Logic Apps を使ってこれを実現してみることにしました。
RSS フィードを取得する
はてなブログの RSS フィードは、ブログの URL に 「/rss」をつけることで取得できます。 当サイトならこんな感じです。
https://tsuna-can.hateblo.jp/rss
Ping 送信先の URL を取得する
にほんブログ村の Ping 先 URL はマイページから取得できます。 マイページのトップから [記事管理] → [記事反映/Ping送信] のメニューを選択します。
または、以下の URL にログインしてアクセスしてみてください。
https://mypage.blogmura.com/ping
そうすると、 [あなた専用のPing送信先URL] というところに送信先の URL が表示されているはずです。
Logic App を作る
続いてこれらをつなげるために、 Logic App を作っていきます。 Azure Portal で Logic App を作成し、RSS フィードが更新されたときに起動するようトリガーを追加します。
そしてそのトリガーに、読み込む RSS フィードを設定していきましょう。
これで 3 分間隔で RSS フィードに更新がないかをポーリングしてくれるようになります。
続いて Ping を飛ばしましょう。 Ping と言っていますが、正確に言えば単純な HTTP リクエストを送信するだけなので、以下のように HTTP リクエストを送信するためのアクションを追加します。
そして先ほど取得しておいた Ping 送信先 URL に対して、 HTTP GET でリクエストを送信するように設定します。
ここまで完成したら、保存しておきましょう。
動作確認
ではブログに新しい記事を投稿して、動作確認をしてみます。 ブログ投降後、しばらく待つと作成した Logic App が起動します。
3 分ごとに確認するよう設定していますが、なぜか 30 分ごとに起動しているようです。 またなぜか 1 回起動するたびに、同時に 2 回呼び出されている様子も見て取れます。 この Logic App は従量課金のプランでホスティングしています。 その影響を受けている可能性がありそうですね(詳細は調べていません)。
にほんブログ村の方にも正しく変更が反映されました。
まとめ
今回は Azure Logic Apps のお勉強もかねて、こんなことができるよ、という話を書いてみました。 実はこのあと、以下のように Logic App を拡張しています。
にほんブログ村への Ping 送信と同時に、 SendGrid を使ってメール送信しています。 Azure Logic Apps には Twitter 用のコネクターとかもあるので、もっと面白いことができるかもしれませんね。