シナリオ エディター『ScreenPlay Formater for VSCode』(SpDL記法)

シナリオ エディター『SreenPlay Formater for VSCode』 について
日本のシナリオ記法は、この約40年間、基本構造(縦書き・三段組・ト書き+セリフ)を大きく変えていません。
1980年代以降〜現在までテレビドラマ、映画、アニメの脚本フォーマットは本質的にほぼ同じです。
制作現場が保守的であることも一因し、演出家、声優、編集など「読む」側の慣習が強く固定している理由もあり新しい記法に変える提案や試みがありませんでした。
ScreenPlay Formater for VSCode(SpDLによる記法) は、映画・アニメ・映像制作向けのシナリオを YAML形式 で階層的に記述・編集・プレビューできるVSCode拡張です。
sequence → scene → cut という明確な構造により、視覚的・論理的に整理されたシナリオ制作が可能になります。
SpDL記法は、執筆者に一定の努力と厳密な構造化を求めますが、その分シナリオを「データ」として扱えるため、将来のさまざまな環境や形式への変換が可能となり、汎用性・互換性・共有性、そして出力や活用の自由度が飛躍的に高まります。
※SpDLは発展途上の記法ですが、将来のバージョンや用途の拡張にも対応可能な構造設計がなされており、高い柔軟性を備えています。
機能概要・特徴
主な機能
- .sp.yml (SpDL)ファイル形式による構造化シナリオ管理
- YAMLベースで、シナリオを階層的に整理・保存
- YAML構文による明示的な要素記述
- 「登場人物」「セリフ」「カメラワーク」「サウンドエフェクト(SE)」などを細かく定義可能
- コマンドパレットからの操作
- 新規シナリオファイル作成
- シーン追加・カット追加を即座に実行
- 編集中のシナリオをブラウザ風に視覚表示
- そのままHTMLファイルとして書き出しも可能
- カット指定秒数のカウント(総尺算出、シーケンス間、シーン間指定可)
- 会話文字数カウント(総尺算出、シーケンス間、シーン間指定可 5文字=1秒換算)
- GitHub等リポジトリ連携フィールド(repository)対応
- 作品管理・共有・チーム作業にも対応
- 作者情報・バージョン・作成日時の標準管理
- プロジェクト単位での明確な履歴管理をサポート
- シンプルなデータ構造により、AIによるシナリオ生成・補完・校正への展開が容易
- 変換可能な構造化言語
JSON、XML、HTML、Markdown(+Frontmatter)、CSV/TSV、Final Draft FDX(XMLベース)、EDL/XML(Edit Decision List)、JSON-LD / RDF
特徴
- プロフェッショナル向けの最小構成
- 物語設計に必要な要素だけを整理、拡張性も考慮
- 映像制作現場に適応した階層設計
- シーケンス → シーン → カット という実制作フローに対応
- 直感的なコマンド操作による執筆支援
- コマンドパレットだけで主要操作が完結
- 軽量かつ拡張可能なデータ設計
- プロトタイピングから商用作品管理まで対応
- AI時代を見据えた未来型シナリオフォーマット
- 自動プロット生成、AI脚本校正支援への展開が自然に可能
SpDLとは何か?
SpDL(Screenplay Description Language:シナリオ記述言語) は、映画・アニメ・ボイスドラマなどのシナリオを構造化しつつ、人間がプレーンテキストで直感的に記述できることを目的とした記述言語です。
SpDLの3つの柱
- プレーンテキストであること
Gitなどで管理しやすいVSCodeやエディタで直接編集可能特別なソフト不要 - 人間の可読性を重視非エンジニアでも理解しやすい構文
セリフ・カメラ・演出が直感的に書けるコメントや段落も柔軟に記述可能 - 構造化
sequence → scene → cut の明確な階層duration, dialogue, camera などの明示的なフィールド
YAMLとの関係性
この拡張機能では、シナリオの構造をYAMLで記述します。YAMLは視認性が高く、構造化されたデータ記述に適しているため、シーンやカットといったネスト構造を表現するのに非常に適しています。
より快適に使うために:YAML Red Hat 拡張の併用
VSCodeの標準機能でもYAMLはサポートされていますが、以下の拡張を導入することでさらに便利になります:
✅ YAML Language Support by Red Hat
ScreenPlay Formater for VSCode は YAML Language Support by Red HatのYAMLインデント・構文エラーの検出機能を前提としています。👉 VSCodeの拡張機能より“YAML”で検索してインストールしてください。
https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml
- 構文補完(intelliSense)
- スキーマによる自動補完とバリデーション
- インデント・構文エラーの検出
- マルチドキュメント対応
これにより、シナリオ記述時の構造ミスやタイプミスを大幅に減らすことができます。

まだ、まだ、道半ばの映画・アニメ向けのシナリオ構築を支援するVSCode拡張機能です!
このソフトの目的は、シナリオ記述の構造化と共同制作、編集履歴の可能なGitHubによるデータ管理です。
シナリオの記述をフォーマット化してYAMLファイルとして保存します。
シーケンス → シーン → カット の階層構造で、シナリオの構造化を支援します。
ダウンロード/インストール
シナリオ エディタ 『SreenPlay Formater for VSCode』はもちろんフリー・ダウンロードです。
Microsoft Marketplaceで配布しております。
VSCodeの機能拡張窓で“screenplay” で検索してインストールしてください。

🛠 インストール方法
scenario-editor-xxxx.vsix
をダウンロード- VSCodeの拡張機能のペインにドラッグ&ドロップしてください。
✨ 主な機能
- 新規シナリオファイル作成
- シーケンス、シーン、カット追加
- シーンプレビュー機能
- HTML出力
🚀 使い方の流れ
Ctrl + Shift + P で開いたコマンドパレットで選択。
主要な機能はマウス右ボタンのコンテキストメニューでも使えます。

- sp.createNewFile 新規ファイル
- sp.addTemplate テンプレート追加
- sp.addSequences シーケンス追加
- sp.addScene シーン追加
- sp.addCut カット追加
- sp.previewScene プレビュー
- sp.countTotalDuration 総尺カウント(範囲指定対応)
- sp.countDialogueCharacters セリフ文字数カウント(範囲指定対応)
- sp.exportHtml HTML書き出し
- sp.validateYaml シナリオ(YAML)構文チェック
現在の通常のシナリオではカット指示までは書かないことが多いでしょう。
カットも含め不要な指示等は、あえて指示なしを伝えるためにも空の状態での記述をお勧めします。

📝 フィールドリスト
SpDL 20250505 バージョン(23要素)
フィールド | データ型 | 日本語訳 | 説明 |
---|---|---|---|
title | 文字 | 作品タイトル | シナリオ全体のタイトル |
authors | 文字 | 著者リスト | シナリオの著者名(複数可) |
created_at | 文字(ISO形式) | 作成日 | シナリオが作成された日付(ISO形式) |
updated_at | 文字(ISO形式) | 更新日 | 最終更新された日付(ISO形式) |
version | 文字 | バージョン | シナリオのバージョン番号 |
description | 文字 | 説明 | スーリー全体の簡単な説明 |
repository | 文字 | リポジトリURL | シナリオ等が格納されているGitHub等のワークスペースURL |
sequences | 文字 | シーケンス(章) | 物語の流れの単位、複数シーンをまとめる インデント:スペース2 |
name | 文字 | 名前(シーンの場合は柱に相当) | シーケンス名・シーン名・カット名に使用 |
description | 文字 | 説明(シーンの場合はト書きに相当) | 流れ、場面の説明 |
scenes | 文字 | シーンリスト | シーケンス内に含まれる場面のリスト インデント:スペース6 |
id | 数字 | ID(整数を想定) | 一意にシーンやカットを識別する番号 |
duration | 数字 | 時間(秒を想定) | シーン、カットの再生時間(秒単位、空白可) カットの総和がシーンの時間になるが、自動計算は行わず |
time_of_day | 文字 | 時間帯 | 朝、昼、夕方、夜など場面の時間設定 |
se | 文字 | サウンドエフェクト | 効果音(例:BGM、環境音) |
actors | 文字(配列可) | 登場人物リスト | シーン内で登場するキャラクター一覧 |
cuts | 文字 | カットリスト | シーン内を構成するショットのリスト インデント:スペース10 |
camera | 文字 | カメラ設定 | ショットにおけるカメラのアングル・動き |
action | 文字 | 動作 | キャラクターやカメラの動作説明 |
dialogue | 文字(配列可) | セリフリスト(台詞) | セリフの配列(speakerとtextを持つ) |
speaker | 文字(配列可) | セリフの話者 | dialogue内でセリフを話すキャラクター |
text | 文字 | セリフ本文 | 実際に話されるセリフ内容 |
transition | 文字 | トランジション | カット間の映像切替効果(フェード、オーバーラップなど、後方処理を想定) |
🧩 sp.yaml 記述規則
1. キーと値の記述
- キーと値は必ずコロン(:)で区切り、コロンの直後に半角スペースを入れます。
title: "春の日の屋上"
2. リスト(配列)の書き方
- リストはキーの次に改行し、各要素の先頭にハイフン(-)と半角スペースを入れます。
actors:
- "結城 翼"
- "椎名 紗良"
3. インデントルール(重要)
- インデントは必ず半角スペースで統一し、深さごとに決められた個数を使います。
階層 | 内容 | インデント幅 |
---|---|---|
シーケンス(sequence) | 物語の大単位 | 半角スペース 2個 |
シーン(scene) | シーケンス内の場面 | 半角スペース 6個 |
カット(cut) | シーン内のショット単位 | 半角スペース 10個 |
✅ コマンド「sp: シーン追加」「sp: カット追加」を使えば、正しく位置合わせされます。
⚠ インデント崩れは、パースエラーの最大原因です。厳密に守ってください。
4. 空行について
- 行と行の間に空行を入れても問題ありません。
- 読みやすさを優先して、適度に空けましょう。
5. 複数行の文章(段落)の書き方
- 複数行のテキストは、パイプ記号(
|
)を使って記述します。
description: |
春の日、卒業を控えた生徒の物語。
友情、恋愛、夢を追いかける姿を描く。
6. コメントの書き方
- コメントはシャープ記号(#)を使います。
- コメント行の先頭に
#
を置き、読み手にわかる補足情報を記述します。
# ここからシーケンス定義
sequences:
- id: 1
name: "春の出会い"
7. 空フィールドの扱い
- 空の配列や空の値には、
[]
やnull
を書かず、キーだけ記述して空欄にします。
✅ 正しい例:
se:
dialogue:
- ユーザーが追記しやすく、エラーも起こりにくくなります。
✅ まとめ
必ず拡張機能コマンド(sp: シーン追加、sp: カット追加)を活用して、位置ズレや構文ミスを防ぎましょう。
sp.yamlでは、「統一されたインデント」「正確なキーと値の記述」「可読性を意識した空行」が特に重要です。
🧩 今後の予定(未定)
- プレビュー画面のツリー表示強
- 会話尺の計算、ドラマ時間の算出機能 ✅
- 多言語化
- 出力ファイル(HTML)のバリエーション
YAML構造自動Lint機能- AIとの連携による動画生成支援
- 200字詰め原稿用紙=ペラ=2枚で1分 の従来のシナリオ尺イメージが反映できないかと。。シーンにdurationがあるのでいらないか。。書き出したときに尺の客観性を出力できないか。。。と思案中。
- 目指すワークフローイメージ

❓ FAQ
- Q: ファイル名は?
- A:
xxxx.sp.yml
形式で保存してください。 - Q: 入力がルール厳しいのですが。
- A: 頑張って少し書くと、慣れると思います。厳しいルールが目的の一つです。
📄 SpDLによるシナリオ記述例(文法はYAML準拠)
# SpDL(Screenplay Description Language)テンプレート
# 各フィールドには説明用のコメントが付いています。
# フォーマットはYAML準拠。インデントと記号(: , -)に注意してください。
# 改行は自由に行えます。適宜改行とコメントで読みやすく記述しましょう。
title: "作品タイトル"
# シナリオの正式タイトル。未定でも仮名を記入してください。
authors:
- "作者名A"
- "作者名B"
# 執筆者名。複数名の場合はハイフン付きリストで記述します。
created_at: "2025-05-06"
# 作成日。形式は YYYY-MM-DD を推奨します。
version: "1.0"
# ドキュメントのバージョン。改訂時に更新。
description: |
この作品は○○をテーマにした短編です。
ここには企画意図、ジャンル、世界観の要約などを自由に記述できます。
# 説明文は複数行OK。行頭のパイプ(|)で複数行リテラル指定。 # 空OK
repository: "https://github.com/yourname/yourproject"
# シナリオに関連するコードや素材が保存されているリポジトリのURL # 空OK
sequences:
- id: "1"
# 各シーケンスには一意なIDを設定(例:SEQ001)。
title: "プロローグ"
# シーケンスの名称や要約。UI表示や目次に使用されます。 # 空OK
scenes:
- id: "1"
# シーンID(例:SC001)。シーケンス内でユニーク値推奨
title: "駅のホーム"
location: "駅ホーム"
# 場所(ロケーション)。省略も可能ですが、入れておくと映像化に便利。 # 空OK
time: "朝"
# 時間帯。例:「朝」「昼」「夕方」「夜」「深夜」「翌日」など。 # 空OK
description: "通勤客で混雑する朝の駅。構内アナウンスが響く。"
# シーンの雰囲気や状況の補足説明。 # 空OK
cuts:
- id: "1"
# カットID。1シーン内での連番管理を推奨。
camera: "ロングショット"
# カメラの種類。例:「ロングショット」「クローズアップ」「俯瞰」など。 # 空OK
duration: 5
# 秒数。整数指定。後の編集ソフト連携やタイミング調整に使用。 # 空OK
action: |
主人公が改札を抜けて、列の最後尾に並ぶ。
スマホを確認しながらため息をつく。
# カット内の演技・動作・演出などを記述。複数行可。 # 空OK
dialogue:
- speaker: "吉"
text: "また今日も混んでるな…。"
- speaker: "ナレーション"
text: "—— 通勤ラッシュ。それは日常という名の戦場だ。"
# セリフ群。話者(speaker)と発言(text)をセットで記述。 # 空OK
se:
- "電車のブレーキ音"
- "ホームのざわめき"
# 効果音(Sound Effect)をリスト形式で記述。後処理で自動挿入可能。 # 空OK
bgm:
- "morning_theme_01"
# 要素追加(任意追加は非推奨)バックグラウンドミュージックのIDやファイル名。
📄 プレビュー画面
- 縦書き(脚本風)
- 横書き(モダン)
- 印刷用(白黒)



📄 HTML書き出し(pdf保存)
以下は本フォーマットをAI(Claude)に読ませて、短いシナリオを書かせた例
📜 ライセンス
MIT License