これから新規にプログラミングを始めてみよう!という初心者にとって、最適なC#の攻略本はおそらく無いです。筆者自身も教えて欲しいくらいです。しかし、あきらめずにプログラミング入門を打開するのに役立った本や、サイトなどをご紹介!!
ブログのテーマ上、Unityと多少絡めていますが、あくまで一般的なプログラミング入門に関する内容になっています。
2017/07/03追記 : 初心者とC#とを巡る、諸問題とその対策についてのまとめです。脱初心者を目指す自分がいうのもなんですが、より初心者の方のためになるように大幅な加筆、修正を試みました。少し長いですが、参考になれば。
なお、自分は独学です。本、サイト、海外の動画などを使って学んでいます。対人学習、スクールに通う、という体験はしていません。なので、そこら辺についての記述は一切ないです。人それぞれだと思いますが、やはり時間、労力の節約のためにも、きちんとそういうところで習った方がいいのかなー、とは思います。
同時投稿のこちらの記事では、初心者への障壁について書きました。
本記事は、この記事を受けての対となるものです。
そして、なぜプログラミングはわからないのか?ということについての記事も書きました! わからなくて当然だから諦めないで頑張ろうぜ!という内容。
こちらも長いですが、よろしければ!
とりあえずUnityは置いておいてみる
C#を理解し使う、ということとUnity上でC#を介してゲームを作る、ということは厳密には違うことなのかも知れません。Unity上においてのC#の使い方は、Unityを通してでしか学べないということです。しかし個人的には、やはりC#はC#で個別に勉強した方がいいだろうと思いました。今でもその判断が正しかったと思います。なぜならプログラミングにおける問題解決手段に、"問題の分割"というものがあるからです。個々の問題に個別化して、一つ一つ解決していく方法です。
"初心者"にとって、C#は簡単ではない
ここでいう"初心者"とは、今まで一切プログラミングをしたことはなく、C#を最初の言語として選択した人を指します。そのような人にとって、C#が簡単なワケがないです。プログラミングをやったことがないんだから当然です。なのでC#がわからないからといって、自分はプログラミングに向いてない、とかいう判断は早計です。C#なんてカンタン。すぐに出来るよ。みたいな言葉に惑わされないようにしましょう!
攻略本がない、ということは端的にC#を通してプログラミングそのものを学ぶことができる書籍はないのでは無いか?という意味です。つまり、そうした"初心者"にとって相応しい、この一冊!と言えるような、包括的なソリューションとなる本がないという状況。そもそも、この一冊あればイイ!なんて考えは、幻想かもしれませんが。
C#は初心者にとって、初めてに相応しい言語ではありながら、そういう歪な状況に苦しめられた著者自身の体験を元に書いていきます。少しでも、最初の一歩の手助けになれば!
まず初めに、何故そういう本が無いのかを考察します。
メンドくさいし、紙面も無いから。
んな無責任な、と思う人がいるかもしれませんが、完全初心者にプログラミングを教える、という作業はかなり大変なことです。丁寧にやるとなると、かなり分厚い本になりますし、それは作業的にも、紙面的にも、商業的にも難しいわけです。なんで、そういう本が出版されることは、基本的に不可能なのだろう、ということです。だからこそ一週間でわかる!みたいな本が多数出るんでしょうな。
初心者にとってのMSDN
MSDNにおけるC#のページは、MS社が公開している、リファレンス(説明書みたいなもの)でC#に関する細かい説明が網羅されています。無料だし、とりあえず、これを見ながらやっていけば、学んでいけばいいんだよ、というような方法論は、初心者には実際かなり無茶です。
説明書であって教科書では無い
既にある程度プログラミング出来る人が参照するためのものであり、初心者が読めるものでは無いです。まず説明書を読めない状態な訳ですから。
日本語がなんかオカシイ
機械翻訳なんですかね、説明が一切頭に入って来ません。
サンプルコードが難しい
ある程度できるようになってからは参考になりますが、初心者にとっては難し過ぎて参考になりません。(本記事後半では、初心者に優しいシンプルなサンプルコードを載せているサイトを紹介しています。)
結論、MSDNは攻略本になり得ないです。あくまでもC#という言語の説明書という位置付けです。悲しいことに市販の多くのC#本も割と説明書です・・・。プログラミングについての内容というよりも、あくまでC#という言語のルール、文法についての説明に留まってしまっています。
とりあえずHTMLから、というのは疑問
プログラミング言語を学びたいけど、よく分からない・・・じゃあとりあえずHTMLから!みたいなパターンはあるかと思いますが、個人的には、この考え方はかなり疑問です。まずHTMLはプログラミング言語ではないです。web上のコンテンツ、文章において、この部分は全体における、どういう構成要素か?がブラウザに分かるように印を付けていくための言語です。つまり構造が違います。自分でブログなどをやっていれば別ですが、漠然と学ぼうとすると、はっきり言ってつまらないと思います。やはりプログラミングを学ぶにはC#が相応しい、はずなんですが。
Visual Studioの導入
プログラミングできる環境を整える、というのが実は最初の最難関だったりします。コンピュータに詳しくない人は、ここで挫折する可能性も高いです。C#だったら、間違いなくVisual Studioを導入すべきですが、なかなか大変です。paiza.IOなどのブラウザ上で、プログラミング、コード実行できるサービスもあるので、最初はそこからでもいいのかな、と思います。
自分はダウンロード、インストール含めて1時間ほど掛かったと思います。最初にexpress 2010を導入したんですが、hello worldすら出来ず一回挫折しました。でも後日、2015をインストールして、なんとか掴まり立ちを出来るようになり、今日に至ります。それなりに長い時間かかりますが、焦らず行きましょう!
というように罠はたくさんあります。勉強を始める以前に適切な教材は何か分からない、という状態です。指定教科書はないのか?という話です。ないんだな、これが。
それらの対策については、一見遠回りのような行程を経る必要があるのではないかなと。以下書いていきますが、あくまで筆者の実体験を元にした一つの提案です。まずは諦めないこと、イライラしないことが大事だと思います。
では、初心者に優しい学習ソースを巡る旅にGO!
あえてCをやる。
というわけで、結局プログラミングってどういう作業なのか、出来るだけ分かりやすく教えてくれる本、あるいはサイトを探す事になりました。
そこで見つけたサイトが、この・・・
「C 入門」で検索すると一番上に出てくるサイトになります。
というかCかよ!?C#じゃないのかよ!?という人がいるかもしれません。しかし、結果的にCからがわかりやすかったんです、自分としては。 C言語をマスターするのは、難しくても、基本的な部分を学ぶにはシンプルでいい言語だと思います。C言語は今更だし、最初の言語には向いてない、という意見は多いですが、プログラミングはどんなもんかを軽く触れる程度なら、向いてるんじゃないかと思います。
あと古い言語なので、もはや変化しないというのと教える側の錬度が高い、というのもあります。書籍が充実している、というのもあるわけです。
ただCには『ポインタ』という初心者殺しがあります。自分もここらへんは最近ようやくわかりかけている感じですが、初心者はポインタは無視していいです。
というかCでプログラミングできるようになる必要も無いと思います。(というか自分もほぼできません!(^o^))
確かにいきなり最初に2つの言語を同時に勉強するのは混乱の元かもしれません。
しかし、あくまで事前学習のための踏み台としての利用法があるんだ、ということです。自分は、 このサイトで書かれていることをVisual StudioでC#を使って再現してみる。とかやっていましたね。 最初に作った、おみくじアプリとか正にそうです。
教えてくれる人が大事
ここは小林健一郎先生という方によるサイトです。『珠玉のプログラミング』というプログラミングにおける名著の訳者であったり、スゴイ方なんですが、サイトのテキストはかなり優しい、わかり易い文です。
単純に読んでて面白いですし、苦になりません。(それでも最初はわかりませんが)
そこが自分の中ではかなりの尊敬ポイントです。本当に賢い人はわかりやすい説明が出来る!教えてくれる人を選ぶことが大事なのかもしれません。
なんでプログラミングを一回もやったことないという人はこのサイトをぜひ確認してみて欲しいです。C#に触るのはそれからでも遅くないと思います。
さらにCで学ぶ!
そしてこの『苦しんで覚えるC言語』です。またC言語です。サイトもありますが、自分は書籍版を買いました。名前がいいですよね。信頼できる!
というか、むしろわかりやすいんですけどね。でこの本もですが、全部理解する必要は無いです。やはりCとC#は違いがありますから、後半はC#と関連性の薄い内容になります。なので13章まででいいと思います。ホントに基本的なことをしっかり学べます。変数の寿命(いわゆる"スコープ")とかは非常に参考になりました。
じゃあC#は何をみればいいのか?となるといまだによくわかりません。
これくらいわかり易い日本語サイトはないものか
DotNetPerlは海外の英語のみのサイトですが、項目ごとにシンプルで易しくまとめられているので非常にわかりやすいですし、下手な日本語サイトよりよっぽど初心者に優しいです。サイトとしてはC#がメインだと思いますが、その他いろいろな言語を扱っています。
なによりサンプルコードが要点を抑えたシンプルな構成なので、とてもわかりやすいのです。英語が苦手でも、サンプルだけでも読む価値はあります。
逆にわかりやすいとは、このことですね。これぐらいシンプルで整理された日本語サイトがあればいいんですが、どなたかご存知ないでしょうか?
応用編
(原題)"Think Like A Programmer"
『プログラマの考え方がおもしろい身につく本』
(あえてAmazonリンクは貼らない)
この本は、まだ完全に読破できているわけではありませんが、かなりいい本です。
プログラミング言語の文法を覚えたとしても、プログラミングできるかといったら出来ないよね?じゃあどうすれば出来るようになるんだろう?という観点から切り込んだ一冊です。まさしく"初心者"が知りたいことが具体的に書いてあります。どういう思考プロセスが必要か、どうやってコードを書くのか、という部分です。
コードを自分の力で書くためのプロセスについては、自分も記事として書いていますが、これはこの本で学んだことを自分なりに書いてみたモノと言っていいです。
コードを書くには、書く前にいろいろ準備が必要ということです。
この本は実際にプログラミングできるようになるためには、どういうことを考えていかないといけないのか?という所をひとつひとつ丁寧に解説しています。文法として学んだ、プログラミングにおける様々な道具をどう使っていくか?ということを学べます。
ただし問題はサンプルコードはC++で書かれているということです。C#に慣れるとC++はC以上にややこしいかもしれません。というわけでC++の基本的な部分も学ぶハメになったんですが、幸運なことに上のC入門のほかにC++入門というページが!
自分もC++は、かなり拒否反応がありました。(C#から見ると違和感がすごいのです。)しかしそれでも読む価値はあります。この本のサンプルコードをC#で書いたものが出たらかなり最高の教科書になると思うんですがねぇ。
また、『プログラマの~』における"クラス"に関する言及は、C#においてもかなり指針になるものだと思います。"クラス"は初心者は考えるべきじゃない!ということを本ブログでは、声高に訴えていきたいんですが、この本の影響が大きいですね。全体的に難しいですけども、実践以外の精神論的な部分も参考になります。イライラしない!は至言です。プログラマの頭の中で何が起こっているかがわかる一冊。
まとめ
というわけでC#の攻略本はまだない!という結論に変わりありません!といっても、もちろん市販のC#本を全部網羅しているわけではないので、もしかしたら既にあるのかもしれませんし、これから出るのかもしれません。でも少ないでしょうね。見つけたら、ぜひ本ブログで取り上げたいと思います。
というわけで、"初心者"にとってC#攻略の鍵となるであろう、書籍やサイト群の組み合わせをここで披露させていただきました。独断と偏見によるものですが、なにかしらの参考になれば幸いです。要は自分にあったやり方をいろいろ試す、そこらのブログ見てわからなくてもあきらめない、ということが大切だと思います。急がば回れ、の精神が大切です!