シナリオ エディター『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によるシナリオ生成・補完・校正への展開が容易
  • 変換可能な構造化言語
    JSONXMLHTMLMarkdown(+Frontmatter)CSV/TSVFinal Draft FDX(XMLベース)EDL/XML(Edit Decision List)JSON-LD / RDF

特徴

  • プロフェッショナル向けの最小構成
    • 物語設計に必要な要素だけを整理、拡張性も考慮
  • 映像制作現場に適応した階層設計
    • シーケンス → シーン → カット という実制作フローに対応
  • 直感的なコマンド操作による執筆支援
    • コマンドパレットだけで主要操作が完結
  • 軽量かつ拡張可能なデータ設計
    • プロトタイピングから商用作品管理まで対応
  • AI時代を見据えた未来型シナリオフォーマット
    • 自動プロット生成、AI脚本校正支援への展開が自然に可能

SpDLとは何か?

SpDL(Screenplay Description Language:シナリオ記述言語) は、映画・アニメ・ボイスドラマなどのシナリオを構造化しつつ、人間がプレーンテキストで直感的に記述できることを目的とした記述言語です。

SpDLの3つの柱

  1. プレーンテキストであること
    Gitなどで管理しやすいVSCodeやエディタで直接編集可能特別なソフト不要
  2. 人間の可読性を重視非エンジニアでも理解しやすい構文
    セリフ・カメラ・演出が直感的に書けるコメントや段落も柔軟に記述可能
  3. 構造化
    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” で検索してインストールしてください。

🛠 インストール方法

  1. scenario-editor-xxxx.vsix をダウンロード
  2. VSCodeの拡張機能のペインにドラッグ&ドロップしてください。

✨ 主な機能

  • 新規シナリオファイル作成
  • シーケンス、シーン、カット追加
  • シーンプレビュー機能
  • HTML出力

🚀 使い方の流れ

Ctrl + Shift + P で開いたコマンドパレットで選択。
主要な機能はマウス右ボタンのコンテキストメニューでも使えます。

  1. sp.createNewFile  新規ファイル
  2. sp.addTemplate  テンプレート追加
  3. sp.addSequences シーケンス追加
  4. sp.addScene シーン追加
  5. sp.addCut カット追加
  6. sp.previewScene プレビュー
  7. sp.countTotalDuration 総尺カウント(範囲指定対応)
  8. sp.countDialogueCharacters  セリフ文字数カウント(範囲指定対応)
  9. sp.exportHtml HTML書き出し
  10. sp.validateYaml シナリオ(YAML)構文チェック

現在の通常のシナリオではカット指示までは書かないことが多いでしょう。
カットも含め不要な指示等は、あえて指示なしを伝えるためにも空の状態での記述をお勧めします。


📝 フィールドリスト

SpDL 20250505 バージョン(23要素)


🧩 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



おすすめ