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

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

設計のレビューが廃れてしまった開発現場に言いたいこと

f:id:tkymx83:20201129215344p:plain

こんにちは、たくという名前でブログをやっています。
今日はすんごく久々のブログ更新になります。

最近新しいチームでゲーム開発の仕事をさせてもらって、設計の事前のレビューの大切さに気づいたので共有します。

設計レビューとは?

設計とは、事前にすり合わせた実装を行っていく上で、どのような方針で作っていくかを決めることです。
例えば、クラス設計だったり、通信周りのスキーマの設計などがそれに該当します。また、ゲーム中の通信の回数などパフォーマンスに影響が出る部分の決め事などもこの設計に当たります。

この設計が不十分で実装が進んでいくと、実装の途中で気づいて後戻りしたり、実装が終わったあとに気づいて作り直しになったりとプロジェクトのスケジュール面においても大きな影響が出てきます。

あまり浸透しない設計レビュー

しかし、多くの現場ではクラス設計などは、個人に任されています。特にスピード感が大事にされるスマホゲームの業界などは特に顕著で、初期設計のレビューが無いために、実装者の熟練度によって、初期設計の粒度が変わってしまい、大きく実装速度に差が出ます。

そのため、設計のレビューは大切です。ですが、設計の何を見たら良いのかが不明確であることと、レビューの時間がかかることから、敬遠されがちです。僕の経験からも多くのチームでやったほうがいいと思うけど、行動には移せないことが多いと感じています。

設計レビューが浸透しない原因

原因としては2つ考えられます。

  • 1つ名は、事前準備が多いことです。クラス設計でも通信のスキーマの設計でも資料を用意する必要があります。クラス図などはそれを書くだけでも大きく時間が取られます。よって、作るのがだんだんとめんどくさくなったり、資料の抜け漏れが多くなり十分にレビューができず、段々と廃れていきます。
  • 2つ目は、何を見たら良いのかわからないということです。クラス図だけをみても、パフォーマンスについて考慮できない場合があったり、なにか型にはめて見ようとすると抜け漏れが発生します。そのため、レビューに意味を見いだせなくなり、廃れていきます。

設計レビューで話すべきこと

では、どうすればいいのか?
個人的な経験から2つの事柄について話し合えればいいと考えています。

  • 1つ目は、実装をしていく上で不安に思う部分を相談することです。抽象的ですが、実装で止まる部分は不明瞭になっている部分です。いざ実装するときにその不明瞭な部分を考えるために工数を使うことが多々あります。そのため、先に実装方法が不明瞭な部分を有識者に聞くことが大切です。
  • 2つ目は、実装者以外が実装に対して気になる点です。実装したことがない人にとっては、不明瞭な部分が多いため、レビューアー自身が実装するとしたら、どうするのか?という視点で見ると実装の不明確な部分が明確になります。またシニアのエンジニアの目線で見たらつまづきそうなところがわかるので、そこを事前に共有できていれば、実装者の視野を広げてあげることができます。

まとめ

設計のレビューは実装者の不安を払拭したり、気づいていないことに気づくチャンスを与えることができます。まだまだ、浸透していないことも多いと思いますが、とりあえず実装前に困っていることがあるかを聞くだけでもかなり効果があると思います。

また、設計レビューは、ベンチャーでの開発や、ゲームの開発など、速度感が大切な開発や、メンバーの入れ替えが激しい場合に効果を発揮します。ウォーターフォールを地で行っているようなSIerでは、そもそも設計のフェーズがあることも多いのですでにフローの中に組み込まれており、外に出ないと気づかないことでもあるとお思います。