見出し画像

物語(昔話)のプロットを自動作成しちゃう方法!

【ご注意】プロット作成のとっかかりを横着して自動化しただけの冗談ツールです、けっしてこれで名作が書けるわけではありません。アマチュアはツールを過信しないこと! プロはこんなダサいツールを使わないように!w

※有料設定にしときましたけど無料でほぼ読めます~☆

はじめに

それは昔々、旧ソ連にウラジミール・Я. プロップという民話研究家がいました。氏はロシアに伝わる多くの昔話と魔法話を分析し、いくつかの要素の組み合わせで多くの民話のストーリーが構成されていることに気が付いたのです。今で言う構造分析ですね。

構造分析については「レヴィ=ストロース」とかで検索するといろいろでてくるとおもうので調べたい人はそっちを見てねw

話を戻して、ウラジミールさんが著した『昔話の形態学』という本には、

https://www.hanmoto.com/bd/isbn/9784891762087

下にしめすような31個の構造の組み合わせで物語ができると書かれています。

昔話の構造・31の機能分類

1:(不在・留守) 家族の一人が家を留守にする
2:(禁止) 主人公にあることを禁じる
3:(違反・侵犯) 禁が破られる
4:(探りだし) 敵が探りをいれる
5:(漏洩) 敵が犠牲者について知る
6:(悪計) 敵は犠牲者またはその持ち物を入手するために、相手をだまそうとする
7:(幇助) 犠牲者はだまされて、相手に力を貸してしまう
8:(敵対行為) 敵が家族のひとりに、害や損失をもたらす
9:(仲介・連結の契機) 不幸または不足が知られ、主人公は頼まれるか、命じられて、派遣される
10:(始まった反作用) 探索者が反作用に合意もしくはこれに踏み切る
11:(出発) 主人公は家を後にする
12:(寄与者の第一の機能) 主人公は試練をうけ、魔法の手段または助手を授けられる
13:(主人公の反応) 主人公は将来の寄与者の行為に反応
14:(調達) 魔法の手段を主人公は手に入れる
15:(二つの王国間の広がりのある転置、道案内) 主人公が探しているもののある場所に、運ばれ、つれて行かれる
16:(戦い) 主人公とその敵が直接に戦いに入る
17:(照準) 主人公が狙われる
18:(敵の勝利) 敵が勝つ
19:(不幸または欠落の除去) 初めの不幸または欠落がとりのぞかれる
20:(帰還) 主人公は帰還する
21:(迫害、追跡) 主人公は迫害や追跡をうける
22:(救い) 主人公は追跡者から救われる
23:(気付かれない到着) 主人公は、気付かれずに家または他国に到着する
24:(根拠のないみせかけ) 偽の主人公が、根拠のないみせかけをする
25:(難題) 主人公に難題を課す
26:(解決) 難題が解かれる
27:(判別) 主人公が気付かれる
28:(暴露) 偽の主人公や敵、加害者が暴露される
29:(姿の変更) 主人公に新たな姿が与えられる
30:(罰) 敵が罰される
31:(結婚もしくは即位) 主人公は結婚し、即位する

ウラジミール・Я. プロップ
『昔話の形態学』より

↑に書かれている「物語の機能」が、うまく並んでいるのがいわゆる「プロット」なわけです。

この1~31までがずーっと続いていてももちろん大作の物語が作れるわけですが、そこまで長大だとたいへんなので、それぞれの項が1/2の確率ででてくる

昔話プロットメーカー(GoogleDoc版)

というのをつくってみました。

↑のリンクをブラウザで開くと、上の31項目がランダムにでてきます。
ぽちぽちリロードするだけでいろんなパターンが表示されるので、これをみてるだけでもなかなかおもしろかったりします。(やってみてねw)

昔話用のプロットだけれども、なーんにもかんがえずに大体のプロットができてしまうので、けっこう重宝していますw

※このあたりは、拙著

↑の中に書かれていますので気になる方は読んでみてくださいー☆

昔話プロットメーカーPython版

で、今回、ネットやブラウザが使いにくい環境(はっきり言っちゃうとポメラw)で実行するために、さくっとPythonで作りなおしてみました。

まずもとになる物語の機能ファイルを

plotseed.txt

#   (不在・留守)	家族の一人が家を留守にする
#   (禁止)	主人公にあることを禁じる
#   (違反・侵犯)	禁が破られる
#   (探りだし)	敵が探りをいれる
#   (漏洩)	敵が犠牲者について知る
#   (悪計)	敵は犠牲者またはその持ち物を入手するために、相手をだまそうとする
#   (幇助)	犠牲者はだまされて、相手に力を貸してしまう
#   (敵対行為)	敵が家族のひとりに、害や損失をもたらす
#   (仲介・連結の契機)	不幸または不足が知られ、主人公は頼まれるか、命じられて、派遣される
#   (始まった反作用)	探索者が反作用に合意もしくはこれに踏み切る
#   (出発)	主人公は家を後にする
#   (寄与者の第一の機能)	主人公は試練をうけ、魔法の手段または助手を授けられる
#   (主人公の反応)	主人公は将来の寄与者の行為に反応
#   (調達)	魔法の手段を主人公は手に入れる
#   (二つの王国間の広がりのある転置、道案内)	主人公が探しているもののある場所に、運ばれ、つれて行かれる
#   (戦い)	主人公とその敵が直接に戦いに入る
#   (照準)	主人公が狙われる
#   (敵の勝利)	敵が勝つ
#   (不幸または欠落の除去)	初めの不幸または欠落がとりのぞかれる
#   (帰還)	主人公は帰還する
#   (迫害、追跡)	主人公は迫害や追跡をうける
#   (救い)	主人公は追跡者から救われる
#   (気付かれない到着)	主人公は、気付かれずに家または他国に到着する
#   (根拠のないみせかけ)	偽の主人公が、根拠のないみせかけをする
#   (難題)	主人公に難題を課す
#   (解決)	難題が解かれる
#   (判別)	主人公が気付かれる
#   (暴露)	偽の主人公や敵、加害者が暴露される
#   (姿の変更)	主人公に新たな姿が与えられる
#   (罰)	敵が罰される
#   (結婚もしくは即位)	主人公は結婚し、即位する

↑このように作成。UTF-8 形式で保存しておきます。

スクリプトはこんなかんじ(雑)

protmaker.py

# -*- coding: utf-8 -*-
# プロットを自動作成する

import random

with open("plotseed.txt", encoding="utf-8") as f:
   lines = f.read().splitlines()

index=0
while index < 31:
    if(random.random()<0.5):
        print(lines[index])
    index=index+1

これを、VSCode 上で実行すると

VSCode で実行

下のターミナルというところに実行結果が出ていきます。ちゃんとランダムになってますね。(∩´∀`)∩

では、この2つのファイルをポメラへ転送します。(SCPで送るといいよ☆)

ポメラ(DM200)上で実行

ポメラさんは、当然すでにLinux化してあるはず(もちろんしてるよね?w)

日本語を使うのでpython3もいれておきましょー。

で、実行すると

ここから先は

1,377字 / 9画像

¥ 200

よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,