C#(シーシャープ)の世界へようこそ
みなさんこんにちは。
techpjinで、C#についての記事を書かせていただく後藤です。
この記事は、プログラミング初心者のみなさんに、C#についてご説明するものです。
みなさんが、C#を使いこなすための、最初のサポートになれば幸いです。
プログラミングはコミュニケーション
みなさんはプログラミングに、どんなイメージを持っていますか?
もしかしたら、意味不明の魔術、理系さんだけのもの、難しい数学が必要、とか思っていませんか?
実は、プログラミングは、コンピューターさんにチャットしたり、文章を書いて渡したりする、
コミュニケーションなのです。
人間同士のコミュニケーションと基本は同じです。
その時に必要な言語が、プログラミング言語。
今メジャーなプログラミング言語の多くが、英語の単語や文法を基にしています。
他に、算数の記号や、そのほかの記号がちょっと。
魔術でも、理系専用でも、難しい数学必須でもありません。
人間の言語には、英語、中国語、アラビア語、日本語といろいろありますね。
プログラミング言語にもいくつも種類があります。
その幾つかあるプログラミング言語のうちの一つが、これから私たちがみるC#です。
C#ってどんな言語?
あの有名なマイクロソフトが作ったプログラミング言語です。
ここでは、主な特徴を3つ紹介します。
- コマンドラインでは使えません
- オブジェクト指向が必須
- 変数宣言時にデータ型の指定が必須
コンピュータさんとのチャットはできません。しっかり文書(ソースコード)を書きましょう。
『コンピュータさん、~してください。』はできません。劇のシナリオとしてプログラムを作りましょう。
コンピューターさんが分かるよう、データが文字列なのか、数字なのか、きっちり指定してあげましょう。
以下、順番に説明します。その際、C#との対照のため、別のプログラミング言語であるpython3を使います。
コマンドラインでは使えません
コマンドラインは、プログラミング言語を使い、コンピューターさんとチャットするための仕組みです。
様々な言語が、この仕組みを持っています。
例えば、Python3のコマンドラインにPython3の文を打ち込みます。
すると、コンピューターさんがお返事してくれたり、指示通りの動作をしてくれたりします。
まさに人間同士のチャットと同じですね。
しかし、C#では、そのような手軽な仕組みがありません。
ひたすら、C#で書かれた文書(ソースコードと言います。)を作ります。
ソースコードを渡されると、コンピューターさんは、指示された通りの動作をしてくれます。
オブジェクト指向が必須
プログラミングのスタイルの中で、命令型とオブジェクト指向型というものがあります。
Python3などの、他の多くの言語は、命令型でプログラミング可能です。
しかし、C#はオブジェクト指向型のプログラミングが必須です。
命令型とオブジェクト指向型は、プログラムをどう捉えるかの違いです。
命令型は、文字通りコンピューターさんへの命令書としてプログラムを捉えます。
オブジェクト指向型は、オブジェクトというキャラクターを使った劇のシナリオとしてプログラムを捉えます。
コンピューターさんはその劇の実施を監督します。
例えば、コンピューターさんにHello Worldという文字列を表示してほしいとします。
命令型なら、日本語でもプログラミング言語でも1行で簡単に書けます。
『コンピューターさん、Hello World!を表示してください。』
しかし、オブジェクト指向型では、とても長いです。
『コンピュータさん、Mainという劇を開きます。
MainClassさんが、劇の主催者です。
劇のシナリオは以下の通りです。
画面さんが”Hello World!”という文字列を表示します。』
オブジェクト指向が義務のC#は小さなプログラムを書くときは非効率に見えます。
しかし、大きなプログラムを書くときは有利さが出てきます。
最後に、Python3とC#のコードを見てみましょう。
Python3:
print(“Hello World!”) # print()の意味は、『コンピューターさん、()の中身を表示してください。』です。 # ”Hello World!”が、表示の中身です。
C#:
using System; namespace CSharpTutorial { class MainClass //MainClassさんが、劇のシナリオを実行します。 { public static void Main() //実行される劇のシナリオは、Main()の次の{}の中に書きます。 { Console.WriteLine(“Hello World!”); // Console.WriteLine()の意味は、『画面さんが()の中身を表示します。』です。 // ”Hello World!”が、表示の中身です。 } } }
変数宣言時にデータ型の指定が必須
プログラミングでは、”Hello World!”という文字列や、3.14といった数値などを扱います。
これらをデータと呼びます。
これらのデータが、どのような意味を持つのか分かりやすい名前をつけることがあります。
この名前付けを変数の宣言といいます。また、この名前とデータのセットを変数と言います。
その際、変数のデータ型(文字列なのか、数字なのか、あるいは他の種類のものなのか)を指定する言語と、
指定しない言語があります。
Python3では、原則、変数宣言時にデータ型を指定しません。
変数を使用する時に適切なデータ型として解釈されます。
一方C#では原則として変数宣言時に、キーワードを使ってデータ型を指定する必要があります。
これをしないとエラーが出ます。
Python3:
name_of_language = “python” # name_of_languageが変数の名前。 # "python"が変数が表す具体的なデータ。 # =が、具体的なデータに名前をつけるという意味。 # データ型は文字列ですが、それはコンピューターさんが判断してくれます。
C#:
string nameOfLanguage = “CSharp”; // stringは文字列型と指定するキーワード。 // nameOfLanguageが変数の名前。 // "CSharp"が変数が表す具体的なデータ。 // =は具体的なデータに名前をつけるという意味。 //nameOfLanguage = “CSharp”; // 一つ上の行には型指定キーワードがないので、コメントアウトの//を外すとエラーです。
ただし、変数が表す具体的なデータから、変数のデータ型が明らかである時だけ、
特別な型指定キーワードvarを使うことがあります。
例えば、””に挟まれたデータは必ず文字列型です。
なので、変数が表す具体的なデータが””に挟まれていれば、
型指定キーワードにstringでなく、varと書くのです。
ただ、この場合でも、型指定キーワードをなくすことはできません。
var nameOfLanguage = “CSharp”; //こちらはエラーになりません。
まとめ
みなさんお疲れ様です。
駆け足ですが、今回はC#の概略を述べました。
次回は、実際にC#を練習するための環境づくりを説明します。
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発