カメリアの記事

意味があることやないことを綴ります

詳細プロットは表計算アプリで

プロットを考える際にはいろいろなアイデアを出さなくてはなりません。驚くような結末、それを成り立たせる様々な展開。いろんなタイプのアイデアがあります。そのあたりの分担として、詳細なプロットに表計算アプリを使っています(表計算アプリは Excel など)。

概要プロットはホワイトボード

だいたいの流れを考えるのはホワイトボードです。三幕構成や起承転結を意識するのがこの段階です。キーになる出来事・展開はどんなものか、それをどう配置するか、を考えます。

詳細プロットは表計算アプリ

f:id:camellia1977:20211203212136p:plain

本題の表計算アプリでは詳細なプロットを作り込んでいきます。概要プロットを成り立たせるのに必要な出来事・展開を考えて書き込みます。シーンの中でどんなやり取りがあるのか、どんなやり取りを盛り込んでどう配置するのが効果的か、を考えます。

書く量が多いことや、書き直すことも多くなることからデジタルが使いやすいです。前提として、奇抜なアイデアより自然な展開を考える機会が多いことが挙げられます。僕の感覚では、驚くような出来事や飛躍した展開を考えるにはアナログが向いています。これに対してデジタルは取りこぼしや抜けのない思考に向いているように感じます。

プログラミングで書き出す

f:id:camellia1977:20211203212214p:plain

表計算アプリで作ったプロットはそのままでもテキストエディタにコピペできますが、一手間加えてプログラミングして書き出すと便利です。表計算アプリ、 ExcelGoogle スプレッドシートにはプログラミングする機能があります。これを使って簡単なプログラムを書くことで小説制作の強力な補助になってくれます。

日記 - 熱が 37.0 ℃あった

5時に起きた。
寝起きはぼんやり。
悪くはないスタートだった。

朝方から小説制作をちょっとしたり、それを小説家になろうに投稿したりしていた。
投稿するのに手間取ってプログラミングする羽目になって午前中の半ばくらいになった。
疲れ果てて何もできなくなってグダグダしていた。
うつ病のせいか疲れると本当にダメになる。

午後はプログラミングとかをいくらかやった。
調子が悪くなってきてグダグダすることになった。
今日も天気が悪くてうつ病の具合が悪い。
調子が悪くていけない。

夕方前に熱を測ったら 37.0 ℃あった。
頭痛から解熱鎮痛剤を飲んでいてそれなので結構なことだと思う。
カロナールを追加して寝たら楽になった。

夕方はブログ記事を執筆していた。
まぁ書ける体調になって良かったと思う。

四年ぶりに小説を投稿しました

友人に読んでもらって一部を修正したりして投稿しました。「迷宮都市エストラーヴァの人々」と言います。おもしろいので是非読んでください。

場当たり的

タイトルは投稿するときに考えました。すっかり忘れてました。いかんなぁという感じです。地図帳を開いて、ドイツあたりを見回して、チェコオストラヴァをもじって地名を付けたんですね。読んでもらうためには、もっとちゃんと考えないといかん気がするのですが。

四年ぶり

四年ぶりとか言ってますが、実は短編をちょいちょい投稿しているのでそうでもないです。でもちゃんとした連続小説を投稿したのは四年ぶりです。長かった。途中で二十万文字くらい書いた作品もあるんですが、これは投稿してません。いろいろあってやっとです。

是非

迷宮都市エストラーヴァの人々『冒険者を拾う 1/3』

台風の日の風呂

台風の日の風呂は格別。なんと気分のいいことだ。外はあんなに荒れているのに、自分はこんなにも安心していられるなんて。

風呂は温かいわけですが、これが安心の理由でしょう。安心して赤ちゃんなんかはお漏らししますね。寒い冬にも、夏の暑さの中にも、あの温かい湯に浸かった心地良さは何とも言えません。

それにしても記憶の初期の風呂は父とともにありました。父と一緒にい入っていましたから、僕にとっては当然です。そこにも風呂が安心できる理由があるように思うのです。風呂に浸かるとき、僕は父に守られて安心しているのではないでしょうか。

なにも風呂に入って父を感じるわけではないのですが、どこかで感じているのではないかと。いろいろと自分の心理をのぞいていると、自分が父に強いコンプレックス(思い)を持っていることが分かります。無意識の内に出る言動にも見られます。厄介なことですけどね。

そんな分析をしつつ、しかし台風のように屋外が荒れ模様のときの風呂というのは本当に心地いい。分析によって父を思わされるものだから、なんだか涙が出てしまします。子供の頃に戻りたいなんて、そんな欲求があるとしてもうなずけるところです。

公開しても仕方ない GAS の魅力

GAS は Google のオフィスアプリで使えるプログラムです。僕はもっぱら Google スプレッドシートで、個人的な独自関数として利用しています。 JavaScript が書けるなら使わない手はないでしょう。なんせ、これがあるからできること、があるのですから。

ニッチ

それにしてもニッチな独自関数が出来上がります。自分の用途にだけマッチした関数なんですから。というか、せっかく作ったプログラムですから公開したいんですが、こんなニッチさだから公開の意味がない。誰も使わないし、使い方を説明することも難しい。なんて惜しいんでしょう。

ニッチさゆえの魅力

でもそれくらい自分の用途に合ったものが作れるのですから便利さはひとしおです。冒頭でも書きましたが「 GAS があるからできること」があるのです。逆を言えば、 GAS がなければできないことがあるんですね。これは大きな違いです。まさに魅力の源泉。

例えば

下の独自関数は Google スプレッドシートのプロットに書き込んだ伏線を一つのセルにまとめて表示するものです。僕以外の人がそう聞いても「ふうん」としかならないでしょう。僕もそうとしかなりませんし。でも実際は力を発揮しているんですよ。 GAS は素晴らしいですね。

// # vJoin
// ## 機能
// * srcObj の各行において index で示す正規表現が indexPos 番目の値と等しければ itemPos 番目の値を join する
// * セパレータは sep で指示するが省略できる
// * 表示オプションは dispOpt で指示するが省略できる
//
// ## 利用例
// * 提示情報などをまとめる
// * 伏線をまとめる
function vJoin(srcObj, index, indexPos, itemPos, sep, dispOpt) {
  let lineBeg0 = ""
  let lineBeg1 = ""
  if (!sep) {
    sep = ", "
  }
  if (!dispOpt) {
    lineBeg0 = RegExp(".*")
    lineBeg1 = ""
  } else if (dispOpt === "index") {
    lineBeg0 = RegExp("(.*)")
    lineBeg1 = "$1 "
  }
  return srcObj.filter(w => String(w[indexPos - 1]).match(index) !== null && String(w[itemPos - 1]) !== "").map(w => String(w[indexPos - 1]).replace(lineBeg0, lineBeg1) + w[itemPos - 1]).join(sep)
}