プログラミングの超初心者・文系脳な私が、ゲームエンジン・Unityを使ってAndroidゲームアプリ制作で利用した解説書を紹介したいと思います。
目 次
管理人のプログラミング習得履歴
この記事を読み進めるうえでの「初心者」の定義と、このあと紹介する解説書を学習すれば、どのくらいのプログラミング技術が身につくのかがわかるように、参考程度に私のプログラミング習得履歴を書いておきました。
紹介したい本の対象者=超初心者・初心者の定義
「初心者」という言葉は人それぞれの定義があると思うので、この記事の「初心者」を定義しておきたいと思います。
「超初心者」と「初心者」の2つに分けてみました。
超初心者の定義
- 理系の学校に行っていない。
- 今まで一度もプログラミングしたことがない。
- 今まで一つもアプリを作ったことがない。
初心者の定義
- プログラミングの本を最低2~3冊は読んでいる。(経験が浅い)
- 本やWebを見ながらなら、簡単なプログラムをなんとか組むことができる。
この記事では、プログラミングを始める前の私は「超初心者」、現在の私は「初心者」になります。
3年7か月かかっていますが…
超初心者から初心者のレベルまでに、3年7か月もかかりました。
長すぎる?
それでは、上記の2つのゲーム制作までの道のりを図にしましたので見てください。1日3~4時間勉強しました。
どんなアプリを作ったか?
Unityは3Dに特化したゲームエンジンですが、2Dのゲームも作れます。
今回は2Dの「スロットマシン」「縦スクロールシューティング」をそれぞれ一週間前後で作りました。
スロットマシン
まずはJavaで作りました。絵柄が回転するスロットマシンの作り方を解説した入門書やWebサイトがないので苦労しました…。
初めて自力でゲーム作りをしたので1週間近くかかりました。
次にUnityで同じものを作った時は1日で完成。
縦スクロールシューティング
腕試しということで、入門書の知識だけでほとんど自己流で制作しました。
ただ、敵機や弾の軌道計算だけ中学数学の学習サイトを参考にしています。
Unityの初心者向け解説書だけでなく、C#言語の勉強していないとちょっと厳しいと感じました。
グラフィック作成1日・プログラミング3日・不具合などの調整2日といったところです。
プログラミング学習の実際の期間は3か月ぐらい
2Dの「スロットマシン」「縦スクロールシューティング」を作り上げるのに4年近くかかりました…。
「4年近く学習に時間を費やしているのに、こんな簡単なものしか作れなかったの?」
という話ですが、4年のうち3年以上休みながらの学習だったので、復習ばかり。ブランクなしにコンスタンスに勉強していることと、開発環境を途中で変えていなければ、2つのゲームプログラムはもっと早く完成していただろうと思います。
また、勉強期間中も休み休みだったので、実際は一日3~4時間の学習と考えて、3か月ぐらいの期間(休日含む)だったと思います。
最後に、言い訳ばかりですが…コードはけっこう凝ってますよ。このあと紹介するUnityの解説書以上のことをやっています。
Android Studio・Java から Unity・C#へ
当初私は、無料でAndroidアプリが開発できるということで、統合開発環境・Eclipse(途中でAndroid Studioへ交代)とJava言語を使っていました。
しかし、ツール系のアプリを作るのならよいのですが、ゲーム開発に特化した開発環境ではなかったので、
- リッチ=グラフィックが綺麗・エフェクト(爆発のアニメーションなど)が綺麗
- 高度=3D表示や複雑な処理
といったゲームをつくるには、より深いプログラミングの習得が必要だとわかりました。
そんなとき、ゲーム作りに特化した開発環境・Unityが無料で利用できるサービスが始まり、私は迷わずUnityに飛びつきました。
ただ、ゲームエンジン・Unityで利用できる開発言語は、JavaではなくC#(またはJavaScript)です。
いままでJavaでやってきたので、また一から勉強のやり直しかな? と思っていたのですが、C#はJavaと非常によく似た言語だということと、入門レベルならUnityでは難しい文法がでてこないので、簡単に移行することができました。
ゲームエンジン・Unityはリッチで高度なゲームを初心者でもがんばり次第で結構なものが作れてしまいます。
乗り換えて正解でした。
Unityのプログラミング言語はC#
私の場合、Java言語から学習を始めましたが、UnityはC#(またはJavaScriptなど)なので、C#から勉強をはじめて下さい。
「超初心者」でも理解できる入門書がたくさんあるので、がんばれば習得できるはずです。
また、私がプログラミングを始めたころと違って、開発環境「Xamarin」を使えば、C#でもAndroidアプリを作ることが無料(個人開発など条件有)でできるようになりました。
これから新しくandroidアプリのプログラミングを始める人は、JavaからでなくC#からで良いと思います。
Javaが必要になれば、C#を勉強した後でもいいと思います。よく似た言語ですから。
JavaScriptは、名前に「Java」と付いているだけで、Javaとは何の関係もありません。
また、Unityで使うJavaScriptは少し特殊なところがあります。Unityを使った開発言語は、入門書が豊富なC#をおススメします。
書籍の紹介は、私がプログラミングを学習した順番になります。
超初心者・初心者におススメのJava学習本の紹介
Unityを利用するにあたって、私のようにJava言語から勉強する必要はないのですが、プログラミング学習に有用な情報もあるかと思いますので、紹介しておきます。
1:すっきりわかるJava入門
Unityとは全く関係のないJava言語の入門書です。
しかし、C#言語も採用している、
オブジェクト指向
というプログラミングの考え方を理解するのに役立つ本です。
このオブジェクト指向という考え方(概念)をプログラミング「超初心者」うちに理解することで、今後のプログラミング人生が違ってくるかもしれません。
JavaとC#ではオブジェクト指向の仕組み(プログラミングの方法など)が少し違いますが、オブジェクト指向の考え方(概念)を学べる良著です。
読むだけでもおススメしておきます。ちなみに私は何度も読みましたが、PCにコードを入力してどう動くかとかは一度もやっていません…。
実践編は必要か?
「すっきりわかるJava入門」の実践編です。
内容は第一弾と比べるといきなり難しくなります。ページ前半は個人開発でも十分に役に立ちますが、後半は微妙。
「Unity・C#・初心者」というキーワードから考えると、他の書籍をあたった方がいいです。
2:Androidの絵本
この本を教材にして、初めてPCに開発環境(Eclipse)をインストールしてAndoroidプログラミングの勉強に取り掛かりました。
どちらかというと、本に書いてあることをPCにそのまま入力して、Androidがどのように動くのかを一通り確かめる本です。
しかし、情報が古くて今では使っていない機能の解説をしています。
また、誤植も多く、他では見ないようなコードの書き方だったので、改訂版が出るまで、おススメしません。
「Unity・C#・超初心者」というキーワードから考えると、他の書籍をあたった方がいいです。
3:Androidアプリをつくろう[kindleのみ:Android Studio 2.1対応版]
Androidの仕組みとそのプログラミングを「初心者」にもわかるように解説されておられます。
私はこの本を読んで飛躍的にandroidを理解できました。これがなかったら挫折していたかも…。
もちろん、Javaの知識は必須です。上記の「すっきりわかるJava入門」+ α の知識で読み進められると思います。
管理人の話…
じつは、Androidの仕組みを解説した本をもう一冊買ったのですが、そちらは20ページぐらいしか読んでません。
詳しく解説されているのですが、1つの本に著者が6人ぐらいいるオムニバス的な内容で、文体も内容もバラバラ。
~の教科書という本でしたが、ページに色をたくさん使っていたのでつい買ってしまいました…。
やはり、解説本はチュートリアル形式のものが一番いいですね。
4:中学生でもわかるAndroidアプリ開発講座
わたしがゲームの作り方を初めて体験した本です。
ゲームエンジンを使わないゲーム作り
を学べる重要書籍でした。
「すっきりわかるJava入門」「Androidアプリをつくろう」のおかげで、理解しながら学習できました。
後の、Unityの学習にも役立っています。
もし上記の2冊を読んでなければ、本に書いてあることをPCにそのまま入力するだけの本だったと思います。
「Unity・C#・超初心者」というキーワードから考えると、他の書籍をあたった方がいいです。
Java向けの解説書はこれで完了。この後2冊ぐらいAndroidアプリの入門書をざっと読みましたが、復習程度の価値しかありませんでした。
これで私のJavaの勉強は終わりました。プログラミングの基礎の基礎はついたので、Javaの勉強はしておいてよかったと思います。
これから先、使うことがあるかどうかわかりませんが…。
管理人の話…
中級レベルの学習本になると、急に難しくなります…。
初級の本1冊がんばったからといって、いきなり中級は無理だと思います。
たくさんのサンプルコードをPCに入力・改良しながら、初級レベルの解説書を2~3冊以上読んだ上でレベルアップすることをおススメします。
超初心者・初心者におススメのUnity学習本の紹介
ここまでJavaをメインに学習してきましたが、
ゲームを作りたい
という事になると、Javaでは非効率かつ難しい…。
そこで、個人開発なら無償(他にも条件有)で使えるUnityというゲームエンジンがあると聞いて、移行することに。
Unity以外のゲームエンジンも考えてみましたが、使いやすそう・解説書が多いということでUnityへ移行しました。
UnityはJavaが使えませんので、C#の勉強も必要になります。
5:C#の絵本
Unityの学習をしながら並行して読んだC#の書籍です。Java言語との違いを確かめるのに利用しただけなので、難しくはなかったです。
C#の学習本をいくつかみましたが、わかりやすい図を駆使して最も簡潔にC#をまとめた本かと思います。C#の文法をちょっと度忘れしたときにさっと見るのに便利な本といったところ。
「超初心者」なら、後述の「確かな力が身につくC#「超」入門」をおススメします。
6:Unity2017入門
私がUnityを初めて学習するために利用した解説書です。言語はJavaからC#に変ったので、上記の「C#の絵本」と並行で学習を始めました。
とりあえずプログラムを作って動かすタイプの本です。詳しい解説は少ないです。
サンプルのプログラムがイマイチ面白くないのとゲームっぽくないので、
物足りない
という感想…。
この解説書を学習する前に、先にC#に目を通して欲しいです。
7:Unityの教科書 Unity2017完全対応版2D&3Dスマートフォンゲーム入門講座
Unityの使い方もそうですが、ゲーム作りに対する考え方も学べる優れものです。
プログラミング初心者に、もっともおススメしたいUnityの解説書です。
Unityの入門書はこれ一冊でOK
と言っても過言ではない出来です。
C#の解説もありますが、これだけでは不十分。C#の勉強も並行して進めましょう。
▼ ブックマーク必須。著者さんのwebサイトです。Unity・C#などの役立つ情報が盛りだくさんです。
参考 おもちゃラボその他のプログラミング解説本など
以下に紹介する本は、2つのゲームプログラムを作った後で、読んだり、さらっと目を通したりした書籍です。
確かな力が身につくC#「超」入門
確かな力が身につくC#「超」入門 (Informatics&IDEA)
「超初心者」が理解できる範囲内で解説されています。C#プログラミングを初めて勉強するのに一番いい書籍かなと思います。
プログラミングのきっかけとして良著だと思います。
「超初心者」が一番最初にC#の書籍を買うのなら、この本か「作って覚えるVisual C# 2017」をおススメします。
戦略シミュレーションゲームの作り方
JavaScript言語とゲーム開発用フレームワークEnchant.jsを使ってシミュレーションゲームの基礎を学ぶ本です。
シミュレーションゲームの学習書はあまり見かけませんので、貴重な本です。
プログラミングの理解は置いといて一通り読みました。
Unityとは全く関係ありませんが、シミュレーションゲームの考え方とか作り方の基礎の基礎が少しわかったような気がして、今後のゲーム作りの参考になりました。
価格が高いので、私はKindle版をセールの時に買いました。
独習C#
この記事を書くにあたって、要所要所読んでみたのですが、プログラミングをしたことのない「超初心者」がいきなりこれをやるのは難易度が高いと思いました。
良著ではありますが、学習内容が多すぎるので混乱しやすいのと、言葉がちょっと難しいと感じました。頭の良い人なら、参考になると思いますが…。
「超初心者」がいきなりここまでやる必要がない
というのが率直な感想です。わたしなら、2~3冊目以降のC#の復習で使います。
YouTube:9cubedさんのプログラミング講座
現時点で140以上の初心者向けプログラミング講座をYouTubeに配信されています。
「初心者」レベルならば、すべてわかる内容だと思います。
C#ではない他の言語を理解していれば「初心者」向けのC#の本を買わないでも、これを見るだけで事足りると思います。
動画は自分のペースで学習しにくいので、「超初心者」は、解説書で学習を始めた方がいいと思います。(「超初心者」の復習にはいいかも)
他にもC#の講座をYouTubeで配信しておられる方がたくさんおられますが、一番わかりやすくて一通りC#を学習できるのは、9cubedさんの動画ぐらいです。(2017/5/27 現在)
Webサイトのみでプログラミングの勉強ができるか?
プログラミングの学習は「書籍なんか買わなくてもWebで検索すれば十分」という話をたまに聞きます。
私の経験から言うと、
「超初心者」はやめておいた方がいい
と思います。
理由は、
- 「超初心者」は「何がわからないのかがわからない」という状態。検索ワードを絞れないのでWeb検索に時間がかかってしまいます。
- 一度にたくさんの機能やプログラミングスキルを使って解説しているサイトが多く、それを調べるのに時間がかかったり、混乱したりします。
- ライティング中のサイトや中断している中途半端なサイトがあんがい多いので、読み進められなくなります。
- 「超初心者」だった私には、よいサイトがなかったです…。
といった理由をあげておきます。
簡単な解説書を1冊でもよいので勉強してみて、
「超初心者」なりの実力
を先につけてからの方がよいと思いますよ。
初学者の間は、書籍でわからないところや知識を補完したいところが出てきたときに、Webサイトを利用すればいいと思います。
Unityだと、公式サイトのチュートリアルもありますが、「超初心者」にはちょっと難しいので、ある程度勉強した後に、ちょっと自信がついてからでいいと思います。
※ 有料のプログラミング学習サイトは利用したことがないので、ここでは除外しておきます。
まとめ
以上です。
ここに紹介したものより良書がまだまだあると思います。書店へ行って色々見てくるといいと思いますよ。
また、解説書はけっこうお高いので、図書館を利用するのもいいかも。
ちなみに私は、ブログが一段落したら、プログラミングの勉強を再開して、ストアで公開できるくらいのものをいつかは作りたいと思っています。