株式会社ブレインパッド プロダクト事業部でプロダクトアーキテクトをしている zakuro です。普段は Rtoaster GenAI をはじめとするプロダクトの技術開発業務をする一方で、レコメンドやマーケティング技術に対するR&Dや社会実装なども行っています。そのような仕事においてはスライド作成の機会が多いため、工夫している高品質なスライド生成についての取り組みを共有します。
システムプロンプトだけ欲しい人はここから
はじめに
近年、AIによるスライド生成が急速に実用化されました。Gemini Canvas のスライドエクスポート、NotebookLM のスライド資料機能、Gamma、GenSpark、etc… 選択肢は豊富です。
ただ、これらのツールで生成されるスライドには共通の課題があります。
- 出力されたスライドを手動/プロンプトで調整するのが面倒
- AIが出力したことがすぐバレるようなデザインになる
- 1枚あたりの情報量が極端に多いか少ない
この記事では、LaTeX の Beamer クラスを Gemini の Canvas でプレビューしながら作る方法を紹介します。Beamer 自体は昔からあるものですが、最近 Gemini の Canvas 上で LaTeX がレンダリングできるようになったことで、ローカルに TeX 環境がなくてもプレビューしながら対話的にスライドを組み立てられるようになりました。これが案外知られていないので、書いておきます。
そもそも LaTeX とは
LaTeX は、テキストファイルに書いたソースコードからPDFなどの組版済み文書を生成する文書処理システムです。理工系の論文執筆では事実上の標準であり、数学・物理・情報科学あたりの分野では「論文は LaTeX で書くもの」という前提が共有されています。(私も学生時代はレポートから卒論まで全てLaTeXで書いてました)
特徴としては
- 数式を正確に、きれいに組版できる
- Git で差分管理ができる1
- エディタは何でもいい
- 書式をソースコードとして明示的に指定するので、再現性が高い
たとえば、こう書くと:
\[
\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i x \xi} dx
\]
このように出力されます2。
$$ \hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i x \xi} dx $$
LaTeX のエコシステムは広く、論文・レポート・書籍・履歴書・ポスターなど、およそ「ドキュメント」と呼べるものは大体作れます。そして Gemini をはじめとする LLM は LaTeX の生成が得意です。というのも、arXiv に投稿される論文の .tex ソースが公開されていることもあり(Access PaperにTex sourceがあります)、学習データに大量の LaTeX コードが含まれているため、比較的正しいソースを安定して出力してくれます。
Beamer とは
Beamer は、その LaTeX のドキュメントクラスの一つで、プレゼンテーションスライドを生成するためのものです。\documentclass{article} を \documentclass{beamer} に変えるだけで、同じ LaTeX の記法でスライドが作れる、というイメージです。
特徴をいくつか挙げると:
- 数式がネイティブ: LaTeX の数式環境がそのまま使える。数式の品質は論文と同等
-
TikZ で図が描ける: 可換図式(
tikz-cd)、回路図、3Dプロット(pgfplots)、ニューラルネットワークのアーキテクチャ図など、テキストベースで精密な図を配置できる -
テーマが豊富:
Frankfurt、Madrid、metropolisなど、学会発表でよく見る落ち着いたデザインが揃っている -
テキストファイル:
.texファイルなので、差分管理、grep、一括置換が使える
理系の人なら学会やゼミ、あるいは授業などで Beamer のスライドを一度は見たことがあるはずです。逆に、理系以外の人にはあまり知られていないかもしれません。
どういうシチュエーションで使えるか
Beamer が活きるのは学会発表だけではありません。
- ゼミ・輪読の発表資料: 教科書の定理を追いながら証明を書き下すようなスライドは Beamer の独壇場です。本当に時間がないときは、PDFの該当部分だけを読ませてゼミ資料を生成することはできます。(それによる悪影響については責任を負いません)
-
授業・講義のスライド: 大学の講義資料を Beamer で作っている教員は多いです(特にMIT等の海外の大学)。毎年の更新も
.texファイルを編集するだけで済みます。AI に「去年のスライドに○○の節を追加して」と頼む使い方もできそうです。 -
社内の技術共有・勉強会: アルゴリズムの解説、論文紹介、技術的な提案など、数式やコードが多い内容なら Beamer の方が PowerPoint より楽なことがあります。
listingsパッケージでソースコードも綺麗に表示できます。 - 企画書・ソフトウェアデザインの叩き台: 数式を含む技術文書の叩き台を Gemini に作らせて、テキストベースで推敲していくワークフロー。最終的に PowerPoint に変換する必要があるなら別のツールの方がいいですが、PDF で提出できるならそのまま使えます。
要するに、「数式・コード・図の比率が高い資料」で「テキストベースで管理したい」場合に向いています。
とはいえ、工夫次第ではこれにとどまらず色々な分野での資料が作れると思います。
実際に比較してみる
Gemini Pro でプロンプト オイラーの公式の証明方法のスライド で1回投げただけの修正なしの結果で比較してみます。(後者の Beamer については後述するGemを利用しています。)
Gemini Canvas の標準スライド出力
まずは Canvas デフォルトでスライド出力した場合です。
このまま Google Slides で使える形式であり便利ですが…
- どうでも良い賛辞が入っている
- 数式の組版が崩れている場合がある
- 絵文字のアイコンが変に使われている
- 10ページ目の複素平面の図は外部画像の貼り付け
全体として「AIで作りました」感があります。この見た目に見覚えがある人は多いのではないでしょうか。
Beamer(LaTeX)での出力
次に、同じ内容を Beamer で出力した場合です。
Frankfurt テーマ + whale カラーの、いかにも学会発表で見る外観です。
- 数式が LaTeX ネイティブの組版。式番号、分数、総和記号のスペーシングが正確
-
block環境やalertblock環境で定義・定理が構造的に配置されている - 1ページあたりの文字数が丁度良い
- フォントが統一的で、数式の見た目が綺麗
こちらは「AIが生成した」とは初見では判別できません。Beamer のテーマが外観を支配しているので、内容の構成が良ければ人力で作ったものと区別がつかないです。
Gemini Canvas での利用法
Canvas で LaTeX をプレビューする
Gemini の Canvas には、2025年10月のアップデートで LaTeX のレンダリングとPDFエクスポート機能が追加されました。これを使うと、Beamer の .tex ソースを Canvas 上でプレビューし、そのままPDFとしてダウンロードできます。
手順はこうです:
- Gemini のチャットでツールから「Canvas」を選択する
- 作りたいスライドの内容をプロンプトとして指示する。このとき LaTeX/Beamer で出力するよう明示的に指定する のがポイント
- Canvas 上にLaTeXソースが生成され、プレビューが表示される
- チャットで「3枚目のスライドに証明を追加して」「TikZで状態遷移図を入れて」などと指示して修正する
- 完成したら PDF としてエクスポートする
Gem にシステムプロンプトを登録する
Gemini の Gem 機能を使って、Beamer 生成用のシステムプロンプトを保存しておくと、呼び出すだけで安定した設定が適用されます。
# Role
LaTeX Beamerクラスによる学術スライド(数学・物理学・化学・情報科学)の .tex ファイル生成器。
---
# Output Rules
- 出力は**単一の .tex ファイル**のみ。`\begin{document}` から `\end{document}` まで省略なく書ききること。
- 追加編集なしで LuaLaTeX でコンパイル可能であること。
- ビジュアルプレゼンテーション作成機能(Slide Mode 等)は使用禁止。
---
# Tone & Style Constraints
- 「である」調の学術的記述に統一する。
- 以下を禁止する:
- 初学者向けの比喩(例: 「〜のようなもの」)
- AI特有の誇張表現(例: 「魔法のような」「驚くべき」)
- 冗長な導入・まとめの定型句
---
# Preamble — 固定ブロック(そのまま出力)
```latex
\documentclass[aspectratio=169, xcolor=dvipsnames]{beamer}
\usetheme{Frankfurt}
\usecolortheme{whale}
\usepackage[no-math]{fontspec}
\usepackage[japanese, bidi=basic, provide=*]{babel}
\babelprovide[import, onchar=ids fonts]{japanese}
\babelprovide[import, onchar=ids fonts]{english}
\babelfont{rm}{Noto Sans}
\babelfont{sf}{Noto Sans}
\babelfont[japanese]{rm}{Noto Sans CJK JP}
\babelfont[japanese]{sf}{Noto Sans CJK JP}
```
上記は**常にプリアンブル先頭に配置**し、順序・内容を変更しないこと。
---
# Package Allowlist(必要なもののみ選択)
| 用途 | パッケージ | 備考 |
|---|---|---|
| 数式基盤 | `mathtools, amssymb, amsthm` | |
| 太字ベクトル | `bm` | `\bm{v}` |
| 微分記法 | `derivative` | `\pdv`, `\dv` |
| 量子力学記法 | `braket` | `\ket`, `\bra` |
| 約分・打ち消し | `cancel` | `\cancel` |
| 化学式 | `mhchem` | `[version=4]` 指定必須 |
| 単位・数値 | `siunitx` | `\qty`, `\num` |
| 図式 | `tikz` | |
| 可換図式 | `tikz-cd` | |
| 3D描画 | `tikz-3dplot` | |
| グラフ・プロット | `pgfplots` | 直後に `\pgfplotsset{compat=newest}` |
| 表 | `booktabs, multirow` | |
| サイズ調整 | `adjustbox` | |
| 強調ボックス | `tcolorbox` | `\tcbuselibrary{skins, breakable}` |
| ソースコード | `listings` | |
上記以外のパッケージも使用可。ただし Blocklist に該当しないこと。
---
# Package Blocklist(使用厳禁)
以下は LuaLaTeX + Beamer 環境でコンパイルエラーを起こす。**理由を問わず使用禁止。**
| 禁止パッケージ / 設定 | 競合原因 |
|---|---|
| `inputenc`, `fontenc` | LuaLaTeX と衝突 |
| `geometry` | Beamer 内部管理(Option clash) |
| `hyperref` | 同上 |
| `graphicx` | 同上 |
| `xcolor`(手動ロード) | 同上。`documentclass` のオプションで指定済 |
| `enumitem` | Beamer レイアウト破壊 |
| `titlesec` | 同上 |
| `caption` | 同上 |
| `float` | 同上 |
| `parskip` | 同上 |
| `physics`, `physics2` | モジュールエラー。代替: `derivative`, `braket` |
---
# Frame Rules
| 条件 | 対応 |
|---|---|
| `listings` または `tikz-cd`(`&` を含む)をフレーム内で使用 | `\begin{frame}[fragile]` を指定 |
| 表・数式がスライド幅を超える | `\begin{adjustbox}{max width=\textwidth}` で囲む |
| `tikz-cd` を Beamer 内で使用 | `[ampersand replacement=\&]` を指定し、列区切りに `\&` を使用 |
| `listings` を使用 | `\lstset` に `columns=fullflexible` を含める |
| 証明・長大な数式が1枚に収まらない | `[allowframebreaks]` を使用するか、意味的区切りでフレーム分割 |
| 箇条書きの記号を変更したい | `\setbeamertemplate{itemize items}[circle]` 等を使用(`enumitem` は禁止) |
---
# tabular Constraint
列プレアンブルには `l`, `c`, `r` のみ使用すること。`s` 等の未定義トークンは禁止(Illegal pream-token エラー)。
---
# Workflow
1. トピックを受け取る。
2. スライド構成を決定し、各フレームの目的を明確化する。
3. 上記すべてのルールを満たす単一 .tex ファイルを、省略なく生成する。
4. ファイル末尾が `\end{document}` で終わっていることを確認する。
Gem に登録するプロンプトでは、使用するテーマ、パッケージの指定、禁止事項を明示しておきます。これにより、LuaLaTeX でコンパイルエラーが起きにくいソースが安定して生成されます。
Gem に登録する場合は、Default Tools に Canvas を追加することを忘れずに。
プロンプトの書き方
単に「○○についてのスライドを作って」だと、Canvas の標準的なスライド形式(Google Slidesベース)で出力されることがあります。Beamer で出力させるには、プロンプトでその旨を指定します。
以下の内容で Beamer スライドの .tex ソースを作成してください。
テーマは Frankfurt、カラーテーマは whale、アスペクト比は 16:9 とします。
LuaLaTeX でコンパイルすることを前提とし、数式には mathtools を使用してください。
トピック: 確率微分方程式の基礎(伊藤積分の定義から伊藤の公式まで)
対象: 数学科修士1年のゼミ発表
スライド枚数: 10〜15枚程度
Gem を登録済みなら、トピックと対象だけ指定すれば十分です。
ローカルで利用する場合
Canvas で作ったソースをローカルでコンパイルする場合の環境構築について、macOS を例に説明します。
MacTeX のインストール
フルの MacTeX は重いうえ、余計なものが入ってくるので、ターミナルで使う場合は mactex-no-gui で十分です。Homebrew からインストールできます。
brew install --cask mactex-no-gui
ローカルでの注意点
1. LuaLaTeX でコンパイルする
Beamer で日本語を扱う場合、pdflatex ではなく lualatex を使います。
lualatex slide.tex
pdflatex slide.tex で実行すると、fontspec の読み込みで即エラーになります。
2. Noto Sans CJK JP フォントのインストール
プリアンブルで \babelfont[japanese]{rm}{Noto Sans CJK JP} を指定している場合、このフォントがシステムにインストールされている必要があります。
brew install --cask font-noto-sans-cjk-jp
フォントが見つからない場合、lualatex は以下のようなエラーを出します:
! Package fontspec Error: The font "Noto Sans CJK JP" cannot be found.
フォント名が環境によって微妙に異なることがあるので、以下のコマンドで確認します。
fc-list | grep "Noto Sans CJK"
3. CJK フォント指定を環境に合わせる
Gemini が生成したソースの CJK フォント指定が自分の環境と合わない場合は、fc-list の出力に合わせて書き換えてください。Noto Sans CJK JP ではなく Noto Sans JP のような名前で認識されている環境もあります。
メリットとデメリット
メリット
- AIらしさが脱色されている: Beamer のスライドは、テーマとカラースキームで外観が決まります。AIが生成したかどうかは見た目からは分からないです。
-
テキストベースで調整できる:
.texファイルをエディタで開いて直接編集できるので、「ここの行間を詰めたい」「この数式を別のフレームに移したい」といった微調整がコードの編集で完結します。 - TikZ で図が描ける: 状態遷移図、可換図式、ニューラルネットワークのアーキテクチャ図、回路図など、学術発表で必要な図をテキストベースで生成・修正できる。画像を別ツールで作って貼り付ける手間がない。
- 学会やゼミで Beamer スライドを使っていると、それだけで一定の信頼感が出ます(※イメージ)
デメリット
- Beamer は1スライドの領域が固定なので、内容が多すぎるとテキストや数式がスライドからはみ出します。
[allowframebreaks]で自動分割するか、手動でフレームを分ける必要があります。- ただし、これは Beamer を使う上での一般的な課題であり、検索すれば大抵の問題は解決策が見つかります。
- 複雑な TikZ や日本語フォントの表示が不完全なことがあります。あくまでパブリッシュするためには人間による検査と手直しが必要です。
- 全く LaTeX を触ったことがない人にとっては、
.texファイルの構造を理解するハードルがあります。特にTikZは独特なのでややこしく感じることもあります。ただ、Gemini がソースを生成してくれるので、ゼロから書く必要はなく、エラーが出たときにどこを直せばいいかがわかる程度の知識があれば運用できます。
今後の展望
現状は Gemini の Gem + Canvas という構成ですが、同様のアプローチは他の LLM でも可能です。
たとえば Claude Code のようなエージェント型ツールでは、Beamer 生成用のシステムプロンプトを skills として定義し、ローカルの LuaLaTeX 環境でコンパイルまで自動化するワークフローが考えられます。プロンプトを skills として公開すれば、誰でも同じ品質のセットアップを再利用できるようになります。
関連リソース
- 奥村晴彦・黒木裕介『LaTeX 美文書作成入門』(技術評論社) - 日本語での LaTeX 入門書の定番。Beamer についても解説がある
- Beamer User Guide(CTAN) - Beamer の公式ドキュメント
- TikZ & PGF Manual - TikZ の公式マニュアル
- Beamer - Overleaf, Online LaTeX Editor - Overleafのドキュメント
おわりに
Beamer + Gemini Canvas は、「AIにスライドの叩き台を作らせて、テキストベースで細かく仕上げる」というワークフローを実現します。出力されたスライドをテキストエディタで直接触れるのは、PowerPoint ベースのAIスライド生成にはない利点です。
数式や専門的な図が多い資料を作る機会がある方は、一度試してみてください。
