オブジェクト指向シナリオ(6)「独立性」についての補足


 最終回と言っておきながら重要なことを書き忘れていたので追記する。今回説明するのは「独立性」の問題である。

 これまで「インタフェース」を明確に指定すべきである、とか「独立性」を高くするべきであると散々言ってきたように思うが、オブジェクト指向の世界ではごく当たり前の話なので説明し忘れていたw。ということで解説する。

--
1)影響範囲を局所化する
 プログラムの世界で「独立性を高める」というのはどういう意味があるかと言うと、例えばバグが発生した場合に「その処理はこのクラスで行っている処理なのでこのクラスだけ修正すればいい」とか、仕様変更が発生した場合に「その機能をまとめているクラスはこのクラスなので、このクラスのインタフェースを修正すればいい」というように、何らかの変更が発生した場合に、すでに作成した特定のクラスのみ修正すれば対応できるようにうまく設計されていることを、オブジェクト指向では

・独立性が高い

という。逆に「これこれこういう仕様変更が発生したよ」というときに「その辺の操作をしている箇所はいっぱいあるので検索して全部修正しないと」というように、クラス相互の関連が密で独立性が低く、変更があった場合に大量の影響箇所を修正しなくてはならないような設計をオブジェクト指向では

・モノフォリック

という。まあこれも状況によっては良し悪しで、独立性の高い実装をするというのはそうでないのに比べて2倍以上手間暇がかかる場合があるのである。例えば一度実装したら二度と変更しそうもない部分に対して独立性の高い設計を考えても効率が悪いだけである。変更の発生しやすい部分にこそ「独立性」を考慮した設計方針を導入するのがセオリーである。で、実際どんな箇所が変更が変更が発生しやすいのかといえば、プログラムの世界では

・ユーザインタフェース
・外部システムアクセス部分

ということになっている(これもセオリー)。

--
2)TRPGの場合
 さて、TRPGの場合であるが、TRPGではPCがシナリオ作成段階ではまったく決まっていないというシステム製作者から言わせてもらうととんでもない仕様抜けが、「普通のこと」として存在する(笑)。そしてオフラインセッションで多くの場合、その場で突然作成されたキャラクターに対応しなくてはならないということが往々にしてある。とんでもないことだ(笑)。

 で、そんなときの「インタフェース」である。インタフェースを明確にし「そのキャラクターはゲーム的にはこういう風に取り扱います」というのをはっきりさせ独立性を高める。オブジェクト指向シナリオ(2)(3)で例えば

・オープニングなどインタフェースのみ明確にしてPLが考えればいいのだ

と書いたが、ここでモノフォリックにオープニングの内容までGMが立ち入って事前に考えたとしよう。「これこれこういう舞台でこういう人物が登場しこういう話がされて結果はこうなる」とか決めたとするとだね、

・これこれこういう舞台
 →PCの設定次第で「そんなところにいるなんてありえない」という事態が発生し得る。
 →シナリオ中で各所で作った「そんなそんなところ」に関わるすべての場面の設定が書き換わることになる
・こういう人物
 →「そんな人物と知り合いなんてありえない」という事態が容易に発生し得る
 →シナリオ中で各所で作った「そんな人物」に関わるすべての場面の設定が書き換わることになる
・こういう話
 →「そんな話をするわけがない」という事態が容易に発生し得る
 →シナリオ中で各所で作った「そんな話」に関わるすべての場面の設定が書き換わることになる
・結果はこうなる
 →「そんな結果になるわけがない」という事態が容易に発生し得る
 →シナリオ中で各所で作った「そんな結果」に関わるすべての場面の設定が書き換わることになる

…という感じにPCの設定しだいで内容が変わってしまい(それはシナリオ全体に影響し)、事前にそれらを考えておいた努力は無駄になってしまうわけだ。ところが上記のようにオープニングの中身はPLが考えるということにしてしまえば、上で書いたPCの設定次第で変更される内容についてはPLのやるべきこととして局所化され、GM側は何も意識しなくても良くなる。せいぜいハンドアウトで「オープニングでこういうNPCを登場させます。そのNPCへの感情&人間関係はこういう風に設定しておいてください」という程度の“縛り”をハンドアウトという形で入れることによって「こういう人物とこういう話をする」というくらいの内容はシナリオの思惑通りに指定が出来る。そして、TRPGの「ゲーム」において今のところゲーム要素として重要であると認知されているのは

★「情報」
 →「こういう話をする」に含まれる
 →情報によってPC/NPCの振る舞いが変わるため、ゲーム的に極めて重要
★「人間関係」
 →「こういう人と会って(知り合いになって)」に含まれる
 →人間関係によってPC/NPCの振る舞いが変わるため、ゲーム的に極めて重要

の2つの要素であるので、これらをあらかじめインタフェースで指定しておくことはセッションをコントロールする上で重要である。で、あらかじめ決めておけばそれらに対する設定も細部までシナリオ全体に渡って設定しても無駄な作業にならないわけだ。逆に言うと、これらの要素以外はPLによってどう書き換えられてもほとんどセッションの進行には問題がない。だったらPLの好きに決めさせればいいのだ。

--
3)TRPGでは変更は日常茶飯事である
 そして、TRPGのセッションというのは変更の嵐といっていい。PC/PLがシナリオで想定した設定なり展開を逸脱するなんてのはすぐに起きることである。そこをどうアドリブでフォローしていくかがTRPGの面白みであり、もっとも大変なところでもあるのだが、そういう大変な部分こそGM一人に負荷をかけるよりも各人に分担させた方がGMの負担が楽になるし、各人も楽しめる。そしてそういった日常茶飯事的に発生する変更を各人の分担に任せ、影響範囲を局所化するためにインタフェースをきっちり決めて変更に強いシステム構造を作ることを全体として「オブジェクト指向設計」と言うのである。

 TRPGのように不測の事態がリアルタイムに頻発し、アドリブで対処しなくてはならないというシステムにこそ「オブジェクト指向」は向いている。

 以上で「オブジェクト指向シナリオ」の解説を終わる。
[PR]
by namizusi | 2005-01-02 21:52 | TRPG


<< 最近観た映画 オブジェクト指向シナリオ(5)最終回 >>