発言者名をArg1から独立させることは可能でしょうか?

62 views
Skip to first unread message

鉱油

unread,
Dec 29, 2025, 9:49:16 AM12/29/25
to 宴ユーザーグループ
こんにちは。いつも宴にお世話になっております。

シナリオを記述するエクセル構成についてですが、発言者名をArg1から独立させることは可能でしょうか?
理由として、宴でシナリオを記述する際、以下の点を不便に感じているためです。

デフォルトの構成
発言者名(Arg1)とTextの配置が遠いため、シナリオを書く際、列のセル移動が大変

Textを発言者の右隣に移動した場合
セリフと発言者は書きやすくなるが、演出指定のコマンドの引数が一列空き、離れてしまうため、確認と記述がしづらい

Arg1をTextの左隣移動させた場合
演出コマンドの引数の順序が入れ替わるため記述がしづらくなってしまう


理想としては
Command, Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,コメント注釈,Voice,発言者名,Text

といった構成にできれば大変制作が捗ります。
発言者名とArg1が独立できた場合、上記の問題点の改善に加えて、
キャラクターボイス発注時の台本制作の際、Command~Arg6の列を削除するだけで台本が完成するため、やはり便利だと感じています。

マッドネスラボ

unread,
Dec 29, 2025, 12:43:07 PM12/29/25
to 宴ユーザーグループ
現状だとカスタムコマンド等でもその拡張はできません。
ソースコードを書き変えるしかないので、私の方でアップデートで対応するしかないです。

互換性のために、旧来のやり方はそのまま使えるように保ちつつ、
プロジェクト設定等から、「発言者名列」(仮)を選べるオプションを追加する形になるかと思います。

書き方としてはすっきりすると思うので、追加機能としてやってみたくはあるのですが、
どうせやるなら、こうしたほうがいい的な意見もあるかもしれないので、
Discordのユーザーコミュニティでも意見を聞いてみて検討しようかと思います。


細かい点をつめていくと・・・

表示パターンやレイヤー名の指定
これは従来通りArg2~でよいでしょうか?
特にArg2の表示パターンは発言者名と離れてしまうかもしれません。

・「キャラクターシートで設定した名前と違う名前を表示する」という場合
現在は、Arg2(本来はキャラクターの表示パターンの指定)に、追加のタグを設定するけっこう強引な形になっています。
これは、発言者名列に名前テキスト、Arg1にキャラクターラベルを指定という形したほうがわかりやすくなるかと思います。
それとも、あくまでキャラクターラベルのほうに固定したほうがいいでしょうか?

今のところ、やるのであればこんな形になるかと思います。(Speaker=発言者名)
ss_1355.png

・別件:シナリオラベル列も追加する?
(今回の件とはまた別なのですが、拡張するなら同じ時期に一度にやったほうがよさそうなことで)
シナリオラベルは現状Command列に書くようになっているのですが、
「ScenarioLabel 列」を追加して独立させるというのもありかなと思っていますがどうでしょうか。
(どこからシナリオラベルで区切られているかわかりやすくなるので、そういう拡張をしているユーザー様もいるようです)

やるとすれば、こんな感じになります。
ss_1359.png


2025年12月29日月曜日 23:49:16 UTC+9 鉱油:

マッドネスラボ

unread,
Dec 29, 2025, 4:29:38 PM12/29/25
to 宴ユーザーグループ
追記:
> 現状だとカスタムコマンド等でもその拡張はできません。
と書いてしまいしたが、マクロを使えば可能です。
https://madnesslabo.net/utage/?page_id=2984

・Speaker列を追加
・マクロを追加して、%Speaker をArg2に設定。その他の列は全てそのまま同じ列に設定するように作る。
・セリフ表示を全て上記で作成したマクロを使って行う
という流れです。

全てのセリフでマクロを使わないといけないという制限はありますが、一応これで対応可能になるかと思います。

2025年12月30日火曜日 2:43:07 UTC+9 マッドネスラボ:

鉱油

unread,
Dec 30, 2025, 10:13:15 AM12/30/25
to 宴ユーザーグループ

ご回答ありがとうございます。
現時点では拡張実装が難しい旨、承知しました。
頂いたマクロ案で実装できるか試してみますね。
また、アップデートのご検討もありがたく思います

◆Speaker列について
頂いた仮画像と概ね同じイメージです。
ただ、どちらかと言えば、キャラクターの立ち絵指定とテキストウィンドウの発言者名指定を切り離し、
Speakerは名前欄指定だけの用途としてイメージしておりました。

この場合のメリットデメリットとして、
キャラオフセリフは<Off>指定が省略できたり、立ち絵と違う発言者名を出す場合は発言者名を変えれば良いだけなので楽になりますが、
今まで発言者名(兼立ち絵指定)だけで済んでいた箇所が厳密に発言者名+立ち絵指定が必要になる点は生じます
発言者名を後から一括変更などの機能を維持する面では、単純な発言者名ではなく、ご提示のようにキャラクター名をキーとした指定のほうが良いかもしれませんね。

また、表情指定等のArg2が遠いのはやはり気になるところですね…。
これはエクセルでコマンドの引数を別セルに書く、という根っこの設計上避けられないところではあるのですが、
個人的には宴に少し不便に感じているところなので後述します。


◆シナリオラベル独立について
私は現在のところセルの色分けで視認性を確保してCommandで運用しています。
発言者セル独立のご相談と矛盾する意見で恐縮ですが、エクセルの構造上、データ列が増えるほど扱いが難しくなる(視認性の低下、セル移動の手間)
と感じているので、どちらかといえば実装するとしてもオン・オフできるオプションだとありがたいかなという印象です。


◆Argセル形式に不便に感じているところ

一人開発者の視点ですが、今回発言者セル独立の方法をご相談した背景には
 ・シナリオ執筆、演出スクリプト指定の際、セル移動/記述セル判別の手間を減らしたい
と感じることが多いです。

例えばWait命令で間を置く演出を挟むとして、Textでシナリオ執筆していた箇所からデフォルト配置だと、
・Commandまで8セル移動して記述
・Wait時間指定まで6セル移動して記述(Wait時間指定がArg6であることを確認)
・Text,ないしキャラ指定のArg1に移動
という工程が挟まるため、シナリオを執筆しながら直感的に演出指定を書いていくのがなかなか大変だったりします。

うた子@笑い,左レイヤー,200,100,0.5
うた子@Layer:左レイヤー,fade:0.5
Wait@1.2

これはあくまで勝手な考えでしかないのですが、1セルにキャラ指定とパターンやフェード指定などの引数を書けたら良いなと思うことが時々あります。
上述の通り、データ列が増え、セル移動が増えるほど直感的なシナリオ執筆&演出指定が難しくなるため、

[コマンド&引数] / [voice] / [発言者] / [セリフor地の文text]  あるいは、
[コマンド] / [引数] / [voice] / [発言者] / [セリフor地の文text]
ぐらいのセル数がシナリオを書きやすいと感じます。

すみません。ここまで来ると追加機能のレベルではなくなってくるし、互換性維持の問題等も出てきますよね。
話半分に聞いて頂ければと思います。

余談ではありますが、自作のゲームへのADVパート導入に宴かNaniNovelをどちらを使用するか、
決め手になったのはボイス依頼時の台本作りや、ローカライズのやりやすさでした。
Argセルの多さは自分にはやや扱いづらいですが、列を削除することで台本を作ったり、
日本語テキストを見ながら別列に直接英訳を記述することでローカライズ版が作りやすいといったエクセル形式だからこそのメリットがあると見ています


また、私は自前のアクションRPGをベースに制作しているため、宴を会話シーン機能として使用しつつ、独自のSendMessageで表情差分を切り替える実装が多いなど、
ADVメインの使い勝手とはまた違った視点の一つの意見となることにご留意ください。
追加機能や改修の方向性を決定する際は、幅広いユーザーさんの意見を元に決めるのが良いと思います。


誠勝手な意見となってしまい恐縮です。
ご参考頂ければ幸いです。


2025年12月30日火曜日 6:29:38 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Dec 30, 2025, 3:22:42 PM12/30/25
to 宴ユーザーグループ
詳細なご意見ありがとうございます。

>◆Speaker列について
>今まで発言者名(兼立ち絵指定)だけで済んでいた箇所が厳密に発言者名+立ち絵指定が必要になる点は生じます
そうですね。そうなります。
宴の設計上、暗黙的に処理する部分を多くして、逆に厳密に指定したいという場合(一時的に名前を変えたい場合や、キャラは非表示で名前は指定したい場合など)は、少し面倒な書き方になるという形になっています。
これは結構根本的な部分なので、変えることはないと思います。
なので、その形に対応をしていくのはちょっと難しいです。
下手に両対応にしようと根本の部分をいじってしまうと、不具合を見落とした場合に既存のプロジェクトにも悪影響ができてしまうので、それは避けたいと思っています。

>◆シナリオラベル独立について
>どちらかといえば実装するとしてもオン・オフできるオプションだとありがたいかなという印象です。
はい。そのつもりです。互換性もありますので、これまでの形を変えることはしません。
変えたい人だけ変えることもできるとするつもりです。
ただ、特に需要がないようでしたら拡張もしません。


>◆Argセル形式に不便に感じているところ
>  [コマンド&引数] / [voice] / [発言者] / [セリフor地の文text]  あるいは、
>   [コマンド] / [引数] / [voice] / [発言者] / [セリフor地の文text]
>   ぐらいのセル数がシナリオを書きやすいと感じ
複数の引数を単純にカンマ区切りなどで設定するだけにするのはおそらく難しくて、
>うた子@Layer:左レイヤー,fade:0.5
のように、どの引数名をセットで指定する形になっていくかと思います。

一応列数を減らすために数をまとめるのは、Tweenコマンドでも行っていて、「引数名=値」という形にしています。
ただこれはやむを得ずやった面が強くて、むしろ書きづらいと思っていたのですが、むしろその面に偏ったほうが書きやすいという感じでしょうか。

Tweenコマンドはマクロを使って1引数=1列という形式にすることで、本来の宴っぽい書き方に落とし込むことも可能なのですが
これとは逆に、マクロ機能に「指定の列名の文字列を解析して、指定の名前のパラメーターの値を取得する」という文法を追加すれば
>うた子@Layer:左レイヤー,fade:0.5 のような書き方をマクロ内で自己解析して使用できるようになるかと思います。

たとえば、現在のマクロでは &Arg1のように、%列名としている部分を引数として使用しますが、
 &Arg1.Layerや、 &Arg1.fade のように、%列名.サブ引数名 という引数の取り方を可能にして
1列内の複数パラメーターを解析できるようにするといった感じです。

現在はその機能がありませんので、追加実装してからの話になります。
もっとも、この場合は既存の全コマンドを自作マクロで代替できるようにラップして、それ経由で呼び出す形になってしまいます。
また、最終的な書き方が、本来の書き方と大きく違う独自性の強い書き方になってしまうので、安定性やエラー対応などで不安点は結構残ってしまうかもしれません。

2025年12月31日水曜日 0:13:15 UTC+9 鉱油:

鉱油

unread,
Jan 3, 2026, 9:55:06 AMJan 3
to 宴ユーザーグループ
お返事が遅くなってすみません。
ご返信ありがとうございます。

◆Speaker列について
設計思想、承知致しました。
Speaker列は今まで通りキャラクター指定キーでの運用を想定しますね。
Arg1は別コマンドの引数が多く混ざるため、発言者と切り分けできるだけでも台本作りが捗ります。

◆マクロによるArg解析
マクロの引数を1セルで賄える文法の追加でしょうか。こちらとてもいいですね。

>むしろその面に偏ったほうが書きやすいという感じでしょうか。
私個人の目線ですが、C#のコードに慣れているため、引数名=値 の記述に違和感はありません。
可能であればデフォルト引数のように引数省略ができるとすごく助かります。
例えば主人公は左側レイヤーに立ち絵表示をデフォルトとしつつ、必要な時だけ右レイヤー指定を記述して右側に表示するなどでしょうか。


意見の一つとしてご参考になれば幸いです

2025年12月31日水曜日 5:22:42 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Jan 4, 2026, 2:48:33 AMJan 4
to 宴ユーザーグループ
>◆Speaker列について
了解しました。おそらく既存のマクロの仕組みでできると思います。


>◆マクロによるArg解析
こちらの機能を実験的に追加してみましたので、添付のパッケージファイルを適用してみてください。
(ダウンロードした添付ファイルの拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)

パッケージを適用したのちに、ProjectWindowの右クリックから
Create > Utage > Scenario > StructuredMacroParser を選択肢、カスタムマクロ解析用のScriptableObjectを作成してください。
ss_1376.png

作成されたScriptableObjectはこのようになります。
ss_1378.png

現在のプロジェクトのCustomProjectSettingsを選択してください(通常は、宴プロジェクト名/ScriptableObjectフォルダ以下にあります)
作成したScriptableObjectに、「Structured Macro Parser」という項目が追加されているので、先ほど作成した ScriptableObject を 設定してください。
ss_1377.png


これで準備が整いますので、
マクロ内で、下記のように「%引数列名.プロパティ名」という使い方ができるようになります。

マクロサンプル
ss_1383.png

サンプルでは、Args列を使用する形になっていますが、任意の列名を使ってもよいです。
既存の列名を使ってもいいですし、追加してもよいです。
ただし、その列名全体がほかの列名の先頭文字列と重複しないようしてください。
たとえば「Arg」という名前の列名を追加すると、ArgはArg1の先頭文字列と重複してしまうので、追加するならArgsのように重複を避けてください。

また通常のマクロのデフォルト引数の項目(マクロ名の行のArgs行)に、使用するすべてのプロパティ名とデフォルト引数の値を設定してください。
・プロパティ名と値の区切り文字は =(イコール)
・複数あった場合の区切り文字は ,(カンマ)
となっています。
これは、StructuredMacroParserのScriptableObjectのほうで変更可能です。
デフォルト引数が未設定の場合は空文字扱いになります。
ここに設定されていないプロパティ名は使用しようとするとエラーになります(スペスミス防止)

シナリオ上では次のようにして、マクロとして呼び出せます。
ss_1384.png


引数として渡す値の中に=が入っていても一応動作します。
見た目が紛らわしいようであれば、ScriptableObjectの「Key Value Separator」の項目を =(イコール)ではなく :(コロン) などに変更してみてください。

Tweenコマンドのように、すでに1セル内に複数項目を設定する前提になっているコマンドは、上記のparamsのように(途中の=を含めて)まとめて引数として渡す形になります。
(マクロを工夫すれば細かい分割も可能ではあると思いますが、限界はあると思います)

問題が予想されるのは、引数として渡す値の中に ,(カンマ) が必要なパターンです。
,(カンマ)になった時点で値ではないものとしてデータが区切られてしまうので意図しない結果になると思います。
これが問題になるようであれば、ScriptableObjectの「Pair Separator」の項目を ,(カンマ)  ではなく ;(セミコロン)などに変更してみてください。
(今度はセミコロンが必要なときに問題が起きるかもしれませんが、完全に避けるためにエスケープ文字解析などをいれるといよいよ難しくなってしまうので、やってないです)

マクロ展開後は、通常の宴のシナリオ形式としてデータが埋め込まれてます。
たとえばプログラム上などでは、通常の宴のシナリオ形式のArg0~の行にそれぞれデータが入ってるとして扱われます。

動作確認として、実際にどういうシナリオに展開されているかをチェックする場合は、
シナリオビュワーを使ってください。参考:https://madnesslabo.net/utage/?page_id=3134#Scenario_Viewer





2026年1月3日土曜日 23:55:06 UTC+9 鉱油:
StructuredMacro.unitypackage

鉱油

unread,
Jan 7, 2026, 7:50:08 PMJan 7
to 宴ユーザーグループ
マクロのArg解析機能の実装、ありがとうございます。
こちらgzファイルの拡張子をunitypackageに名前変更して現在のプロジェクトにインポートしてみたのですが、下記の画像のように、既存のCustomProjectSettingにエラーが起きてしまいました。

スクリーンショット 2026-01-08 093544.png
スクリーンショット 2026-01-08 093532.png

CustomProjectSetting以外には今のところエラーは発生しておりません。
修正方法等、ご助言をいただけるとありがたいです。

何卒よろしくお願いいたします。


2026年1月4日日曜日 16:48:33 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Jan 7, 2026, 8:14:29 PMJan 7
to 宴ユーザーグループ
エラーを見る限りは、AdvCustomDataSettingsが見つからないというエラーなので
おそらく、宴のバージョンが古いだと思います。

Q&Aでお渡しするパッケージは、宴のバージョンの最新版との差分という形が基本ですので
宴を最新版にアップデートしてから適用してください。
仮にエラーがでなかったとしても、正常に動作しない可能性が高いです。
最新版にアップデートできない事情がある場合は、パッケージを適用しないでください。

また、Q&Aの投稿では基本的には宴のバージョン表記をしてください。
特に表記がなかった場合は私の方からはどのバージョンを使用しているかわからないので、
最新バージョンであるものとして、対応させていただいております。
また、バージョン表記があったとしても、古いバージョンに合わせた更新パッケージを作ることはしませんので、ご注意ください、

2026年1月8日木曜日 9:50:08 UTC+9 鉱油:

鉱油

unread,
Jan 17, 2026, 4:14:35 AMJan 17
to 宴ユーザーグループ
こんにちは。
お返事が大変遅くなってしまいすみません。

頂いた手順をもとにその後、試行錯誤したところ無事マクロ解析機能を使うことができました。
この度は機能のご改修、とてもありがたく思います。

現状の運用の範囲では今のところ想定通りに記述とUnity上での作動が実現しております。
1セルで書けるようになったのは嬉しいですね。

こちらで既存の演出命令をマクロにラップして移行してみようと思います!
ありがとうございます!

2026年1月8日木曜日 10:14:29 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages