LLMでスライド完全自動生成してみた

まあまあ釣りタイトル

# パワポじゃなくて？

これは**本質情報**ですが...

Microsoft PowerPointではなく、LaTeX BeamerならLLMが直接吐いてくれます。

# 使い方

## TeX Liveのインストール

業務なのでWindowsを前提として説明。
[公式](https://www.tug.org/texlive/)のexeファイルを実行すればインストールできる。
半日コースなので覚悟すること。

回線とかの問題でどーしてもダメそうならisoファイルからのインストールを検討すると吉かも。

ユーザ名に日本語などが含まれるとエラー。対処法は以下。
<https://okumuralab.org/tex/mod/forum/discuss.php?d=3090>


## 使用例

ChatGPTによる例です。面倒なのでプロンプトは日本語です。

```
あなたはプロジェクトマネージャーです。
プロジェクトの計画書としてスライドを作成する必要があります。
プロジェクトは近年のLLMの流行に乗じた、生成AIによる業務効率化になります。
いい感じに予算があって、約1年のスケジュールを組む必要があります。
以上のプロジェクト計画書を、LaTeX Beamer形式で出力してください。
スケジュールの部分だけ、ガントチャートを使用してください。
以上の説明で分からない箇所は適当に埋めてしまってかまいません。
```

モデルは`o3-mini`、推論ありの出力例が以下。

```latex
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pgfgantt}
\usepackage{graphicx}

\usetheme{Madrid}
\title[生成AIによる業務効率化]{生成AIによる業務効率化プロジェクト計画書}
\author{プロジェクトマネージャー 山田 太郎}
\institute{株式会社サンプル}
\date{\today}

\begin{document}

% タイトルスライド
\begin{frame}
  \titlepage
\end{frame}

% アジェンダ
\begin{frame}{目次}
  \tableofcontents
\end{frame}

% プロジェクト概要
\section{プロジェクト概要}
\begin{frame}{プロジェクト概要}
  \begin{itemize}
    \item 近年のLLM（大規模言語モデル）の流行を背景に、生成AIを活用した業務効率化を実現するプロジェクト
    \item 目的：社内業務の自動化・最適化、コスト削減、品質向上
    \item 対象：各部署における定型業務、データ分析、レポート作成等
  \end{itemize}
\end{frame}

% 目的と目標
\section{目的と目標}
\begin{frame}{目的と目標}
  \begin{itemize}
    \item 業務効率化による生産性向上
    \item 人的リソースの最適配分
    \item 最新の生成AI技術を活用した新たなサービスの開発
    \item プロジェクト期間：約1年間
    \item 十分な予算を確保（例：予算総額 1,000万円）
  \end{itemize}
\end{frame}

% スケジュール（ガントチャート）
\section{スケジュール}
\begin{frame}{プロジェクトスケジュール}
  \begin{center}
    \begin{ganttchart}[
      hgrid,
      vgrid,
      title/.append style={fill=blue!50},
      title label font=\bfseries\footnotesize,
      bar/.append style={fill=blue!30},
      bar label font=\footnotesize,
      group/.append style={fill=blue!20},
      group label font=\bfseries\footnotesize,
      time slot format=isodate-yearmonth,
      x unit=0.7cm,
      y unit chart=0.8cm
    ]{2025-01}{2025-12}
      \gantttitlecalendar{year, month=shortname} \\[0.5em]
      \ganttgroup{企画・調査}{2025-01}{2025-02} \\
      \ganttbar{要件定義}{2025-01}{2025-01} \\
      \ganttbar{市場調査}{2025-02}{2025-02} \\[0.5em]
      \ganttgroup{設計・準備}{2025-03}{2025-04} \\
      \ganttbar{システム設計}{2025-03}{2025-03} \\
      \ganttbar{技術調査・プロトタイピング}{2025-04}{2025-04} \\[0.5em]
      \ganttgroup{実装・開発}{2025-05}{2025-08} \\
      \ganttbar{AIモデルの開発}{2025-05}{2025-06} \\
      \ganttbar{システム開発・連携}{2025-07}{2025-08} \\[0.5em]
      \ganttgroup{テスト・評価}{2025-09}{2025-10} \\
      \ganttbar{内部テスト}{2025-09}{2025-09} \\
      \ganttbar{ユーザーテスト}{2025-10}{2025-10} \\[0.5em]
      \ganttgroup{導入・展開}{2025-11}{2025-12} \\
      \ganttbar{最終調整・導入準備}{2025-11}{2025-11} \\
      \ganttbar{システム導入}{2025-12}{2025-12} \\
    \end{ganttchart}
  \end{center}
\end{frame}

% 予算
\section{予算}
\begin{frame}{予算計画}
  \begin{itemize}
    \item 総予算：1,000万円
    \item 主な費用項目：
      \begin{itemize}
        \item AI技術調査・ライセンス費用：300万円
        \item システム開発費：400万円
        \item テスト・評価費用：150万円
        \item 導入・教育費用：100万円
        \item 予備費：50万円
      \end{itemize}
    \item 詳細な内訳はプロジェクト開始後に精査予定
  \end{itemize}
\end{frame}

% リスク管理
\section{リスク管理}
\begin{frame}{リスク管理と対策}
  \begin{itemize}
    \item 技術リスク：最新技術の採用に伴う不確実性への対策として、プロトタイピングフェーズを設置
    \item スケジュールリスク：各フェーズでマイルストーンを設定し、進捗を定期的に確認
    \item 予算リスク：予備費の設定および定期的な予算見直し
    \item 外部環境リスク：市場動向の定期チェックと柔軟な計画変更
  \end{itemize}
\end{frame}

% 次のステップ
\section{次のステップ}
\begin{frame}{次のステップ}
  \begin{itemize}
    \item プロジェクトキックオフミーティングの開催
    \item 詳細な要件定義とリソースの確定
    \item 初期プロトタイピングの実施
    \item 各フェーズのレビューとフィードバックの実施
  \end{itemize}
\end{frame}

% 結論
\section{結論}
\begin{frame}{結論}
  \begin{itemize}
    \item 生成AI技術を活用することで、業務効率化と生産性向上を実現
    \item 十分な予算と明確なスケジュールにより、リスクを最小限に管理
    \item チーム一丸となって、プロジェクト成功に向け取り組む
  \end{itemize}
  \vspace{1em}
  ご清聴ありがとうございました。
\end{frame}

\end{document}
```

まずは次の記事を参考に`usepackage`を追加する。

- [今さら人に聞けない「日本語でBeamer」のキホン](https://qiita.com/zr_tex8r/items/69e8cc32038ff29f5ac3)

ガントチャート部分でコンパイルに失敗する。
`[0.5em]`はTikzの機能？削除するとコンパイルは通るが悲惨な結果に。
`time slot format=isodate-yearmonth`を削除して、日付を通し番号にしてやれば凡そ見れる結果になる。

あとはコンパイルを通しながら修正を繰り返す。

コンパイル結果の画像貼るのが面倒なので`Beamer Madrid theme`で画像検索すると良い。

## 総評

叩き台としては十分。
本文の構成が修正要らずでほぼそのまま再利用できるのが良さげ。
図表のコンパイルエラーはバージョンの違いかしら？少なくとも致命的ではない。

## パワポのあの機能使いたいんだけど...

じゃあ自動化に頼るなよ...

メモ機能ならBeamerにもnotes機能がある。但し専用のビューワが必要。

- <https://bm.skr.jp/doc/presentation.html> メモ：Pympress, impressive, pdfpc, dspdfviewer

# なぜLaTeXなのか？

## 組版をLLMにやらせるべきではない

組版は見た目が全てです。LLMが持つ強力な推論もここでは役に立ちません。
不可能ではありません。ただ不可能ではないだけなので、やるとしても工数がかかります。
他に方法が皆無なら検討の余地はあります。しかしこのような方法は既に発明されているのが世の常です。

## 組版記述言語としてTeXが既に存在する

LaTeXとは？組版を独自言語でこなすシステムです。
TeXはそこに用いられる言語とみて概ね間違いありません。
学術領域ではデファクトスタンダードのような立ち位置にあります。
やってることは組版なので、記述さえしてやればスライドだってできちゃいます。
それをやったのがBeamerというパッケージです。

存在するエコシステムには乗っかりましょう。

## プロプライエタリなバイナリを使わない

LLM時代なら特にそうです。gitというツールの存在もそれを後押ししているはずですが...

極端な話、1つの会社に依存する仕事のやり方ってどうかと思いますよ。

## 余談

業務効率化が要件であるべきで、パワポは二の次のはずです。
業務にパワポが必要というのは要件定義が間違っています。見栄えするスライドの組版ができれば道具は何でも良いはずです。
LLMと相性の良い道具が手元（オープンソース）にあるなら利用しない手はありません。

今回この記事を作成するきっかけになったプロジェクトについて、多くは語りません。
何が守秘義務に引っ掛かるか分かりませんからね。