Skip to content

設定 ​

設定する場所は 3 つです。プロジェクトの dek.toml、各デッキの script.md の frontmatter、そしてデッキ内の任意の voice/ ファイル群。

ディレクトリ構成 ​

my-talks/
├── dek.toml
├── .gitignore
├── .rumdl.toml
├── theme.css
├── tsconfig.json
├── AGENTS.md
├── assets/
├── refs/                          # gitignore される。[refs] から取り直せる
│   └── owner/repo/deck/
├── decks/
│   └── 2026-04-vite/
│       ├── script.md
│       ├── theme.css
│       ├── voice/                 # 任意
│       │   ├── voice.toml
│       │   ├── dict.toml
│       │   └── pin/
│       ├── slides/
│       ├── assets/
│       ├── dist/
│       │   ├── 2026-04-vite.html
│       │   ├── 2026-04-vite.png
│       │   ├── 2026-04-vite.pdf
│       │   ├── 2026-04-vite.mp4
│       │   ├── 2026-04-vite.vtt
│       │   ├── 2026-04-vite.chapters.txt
│       │   └── 2026-04-vite.credits.txt
│       └── .cache/
│           ├── voice/
│           ├── video/
│           └── shots/
└── .dek/
    ├── schema.json
    ├── slide.d.ts
    └── server.json                # 開発サーバの起動中だけ

プロジェクトとデッキの境界はプロジェクトとデッキで説明しています。

dek.toml ​

toml
# dek project
url = "https://example.com/talks/"
max_classes = 40
cjk_per_minute = 300
latin_per_minute = 130

[voice]
engine = "voicevox"
speaker = "ずんだもん/ノーマル"
speed = 1.0

[refs]
"hajimism/dek/why-dek" = "89fbd5a0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6"
キー既定役割
urlなしdist/ を公開する http(s) の絶対 URL。あれば dekc build が og:url と 1 枚目のスライドの og:image を書く。--url が優先される。Web で公開するを参照
max_classesなし新しいデッキの max_classes の初期値。frontmatter を参照
cjk_per_minuteなし新しいデッキの cjk_per_minute の初期値
latin_per_minuteなし新しいデッキの latin_per_minute の初期値
voice.engine"voicevox"エンジン名(voicevox、aivis、coeiroink、sharevox)、エンジン名とローカルのポート(voicevox:50021)、またはベース URL
voice.speaker[voice] があるとき必須話者。名前/スタイル の形
voice.speed1.0話速
refsなしref(owner/repo/deck)ごとに、固定したコミットの40桁の sha。dekc ref が書く。ref を参照

dek は知らないキーを無視し、lint がそれぞれを DEK008 として、おそらく意図したキーと一緒に示します。

max_classes、cjk_per_minute、latin_per_minute、[voice] は初期値です。dekc new は前の 3 つを新しいデッキの frontmatter へ、[voice] を voice/voice.toml へコピーし、以後デッキは自分のコピーだけを読みます。dek.toml で変えても、作成済みのデッキは変わりません。dek.toml が既定と異なる値を設定しているのにデッキがそのキーを持たないときは DEK008 の警告になり、hint が足すべき行を示します。

frontmatter ​

スキーマは Zod で定義され、sync のたびに .dek/schema.json に書き出されます。1 行目の $schema コメントで yaml-language-server が入力中に検証してくれます。

yaml
---
# yaml-language-server: $schema=../../.dek/schema.json
title: HTML スライドツールを作った話
description: 発表のためのビルドシステムとは何か、なぜ台本から始めるのか。
event: Tokyo Frontend Meetup #42
date: 2026-04-18
duration: 20m
ratio: 16:9
lang: ja
---
キー必須値
titleはい文字列。先頭の ## 見出しが id だけのとき、その骨格スライドの見出しになる
descriptionいいえ文字列。共有したリンクに出る説明。なければ event と date を代わりに使う
eventいいえ文字列。dekc ls に表示される。スライドには入らない
dateいいえYYYY-MM-DD
durationいいえ<n>m(例: 20m)。トークの予算
ratioいいえ16:9(既定、1280 × 720)または 4:3(1024 × 768)
langいいえBCP 47 タグ。プレイヤー、スクリーンショット、PDF の <html lang> になる。省くと台本から決める。かながあれば ja、次にハングルなら ko、漢字なら zh、それ以外は en
max_classesいいえtheme.css が定義してよいクラス数の上限(DEK013)。既定 40
cjk_per_minuteいいえCJK テキストの話速(字/分)。既定 300
latin_per_minuteいいえそれ以外のテキストの話速(語/分)。既定 130

これ以外のキーは無視され、lint が DEK008 として示します。

セクションとビートの id は [a-z0-9-]+ にマッチし、英字を 1 文字以上含みます。数字だけの id は数値の data-step と衝突します。

voice/voice.toml ​

toml
engine  = "voicevox"
speaker = "ずんだもん/ノーマル"
speed   = 1
pause   = { sentence = 350, beat = 700 }
キー役割
engineエンジン名かベース URL。既定 voicevox。DEK_VOICE_URL が優先する
speaker名前/スタイル。dekc voice speakers でエンジンの話者を一覧できる
speed話速。既定 1
pause.sentence文と文の間の無音(ミリ秒)。既定 350
pause.beatビート境界の無音(ミリ秒)。既定 700
lead画面の切り替えを第一声より何ミリ秒先にするか。既定 300
beats."<key>".lead1 枚が出るところ(slug、slug/0)、または 1 ビート(slug/beat-id、slug/2)だけの lead
beats."<key>".pauseそのビート、またはその枚の最後のビートの直後の無音。pause.beat の代わり

voice/dict.toml ​

エンジンが読み間違える単語の読みです。キーは ASCII の単語全体に、長いものから順にマッチします。

toml
[dek]
kana = "デック"

["script.md"]
kana = "スクリプトエムディー"

dekc voice dict add <word> <kana> でエントリを追加できます。辞書にない単語は DEK040 です。

テーマのトークン ​

すべてのテーマが .slide に公開するカスタムプロパティです。:root には置きません。

トークン役割
--fg --bg --accent --muted色
--font-title --font-body書体
--size-title --size-body --size-caption字の大きさ
--gap --pad余白
--radius角丸
--step-transition動き

同梱レイアウト ​

同梱テーマの data-layout の値です。

値用途
titleビートのないタイトル
defaultビート付きスライドの既定。上詰めなので、要素が増えても見出しが動かない
two-col2 カラム
full-bleed余白なしの全面
quote引用

骨格は、ビートのないセクションに title、あるセクションに default を使います。

MIT License