
ITがわからない人に、「デフォルト」と言っても分からないことを知らなかった、弓削田です。
ゲーム管理画面を作り出して、これまで突貫で作ってきたゲームシステムのデータ構造を見直すいいきっかけになりました。
ただ、データ構造を見直しても、それを変更することはもはややらないほうがいいという風に判断して、
管理画面構築を進めていくことにしていますが、
いろいろなデータ設定をする際に、そのデータが存在しないと、ゲーム画面でエラーになるというよりは、
「デフォルト値」を用意してなるべくエラーが出にくい仕様にしていたんですが、
デフォルト値って、自然なモノと、不自然なモノがあることに気が付きました。
自然なデフォルト値と不自然なデフォルト値
今回のゲーム管理画面で、マップ設定をする画面で、マップにアイコンを敷き詰めていく仕様の際に、
ユーザーのキャラクターが通れないように、アトリビュートを設定する方法で、
任意の画像アイコンは、ユーザーをとうせんぼするという仕様を組み込めるようにしています。
実際の管理画面のスクリーンキャプチャは次のような感じです。

この画面の右上の方に注目してください。
選択されている画像のプロパティが表示されていて、
画像のパス(URL)を変更して、内容も変えられるようになっていますが、
チェックボックスのある箇所が、ユーザーキャラが通過できるかどうかのフラグを設定しています。
チェックが付いているのがデフォルトで、チェックを外せば、ユーザーキャラが、そのマップの上を歩けないようになります。
このデフォルトがチェックがついている状態というのが非常に不自然で、
「通行止め」の時にチェックをつける仕様にすればよかったと後悔しています。
データ部分を見てみると、
デフォルトが、"{flg : 1}"というようになり、flg値が1以外の場合(無い場合も含む)は、通行止めになる仕様なので、
0,1という値を登録するようにしています。
当然チェックボックスは、1がチェックで、0が未チェック、にするという事が自然だと思うんですが、
「通行止めフラグ」にすればよかったという、後から気がついたデフォルト値になってしまいました。
デフォルト値の重要性と汎用性
何故、このフラグの仕様が失敗していたかというと、
このフラグを書かない場合は、通行止めになってしまうんですが、
最小設定で起動した時に、flgを書かなければ、マップ上のすべてのエリアがユーザーが進めないエリアになってしまい、
一歩も動けない状態になります。
ようするに、何もしない状態をデフォルトにすればよかったのに、デフォルトを"flg:1"としてしまったことが、非常に悔やまれてなりません。
そして、管理画面でも、不自然な「立入禁止の場合はチェックを外す」という文言で書かなければいけなくなったという顛末も、お寒くて恥ずかしい限りです。
システムのデータ設計は、こうした自然構成が基本とならないと、その後で、機能追加や、変更などをする際に、
不自然なまま、別のデータと組み合わせていくことになり、
開発効率の悪さや、ミスへの誘導になりかねないという、リスクを含んでしまうことになります。
あと、チェックボックスタグでも、デフォルトでチェックがONの状態というのは、非常に気持ちの悪い状態とも見えて、
内部で少し複雑な処理をやっていることを、こっそりお伝えしておきます。
後悔先に立たず
もちろん、デフォルト値は、カバーできるレベルでもあるので、大きな仕様変更をするリスクを考えると、
現状維持を選択してしまいますが、
個人的には、プログラムをすべて修正して、データも全部書き換えたいと思いますが、
やはり安易に行動すると、その後で発生する失敗のボリュームが膨らみがちという事は分かっているので、
今現在はそっとしておきたいと思います。
・・・が・・・、やはりこうしたデフォルト設計は、他の箇所にもたくさん存在しそうな気がしますね。
いや、きっと存在します。
すでにいくつかは気がついている点もあるんですが、
これらも、管理画面ができた後で、対応として考えることにしましょう。
こうした、失敗学も、次回のデータ設計の時に役に立つだろうと考えて、前向きに進んできたいと思います。
0 件のコメント:
コメントを投稿