はじめに
「こんなことやりたいんだけど、生成AIでいい感じにできない?」
そんな曖昧な要望、ユーザから受けたりしませんか?
「じゃぁ、生成AIにきいてみますか。」
そんなアプローチを起こしてみました。
想定読者
「はじめに」のようなシーンに立ち会う方
アプローチ
下記のような流れを考えてみます。
- ユーザ要望の発生
- 生成AIへの相談
- 生成AIへの提案書作成依頼
- 生成AIへの手引書作成依頼
- 生成AIへのサンプル作成依頼
ユーザ要望の発生
今回は下記お題にします。
「複数のプレゼン資料を一か所にまとめて通しで表示できるようにしたいんだけど、
生成AIでいい感じにできない?」
(生成AIで、という制限がなければ、既存のサービスやツールを使うことが可能ですが。)
生成AIへの相談
今回はChatGPTに相談します。
- プロンプト
あなたはソフトウェア開発者です。お客様から、
「複数のプレゼン資料を一か所にまとめて通しで表示できるようにしたいんだけど、
生成AIでいい感じにできない?」
と要望を受けました。どのような方法があるか提案してください。
複数の案をChatGPTから回答されます。(回答内容は割愛。以降も同様。)
生成AIへの提案書作成依頼
回答を提案書のかたちにするため、プロンプトを打ち込みます。
- プロンプト
これらの回答を提案資料として起こし、お客様へ説明したいです。
提案資料を作成してください。
PowerPointスライドにはりつけやすいように加工します。
- プロンプト
この章立てをプレゼン資料へコピー&ペーストしやすい形式にしてもらえませんか。
この結果をPowerPointスライドへ貼り付けます。そのままでは味気ないので、
パワーポイントのデザイナ1機能でレイアウトを調整します。
また、1枚ものなら、html形式で整形するのもありかもしれません。
- プロンプト
この内容をHTML形式でA4用紙1枚にPDF形式で出力できる構成に要約してください。
これならOfficeが入っていないPCでもOKですね。
生成AIへの手引書作成依頼
提案書から実施案が採択されたら次のステップに進みます。
※ここまでユーザ自身にやってもらえると、提案の抽象度もだいぶ下がりますね。
「3.1.プレゼン資料の統合」が採択された前提で再びプロンプトを投げます。
- プロンプト
「3.1. プレゼン資料の統合」を進めたいです。具体的な実現方法を教えてください。
手順が列挙されるため、提案書と同様に転記しやすいよう指示します。
- プロンプト
この流れを簡単な手引書として作成したいです。コピー&ペーストでパワーポイントにはりつけやすい章立てで要約してください。
提案書同様に作成しました。レイアウトはちょっと変えています。
生成AIへのサンプル作成依頼
手引き内のフォーマットの統一に記載されたAdobe Acrobatは有償です。
無償(プログラミング)の対応方法をプロンプトを投げます。
PDFとPowerPoint形式のプレゼン資料が混在し、PowerPointに統一することを想定します。
- プロンプト
PDFファイルからパワーポイント形式に変換するサンプルプログラムが欲しいです。
Pythonで実装する例が回答されます。回答された内容をもとにプログラミングを行います。
モジュールのインストール
pip install python-pptx
pip install pymupdf
PDFをPowerPointに変換(画像化してパワーポイントに貼り付けるサンプル)
import fitz # PyMuPDF
from pptx import Presentation
from pptx.util import Inches
import os
def pdf_to_pptx(pdf_path, pptx_path):
# PDFファイルを開く
pdf_document = fitz.open(pdf_path)
# プレゼンテーションオブジェクトを作成
presentation = Presentation()
for page_number in range(len(pdf_document)):
# ページごとにPPTXのスライドを追加
slide = presentation.slides.add_slide(presentation.slide_layouts[5])
# ページを画像として抽出
page = pdf_document.load_page(page_number)
pix = page.get_pixmap()
img_path = f"page_{page_number + 1}.png"
pix.save(img_path)
# スライドに画像を追加
left = top = Inches(0)
slide.shapes.add_picture(img_path, left, top, width=Inches(10), height=Inches(7.5))
# PPTXファイルを保存
presentation.save(pptx_path)
# フォルダ内のファイルを取得
files = os.listdir()
# PDFファイルのみを抽出して順に表示
for file in files:
if file.endswith(".pdf"):
pdf_path = file
pptx_path = file.replace(".pdf", ".pptx")
if os.path.exists(pptx_path):
os.remove(pptx_path)
pdf_to_pptx(pdf_path, pptx_path)
# フォルダ内のファイルを取得
files2 = os.listdir()
# PNGファイルをすべて削除
for file2 in files2:
if file2.endswith(".png"):
os.remove(file2)
生成AIへの指示次第でサンプルは色々作れます。
ユーザ環境適用時、Pythonのインストールができない場合、PyInstallerを活用します。
(Windowsの場合)
あとは手引書に沿ってスライドをまとめていけば、プレゼン資料の結合はできそうです。
※ここもプログラムで機械的に結合する、のもアリかもしれません。
まとめ
手引書に書かれたテンプレートの選定は今回の例だと満たせないのですが、
プレゼン資料を統合したい、という要望に対してある程度示せたのではないかと思います。
- 生成AIが案を出して
- 人間がアクションをとる
という組み合わせでさまざまな要望にアクションできるのではないかと思います。
参考
Gemini によるプレゼン資料作成例
-
デザイナ機能の場所
↩