■100%の完成度とは?
今回話したい100%の完成度とはAAAの傑作タイトルを作るには?という話ではありません。
開発がちゃんと終了できる状態のことを言います。
一般的にはわかっているバグは全部修正して、問題のあるような仕様がない状態のことですね。
そんなのあたりまえじゃん!って思うかもしれないですが、意外に100%にするのは大変なのです。
■95%までは進みやすい
ほとんどバグが取れています、ほとんど仕様は実装済みです、という状態にすることはそんなに大変ではないのです。
「10カ月かけて開発進捗95%まで来ました、あと1か月で残りの仕様実装とバグ修正で終わりそうです」、というような話をよく聞くのですが、これがほんとになることはまれだったりします。
そこから半年くらい時間が経過して、やっと100%になるということも珍しくありません。
「開発進捗95%まで来た」というのがウソ?いいえそんなこともないのです。
じゃあ何が問題なのでしょう?
■論理エラーや矛盾する仕様
例えばプラットフォームを変えて移植するようなゲーム制作があるじゃないですか。
仕様書には通信仕様は変更しない、と書いてある。
移植元のプラットフォームの通信APIが40秒の不通で通信エラーを返すような仕様で、移植先のプラットフォームの通信APIが35秒の不通でエラーを返すような仕様だったとします。
この時点で同じ通信仕様にすることはできない場合がありますよね。
まあそこは35秒で合わせましょう、ということになったとしても40秒あることが前提で動いている仕様があるとアウトです。
・タイムアウトを管理するサーバーがある
・10分間に16回以上同じユーザーからアクセスがあるとエラーになる
という仕様だった場合、移植元のAPIだと40×16秒で640秒必ずかかるので発生しませんが、移植先のAPIだと35×16秒で540秒なので発生します。
そうなるとサーバーを高いスペックのものに変更しないといけない、予算が変わる、ということで大騒ぎになるのです。
そういう問題があるということにほんとの終盤まで気が付かないことがよくあるのです。
それ以外にもデザインチーフAさんの下で作っていたメニューと、デザインチーフBさんの下で作っていたメニューの仕組みが微妙に違う場合。
どちらかに統一しましょうということになると、作り直しが発生して開発進捗が95%から下がっていってしまうわけです。
それぞれ使っていたフォントの種類が違う!なんていうことだってあります。
■避けるためには
開発の序盤の段階でしっかりと話し合っておく必要があります。
これ大変なんですよ。
最初に話し合っていると序盤の進捗率が上がりません。
10カ月で開発する場合2カ月たったら開発進捗20%であってほしいですよね?
でもこの話し合いで時間を使っていると開発進捗20%にならなくなる。
そうなるとなんで遅れているか原因のレポートを作ることになったり、定時報告書が細かくなったりでより時間がかかるようになったりします。
もうこうなると地獄ですよね。それを避けるためにとりあえずで進めると、よりひどい地獄が待っているわけです。
うーん、日本の生産性の低さってこの辺りに原因があるように思います。
プログラムであれば目の前にあるバグを直すだけではなく、
・根本としてどうしてその問題が起こったのか?
・それを解決するためにはどうするべきなのか?
を考え直す必要が出てきます。
目の前のバグだけ直すなら3人日だが、根本の仕組みを作り直すと10人日かかる。
7人日余分に取れないので目の前のバグだけ直す、ということをしていると大概は根本を直しておけば対策できたバグが新しく5個くらい出てきて、結局15人日かかってしまいました、みたいなことが発生します。
こういった原因で95%から100%に進まない状態になるのです。
■結論として
ゲーム発売は95%の完成度では出せないです。
一昔前ならともかく、わかっているところはつぶさないと駄目ですよね。
そう考えると序盤に多少揉めようが、細かい仕様の確認や、システムの根本的な修正はするべきなんです。
95%までは進みやすくても100%にしにくいのであれば、結局それはブラックな開発につながってしまうのです。