Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

ChatGPT+Marpで技術勉強会用のプレゼン資料を爆速で作成する

こんにちは、igaです。
ゆっくりペースで実施していた、リングフィット アドベンチャーを先日クリアすることができました。

今回は、ChatGPTに、社内の技術勉強会向けに、ライトニングトーク用のプレゼン資料を作ってもらおうと思います。
私からは、テーマだけを決めて、その内容の検討自体をChatGPTにお願いしてみました。

プレゼン資料の内容

AWS CloudShell から Amazon ECS で任意のコマンドを実行する方法」という内容を検討してみます。
概要として、以下のようなものを考えています。

AWS CloudShell から ECS exec を利用して、Amazon ECS上のコンテナで任意のコマンドを実行するために必要な設定方法について説明する。」

ChatGPTに内容の検討を依頼する

ChatGPTに内容の検討をお願いするため、以下のようなプロンプトを指定してみます。

あなたは、AWSのスペシャリストです。
以下のスライドのタイトル、スライドの概要と出力条件を厳密に守り、最高のライトニングトークとなるようなスライド作成をお願いします。
なお、スライドはMarp for VSCodeで作成するため、対応したMarkdownを出力してください。

# スライドのタイトル
AWS CloudShellからAmazon ECSで任意のコマンドを実行する

# スライドの概要
AWS CloudShellからECS execを利用して、Amazon ECS上のコンテナで任意のコマンドを実行するために必要な設定内容について説明する

# 出力条件
- 1ページ目は、タイトルスライドとすること。
- 2ページ目は、目次とすること。
- 5分以内で説明できる内容にすること。
- AWS利用者に向けて、わかりやすい内容にすること。
- 実際に実行するコマンドを説明に含めること。
- 重要なキーワードを取りこぼさないこと。
- 出力するMarkdownはコピー&ペーストできる形式で出力すること。

今回、出力の形式は、「Marp for VSCode」に対応したMarkdown形式で依頼しています。

「Marp for VSCode」は、Markdownのテキストから、簡単にプレゼン資料を作成してくれる、Visual Studio Code拡張機能です。

marketplace.visualstudio.com

ChatGPTが検討してくれた内容は、以下の結果になりました。
私が考えるよりも、イケてるプレゼン内容を早速作ってくれています。

---
marp: true
theme: default
paginate: true
size: 16:9
---

<!-- _class: lead -->
# AWS CloudShellからAmazon ECSで任意のコマンドを実行する

---

# 目次
1. AWS CloudShellとは
2. Amazon ECSとは
3. ECS Execとは
4. 設定内容の概要
5. 設定の手順
6. デモ
7. まとめ

---

# AWS CloudShellとは

![AWS CloudShell](aws-cloudshell.png)

- ブラウザベースのシェル
- AWSリソースの管理が可能
- 開発やテスト、トラブルシューティング等に利用

---

# Amazon ECSとは

![Amazon ECS](amazon-ecs.png)

- Dockerコンテナのオーケストレーションサービス
- AWS上でのコンテナ管理を容易に

---

# ECS Execとは

![ECS Exec](ecs-exec.png)

- AWS CLIまたはSDKを使用して、実行中のコンテナ内でコマンドを実行する機能
- トラブルシューティングやデバッグに便利

---

# 設定内容の概要

1. Amazon ECSのタスク定義の更新
2. IAM ロールの設定
3. SSMエージェントのインストール

---

# 設定の手順

1. タスク定義でECS Execが有効になっていることを確認
2. ECSタスク実行ロールに`ssm:UpdateInstanceInformation`,`ssmmessages:CreateControlChannel`,`ssmmessages:CreateDataChannel`,`ssmmessages:OpenControlChannel`, `ssmmessages:OpenDataChannel`の権限を持つIAMポリシーをアタッチ
3. SSMエージェントがコンテナOSにインストールされていることを確認

---

# デモ

 ```bash
# タスクのIDを取得
task_id=$(aws ecs list-tasks --cluster my-cluster --service my-service --query 'taskArns[0]')

# ECS Execを実行
aws ecs execute-command  \
    --region us-west-2 \
    --cluster my-cluster \
    --task $task_id \
    --container my-app \
    --command "/bin/sh" \
    --interactive
 ```

---

# まとめ

- AWS CloudShellからECS Execを使うことで、Amazon ECS上のコンテナで任意のコマンドを実行できる
- 適切な設定を行うことが重要
- トラブルシューティングやデバッグ時に非常に有用

---

PowerPointのファイルを作成する

ChatGPTが出力した結果から、「Marp for VSCode」を使って、PowerPointのファイルを生成してみます。
以下の手順で生成可能です。

  • ChatGPTが出力したMarkdownを、任意のフォルダに保存して、保存したファイルをVSCodeで開きます。
  • Marp for VSCode の QuickMenu から「Export Slide Deck...」を選択するとファイル保存ダイアログが表示されます。
  • ファイルの種類で「PowerPoint document (*.pptx)」を選択して、ファイル名を指定するとPowerPointのファイルが出力されます。

生成されたファイルを開くと、このようになりました。

きちんと内容が出力できていますね。
箇条書きやコードブロックなども、反映されているようです。

まとめ

今回、私が指定したのは、タイトルと概要だけでしたが、ChatGPTがその内容を具体化して、プレゼン資料を作成してくれました。
要求が今回ぐらいあいまいでも、いい感じの内容を検討してくれるのは、とても助かりますね。
デザインの調整などは別途必要になりますが、ここまでできるのは、非常に強力だと思いました。

補足

今回、ChatGPTプラグインである Code Interpreter を使えば、一気に内容の検討からファイル生成までできるかな、と思ったのですが、残念ながらできませんでした。
PowerPointのファイル生成にPythonのライブラリが必要になるのですが、Code Interpreter では外部サイトにアクセスことができないため、そのライブラリをインストールすることができませんでした。

2023/07/18 更新
「Code Interpreterを使ってファイル生成ができない」と書きましたが、その後プロンプトを工夫することでCode Interpreterを使ってパワーポイントのファイルをダウンロードることができました。

指定したプロンプトは以下の通りです。

あなたは、AWSのスペシャリストです。
以下のスライドの題名、スライドの内容と制約事項を厳密に守り、最高のライトニングトークとなるようなスライド作成をお願いします。
Python-pptxライブラリを使って、Pythonコードを実行して、ダウンロードできるようにしてください。

(スライドのタイトル以降の内容は、変更していません)

ポイントになるのは、Python-pptxライブラリを使って、Pythonコードを実行して、ダウンロードできるようにしてください。」の記述と考えられます。