Q「関数型言語でもヒット作のゲームソフトを開発できたという話を見かけます。結局オブジェクト指向は使いどころはあるのですか?」
これはゲーム業界特有の話になってしまいますが・・・
「副作用でバグってくれた方が良い場合がある」
という極めて難しい問題があります。
(適切な語彙があったらご指摘下さい)
面白いを定義できるのか?
まず大問題なことに・・・
面白いの定義が難しいのです。面白いとは?(哲学)
私個人の感性で言えば「良い刺激による救済」と考えますが、ここは読者の皆様の感性で左右されるところにもなります。
バグってくれた方が助かった例
例1 バグってた方が面白かったパターン
アクションゲームにおけるキャンセルという仕様ですが、例に挙げるとストリートファイター2では仕様にない動作でした。
しかし・・・バグだけどあった方が面白いから仕様にしようぜ
というノリで、むしろ開発中のゲームがより面白くなったという話があります(うろ覚え)
例2 プレイヤー側が損するバグで良かったパターン
FF11では、プレイヤー側のジョブ以外に、エネミー側も二足歩行型(獣人族)にはジョブを持たせていました。
一度運営がやらかしたのが・・・
「不遇と言われるジョブを超強化したら、エネミー側も超強化されてしまった」
というやらかしがありました(うろ覚え)
モロにオブジェクト指向で組まれていた予感がしますね()
後日、プレイヤー側とエネミー側は別ジョブ扱いになりました。
変更前:どっちもナイト
変更後:プレイヤーのナイト エネミーのナイト
ただ、こういったやらかしは・・・プレイヤー側がSNSで話題にして拡散してくださります。やらかし内容が面白いバグなら、笑い話になって広報担当が楽になる。
という、SNS時代ならではのハチャメチャさがあります。
当初はブチギレていたユーザも、何年も経って振り返ると「あんなバグもあったな。あの時のPTメンツ誰が居たっけな・・・?」と、アルバムをめくる感覚で楽しめるバグもあるということです。
致命的なバグ(いわゆる詫び石案件)でないのであれば、いつの間にかネガキャンじゃなくてポジキャンになるという人間というハードウェアのバグまで定義できるか?という問題があります。
総括 オブジェクト指向って何だよ(哲学)
一言で言えば「仮想世界」の構築何じゃないかなと。組むのは面白い。
BtoBの業務ロジックでは使うべきではないというのは同意です。しかし、人間の感性の攻略は、多少副作用が無いと難しいというのが個人の見解です。
クリティカルなところは関数型言語ならではの不変性で、バグっても最悪どうにかなる部分は別にどの指向でも良いんじゃないかなというところです。
この件はマサカリが来ても対処してみたい所存です。私から投げるワケではないですよ
次回予告
関数型言語の話も少ししたいため、別記事に分けて個人の見解を述べて見ようと思います。
Q「関数型言語のメリットを、オブジェクト指向育ちの方に伝えるにはどうしたら良いんでしょうか?」
という記事をアップします。