こんにちは。SCSKのひるたんぬです。
2月も中頃となり、段々と過ごしやすい気候になってきましたね。ここ数日は気温差がすごく、服装に悩みます。
と同時に始まるのが花粉シーズン…日本気象協会の発表によると、今年の花粉飛散量は「例年並みか例年よりやや多い」そうです。
目鼻が悲惨なことにならないよう今から対策をしていきたいと思います。
話がそれますが、この文章を書きながら、ふと「花粉飛散量ってどうやって予測しているんだろう?」と思ったので調べました。
日本気象協会の花粉飛散予測は前シーズンの花粉飛散結果や今後の気温予測などの気象データをもとに、全国各地の花粉研究会や協力機関からの情報、花芽の現地調査の結果などをふまえて予測しています。(詳しい計算方法などは企業秘密です…すみません!)
引用元:日本気象協会 JWAニュース「日本気象協会 2024年 春の花粉飛散予測(第3報)~まもなくスギ花粉シーズンスタート ピークは2月下旬から~」
…肝心なところはやはり秘密なのですね。一方気象庁では、
(前略)花粉の飛散に影響を与える気温や風、降水等の予測データを提供しており、今後、スーパーコンピュータやAIを活用し飛散予測を行う際の基礎情報となる詳細な三次元の気象情報も提供して、民間事業者が実施する花粉の飛散予測をさらに支援していく計画です。
引用元:気象庁 知識・解説「花粉飛散予測について」
と記載があるので、これからはこのような分野にもAIが活用¹ されるのかもしれませんね!
¹ 一部事例もありましたが、現在はサービスの提供を行っていないようです。
話を戻します。今回は、私が配属され引き継いだ課内業務の中で、自動化できたら嬉しいなぁ…というものを、PowerAutomateの無料枠を駆使して実装したので、その工夫点についてご紹介いたします。
やりたいこと
今回は、
- SharePoint(Microsoft Lists)に登録されたセキュリティパッチ適用に関する発信文書をトリガーに、セキュリティパッチ適用の依頼メールを送付する
- 期限日が近づいたら、社内システムからパッチ未適用者を抽出し、リマインドメールを送付する
という2つの機能を構築しました。全体的な処理の流れを下図に示します。
今回はPower Automateのクラウドフロー(上図左・青)に加え、社内システムを利用する必要があったため、社内ネットワーク内のPCで動作するデスクトップフロー(同右・緑)を組み合わせております。
目的
現状の業務フローでは、
これにより、フローに人間が関与することがなくなるので、
処理の流れ
ここでは実装した処理につきまして、処理の流れに沿って概要を説明します。太字は、無料版で利用するために工夫した点なので、次の章にて詳しく説明いたします。
【クラウド】発信文書の登録 ▶ メール通知・カレンダー登録
このフローは、SharePointに発信文書が登録されたことにより起動します。発信文書にはセキュリティパッチの適用依頼の他にも日々多くの文書が登録されます。そのため、発信文書のタイトルにより絞り込みを行い、セキュリティパッチの適用依頼に関する発信文書のときにのみ処理を行うように設定します。下図にこのフローの大まかな流れを示します。
メールによる通知を行う前に、自分自身への事前確認を挿入しています。これにより、フローが発信文書を誤検知し誤ったメールを送付することを防ぎます。
【クラウド】カレンダーからリマインド日を検知
このフローは、毎日決まった時間に起動します。起動したらまず、その日のカレンダーを参照し、セキュリティパッチのリマインド日であるかを確認します。リマインド日であった場合は、次のデスクトップフローを実行するために自分宛てにメールを送信します。
【デスクトップ】社内システムからパッチ未適用者を抽出
このフローは、タスクスケジューラを用いて毎日決まった時間に起動します。起動したら、自身のメールフォルダを確認し、リマインド日に関するメールを確認します。メールがあった場合は、社内システムにアクセスし、セキュリティパッチを適用していない方のメールアドレスを抽出します。そして、そのアドレスを自分宛てに、特定の件名をつけた上で送信します。
【クラウド】未適用者へリマインドメールを送付
このフローは、デスクトップフローで送信されたメールをトリガーとして起動します。デスクトップフローで送信されたメールかは、件名を用いて判別します。メールが存在した場合は、そのメールからメールアドレスを抽出し、各自にリマインドメールを送信します。
Power Automate 無料版の制約
今回の機能実装において無料版が原因で直面した主な制約は次の3点です。
「クラウドフロー」と「デスクトップフロー」間の連携は有料版のみ
無料版では、クラウドフローから他のフローの呼び出しができません。そのため、クラウドフローでカレンダーでリマインド日を検知した場合、それをデスクトップフローに通知する仕組みを一から構築する必要があります。
今回はこの仕組みをメールのやり取りによって実現しました。メールを利用したやり取りの流れを下図に示します。
これにより、デスクトップフローはクラウドフローから送信されたメール[TRIGGER]を確認することで、フローを実行するべきか判断をすることができます。また、デスクトップフローでの実行結果(抽出結果)をメール[RESPONSE]で送信することで、クラウドフローがそのメールをトリガーとして後段の処理を実行することを可能にしています。
【デスクトップ版】 トリガーも有料版のみの機能
先ほどの対処法により、クラウドフローとデスクトップフロー間での連携をすることが可能になりました。
しかし、無料版のPower Automate Desktopでは通常、フローは画面上の再生ボタン ▷(下図)をクリックし手動で実行する必要があります。
この状態ですと、先程ご紹介したクラウドフローからのメールが送られてきたとしても、手動でデスクトップフローを開始させなければなりません。これでは自動化できたとは言え無いですね…
そこで、これに対処するために、Windowsに標準で搭載されているタスクスケジューラーを活用して一日一回、フローを自動実行するような処理を追加しました。
こちらにつきましては、以下の2つのサイトが非常に参考になりました。
これを参考にすることで、「デスクトップフローを毎日実行し、[TRIGGER]メールが来ていたら処理を実行する」というフローを作成することができました。
便利なアクションの多くは有料版でのみ提供
Power Automateの有料版では提供されている多くの機能、特に外部サービスとの連携について、無料版では多くが制限されています。その一例を以下に示します。
- デスクトップ版…
Teams・Outlookカレンダー・SharePoint など
→ フローをデスクトップ版に集約することができない
→ クラウドフロー・デスクトップフローを分けて実装 - クラウド版…
AWSサービス・Azure・その他外部サービス など
→ 今回のサービス構築には影響小
一方で、パッチ未適用者へのメール送付につきましてはデスクトップフローで行うことも可能ですが、今回はあえてメール送付のフローをクラウドフローにて実行しています。これは、無料版のクラウドフローでは、メール送付の他にもTeamsのチャットへの投稿にも対応しており、連絡方法が変更になった際にも柔軟に対応できるためです。
まとめ
今回はMicrosoftが提供するPower Automateを用いて、定型業務の自動化に取り組みました。普段はAWSに触れていますが、今回の取組を通して目的や用途に応じてサービスを使い分けることの大切さを実感しました。特定のサービスではなく、幅広いサービスを活用できるようになりたいですね!
私の環境でもPower Automateの有料版が利用可能になる日が来ることを願って、この記事を締めくくりたいと思います。
最後までご覧いただき、ありがとうございました!