はい、今日もコーディングの時間です。一人前のストーリーエンジニアを目指して皆さん頑張りましょう。
まず、おさらいします。昨日は「悪役」クラスの宣言と、属性・メソッドの勉強をしましたね。
名前、性別、容姿、強さ、読者からの評価といった、「登場人物」クラスが有している基本的な属性に加えて、所属組織、捨て台詞の定型、勝った時のカタルシスといった追加属性、及び「主人公との戦闘」「主人公の成長」といったメソッドの実装まで勉強しました。
今日は、昨日作った「悪役」クラスを継承して、「かっこいい悪役」クラスを作ってみましょう。
ストーリーを盛り上げる為に悪役・敵役は必要不可欠ですが、それだけだとお話は深まりません。ストーリーを深める為には、悪役にも魅力が必要なのです。強くてかっこいい悪役が読者に感情移入され、時には「○○を殺さないで」などというはた迷惑なお便りが届くくらいになってこそ、そのストーリーは輝くのです。
宣言部分はこんな感じです。悪役クラスを継承することで、悪役クラスで実装したメソッド・属性はそのまま使えます。
public class かっこいい悪役 extends 悪役{ }
記法がJavaくさい?HAHAHA、何を言ってるんですか。講師はJavaなんて一行も書けませんよ。
悪役クラスで既に実装したメソッドでも、かっこいい悪役クラスで新たに書き直せば、悪役クラスで生成した人物とはまた違った効果を発揮させることが出来ます。
例えば、同じ「主人公との対決」メソッドでも、通常の悪役インスタンスの場合一瞬で「戦闘後」メソッドがコールされてしまうところ、かっこいい悪役インスタンスから呼ばれた場合は「ライバル認定」だとか「水入り」といった様々なメソッドに派生させることが出来ます。これを多態性(ポリモーフィズム)といいます(多分)
取り敢えず、かっこいい悪役クラスに新たに実装するべきメソッドを考えてみましょう。
かっこいい悪役の肝は、大きく分けて二つあります。「突き抜け」と「ギャップ」です。
「突き抜け」とは、その名の通り「貫徹していることによる魅力」。悪役には悪役なりの論理や美学が備わっている訳ですが、それが通常の悪役に比して遥かに強調されている、あるいは首尾一貫していることによるかっこよさです。ひたすら強くて揺れないゾーマ様型の悪役もそうですが、パトレイバーの内海課長の様な、ある種の狂気をもった悪役も「突き抜けた」悪役と言えるでしょう。
一方、ギャップというのは「普段との落差」による魅力。ただひたすら強いことで「結果としてかっこよくなっている」悪役もいますが、「普段は純粋な悪役なのだが、たまに意外な描写がある」ことによって、悪役の魅力は増します。
ギャップには色々な種類があります。普段苦みばしった悪役キャラがたまにいいことやアホなことをする、実は甘いもの好きだったりする、といった要素もギャップの内ですし、「もっと強い敵が出てきて共闘」などといったよくあるパターンも「普段とのギャップ」に含まれます。悪役に意外な過去があった、意外な背景があったというのもギャップの中に含まれるでしょう。
以前紹介した「お前は俺の獲物メソッド」などは、ロジックを殆どいじらなくても悪役クラスに実装出来る、優秀なギャップ実現メソッドといえます。
「お前は俺の獲物メソッド」の中身を書いてみましょう。
public void お前は俺の獲物() throws Exception{
if(状況.主人公の危機){
super.突然の登場();
状況.援軍();
存在感++;
悪役としての動機--;
作中の立場--;
}
}
いい感じですね。見て分かる通り、使うごとに存在感は上がっていきますが、作中の立場と悪役としての動機が薄くなっていくので注意してください。ここでは表記していませんが、「共通の敵」メソッドをコールしてもいいかも知れません。Exception投げてるのにtry catch書いてないのは、多分そういう仕様です。
あと、重要なのがやられ際の所作です。退場する際に毅然としていることで読者に強い印象を残す、「死に際の見せ場」というのも悪役の重要な機能です。忘れずに実装しておきましょう。
ということで今回の講義はここまでです。サンプルコードは以下の通りです(getter,setterはスペースの関係上省略してあります)。今回書けなかった各メソッドの実装はまた次回の講義で行いますので、皆さん予習しておいてください。
public class かっこいい悪役 extends 悪役{
private String 美学;
private String 戦う目的;
private int 存在感;
private int 悪役としての動機;
private int 作中の立場;
private int 頭の切れ味;
private String 名台詞;
public void お前は俺の獲物() throws Exception{
}
public void 劇場版ジャイアン() throws Exception{
}
public void 悪役の過去() throws Exception{
}
public void 力こそ全て() throws Exception{
}
public enemy 共通の敵出現() throws Exception{
}
public void 一時的な共闘() throws Exception{
}
public void 死に際の見せ場() throws Exception{
}
}
2007年12月18日

この記事へのトラックバック
ところで、「かっこいい悪役」に「ツンデレ」メソッドは入りませんか?
最近pcをいじらず、携帯で生活していたので、外部ブログが見られませんでした(笑)
この記事、面白いですね、いつごろから連載?されているのですか?♪
>志村ーっ! インデントーッ!
どわ、すいません。入力画面に入れた時はインデントしてたんだけど、なんだか潰れてしまった。後で直しておきます。
>ところで、「かっこいい悪役」に「ツンデレ」メソッドは入りませんか?
多分基底クラスの「登場人物」に実装されてますんで、そちらと違う動きをさせたい時はオーバーライドしてください。
>あーくさん
>いつごろから連載?されているのですか?♪
二週間前くらいから毎日講義が開かれてます。開講場所は主に俺たちの心の中です。
「登場人物」クラスを探したのですが、「ツンデレ」メソッドが見つかりませんでした。
それで個人的に派生クラス(悪役以外で)を調べてみたのですが、「ヒロイン」クラスに「ツンデレ」メソッドがありました。
最初の担当者が「ツンデレ=ヒロインのもの」と思い込んでいたんでしょうね、きっと。
いっそ勝手に「かっこいい悪役」クラスに追加しようか、とも考えたのですが、保守性も考慮するとやはり「登場人物」クラスに「ツンデレ」が追加されるのを待ったほうがいいのでしょうか?
あとギャップのデザインパターンのひとつとして、最初は味方と見せかけて、メッセージを受け取ると悪役に挙動が変わる''裏切り''とか面白いかもしれません。
>NOBIEさん
>それで個人的に派生クラス(悪役以外で)を調べてみたのですが、「ヒロイン」クラスに「ツンデレ」メソッドがありました。
なんと。ツンデレがこれだけ汎化した現状では、それは重大な仕様落ちですね。サポートMLに投げときます。
けど、「かっこいい悪役」クラスに独自実装してもあんまり問題はないと思います。書き終わったらcodereposにどうぞ(違
>niizatoさん
必殺技メソッドは確か戦闘パッケージに用意されてますんで、インスタンスをnewしてそっちから呼び出してください。
>メッセージを受け取ると悪役に挙動が変わる''裏切り''とか面白いかもしれません。
なんかグローバル変数を勝手に書き換えるとかでクレームがきて、今直してると思います。多分。
>けど、「かっこいい悪役」クラスに独自実装してもあんまり問題はないと思います。
>書き終わったらcodereposにどうぞ(違
出来上がりましたのでcodereposしておきます(嘘
お疲れ様です。これで世の中のかっこいい悪役インスタンスもツンデレしまくれることでしょう。
ところで、私ツンデレメソッドにはあんまり詳しくないんですが、ツンデレって内海さんとかが実行しても違和感ないものでしたっけ?
>ツンデレって内海さんとかが実行しても違和感ないものでしたっけ?
正直、レイバーは詳しくないのでアレなんですが、伝え聞くキャラクター像だけで言うと、「存在感」と「作中の立場」をコントロールするためにツンデレするのはアリなんじゃないか、という気はします、まる。
ちなみにNOBIEさんの理想の「かっこいい悪役」は誰ですか?
梧桐清十郎で。
主役だというツッコミはなしの方向で。
主役というか、むしろタイトr(ry
勢十郎さんの暴れっぷりもすがすがしかったですよね。