時代に翻弄されるエンジニアのブログ

ゲームプログラマをやっています。仕事やゲームや趣味に関してつらつら書きたいと思います。

バッファのある開発とは?

f:id:tkymx83:20210525002358p:plain

こんにちは、たくという名前でブログをやっております

突然ですが、ゲームの開発のスケジュールではバッファを絶対に入れます。

むしろ、バッファのない開発を見たことがないくらい浸透していますが、なぜバッファを取る必要があるのをいまいち考えたことがない人も多いと思います。

今日は、なんとなくスケジュールに存在するバッファについて、なぜ必要なのかを知見としてのことしておきたいと思います。*なお画像のバッファローと、バッファは関係ないと思います。多分。

f:id:tkymx83:20210525000152p:plain

バッファとは?

ゲーム開発に限らずシステムの開発では、開発する内容が決定したら、いつまでに開発が終わるのかを決める必要があります。いつまでに開発が終わるかを計算するためには、必要な機能とその工数を足し合わせて総工数を出す必要があります。

バッファとは、その単純な工数の足し合わせにプラスで工数を多めに見積もることです。一見無駄なようにも見えますが、開発を行う上で適切にバッファを取ることは常識とされています。

では、なぜバッファを取ることが開発に対して常識とされているのでしょうか?その理由を数個上げてみたいと思います。

ゲーム開発は作って終わりではないから

開発の終了とはいつのことでしょうか?
実装が完了した瞬間でしょうか?
僕は、仕様を満たす実装が完了したタイミングではないと思います。

ゲームの最終目標は面白い機能を作ることです。そのため、開発終了は機能を実装して遊んでみて面白いと感じる瞬間だと思います。そのため、完成後には面白い状態になるまで修正と改善を行う必要があります。その際の工数を始めに見積もることは難しいため、バッファが必要になります

すべての工数をはじめから見積もれるわけではないから

開発の初期段階では仕様を細かい機能にわけてそれぞれの工数を見積もります。ある程度はじめの段階で機能を出しますが、当然人間の仕事なので漏れが発生します。この漏れは開発の中盤になってわかることも多く、バッファのないプロジェクトではその時点でスケジュールの遅延になります。

また、漏れの他にも開発中は想定されていない様々なタスクが発生します。例えば、開発を効率的に行えるようにデバッグ機能を作る実装だったり、ほか職種の方が開発しやすいようなツールを作成するなどです。チームのメンバーとの他愛のない雑談や、チーム課題の解決などもそれに当たります。

これらも確実に発生しますが、はじめの段階で想定するのは難しいです。そのため、バッファが必要になります。

精神的に余裕がなくなってしまうため

バッファない場合、開発初期に見積もった工数に沿った形で開発を進めなくてはいけません。有給などで休みがあった場合はその時点で遅延が発生します。遅延が発生した場合が、次工程のメンバーにも影響が出るため、早めにリーダーに相談をする必要があります。ただ、余裕のないスケジュールを組んだがゆえに遅延の連絡が多くなると、その都度スケジュール調整が発生します。そのため、作業者としてはとても報告しづらい状況になります。

報告しないということは隠れて残業をして実装を行ったり、最悪はスケジュールの終盤で報告されることもあります。このような状況は開発メンバーから精神的な余裕をそいでしまいます。

また、開発者としては開発物に対してこだわりを入れることにモチベーションを感じますが、こだわりを入れ込む工数がないと、チャレンジする気持ちも薄れてしまいます。チームとしても停滞的で風通しの悪いチームになってしまいます。

まとめ

バッファは、開発のクオリティの他にも、チームの雰囲気やモチベーションなどいろいろな付加的な要素を生み出すための土台になる期間です

そのため、できるだけ開発をする上でバッファは多めに取りたいですし、多めに取れるようなチームは、通常の開発以上に効率的で風通しの良いチームになると思います。

せっかくなので次は、実際にどれくらいバッファを取ればよいのか実例ベースで解説してみたいと思います。