🖊️

【Power Automate】AWS知識を毎日チャットで学習!問題自動投稿ボットを作ってみた

2024/09/08に公開

はじめに

近年、ガバメントクラウド市場において AWS(Amazon Web Services) が圧倒的なシェアを誇っています。特に公共分野の案件では、AWS の利用がますます増加しており、関連スキルを持つ人材への需要は高まる一方です。

このような状況の中、自身のスキルアップは喫緊の課題と言えるでしょう。そこで今回は、日々の学習を支援するツールとして、Power Automate を活用した AWS 問題自動投稿ボットを作成してみました。このボットは、毎日 Teams のチャネルにランダムに AWS 問題を投稿し、一定時間後に回答も自動で投稿してくれる優れものです。


Power Automate とは?

Power Automate は、Microsoft が提供するクラウド型の自動化サービスです。様々なアプリケーションやサービスを連携させ、定型的な業務を自動化することができます。コーディング不要で直感的な操作が可能なので、手軽に自動化フローを作成できます。


ボット作成の流れ

1. Excel ファイルの準備

  • 問題、選択肢、回答、解説をまとめた Excel ファイル を作成します。(今回は「AWSCP練習問題.xlsx」を使用)
  • このファイルを SharePoint のドキュメントライブラリにアップロードします。

このような形のファイルを作成

※テーブル形式で保存することを忘れないこと

2. Power Automate フローの作成

  1. Power Automate で新しいフローを作成し、トリガーとして「繰り返し」を選択し、毎日決まった時刻に実行されるよう設定します。
  2. Excel Online (Business)」コネクタの「List rows present in a table」アクションを追加し、SharePoint 上の Excel ファイルから問題と回答のデータを取得します。
  3. Initialize variable」アクションで乱数を生成し、取得した行数の中からランダムな行番号を選択します。
  4. さらに「Initialize variable」アクションを追加し、選択した行の問題と選択肢を整形します。
  5. Teams」コネクタの「Post a message (V3)」アクションを使用し、整形した問題を Teams の指定したチャネルに投稿します。
  6. Delay」アクションで 3 分間処理を待機します。
  7. 再び「Teams」コネクタの「Post a message (V3)」アクションを使用し、選択した行の回答と解説を同じ Teams チャネルに投稿します。

フロー設定の詳細

1. List rows present in a table

  • Location: SharePoint サイトとドキュメントライブラリを選択
  • File name: アップロードした Excel ファイル名(例:AWSCP練習問題.xlsx)
  • Table: 設定したテーブルを選択

2. Initialize variable (randomIndex)

  • Name: randomIndex
  • Type: Integer
  • Value:
    int(rand(0,sub(length(outputs('List_rows_present_in_a_table')?['body/value']),1)))
    

3. Initialize variable (formattedQuestion)

  • Name: formattedQuestion
  • Type: String
  • Value:
    concat(
      '**QuestionID: ', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['QuestionID'], '**',
      '<br><br><b>', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Question'], '</b>',
      '<br><br><ul>',
      '<li>', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Option1'], '</li>',
      '<li>', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Option2'], '</li>',
      '<li>', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Option3'], '</li>',
      '<li>', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Option4'], '</li>',
      '</ul>'
    )
    

4. Initialize variable (formattedAnswer)

  • Name: formattedAnswer
  • Type: String
  • Value:
    concat(
      '**QuestionID: ', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['QuestionID'], '**',
      '<br><br><b>答え:</b> <i>', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Answer'], '</i><br><br>',
      '<b>解説:</b> ', outputs('List_rows_present_in_a_table')?['body/value'][variables('randomIndex')]['Explanation']
    )
    

5. Post a message (V3) (問題)

  • Post in: チームとチャネルを選択
  • Message: 変数 formattedQuestion

6. Delay

  • 3 分間待機

7. Post a message (V3) (回答)

  • Post in: 同じチームとチャネルを選択
  • Message: 変数 formattedAnswer

完成したフロー

まとめ

この記事では、Power Automate を使って AWS 問題を自動投稿するボットを作成する方法を紹介しました。日々の学習にぜひご活用ください。


今後の学習に向けて

  • Power Automate の他の機能も活用して、さらに高度な自動化フローを作成してみましょう。
  • AWS の学習教材を活用し、知識をさらに深めましょう。
  • 習得した知識を活かして、AWS を使ったシステム構築に挑戦してみましょう。

この記事が、あなたの AWS 学習の一助となれば幸いです。


免責事項

  • 本記事は情報提供のみを目的としており、内容の正確性や完全性を保証するものではありません。
  • 本記事の内容に基づいて発生したいかなる損害についても、一切責任を負いません。
  • 最新の情報については、AWS 公式サイトをご確認ください。

最後に

この記事が役に立った場合は、ぜひいいねシェアをお願いします。また、ご質問やご意見などございましたら、お気軽にコメントください。


参考資料

Accenture Japan (有志)

Discussion