はじめに #
最近、Marpを使って資料を作成することがあり、その際に Marpが編集可能なPowerPointに出力できることに気がついたので試してみました。
Marpとは #
Marpとは、Markdownでスライド(PDF、PowerPoint)を作れるツールです。
以前からPowerPointに出力することはできましたが、 編集できない画像としてデータが出力されていました。
オプションで--pptx-editableを指定すれば
編集可能なデータでPowerPointを出力できるようです。
試してみる内容 #
VSCodeの拡張機能のMarp for VS Codeだけでは、 編集可能なPowerPointに出力することができませんでした。
しかし、OSに必要な設定をインストールしたくないので、 今回はコンテナを使って出力を試してみました。
実行環境について #
Windows上のVSCodeでMarkdownを作成後、 WSL上のDockerでmarp-cliコンテナを起動して Windows上のディレクトリをマウントさせて出力を実行してみます。
実行環境のバージョンについて #
- Windows Ver: 11(WSL有効済み)
- WSL Ver: 2.5.7.0
- Docker Ver: 28.3.3
- Image
- marpteam/marp-cli
- marp-team/marp-cli v4.2.1
- marpteam/marp-cli
コンテナImageの作成 #
公式が提供しているmarp-cliのImageには、編集可能なPowerPointを出力するために 必要なアプリケーション(libreoffice)が不足しているので、一旦Imageを作成してから実行します。
以下のようにDockerfileを作成後、ビルドしてImageを作成します。
Dockerfile
FROM marpteam/marp-cli:latest
# LibreOfficeをインストール
# キャッシュクリア: rm -rf /var/lib/apt/lists/*でイメージサイズを最適化
RUN apt-get update && apt-get install -y \
libreoffice \
&& rm -rf /var/lib/apt/lists/*
ビルド
docker build -t marp-cli-libreoffice .
もし、公式Imageをそのままの状態でオプション--pptx-editableを使用すると以下のような
エラーになり出力が失敗します:
[ ERROR ] Failed converting Markdown. (LibreOffice soffice binary could not be found.)
サンプルMarkdownの作成 #
サンプルでChatGPTに考えてもらった「美味しいカレーのレシピ」を使って 編集可能なPowerPointの出力を試してみます。
recipe.md
---
marp: true
title: 美味しいカレーのレシピ
theme: default
paginate: true
---
<!-- class: lead -->
# 美味しいカレーのレシピ
家庭でもプロの味を再現!
---
## 材料(4人分)
- 鶏もも肉: 300g
- 玉ねぎ: 2個
- にんじん: 1本
- じゃがいも: 2個
- カレールウ: 1/2箱(約100g)
- 水: 600ml
- サラダ油: 大さじ1
---
## 手順
1. 野菜と肉を一口大に切る
2. 玉ねぎを炒めて甘みを出す
3. 肉を加えて表面を焼く
4. 水を入れて煮込み、アクを取る
5. ルウを加えて溶かす
6. 弱火で10分煮込む
---
## コツ・ポイント
- 玉ねぎは**きつね色**になるまで炒める
- 隠し味に**リンゴやハチミツ**を少量
- ルウは火を止めてから少しずつ溶かす
---
## 完成!
🍛 美味しいカレーの出来上がり!
家族や友達と一緒に楽しもう!
変換を試してみる #
サンプルファイルのrecipe.mdを配置してディレクトリをマウントして変換を行ってみます。
docker run --rm -v $PWD:/home/marp/app/ marp-cli-libreoffice recipe.md --pptx --pptx-editable --allow-local-files
実際に試してみると以下のような結果になりました。
tech-0222@MSI:sample$ docker run --rm -v $PWD:/home/marp/app/ marp-cli-libreoffice recipe.md --pptx --pptx-editable --allow-local-files
[ INFO ] Converting 1 markdown...
[ WARN ] [EXPERIMENTAL] Converting to editable PPTX is experimental feature.
The output depends on LibreOffice and slide reproducibility is not
fully guaranteed.
[ WARN ] Insecure local file accessing is enabled for conversion from
recipe.md.
[ INFO ] recipe.md => recipe.pptx
tech-0222@MSI:sample$
変換後のファイルを確認すると、編集可能な状態でしたが、編集可能な単位が文書ではなく、 ワードやフレーズ単位で、ちょっと想像したものとは違っていました。
例えば、材料のページを見ると以下のようにバラバラな状態でした…
まとめ #
今回は、Marpで編集可能なPowerPointへの出力を試してみました。
コンテナ化も簡単でかなり気軽に利用できましたが、
公式でも--pptx-editableは実験段階(EXPERIMENTAL)と
なっているので、編集が簡単なものではありませんが、
PowerPointファイルで編集が可能になったのは便利だと感じました。
もっと編集単位がきれいになることに期待ですね。