【日常感覚をプログラムに反映する事(2)】

こんにちは。テクニカルマネージャの杉野です。

前回のお題はロールプレイングゲームを設計した時に勇者に位置情報を持たせるか?でした。皆さんの考えはいかがでしたでしょうか?さて、私が参加した勉強会の結末はどうだったか。私の意見はこうでした。

「勇者は位置情報を持っている」

理由は至極単純でした。自分が勇者の立場になって考えた時、私は今自分がどこにいるかを知っているからです。例えば、誰かと電話をしていて「あなたは今どこにいますか?」と聞かれれば「私は今、日本にいます。東京にいます。」と答えることができます。私の主張をもう少し整理すると、緯度経度といった位置情報の定義は勇者とは別でも良い。しかし具体的な値の入った位置情報は勇者が持っていれば良い。そうすれば敵に遭遇する当たり判定といった判定処理も勇者の定義の中で実装できる。

しかし、その意見は私だけでした。位置情報はそれを管理する物を作ってそこで処理するべきと反論を受けたのです。その方が役割を分割しやすくなり、プログラムを分けて管理できて良いというのが理由でした。チームの総意です。従いました。結果マップという定義で全ての登場人物の位置を管理をするコードを書きました。これはこれでとっつきやすいという事は確かでした。しかしやがてマップは悲鳴をあげます。判定処理が集中しがちになり、コードは複雑化。不具合の温床になったのでした。不具合と格闘しながら友達に言いました。

「神様になって世界を上から眺めて管理したことないから、想像できない不整合が出てくる」

いかがでしょうか?これはどちらが正しいという話ではありません。言うまでもなく、私の案でも不具合は出ただろうと思います。しかし、この時感じたことは、自分がこれまで生活をしてきた中で培ってきた感覚を大事にしながら考えて作る事を怠ってはいけないと言うことでした。つまり「日常感覚をプログラムに反映する」こと。そして、この考えを裏付けるような出来事をその後の開発現場でいくつか体験することになります。この続きは、また次回に。

「あなたは今どこにいますか?」

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です