ChatGPTとPythonでPowerPointのスライドを作成する

# はじめに
PowerPointでスライドを1から作成するのは時間がかかるためサラリーマンや学生さんは大変だと思います。
スライド資料を早く作成できないか考えていたところにChatGPTがありました。
ChatGPTを使用すると、テーマを与えるだけで各スライドのテキストを作成することができ、
また、それをPowerPointで扱えるファイル(.pptx)を作成できます。

# やること
・ChatGPTでスライドのテキストを生成
・ChatGPTでテキストを.pptxファイルに変換するPythonのコードを生成

# 実際にやってみた
### テキストを生成
```
下記のテキストをテーマに10枚のスライドのプレゼンテーションを作成してください
「高校野球と熱中症対策」
--------------------------------------------------------------------------------

もちろんです。以下に、テーマ「高校野球と熱中症対策」に関する10枚のプレゼンテーションスライドの例を示します。
**スライド 1: タイトル**
- タイトル: 高校野球と熱中症対策

**スライド 2: 導入**
- スポーツの楽しさと競技の激しさが高校野球の魅力ですが、熱中症のリスクも忘れてはいけません。

**スライド 3: 熱中症のリスク**
- 熱中症の定義と症状
- 高温多湿な環境での競技は選手にとってリスクを増大させます。

**スライド 4: 熱中症予防の重要性**
- 選手の健康とパフォーマンスを守るために、熱中症予防が不可欠です。
- 適切な対策を講じることで、安全な環境で競技を行えます。

**スライド 5: 水分補給の重要性**
- 水分補給の適切な方法とタイミング
- 選手はこまめに水分を摂ることで脱水症状を予防できます。

**スライド 6: 休憩とシェード**
- 長時間の競技中に適度な休憩と日陰の確保が必要
- 熱中症を避けるために選手たちにリフレッシュの機会を提供しましょう。

**スライド 7: 適切な装備**
- 吸湿性のある服装や帽子の着用が熱中症予防に役立つ
- 選手たちの安全を考慮した適切な装備が重要です。

**スライド 8: コーチとスタッフの役割**
- コーチとスタッフは選手たちに熱中症対策の重要性を啓発
- 適切な指導とサポートを通じて選手たちの健康を守りましょう。

**スライド 9: 緊急時の対応策**
- 熱中症の緊急時の兆候と対処法
- 選手たちや関係者が熱中症の症状を認識し、適切な措置を取ることが重要です。

**スライド 10: まとめと呼びかけ**
- 高校野球の楽しさを損なうことなく、熱中症対策を徹底しましょう。
- 選手たちの健康と安全を守りながら、素晴らしい競技体験を共に作り上げましょう。
```

### pptxに変換するPythonのコードを生成
```
作成したテキストをpptx形式に変換するPythonのコードを作成してください
--------------------------------------------------------------------------------
残念ながら、テキストベースの環境ではファイルを直接生成することはできません。しかし、Pythonのライブラリである`python-pptx`を使用して、テキストからプレゼンテーションファイルを生成するコードを提供します。このコードは、`python-pptx`ライブラリがインストールされている必要があります。

まず、以下のコードを使用して`python-pptx`をインストールします（必要な場合）：

```bash
pip install python-pptx
```

次に、プレゼンテーションを生成するPythonコードを以下に示します。

```python:app.py
from pptx import Presentation
from pptx.util import Inches

# テキストファイルからスライドデータを読み込む
with open("data/slide-data.txt", "r", encoding="utf-8") as f:
    slides_data = f.read().splitlines()

# プレゼンテーションの作成とスライドの生成
prs = Presentation()

# リストの長さを2で割った回数までループ
for i in range(0, len(slides_data)//2):
    slide = prs.slides.add_slide(prs.slide_layouts[1])
    
    # リストからタイトルとコンテンツを取得
    title = slides_data[i * 2]
    content = slides_data[i * 2 + 1]

    title_box = slide.shapes.title
    title_box.text = title

    content_box = slide.placeholders[1]
    content_box.text = content

# ファイル保存
prs.save("高校野球と熱中症対策プレゼンテーション.pptx")
```

```text:slide-data.txt
高校野球と熱中症対策
導入
スポーツの楽しさと競技の激しさが高校野球の魅力ですが、熱中症のリスクも忘れてはいけません。
熱中症のリスク
熱中症の定義と症状\n高温多湿な環境での競技は選手にとってリスクを増大させます。
熱中症予防の重要性
選手の健康とパフォーマンスを守るために、熱中症予防が不可欠です。\n適切な対策を講じることで、安全な環境で競技を行えます。
水分補給の重要性
水分補給の適切な方法とタイミング\n選手はこまめに水分を摂ることで脱水症状を予防できます。
休憩とシェード
長時間の競技中に適度な休憩と日陰の確保が必要\n熱中症を避けるために選手たちにリフレッシュの機会を提供しましょう。
適切な装備
吸湿性のある服装や帽子の着用が熱中症予防に役立つ\n選手たちの安全を考慮した適切な装備が重要です。
コーチとスタッフの役割
コーチとスタッフは選手たちに熱中症対策の重要性を啓発\n適切な指導とサポートを通じて選手たちの健康を守りましょう。
緊急時の対応策
熱中症の緊急時の兆候と対処法\n選手たちや関係者が熱中症の症状を認識し、適切な措置を取ることが重要です。
まとめと呼びかけ
高校野球の楽しさを損なうことなく、熱中症対策を徹底しましょう。\n選手たちの健康と安全を守りながら、素晴らしい競技体験を共に作り上げましょう。
```

■実行コマンド
```
python app.py
```

slide-data.txtをdataディレクトリ配下に配置し、このコードを実行すると
「高校野球と熱中症対策プレゼンテーション.pptx」というファイルが生成されます。
各スライドには指定したタイトルとコンテンツが含まれています。


作成したスライド一覧（Googleスライドで一覧表示しています）
![スクリーンショット 2023-08-27 11.59.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603047/bbdb9c8b-7c5f-39b3-08f5-f03eff6c64bf.png)


# おわりに
必要に応じてスライドのデザインやコンテンツを調整してください。
matplotlibやseabornなどでグラフを挿入できます。
今回のものは貧相なので、下書きをPythonで作成し、画像生成AIで見た目を良くしていくのが手軽かと思います。
余談ですがCopilotやSlidesGPTを使えば見た目の良いスライドは作成できます。


作成したコードを置いておきます

https://github.com/takuya-wooooo/text-to-ppt-converter