ブランクのあるプログラマーがUnityでプログラムを組むまでに読んだ書籍の紹介

どうもゲームのプロマネをやっているfishheadpmといいます。

ここ数年はディレクターやプロデューサーを主にやっていたのですが、最近はプログラムもやる感じになっています。

ブランクがある状況でそれを解消するために、どのような書籍を読んでいったかの記録を書いていきたいと思っています。


#■1年前のスペック
Z80（アセンブラ）、C、C++は開発経験あり。あとLuaも仕事で使っていました。

ObjectiveC、javascript は言語仕様は理解しています。

#■C#言語仕様の理解

正直なんでもいいと思いますが、C#はバージョンの更新がCやC++に比べて早いのでそれだけ注意ですね

##・標準C#入門
https://www.amazon.co.jp/JIS%E8%A6%8F%E6%A0%BC%E5%AF%BE%E5%BF%9C-%E6%A8%99%E6%BA%96C-%E5%85%A5%E9%96%80-%E6%94%B9%E8%A8%82%E7%AC%AC2%E7%89%88-%E7%9F%A2%E6%B2%A2/dp/4797347082/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E6%A8%99%E6%BA%96C%23%E5%85%A5%E9%96%80&qid=1573291569&sr=8-1

C言語でいうところの「K&R」にあたる本って何かな？みたいなことを経験者に聞いたのですが、ずばりこれだというのはないみたいですね。

「標準C#入門」はわかりやすくサクサクと読めるのですが、現場で仕事をするということを考えるともっと「C#をどうつかうか」ということを詳しく書いてある本で勉強する必要があります。


#■C#のプログラムのスタイルに対する理解を深める

##・C#プログラミング　新スタイルによる実践的コーディング
https://www.amazon.co.jp/%E5%AE%8C%E5%85%A8%E7%89%88-%E7%A9%B6%E6%A5%B5%E3%81%AEC-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E6%96%B0%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0/dp/4774138622/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=C%23%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0+%E6%96%B0%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0&qid=1573292153&s=books&sr=1-1

正直なところ「標準C#入門」を読んだ時点で実作業に移れると考えていたのです。

他の言語は言語仕様を理解したら、後はリーダブルコードに書いてあるような「組み方」や「アルゴリズム」がわかっていれば実践に移れる感じです。

ただC#は最適な組み方を理解していないと効率が悪いという風に言われていたのでこの本を読みました。

この本を読むまでは言われた意味がよくわかっていなかったのですが、読み進めていくうちにちゃんと組むのとちゃんと組まないのとでは天地の差だなと思うようになりました。

C#は開発効率が高いといわれていますが、それはちゃんと理解していればですね。


##・C#プログラムの効率的な書き方
https://www.amazon.co.jp/%E3%80%90%E7%9C%81%E3%82%A8%E3%83%8D%E5%AF%BE%E5%BF%9C%E3%80%91-C-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AA%E6%9B%B8%E3%81%8D%E6%96%B9-%E5%B7%9D%E4%BF%A3-%E6%99%B6/dp/4774149756/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=C%23%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AA%E6%9B%B8%E3%81%8D%E6%96%B9&qid=1573292579&s=books&sr=1-1

これはLINQに特化しています。

CやC++から入ったプログラマで一番ネックになるのがLINQの理解ではないでしょうか。

この本を読んでいる最中にすでにUnityにてプログラムを組んでいる状態でした。

他のメンバーのソースを見てみるとLINQを使いこなしているのでかなり焦りましたね。

どうにかしようと読んだ本です。

上記2冊の本はざっと読んでいて内容をなんとなく覚えて、該当するような処理を書くときに読み直す、ということをしていました。

チームのフレームワークがちゃんと整備されたところに入ったためそちらの理解も必要で、そういった処理はきれいに書かれていることが多く一見何をしているのかわからないことが多いんですよね。

基本的なのことなのですがチームの人に聞く、他人のソースを読む、ということが理解を深めるうえで効果的でした。


#■Unityを使いこなすために

プログラムそのものに苦戦した感じはないのですが、Unityの仕様に関しての知識のなさに振り回された感はあります。

正直いまでもAssetBundleとかよくわかっていないですから。

Unityのすごいところは○○といったことをやりたいんだけど、ということがあればネットなどで探せばすでに答えがあることが多いということですね。

逆に効率が悪いのは、それを見つけられなくて作業をやった後に、実はこれを使えばいいというものを見つけて置き換える作業ですかね

そういったことを少なくするために下記の書籍を読みました。

##・現場ですぐに使える! Unity 2018 逆引き大全 300の極意
https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E3%81%99%E3%81%90%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B-Unity-2018-%E9%80%86%E5%BC%95%E3%81%8D%E5%A4%A7%E5%85%A8-300%E3%81%AE%E6%A5%B5%E6%84%8F/dp/4798054747/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=unity%E9%80%86%E5%BC%95%E3%81%8D%E5%A4%A7%E5%85%A8&qid=1573293157&s=books&sr=1-3

わからないところは都度他のメンバーに質問していたのですが、これを最初から読んでいたら解決していた問題が多く非常に申し訳なく思いますね。


#■最後に

当時私は忙しいプロジェクトにいきなり入ったので、中途半端な知識でプログラムを書き散らかすような結果になってしまいました。

それでも私のような状況になる人も少なくないと思いますので、参考になれば何よりです。

もともと新しい言語を覚えるのは好きなタイプなのですがC#は便利でいいですね！

Cで完全に管理したソースを作るというのが好みのタイプだったのですが、現状のスペックが高い機器が多い状況では開発効率に重きを置いた言語のほうが現実解なのかもしれませんね。


また私は下記で個人ブログをやっています。

#■ゲームプロマネのブログ
http://game-pm.com/

こちらはプログラム要素は少なく、ゲーム開発に関するあれやこれやを話しております。

そちらに興味がある方はぜひのぞいてみてくださいね！

上記記事に関してご意見ご要望がある方は私のtwitterまでお願いいたしますー