ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。

はてなブログで自動的にPing送信する方法(Azure Logic Apps で RSS フィードをトリガーとして使用する)

f:id:masatsuna:20200413232307p:plain

せっかくブログをやっているので、にほんブログ村に登録してみました。 にほんブログ村は、様々なブログサイトのリンク集のようなサイトで、ブロガーたちは日々そのランキングを競っているのだとか。

にほんブログ村のようなサイトに、自分のブログが更新されたことを通知する方法として、ブログサービス側の Ping 自動送信機能を使う方法が一般的です。

blogmura-help.muragon.com

しかし、残念ながら当ブログのプロバイダーであるはてなブログには、この機能がありません。 ということで、せっかくなら自分で作ってみようかなーというのが本記事の趣旨となります。 実は検索すればいろいろとタダでやる方法は出てくるのですが、ここでは 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 フィードが更新されたときに起動するようトリガーを追加します。

f:id:masatsuna:20200413004936p:plain
RSS の新着項目をトリガーに設定

そしてそのトリガーに、読み込む RSS フィードを設定していきましょう。

f:id:masatsuna:20200413005040p:plain
読み込む RSS フィードを設定

これで 3 分間隔で RSS フィードに更新がないかをポーリングしてくれるようになります。

続いて Ping を飛ばしましょう。 Ping と言っていますが、正確に言えば単純な HTTP リクエストを送信するだけなので、以下のように HTTP リクエストを送信するためのアクションを追加します。

f:id:masatsuna:20200413005316p:plain
HTTP リクエスト送信のアクションを選択

そして先ほど取得しておいた Ping 送信先 URL に対して、 HTTP GET でリクエストを送信するように設定します。

f:id:masatsuna:20200413005510p:plain
HTTP リクエストの送信アクション

ここまで完成したら、保存しておきましょう。

動作確認

ではブログに新しい記事を投稿して、動作確認をしてみます。 ブログ投降後、しばらく待つと作成した Logic App が起動します。

f:id:masatsuna:20200413005828p:plain
Logic App の起動確認

3 分ごとに確認するよう設定していますが、なぜか 30 分ごとに起動しているようです。 またなぜか 1 回起動するたびに、同時に 2 回呼び出されている様子も見て取れます。 この Logic App は従量課金のプランでホスティングしています。 その影響を受けている可能性がありそうですね(詳細は調べていません)。

にほんブログ村の方にも正しく変更が反映されました。

f:id:masatsuna:20200413010543p:plain
記事が反映された

まとめ

今回は Azure Logic Apps のお勉強もかねて、こんなことができるよ、という話を書いてみました。 実はこのあと、以下のように Logic App を拡張しています。

f:id:masatsuna:20200413010938p:plain
最終的に作成したもの

にほんブログ村への Ping 送信と同時に、 SendGrid を使ってメール送信しています。 Azure Logic Apps には Twitter 用のコネクターとかもあるので、もっと面白いことができるかもしれませんね。