これ、用語を調べていたらAIに教えられた事なので間違っている部分もあるかもですが、プログラマーの世界には長年使われ続けている設計思想があるらしいです。
それが、
- DRY(Don’t Repeat Yourself)
- Single Source of Truth(単一の真実の源泉)
らしい。
CとかC♯とかPythonとか、チャレンジしては挫折して、プログラム結局良く分からない勢の私としては、AIの説明が面白かったから備忘録混じりに共有すると言う意味で。
AIが言う事が本当なら、一見するとソフトウェア開発だけの概念に思えるこれらは、実は世界設定や物語設計とも非常に相性が良い考え方と言えるでしょう。
目次
DRYとは「同じことを二度書くな」らしい……
DRYとは、Don’t Repeat Yourselfの事。
どういう事?
ええっと、つまり、「同じ情報を複数箇所に持つな」という考え方っぽいです。
理解が正しいか、例えが正しいか怪しいですが、例えば住所録があるとします。
社員一覧山田 東京佐藤 大阪岩城 ……営業部一覧山田 東京鈴木 福岡田所 ……
まあ、こんなの?
ここで、山田さんが名古屋へ引っ越しました。
その時、社員一覧「だけ」をウッカリ直したら、
社員一覧山田 名古屋営業部一覧山田 東京
という矛盾が発生します、よね?
ね?
で、この原因は簡単な話で、山田さんの住所という情報を二回持っていたから、このミスは起きました。
この、情報を重複して管理すると、更新漏れが必ず起こると言うのが、DRY、らしいです。
創作ではどうなるのか
例えば、世界設定には、「魔法は王族しか使えない」と書いてあるとします。
しかし、なぜかキャラクター設定には「平民出身の主人公は魔法を使える」と書いてある。
ま、まあ、ここまでなら平民なのに使える主人公は、実は王族とかいけそうです。
ですが、さらに、先の展開では「誰でも魔法を学べる学校」が登場し、作者は初期設定を忘れていて、魔法学校を消せない状況まで来てしまった。
やっちまった。
情報が三か所に分散しているのが、悪いわけです。
これでは、どこに合わせるか、修正するたびに全部を直さなければなりません。
で、一つでも忘れたり、また増やすと、ひどい矛盾になります。
これが創作におけるDRY違反です。
ドラゴンボールとかジョジョとかで時々見ますが、面白ければOKでも、少ないに越した事は無いですよね?
DRYは「設定を減らす」ことではない
AIの説明通り理解通りなら、DRYは情報量を減らす話ではありません。
要は、同じ情報を何度も持たないという話で、大量の極めて似た情報を管理するのではなく、一つで良い物はまとめて管理出来る体制を作った方が良いで、的な感じです。
例えば、王族は魔力を持つ、という重要設定があるなら、他では、王族だから魔法が使える、とは書かず、「王族」の設定情報を見るだけで以降は済むようにします。
一つの情報を、一か所だけで管理する。
これがDRYっぽいです。
Single Source of Truthとは?
AIが言うには、「真実の唯一の情報源」と言うらしい。
プログラマの人、そんな用語をわざわざ使うの?
ま、まあ、物語創作術にも、チェーホフの銃とか、ミッドポイントとかストーリーパラダイムとか、色々あるし、起承転結みたいな物なのだろう。
AIが言うには「この情報については、ここだけを見れば絶対に正しい」という場所を決める考え方らしいです。
うん?
DRYと何が違うの?
「同じ事を書くな」と「一ヵ所だけにかけ」を裏表で言ってる感じ?
一か所だけが正しい
例えば、劇中の国の人口を設定するとします。
世界設定には、
人口 一億人
とあります。
年表には
人口 九千万人
人物設定では、
人口 一億二千万人
作者メモでは、
だいたい一億くらい
どれが正しいのでしょう、となるのが嫌ですよね。
そして、書いている時には、作者本人も分からなくなる事が、結構あります。
そこでAIが言うSingle Source of Truthでは、私の理解が正しければ、
人口は世界設定シートの情報だけが正しい。
と決めてしまい、他の資料には書かず、必要ならリンクを貼り、一元管理する。
これで救われる、って話だよね?
スプレッドシートで考えると分かりやすい
例えば、
- 登場人物一覧
- 世界設定
- 歴史年表
- 国家一覧
- 宗教一覧
これらが別シートに分かれているとします。
主人公の年齢が五か所に書かれていたら、
どれかはいつか間違えたり、修正があれば漏れたりが発生します。
だから、
主人公情報一覧年齢 18歳
だけを正本にし、年表では、
「主人公一覧を参照」
人物相関図でも、
「主人公一覧を参照」
これがSingle Source of Truth、って事だよね?
統合との関係
以前の記事で紹介した、「設定を統合する」「設定を整理する」という考え方とも深く関係して感じました。
だから備忘録に付けようと思ったわけです。
例えば、似たような設定の繰り返しになって申し訳ないですが、
王家だけ魔法が使える。↓王家は神の血を引く。↓神の血は魔力を持つ。
三つの設定があるとします。
ここで「神の血は魔力を持つ」だけを根本設定にすると、
- 王家が魔法を使える理由も、
- 勇者が魔法を使える理由も、
- 古代遺跡が反応する理由も、
全部そこから説明できます。
つまり、一つの真実から、多くの設定が派生する、関係を作れるわけです。
これがSingle Source of Truthの発想らしいです。
これ、例えが整い過ぎていて、その設定ならわざわざ繋げなくてもって思うかもしれないですが、実際に物語を作っている時は、まるで関係し無さそうな設定群を、どうにかして関係性を持たせる必要がある場面が、結構あります。
世界観は「辞書」のように作る
理想は、辞書のような設定集でしょう。
辞書では、ある単語の意味は一か所にしか書いてありません。
他のページでは、その単語を引用するだけです。
もし辞書の中に、同じ単語の説明が十か所あったらどうでしょう。
更新するたびに全部直さなければならず、そのうち内容が食い違います。
それは物語の設定でも同じことです。
一つの設定は、一つだけ。
あとは参照する、このシステムを自作に、どうやって気軽に持ち込むかです。
DRYとSingle Source of Truthの違い
聞いてみたらAIが言うには、似ているけど、これらは役割が少し違うらしいです。
DRYは、「同じ情報を重複させるな」という設計思想で、Single Source of Truthは、「この情報の正本はここだ」という管理方法です。
つまり、DRYは重複を防ぐ考え方。Single Source of Truthは、正しい情報の置き場所を決める考え方。
両方を採用すると、設定変更は一か所だけで済み、矛盾は劇的に減る、と。
まあ、良く分からないから、裏と表から同じ事を言っている様な気もする。
プログラムに詳しい人は、差が気になるのかもね。
一度だけ寄付する
毎月寄付する
毎年寄付する
金額を選択
またはカスタム金額を入力
寄付していただきありがとうございます。
寄付していただきありがとうございます。
寄付していただきありがとうございます。



