1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Logic Apps]Azureで遊んでみる ~ 自作RSSリーダー

Last updated at Posted at 2018-12-12

やってみること

  • AzureでLogicAppsの構築。
  • RSSでニュースデータを集める。
  • データベースにフィード情報を登録。

まえがき

とりあえずAzureでなんかやってみたい。
ニュースのテキスト処理とかできたらいいな。

  • 前提条件
    • AzureにSQL Databaseを構築済み(前回記事を参考)
  • 実行環境
    • Windows10
    • Microsoft Edge 17
    • SSMS v17.3

DBオブジェクトの作成

Logic AppsのRSSフィード項目を参考に作成しました。
ちなみに2018年時点でLogic AppsはAtom形式のフィードには対応していないようです。

CREATE TABLE [dbo].[T_JP_RSS_FEEDITEM](
	[id] [bigint] IDENTITY(1,1) NOT NULL,
	[feed_id] [nvarchar](64) NULL,
	[feed_categories] [nvarchar](512) NULL,
	[feed_copyright_information] [nvarchar](128) NULL,
	[feed_links] [nvarchar](256) NULL,
	[feed_published_on] [nvarchar](128) NULL,
	[feed_summary] [nvarchar](1024) NULL,
	[feed_title] [nvarchar](256) NULL,
	[feed_updated_on] [nvarchar](64) NULL,
	[primary_feed_link] [nvarchar](256) NULL
) ON [PRIMARY]
GO

Logic Apps のフロー作成

image.png
設定が終わるとRSSとSQLの接続オブジェクトがAzure上に自動で追加されます。

実行確認

select top 20
 feed_title
,feed_summary
,feed_published_on
,feed_links
from [T_JP_RSS_FEEDITEM]
order by feed_published_on desc

image.png

おまけ:RSSのマルチトリガー

Logic Appsのトリガーはデザイナービューですと1つしか指定できませんが、コードビューであれば複数指定(マルチトリガー)することができます。
なお、コードビューでマルチトリガーにした場合、デザイナービューでは編集できません。

編集前 : コードビューはjson形式です。triggersの箇所をコピペして増やします。
"triggers": {
    "When_a_feed_item_is_published": {
        "inputs": {
            "host": {
                "connection": {
                    "name": "@parameters('$connections')['rss']['connectionId']"
                }
            },
            "method": "get",
            "path": "/OnNewFeed",
            "queries": {
                "feedUrl": "https://rss.itmedia.co.jp/rss/2.0/itmedia_all.xml"
            }
        },
        "recurrence": {
            "frequency": "Minute",
            "interval": 3
        },
        "splitOn": "@triggerBody()?['value']",
        "type": "ApiConnection"
    }
}
編集後
"triggers": {
        "RSS_Feed_CNETjapan": {
            "inputs": {
                "host": {
                    "connection": {
                        "name": "@parameters('$connections')['rss']['connectionId']"
                    }
                },
                "method": "get",
                "path": "/OnNewFeed",
                "queries": {
                    "feedUrl": "http://feed.japan.cnet.com/rss/index.rdf"
                }
            },
            "recurrence": {
                "frequency": "Minute",
                "interval": 5
            },
            "splitOn": "@triggerBody()?['value']",
            "type": "ApiConnection"
        },
        "RSS_Feed_ITmedia": {
            "inputs": {
                "host": {
                    "connection": {
                        "name": "@parameters('$connections')['rss']['connectionId']"
                    }
                },
                "method": "get",
                "path": "/OnNewFeed",
                "queries": {
                    "feedUrl": "https://rss.itmedia.co.jp/rss/2.0/itmedia_all.xml"
                }
            },
            "recurrence": {
                "frequency": "Minute",
                "interval": 6
            },
            "splitOn": "@triggerBody()?['value']",
            "type": "ApiConnection"
        },
        "RSS_Feed_LifeHacker": {
            "inputs": {
                "host": {
                    "connection": {
                        "name": "@parameters('$connections')['rss']['connectionId']"
                    }
                },
                "method": "get",
                "path": "/OnNewFeed",
                "queries": {
                    "feedUrl": "http://feeds.lifehacker.jp/rss/lifehacker/index.xml"
                }
            },
            "recurrence": {
                "frequency": "Minute",
                "interval": 7
            },
            "splitOn": "@triggerBody()?['value']",
            "type": "ApiConnection"
        }
}

どうやら上限は10個までらしい。

参考

Azure Logic Apps ドキュメント
RSS 2.0 Specification 日本語訳

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?