mdslide
v0.2.2 Apple silicon 向けに公開中

Markdown を書けば、パワポができます。

書くのは Markdown だけ。番号・目次・ページ分割はツールが計算し、書式は手持ちの PowerPoint マスターをそのまま使います。隣のコンソールでは、Claude Code などが deck.md を直接編集できます。

macOS 13 以降 MIT License Markdown は Git でそのまま差分を追えます

mdslide の画面。左にスライドのサムネイル、中央にマスターの見た目のままのプレビュー、右に Markdown のエディタ

1. 書く

Markdown で書く

# 章と ## スライドを書くだけ。番号は書きません。

2. 整える

mdslide が整える

番号・目次・ページ分割は自動。見た目はマスターのまま。

3. 出す

pptx に書き出す

手持ちのマスターの書式で out/deck.pptx に。

起動から書き出しまで

資料を開き、書き、並べ替え、レイアウトとマスターを選んで、pptx を書き出すまでを 7 つの場面で紹介します。

mdslide — 四半期報告/deck.md
mdslide の起動画面。資料を開くボタンと、最近開いた資料の一覧
起動画面から始める。「Markdown を開く」で手元の資料を開き、「新しく作る」でフォルダを選んで空の資料を用意します。前回の資料は「最近開いたもの」からすぐに開けます。
資料を開いた画面。左にサムネイル、中央にマスターの装飾つきのプレビュー、右に Markdown のエディタ
資料を開く。左にスライドのサムネイル、中央にプレビュー、右に Markdown のエディタが並びます。プレビューは、取り込んだマスターのロゴや帯、フォントのまま描かれます。
エディタに箇条書きを 1 行足した画面。プレビューとゲージが更新され、保存済みになっている
Markdown で書く。エディタで箇条書きを足すと、プレビューと本文量のゲージがその場で追従します。番号は書かなくてよく、保存も自動です。
サムネイルをドラッグしている画面。動かすスライドが薄くなり、落とす位置に線が出ている
ドラッグで並べ替える。サムネイルを掴むと、一緒に動くスライドが薄くなり、落とす位置に線が出ます。並べ替えは Markdown の書き換えとして残り、番号は振り直されます。
画像のレイアウトを 1/2・左にした画面。図が左、本文が右に配置されている
レイアウトを選ぶ。プレビューの下で「画像」「1/2」「左」を選ぶと、見出しに {img=1/2 side=left} が書き込まれ、図が左、本文が右に並び替わります。
設定のマスター画面。保管フォルダにあるマスターの一覧と既定の選択
マスターを管理する。設定の「マスター」で pptx を取り込み、既定のマスターを選びます。必要なレイアウトが足りないときや、本文枠がヘッダ・フッタに重なるときは、ここで知らせます。
書き出しの画面。out/deck.pptx を生成したことが表示されている
pptx に書き出す。「書き出す」を押すと、python-pptx がマスターに流し込み、out/deck.pptx ができます。あとは PowerPoint で開いて仕上げます。

1 / 7

起動画面から始める

「Markdown を開く」で手元の資料を開き、「新しく作る」でフォルダを選んで空の資料を用意します。前回の資料は「最近開いたもの」からすぐに開けます。

汎用性より、報告資料の作業効率

スライドツールに必要な機能を全部持つのではなく、報告資料に必要な判断だけをツールに固定しました。

Markdown が唯一の正

左ペインの並べ替えもレイアウト変更も、すべて Markdown の書き換えとして実装しています。ラウンドトリップは保証され、差分は Git で読めます。

設定不要のレイアウト

章番号・スライド番号・アジェンダ・ページ分割は毎回導出します。書式はレイアウト名を規約どおりに付けた pptx マスターに任せ、ツールは「どこに何を流し込むか」だけを決めます。

コンソールが組み込み

中央下は本物のターミナルです。PATH にある Claude Code や Codex CLI、Gemini CLI などをそのフォルダで起動し、口語のメモから deck.md を書かせられます(エージェントは同梱していません)。エディタに未保存の変更が無ければ、エージェントが保存した内容はすぐプレビューに反映されます。

構成 Electron React 19 CodeMirror 6 + Vim xterm.js python-pptx settings.json

インストール

配布版は、ターミナルに 1 行貼るだけで入ります。Python 3 があれば、pptx の書き出しに使う python-pptx も一緒に入ります。

配布版
Terminal
curl -fsSL https://froggugugugu.github.io/mdslide/install.sh | bash

最新版を GitHub がリリースに記録した sha256 と照らし合わせてから「アプリケーション」(書き込めなければ ~/Applications)に入れ、python-pptx を mdslide 専用の環境に入れて、mdslide を開きます。Python 3 が無いときは python-pptx を飛ばすので、xcode-select --install のあとにもう一度実行してください。中身は GitHub の scripts/install.sh で読めます。

ブラウザで Releases の dmg から入れる場合は、「アプリケーション」に入れたあと、開く前に xattr -dr com.apple.quarantine /Applications/mdslide.app を実行してください。実行しないと「壊れているため開けません」と表示されます(アプリは壊れていません。「ゴミ箱に入れる」は押さずに閉じてください)。この場合 python-pptx は入らないので、アプリが起動時に出す案内に沿って入れてください。

ソースから
Terminal
git clone https://github.com/froggugugugu/mdslide.git && cd mdslide
npm ci
python3.12 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
npm run dev

Node 24.15 以上、Python 3.12、Xcode Command Line Tools が必要です(Command Line Tools の Python 3.9 には、requirements.txt の matplotlib と pillow が入りません)。npm ci が Electron 用に node-pty を再ビルドします。Intel の Mac はこの方法で動かしてください。

マスターを用意する

書式はすべて pptx のスライドマスターから取ります。どのレイアウトを何に使うかは名前で決まり、枠の位置・フォント・配色・ロゴはマスターから読み取ります(プレビューにも出ます)。Cover / Agenda / Section / Body-Text / Body-2col の 5 つを揃えれば、フォント・配色・ロゴは手持ちのまま使えます。

まずは見本で試す

python-pptx に同梱された Office の既定テンプレート(MIT License)から作った 16:9 の見本で、5 つのレイアウトに必要な枠だけを置いています。アプリにも同梱されていて、設定(⌘,)のマスターで「見本を取り込む」を押せば保管フォルダに入り、既定のマスターがまだ無ければ既定になります。PowerPoint で開いて配色やロゴを直し、上書き保存すれば自分のマスターになります。ダウンロードした場合は、資料フォルダに master.pptx という名前で置いても使えます。

sample-master.pptx
レイアウト名 役割 置くプレースホルダー
Cover表紙タイトル(ctrTitle か title)、サブタイトル(subTitle か body)
Agenda目次タイトル、本文(body か obj)1 つ
Section章の中表紙タイトル(本文は任意)
Body-Text本文タイトル、本文(body か obj)1 つ(枠は広めに)
Body-2col2 段組み(任意)タイトル、本文(body か obj)2 つを左右に

Body-2col 以外は必須です(Body-2col が無ければ、2 段を Body-Text の本文枠にまとめます)。画像用のレイアウトは要りません(ツールが Body-Text の上に配置します)。名前は大文字小文字と空白を区別せず、先頭が合えば通ります(Title Slide / 表紙 は Cover、TOC / 目次 は Agenda、Chapter / 中表紙 / 章 / Section Header は Section)。本文の枠は役割ごとに決まった数だけ置いてください。多いときは面積の大きい枠を本文に使います。本文枠はヘッダやフッタと重ならない位置に置きます。日付・フッター・スライド番号のプレースホルダーは、書き出しでスライドに複製されます。

手持ちのパワポから作る
  1. PowerPoint で「表示」→「スライドマスター」を開きます。左に並ぶのがレイアウトです。
  2. 表紙に使うレイアウトを右クリック →「レイアウト名の変更」で Cover に。同じ要領で Agenda Section Body-Text Body-2col を揃えます。無いものは「レイアウトの複製」で作り、「プレースホルダーの挿入」→「コンテンツ」で本文枠を置きます(Agenda は Body-Text の複製で十分です)。
  3. 通常のスライドを全部削除して master.pptx として保存し、資料フォルダに置くか、設定のマスターで取り込みます。「不足」が出なければ完成です。

いま使っているスライドを土台にすると書式がそのまま残ります。「見本を取り込む」で保管フォルダ(既定 ~/.config/mdslide/masters/)に入った見本を横に開き、レイアウト名と枠の構成を見比べながら名前を合わせてください。詳しい手順はガイドにあります。

AI に頼む場合のプロンプト

Claude Code や ChatGPT にテンプレートの pptx を渡して、そのまま貼り付けます。1 行目のファイル名だけ書き換えてください。python-pptx が使える環境ならスクリプトで、使えなければ PowerPoint での手順を返します。

Prompt
手元の PowerPoint テンプレート(ファイル名: ここに書く.pptx)を、mdslide 用のスライドマスター master.pptx に変換してください。

前提
- mdslide は Markdown からスライドを生成するツールで、書式(フォント・配色・背景・ロゴ・フッター)はこの master.pptx のスライドマスターとレイアウトから取ります。元ファイルのテーマはそのまま残し、新しいテーマは作らないでください。
- レイアウトは名前で役割を判定します。名前は次の 5 つに揃えてください(大文字小文字と空白は無視されます)。

必要なレイアウトとプレースホルダー
- Cover: 表紙。タイトル(ctrTitle か title)とサブタイトル(subTitle か body)を 1 つずつ
- Agenda: 目次。タイトル 1 つと本文(body か obj)1 つ。本文には箇条書きが入ります
- Section: 章の中表紙。タイトル 1 つ(本文は無くてもよい)
- Body-Text: 本文。タイトル 1 つと本文(body か obj)1 つ。本文枠はできるだけ広く
- Body-2col: 2 段組み。タイトル 1 つと本文(body か obj)2 つを左右に
- 本文の枠は、役割ごとに上の数だけにしてください(説明用や小見出しの枠が残っていると、mdslide は面積の大きい枠を本文に使います)。
- 画像用のレイアウトは不要です(ツールが Body-Text の上に画像を配置します)。日付・フッター・スライド番号のプレースホルダーは、元ファイルにあれば各レイアウトに残してください(mdslide が書き出しでスライドに複製します)。

作業
1. 元ファイルのスライドマスターにあるレイアウトを一覧し、役割の近いもの(例: Title Slide → Cover、Title and Content → Body-Text、Two Content → Body-2col、Section Header → Section)を選んで上の名前に変更してください。
2. 該当するものが無い役割は、近いレイアウトを複製して作ってください。Agenda は Body-Text の複製でかまいません。
3. 上の 5 つ以外のレイアウトは残してもかまいません。ただし名前が Title Slide、Section、Chapter、TOC、表紙、目次、中表紙、章 で始まるものは同じ役割として扱われ、先にあるほうが使われるので、名前を変えてください。
4. 通常のスライド(ページ)はすべて削除し、マスターとレイアウトだけのファイルにしてください。
5. master.pptx として保存し、最後に各レイアウトの名前とプレースホルダー(種類・idx・位置)を一覧で出力してください。

進め方
- python-pptx が使えるならスクリプトで行い、そのスクリプトも示してください。python-pptx でできるのはレイアウトの名前変更と、使わないレイアウトの削除(prs.slide_layouts.remove)までです。スライドの削除(prs.slides._sldIdLst から外して prs.part.drop_rel する)とレイアウトの複製は XML 操作が必要です。難しければ、PowerPoint の「表示 > スライドマスター」で行う手順(右クリック > レイアウト名の変更、レイアウトの複製、プレースホルダーの挿入)を代わりに示してください。

詳しい手順と確認のしかたは マスター pptx の作り方 にまとめています。