ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

生成AIを活用したスライドの自動作成

生成AIの登場以前から、スライド作成サービスはいくつか存在していました。近年は生成AIを活用したスライド生成サービスが増えています。企業での利用ではPowerPointPPTX)形式が一般的で、日本語を含む場合、HTMLMarpで美しいスライドを作れてもPowerPointに変換する際にフォントのズレが生じ、修正に時間がかかることがあります。この課題を解消するため、PowerPointを直接操作してスライドを生成する方式を検討します

ライター:荒牧 大樹
2007年ネットワンシステムズ入社し、コラボレーション・クラウド製品の担当を経て現在はAI・データ分析製品と技術の推進に従事。最近では次世代の計算環境であるGPU・FPGA・量子コンピュータに注目している。

目次

スライド生成について

スライド生成に関しては現状、次の4つのアプローチが考えられます。

    1. HTML/Marp形式
      • サーバサイドでHTMLMarpでスライドを生成します
      • LLMにより高品質なHTMLMarkdownの生成が可能で、見栄の良いスライドが作成可能
      • GammaCanvaGensparkPresenton等様々なサービスがあります
      • ダウンロード時には、PDFPowerPoint形式に変換します
    2. 画像を生成
      • 画像生成を使ってスライド画像を生成してPowerPointに貼り付けます
      • Googleの提供するNano-Banana等が高品質なスライド画像を生成できるようになった事で、現実的になった方式です
      • テキスト部分だけを編集可能とする方法もあります
      • 基本的には画像として張り付ける為、後からの編集は難しくなります
    3. SVGを生成
      • ベクター形式のSVGを直接生成します
      • PowerPointSVGに対応している為、貼り付け後に図形変換すれば各要素の編集が可能です
    4. PowerPointを操作
      • PowerPointを外部から操作してスライドを作成します
      • 企業内のテンプレートやデザインの活用が可能です
      • 作成後の編集が容易で、SmartArt等のPowerPoint独自機能を利用できます

各方式には一長一短がありますが、今回は実装例が比較的少ない「PowerPointを直接操作してスライドを生成する」方式で実装します。

PowerPointを活用したスライド生成

PowerPointを使ったスライド生成を行うにあたり、PowerPointの操作・図解・スライドテンプレートについて検討します。

PowerPointの操作

PowerPointを外部から操作する方法はいくつかあります。簡易な実装として、PowerShellからCOM経由でPowerPointを操作します。以下の例ではスライド追加、タイトル設定をPowerShellで行っています。

# PowerPoint起動
$ppt = New-Object -ComObject PowerPoint.Application
$ppt.Visible = $true

# 新規プレゼンテーション作成
$presentation = $ppt.Presentations.Add()

# スライド追加
$slide = $presentation.Slides.Add(1, $ppLayoutTitleAndContent)

# タイトル設定
$slide.Shapes.Title.TextFrame.TextRange.Text = "PowerShellから作成したスライド"

PowerShellを用いて、PowerPointファイルの読み取りから編集・保存までが可能です。LLMで生成した内容を構造化し、PowerShellコマンドに落とし込むことで、安定的にPowerPointを操作できます。

図形やSmartArtを使って図解する

箇条書きだけでは理解が難しい場合があるため、図解要素を追加します。画像生成での貼り付けも可能ですが、ここではSmartArtと図形(SVG)の活用を検討します。

SmartArtについて

PowerPoint内部機能であるSmartArtは、種類を選択し箇条書きを渡すと自動的にレイアウトされます。LLMSmartArtの候補名と説明を提示し、適切なSmartArtを選んでもらう方式を採用します。

# SmartArt追加
$smartArt = $slide.Shapes.AddSmartArt($ppt.SmartArtLayouts.Item($layoutId),100, 120, 500, 300)

# ノードにテキスト設定
$nodes = $smartArt.SmartArt.AllNodes
$nodes.Item(1).TextFrame2.TextRange.Text = "開始"
$nodes.Item(2).TextFrame2.TextRange.Text = "処理"
$nodes.Item(3).TextFrame2.TextRange.Text = "完了"

図形について

PowerPoint内部フォーマットを直接生成する方法もありますが、今回は汎用性の高いSVGを生成し、PowerPointに貼り付けてから図形へ変換する方法を採用します。HTML並みの品質でSVGを生成できるため、見栄えと編集性を両立できます。以下は、生成したSVGを貼り付けて図形化した例です。

スライドテンプレートとデザイン

企業で指定されたスライドテンプレート(.potx など)を用いて作成します。事前にテンプレートに含まれるデザイン名を抽出し、プロンプトとしてLLMに渡すことでデザイン選択を行います。既定で選ばれるデザインを設定しておくと、想定外のデザイン選択を防げます。

スライド作成の流れ

SmartArtやテンプレートなどの情報をプロンプトに含め、LLMJSONを生成してもらいます。生成されたJSONを基に、対応するPowerShellでスライドを作成します。PowerShellのスクリプト自体は事前に用意しておき、各回はパラメータを当てはめるだけで動かします(毎回LLMでスクリプトを生成するわけではありません)。

Slide Agent

以上の要素を踏まえ、デスクトップアプリケーション「Slide Agent」を作成しました。プロンプトやPDFなどを参考にしながら、スライドを自動生成します。

プロンプトや参考ファイルを元にLLMによって作成されたJSONをプレビューします。プレビュー内容の修正も可能です。「このまま生成」を押すとスライド生成が開始されます。

プレビュー内容を元に作成されたスライドです。

まとめ

スライド生成については、今後のCopilotの機能拡充により多くの機能が提供されると考えています。一方で、PowerPointだけでなくExcelWordOutlookも含め、PowerShellと組み合わせることで多様な自動化が可能であることがわかりました。今回のアプリはCoding Agentを活用して作成しています。企業環境に合わせたテンプレート・フォント運用と、LLMの構造化出力を組み合わせることで、実務に適したスライド生成パイプラインを構築できます。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND