はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

C#の勉強をしだすとアプリが永遠に完成しないような気がする話

3月あたりからもっとUnityを上手く使いたい!と思い、ぼちぼちC#の勉強を始めました。最近はクラス設計を見直そうと思い、デザインパターンやオブジェクト指向の勉強をしています。

そしてだんだん勉強するうちにあることに気づいてしまったのです。

「クラス設計の勉強をしだすと、ゲームが永遠に完成しないのでは?」

そう思った経緯について今回は書いていきたいと思います。

オブジェクト指向が滅茶苦茶分からない

オブジェクト指向の勉強をしだして、SOLID原則であったり、デザインパターンであったり色んなことを覚えました。ただどういったものかというイメージを覚えただけなので、実際に使ってみようと思うと悲劇は起こります。

全然手が動かない・・・。

本当にこの一言に尽きると思います。

正直オブジェクト指向は分かったふりをしてなんにも分かっていないような気がします。SOLID原則の中の1つに単一責任原則というものがあります。これはクラスの命名がかなり重要な要素の一つみたいです。そこで私もこれに従ってみようと名前を考えてみます。

頑張って考えた先に思いついたのが、〇〇Manager・〇〇Controller…ってこれダメな代表例やん!?ということを何度も繰り返しました。もう自分のネーミングセンスのなさにいつもあきれてしまいます(そもそも経験不足なんだと思う)。というか今まで見てきたUnityの記事は〇〇Managerがほとんどだったんや…といつも思います。

ただクラス設計でつまずくところはまだまだあります。

デザインパターン多すぎ・・・

これも最初にみたときとてもビックリしました。有名なGoFデザインパターンは23個も種類があるようです…って23種類!?これだけでもう絶望的な予感がしました。

ただ、別に全部を覚える必要はありません。必要なものを選んで使えばいいだけです。と思いながらUnityでよく使われるデザインパターンはなんだろうと思いネットの海に出ました。

みんな全然違うデザインパターンつかっとるやん…。

もうみなさん思い思いのものを使っていました。そして、色んな人が色んなデザインパターンを勧める。もうどれを勉強すればいいんや。本当にこんな状態になりました。

これで悩みは終わりません。というか、次に比べれば今までのは可愛いものです。

Unityのクラス設計に関する記事自体が少ない

本当にこれです。正直今までの悩みはすべてこれが原因です。それもそのはず、ほとんどの書籍や記事は全くUnityを想定をしていないものばかりだからです。

確かにUnityもC#を用いていて、オブジェクト指向なのでそれらが役に立たないというわけではありません。ただUnity独特な部分は必ずあって、どうしてもうまくいかないものもあると思います。

ただこちらの記事を代表にUnityのクラス設計に関する記事も少ないながらあります。(この記事は本当に参考になりました!)

www.slideshare.net

しかしそういった記事ではだいたいUniRxとZenjectが待っています。良いクラス設計にはこれらはやはり必須なのでしょうか。

そしてアプリは完成しなくなった

ということでUniRxから勉強を始めよう…と思っていたらもうアプリ制作をずっとしていない自分がいました。作りたいゲームは増える一方、やらなきゃならない勉強も増えるばかりです。そこであることを思うのです。

クラス設計を考えないほうが、ゲーム制作できてたな・・・。

別になにも考えずにもう一回やろうという訳ではありません。良い設計にできれば良いに越したことはありません。

しかし一度始めるとこうした方がいい、いやこうした方がいいといった情報が溢れているし、自分もこうした方がいい?と常々思います。きっとクラス設計に正解はないのではないのかと思います。ぶっちゃけUnityのクラス設計のイディオムがあるなら本当に助かります。

さいごに願うこと

「Unityのクラス設計を完全に理解した」、本当に待ってます。またUnityに詳しいかた、どうか私みたいな初心者にもわかりやすいような記事やスライドなどがありましたら教えてくださると嬉しいです・・・。