2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Workato:「気象庁防災情報XMLフォーマット」を利用した防災情報の活用を、現在のWorkatoで再実装してみた

Last updated at Posted at 2024-05-29

はじめに

4年前に、当社のBlogで以下の記事を書いていました。

上記レシピはステップ(タスク)が多く、かつスケジュールをトリガーに走るため、チェックだけでもタスクを消費する欠点がありました。

Workatoも4年前に比べてだいぶ機能改良が進んでおり、現在ではよりシンプルな実装が可能になっています。そこで、今回は現在のWorkatoで改めてレシピを再実装してみました。

レシピ

image.png

コネクション

HTTPコネクタとWorkbot for Slackの2つのコネクションを予め用意(設定)しておきます。

HTTPコネクタは、認証無し、かつBaseURLを指定しない、汎用的なコネクションを用意します。

image.png

Workbot for Slackコネクタのコネクションは、お使いのSlackワークスペースで利用可能な状態で用意しておきます。

トリガー

HTTPコネクタをトリガーとします。
(アクションは「New event via polling」のみ選択可能)

image.png

image.png

Connectionは、先に準備したものを指定します。

image.png

設定は以下を参考に進めます。

image.png

Trigger poll intercal

5 minutes を選択

Event name

任意の名称を入力

URL

気象庁防災情報XMLフォーマット形式電文の公開(PULL型) で公開されている『地震火山』の「高頻度フィード」(https://www.data.jma.go.jp/developer/xml/feed/eqvol.xml) を指定します。

Request headers

application/xml を入力

Response content type

Parse response as XML を選択

Response body example

上記高頻度フィードのXMLを貼付する

Array path

feed entryを選択

ID column

id を選択

Trigger condition

以上を設定後、Set trigger condition を有効化し、次の通り設定します。

image.png

Trigger data

Step1の Title をセット

image.png

Condition

equals を選択

Value

震源・震度に関する情報 と入力

アクション

Step2

HTTPコネクタを選択します。
(アクションは「Send request」のみ選択可能)

image.png

image.png

Connectionは、先に準備したものを指定します。

設定は以下を参考に進めます。(以下に記載のない項目はデフォルトのままとします)

image.png

image.png

Requuest name

任意の名称を入力

Request

Method

GET を選択

Request URL

Step1の ID をセット

image.png

Response

Response content type

XML を選択

Encoding

UTF-8 を選択

Response schema

以下のxmlをもとにスキーマを生成する
(「詳細」をクリックすると展開されます)

<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://xml.kishou.go.jp/jmaxml1/" xmlns:jmx="http://xml.kishou.go.jp/jmaxml1/">
<Control>
<Title>震源・震度に関する情報</Title>
<DateTime>2024-05-29T09:15:39Z</DateTime>
<Status>通常</Status>
<EditorialOffice>気象庁本庁</EditorialOffice>
<PublishingOffice>気象庁</PublishingOffice>
</Control>
<Head xmlns="http://xml.kishou.go.jp/jmaxml1/informationBasis1/">
<Title>震源・震度情報</Title>
<ReportDateTime>2024-05-29T18:15:00+09:00</ReportDateTime>
<TargetDateTime>2024-05-29T18:15:00+09:00</TargetDateTime>
<EventID>20240529181237</EventID>
<InfoType>発表</InfoType>
<Serial>1</Serial>
<InfoKind>地震情報</InfoKind>
<InfoKindVersion>1.0_1</InfoKindVersion>
<Headline>
<Text>29日18時12分ころ、地震がありました。</Text>
</Headline>
</Head>
<Body xmlns="http://xml.kishou.go.jp/jmaxml1/body/seismology1/" xmlns:jmx_eb="http://xml.kishou.go.jp/jmaxml1/elementBasis1/">
<Earthquake>
<OriginTime>2024-05-29T18:12:00+09:00</OriginTime>
<ArrivalTime>2024-05-29T18:12:00+09:00</ArrivalTime>
<Hypocenter>
<Area>
<Name>茨城県南部</Name>
<Code type="震央地名">301</Code>
<jmx_eb:Coordinate description="北緯35.9度 東経140.3度 深さ 40km" datum="日本測地系">+35.9+140.3-40000/</jmx_eb:Coordinate>
</Area>
</Hypocenter>
<jmx_eb:Magnitude type="Mj" description="M3.1">3.1</jmx_eb:Magnitude>
</Earthquake>
<Intensity>
<Observation>
<CodeDefine>
<Type xpath="Pref/Code">地震情報/都道府県等</Type>
<Type xpath="Pref/Area/Code">地震情報/細分区域</Type>
<Type xpath="Pref/Area/City/Code">気象・地震・火山情報/市町村等</Type>
<Type xpath="Pref/Area/City/IntensityStation/Code">震度観測点</Type>
</CodeDefine>
<MaxInt>1</MaxInt>
<Pref><Name>茨城県</Name><Code>08</Code><MaxInt>1</MaxInt>
<Area><Name>茨城県南部</Name><Code>301</Code><MaxInt>1</MaxInt>
<City><Name>茨城鹿嶋市</Name><Code>0822200</Code><MaxInt>1</MaxInt>
<IntensityStation><Name>茨城鹿嶋市鉢形</Name><Code>0822201</Code><Int>1</Int></IntensityStation>
</City>
<City><Name>稲敷市</Name><Code>0822900</Code><MaxInt>1</MaxInt>
<IntensityStation><Name>稲敷市江戸崎甲*</Name><Code>0822920</Code><Int>1</Int></IntensityStation>
</City>
<City><Name>かすみがうら市</Name><Code>0823000</Code><MaxInt>1</MaxInt>
<IntensityStation><Name>かすみがうら市大和田*</Name><Code>0823032</Code><Int>1</Int></IntensityStation>
</City>
<City><Name>鉾田市</Name><Code>0823400</Code><MaxInt>1</MaxInt>
<IntensityStation><Name>鉾田市汲上*</Name><Code>0823432</Code><Int>1</Int></IntensityStation>
</City>
</Area>
</Pref>
<Pref><Name>千葉県</Name><Code>12</Code><MaxInt>1</MaxInt>
<Area><Name>千葉県北東部</Name><Code>340</Code><MaxInt>1</MaxInt>
<City><Name>香取市</Name><Code>1223600</Code><MaxInt>1</MaxInt>
<IntensityStation><Name>香取市役所*</Name><Code>1223630</Code><Int>1</Int></IntensityStation>
<IntensityStation><Name>香取市仁良*</Name><Code>1223632</Code><Int>1</Int></IntensityStation>
</City>
</Area>
<Area><Name>千葉県北西部</Name><Code>341</Code><MaxInt>1</MaxInt>
<City><Name>成田市</Name><Code>1221100</Code><MaxInt>1</MaxInt>
<IntensityStation><Name>成田市名古屋</Name><Code>1221102</Code><Int>1</Int></IntensityStation>
</City>
</Area>
</Pref>
</Observation>
</Intensity>
<Comments>
<ForecastComment codeType="固定付加文">
<Text>この地震による津波の心配はありません。</Text>
<Code>0215</Code>
</ForecastComment>
<VarComment codeType="固定付加文">
<Text>*印は気象庁以外の震度観測点についての情報です。</Text>
<Code>0262</Code>
</VarComment>
</Comments>
</Body>
</Report>

Step 3

Variables by Workatoコネクタを選択し、「Create variable」アクションを選択します。

image.png

image.png

次に、date, max_sindo, hypocenter_area, mj, forecast_comment という変数(variable)を追加し、それぞれ値をセットします。

image.png

date

Response/Report/Body/Earthquake/Arrival time/Content のデータピルをセットしたうえで、次のformulaを入力する ( <Content>は、セットされたデータピルを示しています)

<Content>.in_time_zone("Asia/Tokyo").strftime("%Y年%m月%d日 %H時%M分")

max_sindo

Response/Report/Body/Intensity/Max int/Content をセット

hypocenter_area

Response/Report/Body/Earthquake/Hypocenter/Area/Name/Content をセット

mj

Response/Report/Body/Earthquake/Jmx eb: magnitude をセット

forecast_comment

Response/Report/Body/Comment/Forecast comment/Text/Content をセット

Step 4

Workbot for Slackコネクタを選択し、「Post message」アクションを選択します。

image.png

image.png

Connectionは、先に準備したものを指定します。

設定は以下を参考に進めます。

image.png

Reply channel

メッセージ送信先のチャンネルあるいはDMを指定

Message attachments

以下を参考に進めます。

image.png

Title

「最大震度 <max_sindo> の地震が発生」と入力します。
<max_sindo>は、Step 3の max_sindoを指定します。

Attachment text

次の通り入力します。

<date>頃、<hypocenter_area>で最大震度<max_sindo>(M<mj>)の地震が発生しました。
<forecast_comment>

<date> <hypocenter_area> <max_sindo> <mj> <forecast_comment> は、Step 3の 対応するVariableを指定します。

Attachment color

Danger を選択

実行結果

このレシピを実行すると、「震源・震度に関する情報」が新たに発表された際に、次のようなメッセージがSlackに投稿されます。

image.png

まとめ

今回は、現在のWorkatoの機能をもとに、過去に作成したレシピの改善を行ってみました。Workatoは新機能の追加だけでなく既存機能の改善も進められており、使い勝手やレシピの生産性が向上しています。

また、皆さんが過去に作成されたレシピも見直す(&新たなWorkatoの機能に置き換える、現在のWorkatoスキルに合わせて最適化する)ことで、冗長なレシピがシンプルになり見通しが良くなる、タスク数の削減に繋がるなど、色々と改善が進むこともあるかもしれませんので、機会がありましたらレシピを見直していただくことをお勧めいたします。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?