JINSテックブログ
🙌

Markdown + Cursor でPDF生成チャレンジ

に公開

この投稿は、2025年JINSのアドベントカレンダー10日目の記事です。

こんにちは。JINSのITデジタル部に所属している Tamakan です。
みなさん普段あまり触らないツールって地味にストレスですよね?私もこれまでの人生であまりパワポを触る機会が無かったので、メニューを選ぶだけで迷子になったりします。

パワポ操作で迷子になっている時間を減らしたい。
というわけで今回のテーマは…


なぜ PowerPoint を捨てたいのか?

資料作りにかける時間を少しでも減らしたい。
だって、パワポって

  • 余白ズレる
  • 画像のサイズ毎回直すの面倒
  • スタイル統一に気づけば1時間溶ける

「もう!プロンプトで指示して勝手にPDFになってほしい!」

そう思ったのがきっかけです。
今どき生成AIもあるし、もっと効率化できるはず! と。


Marpとは?

Marpについて軽く説明しておきます。
Marp(Markdown Presentation Ecosystem)は、Markdownでスライド資料を作れるツールです。

何ができるの?

  • Markdownでスライドを書ける
    普通のMarkdown記法でスライドが作れます。--- でスライドを区切るだけ。
  • PDFやHTMLに変換できる
    コマンド一発でPDF化できます。プレゼン用のHTMLも生成可能。
  • テーマが選べる
    デフォルトテーマから選んだり、自分でCSSを書いてカスタマイズも可能。


Markdown記法で書いて変換するだけ。

なぜMarpを選んだか

パワポやGoogleスライドと比べて:

項目 Marp パワポ/スライド
編集方法 テキストエディタ GUI操作
バージョン管理 Git管理すれば差分が見やすい ファイル単位でしか管理できない
自動化 コマンドで一発変換 手動操作が必要
AIとの相性 テキストなので生成しやすい GUI操作はAIが苦手

特に 「テキストで書ける」 のがポイント。CursorのAIに「スライド作って」って言えば、Markdown形式でサクッと生成してくれます。Cursorでなくともお好みのエディタで良いと思います。

パワポだと「ここにテキストボックス追加して、フォントサイズ20にして…」みたいな指示が必要だけど、Marpなら「## 見出し」って書くだけで済む。この差が大きい!
ちなみに、NotebookLMによるPDF生成も試してみましたが、ぱっと見は良い感じにアウトプットされるものの編集できない(2025/12時点)のが僕にとっては致命的でした。今後に期待したいところ。

どんな資料に向いてる?

  • ✅ テキスト主体の資料(アジェンダ、議事録、技術資料など)
  • ✅ 同じレイアウトで量産する資料
  • ✅ 更新頻度が高い資料
  • ❌ ビジュアル重視の営業資料(画像の細かい配置が必要なもの)

やってみた構成

今回採用したワークフローはこんな感じ👇

  1. Marp形式のMarkdownで資料を書く
    →スライドっぽい見た目も書ける
  2. Cursorで執筆効率アップ
    →レイアウトや画像挿入もAIに手伝ってもらう
  3. Marp CLI or VS Code拡張でPDF出力
    →ほぼワンボタンでPDF生成!

しかもMarkdownなのでGit管理しやすいし、修正も楽。
テキスト主体の資料ならかなり相性が良いと感じました。

ステップ1: 環境セットアップ

まずはMarp CLIをインストール。

npm init -y
npm install --save-dev @marp-team/marp-cli

これで準備完了。グローバルに入れたい場合は -g オプション付きでインストールしてもOKです。

ステップ2: Marpファイルの基本構造

Marp形式のMarkdownファイルを作成します。ファイル名は slides.marp.md みたいな感じで。

---
marp: true
theme: default
paginate: true
---

# タイトルスライド
サブタイトルとか

---

## 2枚目のスライド
- 箇条書き1
- 箇条書き2

---

## 3枚目のスライド
本文テキスト

ポイントは:

  • ファイルの先頭に --- で囲んだフロントマターを書く
  • marp: true が必須(これがないとMarpとして認識されない)
  • paginate: true でページ番号が自動で付く
  • スライドの区切りは --- で表現

これだけでスライド形式の見た目になります。シンプル!

ステップ3: CursorでAIに手伝ってもらう

ここからが本番。CursorのAI機能をフル活用します。

よく使ったパターン:

  1. スライドの雛形を生成してもらう

    「マイクロサービス移行の課題を3枚のスライドでまとめて」
    

    みたいにプロンプトを投げると、Marp形式でサクッと生成してくれます。

  2. 箇条書きの整形
    マルチカーソルで同じフォーマットの箇条書きを一気に選択して、AIに「もっと簡潔に」とか指示すると、統一感のある文章に整えてくれます。

  3. 画像の挿入

    「このスライドにアーキテクチャ図を追加して。画像パスは ./images/arch.png で」
    

    みたいに指示すると、適切な位置に画像タグを入れてくれます。

  4. レイアウト調整
    スライドが長すぎる時は「この内容を2枚のスライドに分割して」とお願いすると、自然な区切りで分けてくれます。

CursorのAIはMarkdownの構造を理解しているので、Marp形式でもちゃんと対応してくれるのが助かります。

ステップ4: PDF出力

いよいよPDF化です。コマンド一発で完了。

npx marp slides.marp.md --pdf --allow-local-files

--allow-local-files は重要です。これがないとローカルの画像ファイルがPDFに含まれません。最初これ忘れて画像が全部消えてて焦りました😅

出力されるPDFは slides.pdf という名前で、元のMarkdownファイルと同じディレクトリに生成されます。

VS Codeを使っている場合:
Marp for VS Codeという拡張機能を入れると、エディタ内でプレビューしながら編集できて便利です。PDF出力も右クリックメニューから一発でできます。

実際の作業フロー

  1. Cursorで slides.marp.md を開く
  2. AIに「今日の定例のアジェンダスライド作って」と依頼
  3. 生成された内容を確認・微調整
  4. npx marp slides.marp.md --pdf --allow-local-files でPDF生成
  5. 完成!

この流れなら、パワポで1時間かかってた資料が10分でできちゃいます。


実際に苦労したところ 😇

もちろん課題もありました。

苦労ポイント 内容
画像の扱い サイズが台紙に合わず、手で微調整することに…
レイアウト調整 思った位置に置けないことが多い、微修正が地味に大変
ページ構成が複雑な資料 AI任せだけでは厳しい、結局人の判断が必要

特に 「画像の見栄えを整える」系はAIがまだ苦手な印象
結局、指示を試行錯誤するのに時間をかけちゃいました。


それでもメリットは大きい

  • 同じレイアウトで流していく資料は超楽
  • 修正が入っても即対応できる
  • スタイルがMarkdownに紐付くので統一感出しやすい
  • 最終的なPDF出力までの操作が少ない

更新頻度が高い資料や、情報が主役のドキュメント」には最強。

逆に、ビジュアルが命の営業資料には向かない印象。


今後の改善アイデア

次にこんなことを試したいと思っています👇

  • 画像の 自動リサイズ&レイアウトをAIに任せられるよう工夫
  • テンプレートを充実させる(テーマ性のある資料にも対応)
  • GitHub Actions でプッシュしたら自動でPDF生成

理想は…

「書く→コミット→勝手にきれいなPDFが手元に」

ここまで行けば、資料作りのストレスは一気に減らせそう。


まとめ

Point メッセージ
AI×Markdownは相性がとても良い 生成効率UPが期待できる
画像多い資料はまだまだ厳しい 正確なレイアウト指示が必要
標準化されたような資料には向く 更新や再利用がしやすい

「全部AIでやって!」はまだ難しいけど、
定型文書の効率化には めちゃ使える と感じました。

JINSテックブログ
JINSテックブログ

Discussion