【近況報告】シナリオ軽量記述言語のMeSを作っています
どうも、いらにかです。
今日は現在取り組んでいるMeプロジェクトとシナリオ軽量記述言語『MeS』についての記事です。
Meとは、MeSとは、何なのか。
どんなことを考えているのか。
ざっくりとお話しようと思います。
Meプロジェクトって何なの?
Meプロジェクトは「シナリオ(脚本)の価値と可能性を高める」ことを目的とした実験プロジェクトです。シナリオと台本に関して漠然と感じていた要求と課題を解決するために始まりました。
■要求とか(一部抜粋)
- シナリオのキャラクター毎にセリフの文字数を集計したい
- 集計のためにト書きを一時的に削除したりめんどくさい……
- シナリオをパースして扱いやすいデータにしてくれたら楽なのに……
- シナリオテキストに組版のスタイルを適用して台本PDFを生成したい
- 台本用に整形するのめんどくさい……
- 書くためのシナリオ、読むための台本として区分したらいいじゃん(名案)
- シナリオテキストをそのままゲームに流用したい
- ゲーム用のスクリプトにテキストを書き直すのはめんどくさい……
- 音声作品のセリフをひたすらタイピングするゲーム作りたいんじゃ……
- etc...
■課題(一部抜粋)
- シナリオの記述形式は統一されておらず、曖昧で構文解析がしにくい
- 文字列がセリフなのかト書きなのか判別する基準が曖昧
- でも人間は何となくわかる……
- シナリオ(台本)は字コンテとして情報表現が不足している
- 基本、ト書きにはアクターへの指示、音響への指示等が一緒にまとめられている
- それが誰への指示なのか、文脈で捉えるしか無い……
- ノベルゲーム等のスクリプト仕様はプログラム寄りの記述が多い
- 一次アウトプットとしてシナリオを考えながら直接書くのは少し大変
これらを考慮して、シナリオ記述(特に音声作品の製作向け)の体験と環境を向上させるために試行錯誤しているのがMeプロジェクトです。
現在、Meプロジェクトには以下のミッションがあります。
- シナリオライターが記述しやすい軽量記述言語の策定(MeS)
- アプリケーションが利用しやすい共通データ構造の策定(MeDo)
- MeSをパース(構文解析)してMeDoに変換するライブラリとコンパイラ(Mimey)
- MeDoから台本を生成するビュアーソフト(Viewer)
MeプロジェクトではMeS構想として
「記述言語」
「データ構造」
「エコシステム」
に領域を分け、役割と責務を分割することで変更の柔軟性を高めています。
※この辺りの構想は語りだすと止まらなくなるので割愛します。
このMeS構想において非常に重要なのがデータ構造です。
シナリオをアプリケーションが利用しやすいデータ構造に変換できれば、シナリオがもっと便利になると思います。以下に例をあげます。
*シナリオ中のセリフ文字数をキャラクター毎に集計
*オリジナルの組版を適用した台本の生成
*ノベルゲームのスクリプトへ変換
*タイピングゲームのテキストとして利用
*etc…。
共通のデータ構造があれば、アプリケーションの開発者はデータ加工に注力できるので開発がしやすくなります。もしかしたら、欲しい機能をあなたが自作するかもしれません。
そのためには、
「データに変換できる軽量記述言語」
「共通データ構造」
が非常に重要な存在になります。
MeS構想ではシナリオライターとシナリオに関わる人たちが、より快適に過ごしやすいアクアリウムになることを目指しています。
MeSって何なの?
MeSはシナリオに意味を付加するための軽量記述言語です。
MeSはシナリオを字コンテとしても活用できるようにすることを目標にしています。
また、コシステムのパーサーによって、MeDo形式のデータに変換できるよう設計されています。
MeSの特徴は何と言っても、台詞をデコレーションするようにト書きを付与できる記述方式にあります。
@にか(@はキャラ名を指す)
#場所は駅前(#はト書きとコメント)
$駅前の雑踏の音($は音響指示)
!正面(!はサウンドポジションを指す)
あ、キタキタ。女の子二人を待たせるなんて、失礼だぞ。
@こいと
!正面
そういうニカちゃんも、ついさっき来たばかりじゃないですか。
#少しだけ呆れた感じ(デコレーターは後置もOK)
こういう時は待たせた弱みに漬け込んで、ランチを奢らせるのがだな…
#(TBD)名前の指定がない場合は設定した初期値が自動で付与される
こいと「前回もそうやって奢らせてたじゃないですか。今日はだめです」
#名前「せりふ」の形式も使える(糖衣構文)
@こいと
それにしても久しぶりですね。この三人で会うのは何年ぶりでしたっけ?
確か、最後に会ったのは富山に海鮮丼食べに行ったときだから、二年ぶり?
#空白行で分割されるので、空白行を入れなければ改行もOK
この記述仕様はとても慎重に検討して策定してきました。
(現在の簡略なデコレーション形式に落ち着くまで大変でした……)
MeSのデコレーターによる記法は従来のシナリオ記述から少しかけ離れているため、読みにくいと感じる人が居るかもしれません。その問題についてMeSでは設計指針で対処しています。
MeSの設計指針の一つに、書くための「原稿(MeS)」、読むための「台本(Viewer)」という役割分担(責任分離)があります。
MeSでは、原稿と台本の変換をエコシステム(外部ツール)に委ねることで、可読性における問題は「台本の問題」として原稿であるMeSからは分離しています。
書きやすさと読みやすさの相互交換をエコシステム(ツール)が取り持つことで、「書きやすい原稿」「読みやすい台本」の両立を可能にする仕組みです。
※要は「読みやすくしたかったら、台本生成のツールでよしなにやってね」ということ。
MeSはシナリオライターが「本当にほしかった軽量マークアップ言語」を目指しているので、書きやすさを何よりも重視しています。
■書きやすさを重視した設計の一例
- キー入力がなるべく少なくなるように意識されている(ARROWキー含めて)。
- デコレーターは省略してもいいので、セリフだけ記述しても良い
- 先に会話をバーっと書いてから、ト書きを後から挿入していく書き方もできる
- 音響コメントは音響担当が後から追加したり、分担もしやすい
- デコレーターの記号は入力しやすく、ある程度は意味がわかりやすいものを採用した
- @はTwitterのメンションで名前に使われていて、Shiftキー無しで入力できるので、頻繁に使われる名前デコレーターに採用した
- $はSに似てるのでサウンドを表していて、etc...
- デコレーターをセリフの後ろに後置できる
- 人によって思考順序が違うケースを想定
- セリフ→動作、動作→セリフと異なるケースでも流れるように書きやすい
- 糖衣構文で一般的な記述形式をサポート
- MeSの書き方が合理的でも、書き慣れた記述形式を手放したくないよね
- MeSはあくまでテキスト情報であること
- 専用エディタに縛られないことで使い慣れたエディタが使える
- Googleドキュメント/VSCodeのLiveShare等を使えば複数人同時に編集ができる
MeSはまだまだ発展途上にあるので、これから新しい仕様が組み込まれていきます。
「めっちゃ洗練された素晴らしい記述体験が提供できそう!!」
と個人的にワクワクしていますが、MeSを記述しながら横で台本のプレビューができるような仕組みを提供するまでは、皆さんに実感してもらいにくいと思うので、まだまだ先は長そうです。
※とは言え、実現方法のアイデアはもう思いついていて試作中なので後は試行錯誤あるのみって感じです。
仕様書
MeSの仕様等については以下で公開されています。
https://github.com/iranika/MeS/wiki
現在、MeSは開発途中なので仕様変更が頻繁に発生するかもしれません。
ドキュメントのアップデートはちゃんとしていきたいです。
あとがき
こんな感じでMeプロジェクトとMeSプロジェクトについてお話してきました。
他にも「喘ぎ声テキストの生成」とか色々と計画がありますが、それはまた今度にします。
現在はMeSのver0.2の仕様策定が終わってパーサー(構文解析器)とビューアーの開発を進めています。
お試しで使ってもらえるのはまだ先になりそうですが、年内には公開できたらいいなと思っています。
雨想筍さんの期待に応えたい!!
https://twitter.com/4mo_F_take/status/1539964596655558656
あと、ご意見はいつでもお待ちしています!
TwitterでもCi-enへのコメントでも何でも構いませんが、匿名で投稿したい人にはいらにかのご意見BOXへどうぞ。
https://forms.gle/PNTj3Grc7d7eRA9z9
MeSの次のバージョンに仕様が反映されるかもしれません。
ちなみに……
Meプロジェクトの初期に実験を兼ねて作ったMEditorという試作エディタが公開されています。
https://mimica.iranika.info/#/meditor
これはMeS構想が生まれる前で、記法もMeSとは少し違いますが、原稿と台本の概念を体験してもらうにはちょうど良いかもしれません。
さくっとMeSを試してみたい人のために、今後MEditorのようなアプリを公開するのは良いかもしれないですね。
考えておきます。
以上、Meプロジェクトのご報告でした。
Meプロジェクトを支援したい人はCi-enで支援してくれると助かります。
月継続でない1回だけのdonateでもめっちゃ喜びます。