プロットや設定がないとまとまらない

 文章というのは、闇雲に書いていてもまとまるものではありません。


 「●●について書く」「●●が××する」程度でも、いわゆるプロットがないとまとまらないものです。


 この文章も見切り発車ではありますが、タイトル通りの『文芸的感覚でプログラミングをしてみよう』という簡単なプロットがあるからこそ、どうにかこうにか紡いでいけているのです。あと数日でまとまるかは、まぁ、不明ですが。


 さてさて、今回は、『ボーイ・ミーツ・ガール』の物語を考えてみましょう。


 典型的なパターンでありますね。少年が少女と出会い、何かしらの関係を気付いていく物語。恋愛要素が好かれますが、バディものだったりもしますね。


 そういった物語を書こうと思ったら、色々と考えることがあるでしょう。


 主人公はどういう性格なのか? 何をしている? 年齢は?

 ヒロインはどんな眼鏡を掛けているのか? 何をしている? 年齢は?

 舞台はどこ? 現代社会? 過去? 未来? 異世界?

 どこで出会うのか? 学校? 公園? 鯖江?

 

 などなど。


 設定を考え、それを元にプロットを立てる。時には、プロットを成立させるための設定を考える。この辺りは、鶏と卵の関係ですな。


 さて、プログラミングの話でしたね。


 プログラミングにおいても、設定は大切です。


 どんな登場人物が、どんなエピソードを繰り広げるのか、じっくりと考える必要があります。何せ、プログラムの読者はコンピュータ。融通が利きません。言った通りのことしかやりません。


 なので、やはり設定とプロットはキッチリ考えていかねばなりません。


 では、ボーイ・ミーツ・ガールをネタに、何かしらプログラムを書いてみましょう。


【登場人物】


さとし


 主人公の少年。当然のごとくめがねっ娘が大好き。

 あらゆるエンタメ作品には最低一人はめがねっ娘がいることが暗黙の了解となっている世界を夢見ている。


 因みに、眼鏡のテンプル(耳に掛ける部分)の付け根の部分を『』といいます。


public class Satoshi{

 int GetMeganekkoLove() {

  retun Integer.MAX_VALUE;

 }

 /*以下略*/

}



梨夢りむ


 めがねっ娘ヒロイン。三つ編みめがねっ娘。

 眼鏡はウェリントン(逆台形)型のセルフレーム。

 三つ編みめがねっ娘だからと大人しいとか委員長気質とか言われるのを嫌う豪快な姉御肌。


 因みに、眼鏡のレンズの嵌まった前枠部分を『リム』といいます。アンダーリムのリムですね。


public class Rim{

 MeganeType GetMeganeType() {

  return WELLINGTON;

 }

 HairStyle GetHairStyle() {

  return MITSUAMI;

 }

 int GetIInchobility(){

  return 0;

 }

 /*以下略*/

}


【プロット】


  智は、登校中に交差点で見知らぬめがねっ娘とぶつかってしまい、眼鏡を落とさせてしまう。めがねっ娘の眼鏡をキャストオフさせるという禁忌に触れた智は、自責の念に駆られて自害しようとするが、件のめがねっ娘たる梨夢に止められる。


 梨夢の慈悲に感檄しつつその場は別れたが、登校するとクラスの転校生として朝のめがねっ娘がやってきて運命を感じる。  


 付きまとわれるのもおっくうな梨夢は、自分の手伝いをするように命じる。

 喜んで答える智。

 

 実は梨夢は、人々の夢に巣くい道を誤らせる夢魔を狩る夢魔狩り《ドリームデーモンハンター》だった。

 

 めがねっ娘のためならという理由ながら、全く苦もなく彼女と共に夢魔と戦う智に、段々と梨夢は惹かれていき、あれこれあって、智は梨夢と結ばれる。



public class BoyMeetsMeganekko{

 public static void main(String[] args) {

  // 登場人物の設定

  Satoshi satoshi = new Satoshi();

  Rim rim = new Rim();

  // 智は梨夢と出会う

  satoshi.meets(rim);

  // 梨夢は眼鏡を落とす

  rim.fall(glasses);

  // 智は絶望する

  satoshi.despair();

  // 智が自害しようとするのを梨夢は妨げる

  rim.prevent(satoshi.trySuicide());

  // 智は梨夢の慈悲に感激する

  sathosi.Kangeki( rim );

  // 梨夢は去る

  rim.leaveFrom( satoshi );

  // 智は登校する

  satoshi.goToSchool();

  // 智は梨夢と再会する

  satoshi.meetsAgain(rim);

  // 智は梨夢に運命を感じる

  satoshi.feelMyDestiny(rim);

  // 智は梨夢にアタックする

  satoshi.attack(rim);

  // 梨夢は困惑する

  rim.confuse(satoshi);

  // 梨夢は智に手伝いを命じる

  rim.requiredHelpTo( satoshi );

  // 梨夢は智と共に夢魔を狩る

  rim.huntDreamDeamonWith( satoshi );

  // 梨夢と智にあれこれあった

  arekore( rim , satoshi );

  // 智の思いが梨夢へと届く

  satoshi.arriveToHeartOf(rim);

  // ハッピーエンド

  return 0;

 }

}


 とまぁ、かなり強引ですが Java によるプログラムだとこんな感じに表現出来るかと思います。コンパイルエラーになる部分は /* 以下略 */ のところに全部書いてる体です、はい。

 

 前回は C 言語でしたが、オブジェクト指向のパラダイムの方が楽なので、 Java で書くスタイル。『オブジェクト指向』というのは、プログラムをオブジェクトの振る舞いの連鎖として構築すると考えて貰えれば大体あってるというか、実際に要素を上記のような流れで組み立ててプログラムを組む技法でありまする。


 まぁ、例によって解らないなら解らないでいいです。


 今回の趣旨は、プロットを立てて、その流れに沿ってプログラムを書くことができるってところにあります。


 それを感じて貰えれば、十分なのです。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

文芸的感覚でプログラミングをしてみよう ktr @ktr

★で称える

この小説が面白かったら★をつけてください。おすすめレビューも書けます。

フォローしてこの作品の続きを読もう

この小説のおすすめレビューを見る

この小説のタグ