コンテンツにスキップ

Markdown 仕様

figdeck が対応する Markdown 記法の仕様です。

---(thematicBreak、水平線)でスライドを区切ります。

# スライド1
内容
---
# スライド2
内容

YAML frontmatter を使用してスライドの設定を行えます。設定には2種類あります:

ファイルの先頭(コンテンツの前)に配置した設定は、すべてのスライドにデフォルトとして適用されます。

---
figdeck: true
background: "#1a1a2e"
color: "#ffffff"
transition: dissolve
---
# 最初のスライド
---
## 2番目のスライド

この例では、すべてのスライドにダークな背景、白いテキスト、dissolve トランジションが適用されます。

スライド区切り(---)の直後に配置した設定は、そのスライドのみに適用され、グローバル設定を上書きします。

---
background: "#1a1a2e"
transition: dissolve
---
# 最初のスライド
グローバル設定を使用(ダーク背景、dissolve)
---
background: "#ffffff"
color: "#000000"
transition: slide-from-right
---
## 2番目のスライド
このスライドは白い背景、黒いテキスト、右からスライドイン
---
## 3番目のスライド
グローバル設定に戻る(ダーク背景、dissolve)
設定説明
figdeckVSCode 拡張機能の機能を有効化(true/false
cover1枚目を表紙として扱う(true/false、デフォルト: true
background統合背景設定:色、グラデーション、画像、テンプレート、Figma コンポーネント
colorベーステキスト色
headings見出しスタイル(h1, h2, h3, h4)
paragraphs段落スタイル
bullets箇条書きスタイル
codeコードブロックスタイル
fontsカスタムフォント設定
align水平方向の配置(left, center, right)
valign垂直方向の配置(top, middle, bottom)
transitionスライドトランジションアニメーション
slideNumberスライド番号設定
titlePrefixタイトルプレフィックスコンポーネント

各設定の詳細は、以下の各セクションを参照してください。

# で始まる見出しはタイトルスライドを作成します。 フォントサイズは 64px で大きく表示されます。

# プレゼンテーションタイトル

## で始まる見出しはコンテンツスライドを作成します。 フォントサイズは 48px です。

## アジェンダ

H3 以下の見出しはスライド内のサブ見出しとして表示されます。

段落テキストはスライド上の本文コンテンツとして表示されます。 複数の段落は改行で区切られて表示されます。

## スライドタイトル
これは本文です。
これも本文に追加されます。

リスト(-, *, + または数字)は箇条書きとして表示されます。

表示時に が先頭に付きます。

## 特徴
- 高速
- シンプル
- 拡張性

数字で始まるリストは番号付きリストとして表示されます。 start 属性で開始番号を指定できます。

1. 最初のステップ
2. 次のステップ
3. 最後のステップ

2スペースのインデントでリストをネストできます。ネストレベルに応じてバレットマーカーが変わります:

  • レベル 0: (U+2022)
  • レベル 1: (U+25E6)
  • レベル 2: (U+25AA)
  • レベル 3+: (U+2013)
## ネストの例
- 親項目
- 子項目(2スペースインデント)
- 孫項目
- ひ孫項目
- 親レベルに戻る

YAML frontmatter の spacing プロパティで箇条書き項目間の間隔をカスタマイズできます:

---
bullets:
spacing: 16 # 箇条書き項目間の間隔(デフォルト: 8px)
---
## 広い間隔
- 項目 1
- 項目 2
- 項目 3

spacing の値はピクセル単位です。デフォルトは 8px です。

テキスト内で以下の書式を使用できます:

  • 太字: **テキスト** または __テキスト__
  • イタリック: *テキスト* または _テキスト_
  • 取り消し線: ~~テキスト~~ (GFM)
  • インラインコード: `コード`
  • リンク: [テキスト](URL)

これらは組み合わせることも可能です:

これは **太字***イタリック* と ~~取り消し線~~ のテスト。
`const x = 1` はインラインコードです。
[Figmaへ](https://figma.com) のリンク。

> で始まる行は引用ブロックとして表示されます。 左側にグレーのボーダーが付き、やや淡い色で表示されます。

> これは引用文です。
> 複数行にまたがることもできます。

コールアウトは、メモ、ヒント、警告、注意などのスタイル付きメッセージブロックです。 :::note:::tip:::warning:::caution ディレクティブ構文を使用します:

:::note
これは重要な情報を含むメモです。
:::
:::tip
ユーザーへの便利なヒントです。
:::
:::warning
この機能には注意が必要です。
:::
:::caution
この操作は元に戻せません!
:::

各コールアウトタイプは異なる色で表示されます:

  • Note (青): 一般的な情報やコンテキスト
  • Tip (緑): 便利な提案やベストプラクティス
  • Warning (オレンジ): 注意が必要な重要な情報
  • Caution (赤): 潜在的な問題に関する重要な警告

コールアウトは太字、イタリック、リンク、インラインコードなどのインライン書式をサポートしています:

:::tip
**デバッグ**には `console.log()` を使用してください。
詳細は[ドキュメント](https://example.com)を参照してください。
:::

background プロパティは、すべての背景タイプを統合した設定です。文字列形式(自動検出)またはオブジェクト形式(明示的)で指定できます。

---
# 単色(16進数)
background: "#1a1a2e"
# グラデーション
background: "#0d1117:0%,#1f2937:50%,#58a6ff:100%@45"
# 画像(ローカルパスまたはURL)
background: "./bg.png"
background: "https://example.com/bg.png"
# Figma コンポーネント(node-id 付きURL)
background: "https://www.figma.com/design/YOUR_FILE_KEY?node-id=123-456"
---
---
background:
color: "#1a1a2e" # 単色
gradient: "#000:0%,#fff:100%@45" # グラデーション
template: "Dark Mode" # Figma ペイントスタイル名
image: "./bg.png" # 画像パスまたはURL
component: # Figma コンポーネント
link: "https://www.figma.com/design/xxx?node-id=123-456"
fit: "cover" # cover | contain | stretch
align: "center" # center | top-left | top-right | bottom-left | bottom-right
opacity: 0.8 # 0-1
---

コンポーネントは color/gradient/image 背景と組み合わせて使用できます。コンポーネントは上位レイヤーとして描画されます:

---
background:
color: "#1a1a2e"
component:
link: "https://www.figma.com/design/xxx?node-id=123-456"
opacity: 0.6
---

オブジェクト形式で複数のプロパティを指定した場合の優先順位: template > gradient > color > image

コンポーネントの fit オプション

Section titled “コンポーネントの fit オプション”
説明
coverスライド全体を覆うようにスケール、はみ出し部分はクリップ(デフォルト)
containスライド内に収まるようにスケール、余白が生じる場合あり
stretchスライドサイズに合わせて引き伸ばし、アスペクト比は維持されない

コンポーネントの align オプション

Section titled “コンポーネントの align オプション”

cover または contain 使用時に配置位置を指定できます:

説明
centerスライドの中央(デフォルト)
top-left左上隅
top-right右上隅
bottom-left左下隅
bottom-right右下隅
  • コンポーネントは同一 Figma ファイル内のノードのみ対応(MVP 制限)
  • 対応ノードタイプ: Component, ComponentSet, Frame, Instance
  • 推奨背景サイズ: 1920x1080(スライドサイズ)

![alt](url) 形式で画像を挿入できます。

![サンプル画像](https://example.com/image.png)

リモート URL(http:// または https:// で始まる)はプラグイン側でフェッチし、createImage に渡して表示します(PNG/JPEG/GIF のみ)。

![ローカル画像](./images/photo.jpg)
![絶対パス](../assets/logo.png)

ローカルファイルパス(URL スキームなし)は CLI が自動的に検出し、ファイルを読み込んで base64 エンコードしてプラグインに送信します。 パスは Markdown ファイルからの相対パスとして解決されます。

対応フォーマット: .jpg, .jpeg, .png, .gif

サイズ制限: デフォルトで 5MB まで。これを超えるファイルはスキップされ、警告が表示されます。

alt テキスト内で Marp 互換の構文を使用して画像サイズを指定できます:

![w:400](./image.png) # 幅 400px(高さは自動計算)
![h:300](./image.png) # 高さ 300px(幅は自動計算)
![w:400 h:300](./image.png) # 固定サイズ 400x300px
![w:50%](./image.png) # スライド幅の 50%(960px)
![w:400 ロゴ](./image.png) # サイズ指定 + alt テキスト

動作:

  • w: のみ: アスペクト比を維持して高さを自動計算
  • h: のみ: アスペクト比を維持して幅を自動計算
  • 両方指定: 指定サイズで表示(アスペクト比は維持されない場合あり)
  • パーセンテージ: スライド幅(1920px)を基準に計算
  • サイズ未指定: デフォルトの最大制約(400x300px)を適用

画像をスライド上の特定の位置に配置するために、絶対座標 x/y を指定できます:

![x:100 y:200](./image.png) # (100px, 200px) の位置に配置
![x:50% y:50%](./image.png) # スライドの中央(パーセンテージ)
![w:300 x:100 y:200](./image.png) # サイズ + 位置
![w:300 x:100 y:200 商品](./image.png) # サイズ + 位置 + alt テキスト

動作:

  • x: または y: を指定すると、画像は自動レイアウトフローではなく絶対座標に配置されます
  • x: のみ指定した場合、y は 0 になります(逆も同様)
  • パーセンテージ: x: はスライド幅(1920px)、y: はスライド高さ(1080px)を基準に計算
  • 例: x:50% = 960px, y:50% = 540px

ユースケース:

  • 背景画像の上に画像をオーバーレイ
  • 横並びレイアウト
  • ロゴやアイコンの精密な配置
  • 複数画像の複雑なコンポジション

画像の読み込みに失敗した場合(ファイルが見つからない、ネットワークエラーなど)は、プレースホルダーとして表示されます。 alt テキストまたは URL がラベルとして表示されます。

:::figma ブロックを使用すると、Figma ノードへのリンクカードをスライドに埋め込めます。 同一ファイル内のノードの場合、クリックするとそのノードに直接ジャンプします。

:::figma
link=https://www.figma.com/file/xxx/name?node-id=1234-5678
:::
プロパティ必須説明
linkFigma の URL(node-id パラメータ付き)
x-カードの X 座標(省略時は自動配置)
y-カードの Y 座標(省略時は自動配置)
hideLink-プレビュー下のリンクラベルを非表示(true
text.*-テキストレイヤーの上書き(後述)

text.* プロパティを使用して、Figma コンポーネント内のテキストコンテンツを上書きできます。 * はレイヤー名に置き換えます(大文字小文字を区別しません)。

:::figma
link=https://www.figma.com/file/xxx?node-id=1234-5678
text.title=カート機能
text.body=カートと確認フローに使用します。
:::

リッチテキストフォーマット がテキスト上書き内でサポートされています:

:::figma
link=https://www.figma.com/file/xxx?node-id=1234-5678
text.description=これは **太字***イタリック* のテキストで、[リンク](https://example.com)も含みます。
:::

複数行テキスト と箇条書き:

:::figma
link=https://www.figma.com/file/xxx?node-id=1234-5678
text.content=
- バリエーション A
- バリエーション B
- バリエーション C
:::

テキスト上書きでサポートされるフォーマット:

  • 太字: **テキスト**
  • イタリック: *テキスト*
  • 取り消し線: ~~テキスト~~
  • リンク: [テキスト](url)
  • 箇条書き: - 項目
  • 引用: > 引用 (引用符付きイタリックとして表示)

注意: コードブロックは Figma テキストレイヤーの制限により、テキスト上書きではサポートされていません。

:::figma
link=https://www.figma.com/file/xxx?node-id=1234-5678
x=160
y=300
:::
  • 同一ファイル: node-id が現在のファイル内に存在する場合、コンポーネントがクローンされプレビューとして表示されます
  • 他ファイル: 異なるファイルの場合は URL ハイパーリンク付きのリンクカードを表示します
  • ノード未検出: 指定された node-id が見つからない場合は警告を表示し、URL フォールバックを使用します
  • テキスト上書き: text.* レイヤー名に一致するテキストレイヤーは、指定されたコンテンツとフォーマットで更新されます
  • https://www.figma.com/file/<fileKey>/<name>?node-id=<nodeId>
  • https://www.figma.com/design/<fileKey>/<name>?node-id=<nodeId>
  • https://figma.com/file/<fileKey>?node-id=<nodeId>

node-id パラメータは 1234-5678 または 1234:5678、URL エンコード形式 1%3A2 いずれも対応しています。

GitHub Flavored Markdown のテーブル記法をサポートしています。

| 機能 | 説明 |
|------|------|
| パース | Markdown を解析 |
| 変換 | Figma Slides に変換 |

アラインメントも指定可能です:

| 左寄せ | 中央 | 右寄せ |
|:-------|:----:|-------:|
| テキスト | テキスト | 数値 |

:::columns ブロックを使用して、複数カラムのレイアウト(2〜4カラム)を作成できます。

:::columns
:::column
左カラムのコンテンツ
:::column
右カラムのコンテンツ
:::
プロパティデフォルト説明
gap32カラム間の隙間(ピクセル、最大: 200)
width均等カラム幅(fr、%、px 値を / で区切る)
:::columns
:::column
### 機能
- 高速レンダリング
- ライブプレビュー
- 簡単操作
:::column
### メリット
- 時間短縮
- 一貫したデザイン
- バージョン管理対応
:::
:::columns
:::column
**ステップ1**
企画
:::column
**ステップ2**
開発
:::column
**ステップ3**
展開
:::
:::columns
:::column
Q1: ¥1.2億
:::column
Q2: ¥1.8億
:::column
Q3: ¥2.1億
:::column
Q4: ¥2.5億
:::
:::columns gap=64
:::column
より広い
:::column
スペース
:::

fr(比率単位)、%(パーセント)、px(ピクセル)が使用可能:

:::columns width=1fr/2fr
:::column
### サイドバー (1/3)
ナビゲーション
:::column
### メインコンテンツ (2/3)
主要コンテンツエリア
:::
:::columns width=30%/70%
:::column
サイドバー
:::column
メインコンテンツ
:::

カラム内でサポートされるコンテンツ

Section titled “カラム内でサポートされるコンテンツ”

各カラムには以下のコンテンツを含めることができます:

  • インラインフォーマット付きの段落(太字斜体コードリンク
  • 箇条書きリスト(順序付き・順序なし)
  • 構文ハイライト付きコードブロック
  • 画像(サイズ制約あり)
  • テーブル
  • 引用ブロック
  • 見出し(H3、H4)
  • 2カラム未満の場合、コンテンツは線形にレンダリングされます(カラムなし)
  • 4カラムを超える場合、最初の4カラムのみ使用されます
  • カラム幅が最小値(320px)を下回る場合、カラムは垂直に積み重ねられます

GFM の脚注記法をサポートしています。 脚注はスライドの下部に小さいフォントで表示されます。

## 研究結果
最新の研究によると[^1]、これは重要な発見です[^2]。
[^1]: Smith et al. (2024) Journal of Science
[^2]: 詳細は付録Aを参照

数字の代わりに名前を使用することもできます:

この機能は便利です[^note]。
[^note]: ユーザビリティ調査により検証済み
  • 本文中の脚注参照は [1][note] のように角括弧で表示されます(Figma Slides は上付き文字をサポートしていないため)
  • 脚注定義はスライド下部に水平線で区切られて表示されます
  • 脚注内でも 太字イタリック などのインラインフォーマットが使用できます

スライド間のトランジションアニメーションを設定できます。

---
transition: dissolve
---

duration を指定することもできます:

---
transition: slide-from-right 0.5
---
---
transition:
style: slide-from-right # アニメーションスタイル
duration: 0.5 # 再生時間(秒)0.01〜10
curve: ease-out # イージングカーブ
timing:
type: after-delay # on-click または after-delay
delay: 2 # 自動再生までの待機時間(秒)0〜30
---

ファイル先頭の frontmatter でグローバルトランジションを設定できます:

---
transition:
style: dissolve
duration: 0.5
curve: ease-out
---
# タイトルスライド
---
## コンテンツスライド

この場合、すべてのスライドに dissolve トランジションが適用されます。

グローバル設定を個別のスライドで上書きできます:

---
transition: dissolve
---
# タイトル
---
transition: slide-from-right
---
## このスライドだけ右からスライドイン

transition: none でトランジションを無効化できます。

カテゴリスタイル
基本none, dissolve, smart-animate
スライドインslide-from-left, slide-from-right, slide-from-top, slide-from-bottom
プッシュpush-from-left, push-from-right, push-from-top, push-from-bottom
ムーブインmove-from-left, move-from-right, move-from-top, move-from-bottom
スライドアウトslide-out-to-left, slide-out-to-right, slide-out-to-top, slide-out-to-bottom
ムーブアウトmove-out-to-left, move-out-to-right, move-out-to-top, move-out-to-bottom
カーブ説明
ease-inゆっくり始まり加速
ease-out減速して終わる
ease-in-and-outゆっくり始まりゆっくり終わる
linear一定速度
gentleなめらか
quick素早く
bouncy弾む
slowゆっくり
タイプ説明
on-clickクリックで次のスライドへ(デフォルト)
after-delay指定秒数後に自動で次のスライドへ

注意: after-delay はプレゼンテーションモードでのみ動作します。

スライド内の各テキスト要素にカスタムフォントファミリーを設定できます。

---
fonts:
h1: "Roboto" # ショートハンド: ファミリー名のみ("Regular" スタイルを使用)
h2: "Open Sans"
body: "Source Sans Pro"
bullets: "Inter"
---

フォントバリアントを完全に制御するには、オブジェクト構文を使用します:

---
fonts:
h1:
family: "Roboto"
style: "Medium" # ベーススタイル(デフォルト: "Regular")
bold: "Bold" # 太字バリアント(デフォルト: "Bold")
italic: "Italic" # イタリックバリアント(デフォルト: "Italic")
boldItalic: "Bold Italic" # 太字イタリックバリアント
body:
family: "Source Sans Pro"
style: "Regular"
bold: "Semibold" # カスタム太字バリアント
---
要素説明
h1H1 見出し(タイトルスライド)
h2H2 見出し(コンテンツスライドタイトル)
h3H3 サブ見出し
h4H4 サブ見出し
body本文段落
bullets箇条書き項目
codeコードブロックとインラインコード
プロパティ説明デフォルト
familyフォントファミリー名(例: “Roboto”)必須
styleベースフォントスタイル”Regular”
bold太字バリアントのスタイル名”Bold”
italicイタリックバリアントのスタイル名”Italic”
boldItalic太字イタリックバリアントのスタイル名”Bold Italic”

リクエストされたフォントが Figma で利用できない場合:

  1. 警告通知が表示されます
  2. プラグインはデフォルトフォントの Inter にフォールバックします
  3. スライドは正常にレンダリングを続けます

スライド毎にフォントを上書きできます:

---
fonts:
h1: "Roboto"
body: "Source Sans Pro"
---
# デフォルトフォントのスライド
---
fonts:
h1: "Georgia"
body: "Times New Roman"
---
# このスライドは異なるフォントを使用

``` で囲まれたブロックはコードブロックとして表示されます。 言語を指定するとシンタックスハイライトが適用されます。

` ```typescript
const message: string = "Hello, World!";
console.log(message);
` ```

対応言語: TypeScript, JavaScript, Python, Bash, JSON, CSS, HTML, XML, Go, Rust, SQL

---
# figdeck プレゼンテーション
Markdown から Figma Slides へ
---
## 目次
- 概要
- 機能紹介
- デモ
- まとめ
---
## 概要
figdeck は Markdown ファイルを
Figma Slides に変換するツールです。
CLI と Figma Plugin が連携して動作します。
---
## 機能
- Markdown パース
- WebSocket 通信
- 自動スライド生成
---
# ありがとうございました
質問はありますか?

この例は以下の 5 つのスライドを生成します:

  1. タイトルスライド「figdeck プレゼンテーション」
  2. コンテンツスライド「目次」(箇条書き4項目)
  3. コンテンツスライド「概要」(本文2段落)
  4. コンテンツスライド「機能」(箇条書き3項目)
  5. タイトルスライド「ありがとうございました」
記法対応状況備考
見出し (H1-H4)H1/H2はスライドタイトル
段落
箇条書き順序付き/なし両対応
太字
イタリック
取り消し線GFM
インラインコード背景色付き
リンククリック可能
引用左ボーダー付き
コードブロックシンタックスハイライト
テーブルGFM、アラインメント対応
画像ローカル・リモート対応
Figma リンク:::figma ブロック
align/valignスライド配置設定
脚注GFM、スライド下部に表示
トランジションスライド切り替えアニメーション
カスタムフォント要素ごとのフォントファミリー
背景コンポーネントFigma コンポーネント/フレームを背景に