重い腰が上がって落ちる
こんばんは、kycです。
先月末からUnityの教本読んで勉強してたんですが、ようやく読み終わったので軽くレビューしとこうと。自分の為にも。
まず前提として、良いとこ悪いとこは当然色々あったんですが
やっぱり教本を取り敢えず1冊買ってみて、読み切るって行為は大事だなと。
久々にちゃんと別でメモもしつつ、自分の言葉に直して……みたいな作業、大変だったけど流石に身についた実感があります。
Unityの勉強自体は去年から手を出してて、まああの頃は小説を完結させたいという気持ちが結局勝ったので中断することにはなると分かっていたのですが
それにしても、本職でプログラマーやってることによる小さなプライド(笑)みたいなのが邪魔して上手く勉強できてなかったなって振り返りがあるんですよね。
例えば、公式ドキュメント読んどけばすべて分かる! 一次ソース大事! みたいな姿勢ね。うん、まあそうなんだけども。
前仕事でC#やってたから、Unityもなんとなく分かる! 的な謎の自信。まーじでこれ、マヤカシです。
というかまあこのスタンスだとそもそも、「作りたいものがある」「だから最初からそれを作る為に動く」的なモチベになる訳ですが
それって割と無理あるんですよ。典型的な「頭の中では出来てるけど何すれば良いか分からん」になって結局何もせんという。
なんでまあ、Unityの勉強は小説完結させて、マダミスの企画も終わって、絶対やるぞ!
と決めてた一方で去年のある意味での失敗があったので、どう入るべきだろう? と悩んでいたんですが
辿り着いた答えは単純で、「自分はゲームプログラミングについてはズブの素人です!!」と認めて教科書を手に入れる、愚直に勉強するってことでした。結局これがいっちゃん頭に入る。技術書は神。
というまあ長い割に噛砕し難い経緯があっての今なんですが、取り敢えず前置きとして何が言いたかったかというと、読んだ本が良い悪い以上にそもそも新しいことを学ぶ為に、取り敢えず目的は置いといて基礎をちゃんと勉強するってことは大事だなと、当たり前のようなことだけど再認識したぞ! っていう話です。
長くなったのは本の内容よりもそのことが大事だったと思ったからです。どうせ本は他にも読むので(既にもう1冊買ってある)
で、いざ本の話
買った本
買ったのが1月なのでほぼ忘れてるが選んだ基準としては
- プログラミングの初心者をターゲットにしてなさそうなこと
- 割と広く浅く学べそうなこと
- 実際に手を動かしてものを作るタイプの書籍であること
あたりですかね。
Unityの本選ぶ上で難しい部分が一つあって、基本的に「Unityの入門書」という定義に「プログラミングの入門書」が組み込まれてる傾向があるということです。
自分のようにプログラミング経験はあるけど(というか仕事でやってるが)ゲームプログラミングは分からない、みたいな人のための本が中々ないんですよね。
一冊目ということもあってチュートリアル的な内容ではありつつも、多機能なUnityでどんなことが出来るのか? またUnityでゲームのアイデアをどうやって形にするのか? を紐解いてくれそうなものを探した結果、レビューとか参考にしつつこちらを選んだ次第です。
良かった点
まず上の基準で目星つけてるので、「(C#プログラミングよりも)機能の紹介に重きを置いてる」という点で中々良かったです。
Unityってそもそもなんぞや、てとこからどういう仕組で動いてて、どういう風に拡張していくのかっていう導入が丁寧で、元々浅めに理解してた部分が深くなったし公式ドキュメントを改めて読んだ時に、去年よりも圧倒的に視界が開けた感覚があった。
去年はネットで見つけた、個人が書いてたチュートリアルを読んでて、Animator周りがややこしすぎて投げたんですけど
この本では良い感じに一般化されてて理解しやすかったし、その他の機能についても「こうしてこうすればできる」というよりはある程度「これはこういう仕組でできてるから、ここにこういうオブジェクトを渡せば機能する」みたいな説明なので
あー、じゃあ他のモデルでやりたかったらこれをこうすればいいのかー、とかこの値いじったらこうなるんかなーあーやっぱそうなのねーなるほどねーみたいな、良い感じの化学反応が起きてた気がする
(まあ、この辺りは行間を読んだりもしてるので個人の感想の面が強いが……)
普段Webのコードを書いている(そしてネイティブアプリの開発経験もある)ので分かるんだが、
デスクトップやモバイルのアプリって、UIを中心とする所謂フロントエンド周りのデザインをコードで制御するのが難しい節があるんですよね。
たとえばボタンやらなんやらをどう画面に配置するかみたいなのを、WebだとHTMLとかCSSでガガガーと書いたりするんですが、これがiOSやAndroidのアプリとかなってくると、GUIでパーツをポチポチ配置したり専用の画面で遷移を設定したり、みたいな。
Unityってこれの最上級版みたいなとこあるな、って思いました。まあ要するに覚えること多いな、と……
プログラマーなのでコードが出てくると、多分こう書けばこうなるんだろうなーと思えるのですが、Unityはこの機能を設定するにはこの画面を開きます、みたいなのがまあまあ多い。それが大変だと思った。
なんでまあ、だからそういった機能ごとに基礎的な使い方を広く浅く紹介してくれるところとか
アセットストアを活用して手順の一般化を促してくれる感じもよかったです
(この場面ではこういうタイプのアセットが使える → ストアを覗くと他にも様々なタイプの代替品があるので、これに置き換えたらこうなるんだろうなという想像がしやすかった)
やはり最終目的としては「こういうの作りたい」を表現しなきゃいけないわけなので
それの為の想像が出来るようになるというのは大きな収穫だったと感じます。
この画面なんやねんってならなくなったというか。
悪かった点
一言で表すと、雑です。これに尽きる。
まず、誤植とか誤字が多い。割とそれアカンやろみたいなのもちらほら。
特にスクリプト周りが多くて、その上でコードについて説明する箇所が少ないので置いてけぼりになりがち。
そもそも「スクリプトを書きます」→ コードずらーー → なんかよく分かんないまま写経する → その後のセクションでコードの解説をする
という構図が良くなくて、せめて1つのスクリプトファイルごとに解説をちょっとずつ挟んで欲しいと感じた(コードを写経してる途中で疑問に思って立ち止まった箇所が後ろでさらっと解説されてたりするのでストレスがたまる)
そしてその補足部分があまりにも簡潔だったり、誤植があったりとかで機能していなかったりすると。
自分は持ち合わせの知識と、それこそ公式ドキュメントを読みに行って解決してたりしましたが、慣れていない人の場合はモヤッとした疑問が残り続けたり、そもそも上手く動かなくてそのまま挫折、みたいなの全然あるなこれ……とちょっと怖くなった(ある意味スパルタともいえる)。
ただし、多分だけどそれはこの本が「Unityをプログラミングだと思ってないから」だと思ってて
Unityはあくまでオブジェクトの集合体で、スクリプトもそれの一部で、C#によるプログラミングはその機能紹介の一貫にすぎない、というスタンスでこの本書かれてる気がするんですよね。
だからコードの解説は大分ふんわりしてる。でもその代わりに色々な機能を紹介してくれてて、サンプルのゲームも多くの要素を上手く取り入れられるように工夫して作られてる。とにかく基礎を身に着けてくれ、という内容なので仕方ないかもなとも思った。
が、しかし
どうしてもプログラマー視点で見ているため、気になってしまうのは
スクリプトの扱いが雑なことは良いとして、その中身のコードが雑なことだった……
普段仕事でコード書いてて、C#の経験もあるから、「この書き方微妙だな」「この変数名はダメでしょ」みたいなのが結構あって。その辺が割と終始気になって仕方なかった。
特に後半以降はスクリプト書く機会が増えるので尚更。明らかにメンテナンス性に欠ける部分が多かったので、これが実践的なのか? という疑問がどうしても残りがちだったのが良くなかった。
まとめ(と、次に読む本!)
広く浅くなUnityの入門書で、かつガチガチのビギナーだとついていくのは難しいというレベル感がちょうどよかった(ただ、文体とか見てると本当の初学者をターゲットにしてるっぽい雰囲気はある。内容は全然だけど)
ダメだったのは、C#スクリプトをあくまでUnityの機能の一部、としている感じで
「UnityはC#プログラミングである」という大前提を無視しているように感じられたこと(逆に、入門書であるが故にそういうスタンスを取っていた感じもあるけど)
それに比べると、次に読む予定のこちらの本は割とガッツリ「C#の本」らしく
それでいてかつUnityにおけるC#を掘り下げてくれるようなので期待大。
「UnityはC#によるプログラミング」というスタンスであり、サンプルゲームも今回読んだ本のそれとは違う(今回のは三人称視点のサバイバルゲームみたいなやつ)、シンプルなFPSらしいのでその辺も楽しみ
というわけでなんとか今月中に、そして引っ越し前に勉強一区切りできてよかった~という振り返りでした。7月の振り返りはまた別で。
では
kyc