nautilus notes

最近は主にObsidianのこと

「物語の体操」に出てくるお話づくりトレーニング出力プログラム

先日「物語の体操」という本を読んだところ、おはなしを考えるための練習課題がいくつか書いてありました。 ぼくはこういうのを見るとやってみたくなる方で、一つ目の課題をやろうと思ったのですが、カードを作るのもシャッフルするのも面倒だったのでプログラムを書きました。

この記事の対象

いろいろサボったら以下すべてを満たす人に向けになってしまいました・・・

  • 物語の体操を読んだ
  • ひとつめの課題をやってみたいと思った
  • Rustの環境を持っている
  • 自分で書くのが面倒で検索した

僕の趣味で書籍に掲載されている聖痕ではなく大アルカナになってますが許してください。

サンプルコード

[dependencies]
rand = "0.6.5"
use rand::seq::SliceRandom;

fn main() {
    let mut arcanas = vec![
        "愚者",
        "魔術師",
        "女教皇",
        "女帝",
        "皇帝",
        "教皇",
        "恋人",
        "戦車",
        "力",
        "隠者",
        "運命の輪",
        "正義",
        "吊るされた男",
        "死神",
        "節制",
        "悪魔",
        "塔",
        "星",
        "月",
        "太陽",
        "審判",
        "世界",
    ];
    let mut rng = rand::thread_rng();
    arcanas.shuffle(&mut rng);

    for ind in 0..6 {
        let mut position = vec!["正位置", "逆位置"];
        position.shuffle(&mut rng);

        let text = match ind {
            0 => "1: 主人公の現在  ",
            1 => "2: 主人公の近い未来",
            2 => "3: 主人公の過去  ",
            3 => "4: 援助者        ",
            4 => "5: 敵対者        ",
            5 => "6: 結末(目的)   ",
            _ => panic!(),
        };
        println!("{}\t{}({})", text, arcanas[ind], position[0]);
    }
}

シャッフルはこれをコピペしました(ありがとうございます)。 cipepser.hatenablog.com

超絶適当ですが5分で作ったので許してください。

おわりに

とりあえず10個くらい考えてみましたが、メチャクチャ疲れました。小説を書くのが趣味の知人が何人もいますが、みんなすごいなあと思いました。