C#とはどんな言語?初心者が知っておきたい特徴と学習のコツを徹底解説!
「プログラミング言語のC#」と聞いて何をイメージしますか?
「難しそう」「ゲームが作れる言語」など、人によって様々でしょう。今回はそんなC#がどんな言語なのか、初心者の方にもわかりやすくご紹介します。この記事では、C#について以下のことが分かります。
- C#とはどんな言語?
- C#の基本スキル
- C#の学習方法
- 学習後のキャリアパスについて
読み終わる頃には「C#に詳しくなった!」と思えるように、順を追って説明します。一緒にC#について知っていきましょう!
初心者必見!C#で開発経験を得るならGeekSalon
GeekSalonについて詳しく知る目次
C#とはどんな言語?
C#とは
C#は、ゲーム開発や企業向けアプリケーションの開発などで利用されるメジャーなプログラミング言語です。2002年にMicrosoft社によって開発された言語であるため、あなたにも身近な「Microsoft PowerPoint」や「Microsoft Excel」などのオフィス系ソフトも、C#をもとにつくられています。
Windows向けのソフトはもちろん、Mac OS、iOS、Androidなどの開発にも幅広く対応しています。C#でつくられた有名なソフトやアプリケーションの例として、以下が挙げられます。
- ヤマダウェブコム(ヤマダ電機オンラインショップ)
- Skype
- 価格.com
- Bing
- Visual Studio Code
また、世界最大シェアを誇る2D/3Dゲームエンジン「Unity」はC#をメインの言語としているため、Unityを用いて作られたゲームはC#で作られていると言っても過言ではないでしょう。
ポケモンGoや原神、Among Usなどの有名なゲームもUnityで作られています。多種多様なゲームを作れるUnityを支えているのは、幅広い開発に対応できるC#なのです。
業界での需要も高く、TIOBE Indexが2024年11月に発表したプログラミング言語のランキングによると、C#は5位にランクインとなかなかの高順位です。
なお、このランキングは世界中の熟練エンジニアの数、コース、サードパーティベンダーに基づき、Google、Amazon、Wikipedia、Bingなど20を超える人気Webサイトから評価が算出されている信頼性の高いものです。
PythonはAI開発にも活用できる新しい言語のため、AI開発が盛んな昨今で人気が上がっています。一方、2〜5位には昔からある信頼性の高い言語が並んでいます。
2〜4位のC++、Java、C言語と比べるとC#は学習難易度が低いとされているため、信頼性・汎用性・学びやすさを兼ね備えた言語だと言えます。ただし、難易度が低いと言っても比較しての話です。全くプログラミングをしたことのない初学者の方は、まずはScratchなどのビジュアルプログラミング言語で学んでからC#に触れることをオススメします。
また、ランキングは毎月更新されますが、C#は安定した順位を保っています。AI需要の高まりにより急激に順位を上げたPythonと比較してしまうと分かりづらいですが、右肩下がりのJavaやC言語と比べるとその安定感は分かりやすいでしょう。今後の需要も将来性もある言語だと言えます。
C#でできること
C#はさまざまな開発で利用されており、できることはかなり幅広いです。例えば以下の開発が挙げられます。
- Webサービス・アプリ開発
- ゲーム開発
- システム開発
- VR/AR開発
Webサービス・アプリ開発
.NET Frameworkという、Webサービス・アプリケーション開発・実行環境用フレームワークを用いることで、Webサービス・アプリを効率的に開発することができます。C#との相性がよく、C#でのWeb開発は基本的に.NET Frameworkが利用されているため、開発手順やエラーの対処法も検索すれば知ることができるのはありがたいポイントです。
ゲーム開発
先に述べたとおり、C#をメインの言語として扱える「Unity」というゲームエンジンがあります。
Unityは2D、3D問わず幅広いゲームの開発が可能で、なおかつマウスなどでキャラクターを配置することができるため初心者でも視覚的に理解しやすいでしょう。クロスプラットフォームでの開発も可能なため、いわゆる据え置きゲーム機のゲームを開発した場合も、同じゲームをパソコンやスマートフォンでも遊べるように設定できるのです。
C#でコードを書けるようになると、拡張機能を実装できたり、数値での細かい設定ができたりと、より深い開発ができます。
システム開発
システム開発に用いられるCUIアプリケーションを、C#で開発することができます。CUIとは「Character User Interface」の略語で、キーボードでのみ操作できる画面のことです。「プログラミング」と聞いて想像する、文字がずらっと並んでいるPC画面がCUIです。
マウスやタッチで操作できる画面はGUI(Graphical User Interface)と呼ばれており、こちらの方が馴染み深いと思います。一般人でも使いやすいGUIを作成するのはCUIであるため、より深層の、開発者向けの基盤になるような部分を作れるということです。
VR/AR開発
こちらもUnityというゲームエンジンを用いての開発です。普通のゲーム開発よりも難易度が高く知識も必要になりますが、UnityとC#を1つずつ学んでいくことで可能です。VR/ARアプリの代表であるPokemon Goやドラゴンクエストウォークなどのようなゲームの開発も夢ではありません。
C#の特徴とJavaやPythonとの違い
C#に言語的に近い部分があると言われるJava、近年需要の高いPythonと、C#を比較してみましょう。「C#とは」のランキングを見ると、C#が5位なのに対してJavaは3位、Pythonは1位です。何が異なり何が人気の差を生んでいるのか、表で比較してみます。
C# | Java | Python | |
開発できるもの | Webサービス・アプリ、 ゲーム、システム、VR/ARなど | WEBサービス・アプリ、ゲーム、組み込み系システム、大規模基幹システムなど | Webサービス・アプリ、機械学習、画像認識、自然言語処理、データ収集・処理・分析、ブロックチェーン開発など |
汎用性 | ★★☆ | ★★★ | ★★☆ |
難易度 | ★★☆ | ★★★ | ★☆☆ |
何向き? | ゲーム開発 | 大規模システム開発 | AI開発 |
表を見ると分かるとおり、C#は汎用性と難易度のバランスが丁度良く、特にゲーム開発でよく利用されます。C#に名前が似た言語としてC言語やC++が挙げれられますが、この両者に比べてC#は難易度が低いため、C系の言語の中では始めやすい部類でしょう。
開発できるもので比較するとC#とJavaは近いですが、大規模基幹システムなどの堅牢性の高いシステム開発にはJavaが向いています。Javaを使用する大企業も多く、ビジネスで好まれやすい言語です。C#とJavaは言語的特徴が似ており使用シーンも被りやすいですが、難易度はJavaの方がやや高いです。
そのためプログラミング経験が少ない方は、まずはC#を用いたゲーム開発を通してプログラミングの楽しさを知っていくのが良いでしょう。言語的に近いからこそ、C#を学んだ後ならばJavaの理解もしやすくなります。
PythonはC#やJavaとは方向性が異なり、AIの開発に向いています。Webサービス・アプリの開発も可能ではあるものの、C#やJavaに比べると開発に手間がかかります。ただし難易度は低いため、「新しい技術に触れてみたい、プログラミングにも触れてみたい」という方が始めやすい言語といえます。
あなたがなぜプログラミングに興味を持ったのか、きっかけと目的にあった言語を選びましょう。
C#の基本的なスキル
いざ「C#の勉強を始めよう」と思って調べても、知らない単語ばかり並んでいたら嫌になりますよね。そこで、この章ではC#を調べるとよく出てくる基本的な概念や単語、コードの書き方について紹介していきます。これらを理解しておけば、初心者でも勉強を進めやすくなるはずです。
C#で知っておくべき基本概念・用語
C#を始める上で、まずは以下の5つの概念・用語を理解しておきましょう。
- オブジェクト指向プログラミング
- ガベージコレクション
- Visual Studio Code
- データ型
- インクリメント演算子/デクリメント演算子
オブジェクト指向プログラミング
オブジェクト指向プログラミングとは、プログラムで使う要素をオブジェクトという箱のようなものとして作り、それを操作していくプログラミングのことです。直感的に分かりにくい用語ですが、いろいろなプログラミングの方法がある中でもC#はオブジェクト指向プログラミングである、というのが大事な点です。
この他の方法としては、例えば以下の2つが挙げられます。
- 手続き型プログラミング
- プログラムを手順ごとに分けて作り、順番に実行していくプログラミング
- 関数型プログラミング
- プログラムの処理ごとに関数を作り、それを実行するプログラミング
比較してみるとなんとなくオブジェクト指向プログラミングの解像度が上がったのではないでしょうか。上記の2つは手順や処理といった動作に重きを置いていますが、オブジェクト指向プログラミングは「オブジェクト」という物自体を重視しています。
オブジェクト指向プログラミングにおいて、すべての要素は箱のようなものとして捉えられます。空っぽの箱があったり小さな箱の入った大きな箱があったり、そんな箱を組みわせることで希望の挙動をさせるのがオブジェクト指向プログラミングであり、C#なのです。
ガベージコレクション
C#に名前が似た言語としてC言語、C++があります。この2つの言語との違いを説明する上でよく挙げられるのが、「C#にはガベージコレクションという機能がある」というものです。
ガベージコレクションとは、簡単にいうと自動的にメモリ管理をしてくれる機能のことです。メモリはパソコンに用意されている土地のようなもので、プログラムはこのメモリの一部を使って動いています。メモリは無限ではないため、不要になったプログラムなどを消すなどしてやりくりする必要があります。
そんな時にガベージコレクションがあると、プログラムが使用していないメモリを自動的に解放してくれるのです。よって、C#はC言語、C++よりもメモリに関しては効率的にプログラミングできる、ということです。
Visual Studio
C#と同じくマイクロソフト社が提供するVisual Studioという統合開発環境は、C#との相性が良いです。そのため、C#関連の記事ではVisual Studioを用いて開発されていることがしばしばあります。
C#はVisual Studioを用いると、コードの補完や整形機能など、コードを見やすくする機能がサポートされます。また、GUI(テキストだけではなくマウスやタッチで操作できる画面)で簡単にアプリ開発ができる機能も備わっているため、有効に活用していきましょう。プログラミング初心者にも優しい開発環境です。
データ型
データ型、または型とは、変数の種類を決めるためのものです。そもそも変数とは何かしらの値を代入できるもののことで、具体的には中学数学の「x = 10」の「x」などです。この例では「10」という整数を入れていますが、プログラミングでは小数や文字なども代入できます。
しかし、C#は変数に代入する上で「どんなものを代入するのか」を宣言する必要があります。それを決めるのがデータ型の役割です。以下の例とともに見ていきましょう。変数x、y、zにそれぞれ整数、小数、文字を代入します。文末の「;」はプログラミングにおける句点(。)です。
//32bit整数を入れるデータ型「int」
int x = 10;
//64bit浮動小数を入れるデータ型「double」
double y = 10.5;
//文字列を入れるデータ型「string」
string z = "こんにちは";
上記のように、変数の前にデータ型を書くことで値を正しく代入できます。他にもたくさんのデータ型が存在し、たとえば数字の大きさによってもデータ型を変える必要があります。コードを書くときに必要になったらぜひ調べてみてください。
なお、余談ですが、上記のコードで2本のスラッシュ(//)の後に文が続いている部分があると思います。これは「コメントアウト」と言い、プログラムに処理をさせない文であることを表します。処理をさせない、つまりコードを実行しても機械がスルーしてくれる部分であるため、付近のコードで何をやっているのかの説明などを書き残せます。
インクリメント演算子/デクリメント演算子
インクリメント演算子とは「++」、デクリメント演算子とは「- -」のことです。ある変数に+1もしくは-1するという処理を端的に表しています。
例えば、10を代入した変数xがあったとします。1を足して11にしたい時、以下のどちらの記法でもxを11にすることができます。
x++;
x = x + 1;
いちいち「x = x+1;」と書くのが手間なのでこの記法が用意されています。デクリメント演算子も同様に、xを-1したい時は「x- -;」と書けば「x = x -1;」と同じ意味にできるのです。
さて、このインクリメント演算子がなぜ基本概念なのかというと、C#の名前に関係があるからです。C#はC++から派生しており、C++はC言語から派生しています。順に辿っていきます。
まずC言語は手続き型のプログラミング言語であり、C++言語は「C言語にオブジェクト指向をプラスした言語」として誕生します。そのため「Cに+1する」という意味合いで「C++」と名付けられたのです。
続くC#は「C++よりも万人が使いやすい言語を」と、先ほどと同様に「C++に+1する」という考えのもと誕生しました。しかし「C++++」では名前も長くなってしまうので、4つの+をそれぞれ右上、右下、左下、左上に配置したのです。すると#のように見える、ということで「C#」という言語になりました。
インクリメント演算子が少しは馴染み深くなったでしょうか。実際のC#のコードでも使える記法なので、覚えておいて損はありません。
初心者が理解しておきたい基本的な書き方
実際にコードを書くうえで必要になる知識をつけていきましょう。以下の5つを覚えれば基礎的なコードを書くことができます。
- メソッド宣言
- クラス
- if文
- while文
メソッド宣言
メソッド、または関数とは、一連の処理をひとまとまりにした大きな箱のことです。たとえば次の変数x,yがあったとします。
int x = 1;
int y = 1;
そして、それぞれに1を足していく処理を2回繰り返したいと思ったとします。シンプルに書くと以下のようになります。
x++;
y++;
x++;
y++;
とても無駄な感じがしますね。こんな時にメソッドを使います。すると、次の2行にまとめることができるのです。
PlusOne(x, y);
PlusOne(x, y);
見やすくなりましたね。ただし、上記の「PlusOne(x, y);」はメソッドを呼び出しているだけであり、まだメソッド本体は作られていません。さて、本体を作ってみましょう。
public void PlusOne(int a, int b)
{
a++;
b++;
}
これがメソッドです。何がどうなっているのか、順番に意味を見ていきましょう。
public
「public」とは、「どこからでも参照できる」ということを示しています。次の「クラス」で詳しく説明しますが、他の人が自由にこのメソッドを使えるように制限を取っ払っている、ということです。
他にも「private」などに変更できます。privateは簡単に言うと、他の人がこのメソッドを使えないように制限するものです。
void
続いて「void」ですが、この部分では戻り値のデータ型を設定します。戻り値とは、このメソッドを実行した後に返ってくる値のことです。メソッドは変数に代入できるので、もし「d = PlusOne(x, y);」としたら、変数dの中に戻り値が代入されるのです。
「int」にすれば整数を、「string」にすれば文字を返すことを明示的に示せます。ただし、「void」は戻り値がないことを表す特殊な型のため、このメソッドを何かしらの変数に代入しようとしても何も代入されません。今回はvoid型のメソッドなので、「d = PlusOne(x, y);」はできないのです。
一方で戻り値がある場合、メソッド内で何を返すかを書く必要があります。処理の最後に「return a;」など、「return文」を書きましょう。なお、int型を返すよう設定していたのならaは整数そのものか整数を代入した変数で、string型なら文字そのものか文字列を代入した変数です。
PlusOne
「PlusOne」はメソッドの名前です。自分でつけることができるため、どんな処理をしているメソッドなのか分かりやすい名前をつけると良いでしょう。
(int a, int b)
これは「引数」(ひきすう)と呼ばれます。メソッドを呼び出す時に、使ってほしい値を渡せるところです。呼び出し時に「PlusOne(x, y);」と記述していましたが、これは「int aにxを、int bにyを反映してね」という指示なわけです。
x, yを引数に渡したことによって、「a++; b++;」という処理を「x++; y++;」という処理として実行させているのです。渡した値を使ってメソッドを実行させられます。
ただし、a,bの前にそれぞれintがついていることから分かるように、整数以外の変数や値は渡せません。メソッドを定義するときに、どんなデータ型のものがほしいのか制限できるのです。
なお、今回は3つの引数が書かれていますが、数に決まりはありません。そして型も自由です。メソッドによっては(string a, int b, double c)なんてこともありますし、空っぽの()だけのこともあります。
{ 処理 }
カッコの中に、実行したい処理を書きます。今回はa,bそれぞれに1を足す処理が書かれています。引数のところでa,bは変数宣言されているため、この処理の中で使えているのです。
練習問題
以上が今回のメソッドの形です。基本的な形は共通しているため、今回のメソッドから変更したい部分だけを変更していくと新しいメソッドも作りやすいと思います。
覚えたことを定着させるために、1つ練習問題をやってみましょう。
「どこからでも参照できて、戻り値はstring型、『Test』という名前の、引数のないメソッド」を作ってください。内部の処理としては、「hello」という変数をつくり「こんにちは」という文字列を代入してください。戻り値はhello変数とします。
答えは以下のコードの通りです。一例のため別の書き方もありますが、近い回答はできていたでしょうか?
public string Test()
{
string hello = "こんにちは";
return hello;
}
クラス
クラスとは、変数やメソッドを格納できる大きな箱のことです。いろいろなクラスを組み合わせることで、複雑な機能を持ったなにかを作るための基礎が作れます。
車を例に考えてみると、車はいくつかのクラスの集合体で、タイヤやドアなどの各部品がクラスです。そしてタイヤを動かすためのネジが変数で、ネジの動き方を設定しているのがメソッドです。
ただし、クラスは「実物のタイヤ」ではないことに注意が必要です。まだ車を作る必要がない時に4つのタイヤを持っているのは邪魔だし無駄なので、「タイヤを作れる情報をまとめた1つの箱」として持っておきます。これがクラスです。
そして車が必要になった時に、この箱の持つ情報を参考にしてタイヤという実体を作ります。プログラム的には、実体は「インスタンス」と呼ばれます。インスタンスを生成するコードを実行した時に初めて、箱からネジやタイヤが生み出されるのです。
要するに、先述の変数やメソッドはクラスの中に書く必要があります。先ほどのx,yに1を足すコードの全体を見てみましょう。
class Program
{
int x = 1;
int y = 1;
public void PlusOne(int a, int b)
{
a++;
b++;
}
public static void Main()
{
PlusOne(x, y);
PlusOne(x, y);
}
}
「Progaram」というclassの大きなカッコの中に書かれていることから分かる通り、クラスがメソッドや変数を格納しています。
また、先ほどは出てこなかったMain()というメソッドがあります。Mainメソッドはこのクラスのインスタンスを作り動かすと必ず実行されるメソッドとして、システム的に設定されているものです。そのため何か行いたい処理があるならばMainメソッドで書いておきましょう。
なお、変数のx,yはクラスどちらのメソッドにも入れずにクラスの中で宣言されています。これはあるメソッドの中で宣言された変数はその外からは参照できないという制約があるためです。
そしてPlusOneメソッドですが、もしも「private void PlusOne(int a, int b)」とpublicではなくprivateにしたとします。privateの「他から使えなくなる」というのは、「このクラス内での操作以外は出来なくなる」ということです。このProgramクラスの中でしか使えないメソッドであり、Programクラスをもとに作ったインスタンスからも操作できません。privateは変数にも使えるため、パスワードなどの他者から見られたくも操作されたくもないものを守ることができます。
if文
ifは「もし」という意味の英単語であり、プログラミングにおいて「もし〜なら〇〇する」という処理をさせられます。言い換えると「〜という条件が成立するなら〇〇をする」という処理であるため、if文は条件文や条件分岐などとも呼ばれます。
「晴れたら洗濯物を干す」「明日になったら本気を出す」など、日常生活でも条件によってやることを決める場合があるように、プログラミングにおいても条件分岐をさせたい時があります。実際にコードを見てみましょう。
PlusOne(int a, int b)のメソッドで考えてみます。もともと変数a,bそれぞれに+1する処理をしていましたが、「もし変数aが2なら1を足す」という処理に変更してみると、以下のようになります。
public void PlusOne(int a, int b)
{
if(a == 2)
{
a++;
}
b++;
}
上記のように、if(条件){ 条件が成立する時にさせたい処理 }という書き方がif文の基本の形です。a,bに0を渡してこのメソッドを実行すると、aは0に、bは1になります。
なお、「a == 2」というのはaと2が等しいことを示しています。「a = 2」では「aに2を代入する」という意味になってしまうため、イコールを2つ繋げることで表現することになっています。
また、複数の条件を用意してそれぞれの処理を書くこともできます。aが2である時という条件に追加で、aが4より大きい時とそれ以外である時の条件も用意してみます。
public void PlusOne(int a, int b)
{
if(a == 2)
{
//aが2の時aに1足す
a++;
}
else if(a > 4)
{
//aが2ではなく4より大きい時にaから1引く
a--;
}
else
{
//aが2ではなく4より大きくもない時(1以下か3,4の時)にaに2足す
a = a+2;
}
b++;
}
いかがでしょうか。elseで別の条件を用意できるのが見てとれます。注意点として、条件文の外にある「b++;」の処理は必ず実行されることに気をつけましょう。
while文
if文と同じように、ある条件が成立するときに処理を実行させたいときに使うのがwhile文です。if文と違うのは、条件が成立している間は繰り返す処理であることです。
たとえば、先ほど追加したif文をwhile文で囲んでみましょう。「aが4以外の間はif文の処理を繰り返す」という条件にします。「b++;」の処理をwhile文の中に入れることで何度繰り返されたか確認できるようにします。
public void PlusOne(int a, int b)
{
while(a != 4)
{
if(a == 2)
{
//aが2の時aに1足す
a++;
}
else if(a > 4)
{
//aが2ではなく4より大きい時にaから1引く
a--;
}
else
{
//aが2ではなく4より大きくもない時(1以下か3,4の時)にaに2足す
a = a+2;
}
b++;
}
}
「a != 4」は「aが4以外」であることを表します。a,bに0を渡して実行した場合、最終的にはaは4に、bは4になります。処理の流れを見ていきましょう。
まずaは0のためelseの「a = a+2」が実行され、2になります。続いてif(a == 2)のa++が実行されて3になり、再びelseが呼ばれて5になります。4より大きくなったためelse if(a > 4)のa–が実行され、aが4となりループが終わります。条件分岐が4回呼び出されているため、bは4になります。
ややこしいですが、以上のようにループをさせられるのがwhile文です。3回だけ「おはよう」という文字列を表示したりあえて無限ループを作ったり、使い方は無限大です。
C#の学習方法
C#を勉強する方法は多数あります。中でも今回は以下の3つに絞って、それぞれのメリットとデメリットをご紹介します。
- 本
- オンライン学習サイト
- プログラミングスクール
各勉強方法のメリット・デメリット
本
本のメリット
- 信頼性が高い
- わかりやすく書かれているものが多い
C#について書かれた本は大量に存在します。プログラミングの基礎から教えてくれるものやUnityの使い方を教えてくれるものなど、種類は様々です。自分のレベルや目的に合ったものを探せるでしょう。
本は出版する上である程度の審査を通過する必要があります。そのため内容の信頼性が高く、読み手にわかりやすく書かれたものが多いでしょう。有名なエンジニアが出版している本もあるため、著者から探すのも手です。
本のデメリット
- 情報が古いことがある
- 完全に初心者だと難しい
一方で、本はインターネットの記事と異なり修正できません。できても改訂版を出すくらいのため、内容の古い本を買ってしまえば全く勉強を進められないこともあります。手順に沿って進めようとしても、始めの段階でバージョンが異なっていれば希望の挙動をしなかったり、掲載されているサービスが終了していて使えなかったり、それ以降のページ全てに影響するような問題があると大変です。
また、本はページ数やレイアウトなどの制限があるため、すべての情報を書ききることはできません。場合によっては初心者に必要な情報が省かれてしまっていることがあります。初心者向けの本と謳っていても情報が足りなければ別の本を買う必要が出るでしょう。そんなときに質問できる相手もいないとなると挫折しかねません。
本で勉強する際は、目的やレベルに合っているか、古すぎないかもしくは改訂版が出ていないか等に目を通すようにしましょう。
オンライン学習サイト
オンライン学習サイトのメリット
- サイト上にエディターがあることがある
- 無料サイトでコスパよく勉強できる
インターネット上にはたくさんのオンライン学習サイトが存在します。個人が書いているブログがあれば企業が運営しているものもあり、ひとえに学習サイトと言っても様々です。記事形式や動画・スライド形式などサイトによって異なるため、幅広い方法で勉強を試せます。
多様な形式に加え、サイト上でコードを書いて実行できるエディターが用意されていることがあります。特に企業が運営するサイトに多いです。自分のPC上に環境構築をするという面倒臭くややこしい工程を省けるため、初心者にはとてもありがたい機能です。
また、無料のサイトで勉強すれば費用もかからず、コスパよく学ぶことができるでしょう。有料のサイトでも途中までは無料で使える場合があるので、いろんなサイトを見てみることをおすすめします。
オンライン学習サイトのデメリット
- 信頼性が低い
- 正誤の判定が厳しすぎることがある
オンライン学習サイトは信頼性が低いことがあります。特に個人のサイトは運営者の顔も見えないですし、情報を精査する義務もありません。場合によってはわざと嘘の情報を流したり、自身の情報以外に不信感を抱かせるよう誘導したりするサイトもあります。情報を全ては鵜呑みにしないように気をつけましょう。
また、悪意がなくとも古い情報のまま更新を怠っていたり、ハウツーの途中で更新が止まっていてその先にすべきことが分からなかったりすれば、不便に感じることもあるでしょう。
利便性は本よりも高い一方で動画と同様なデメリットがあるため、なるべく信頼性の高いサイトで勉強するといいでしょう。有料のものが多いですが、安全面を考えると企業が運営しているサイトがオススメです。
エディター付きのサイトも注意が必要です。入力されたコードが正解かどうか判定する機能が搭載されていることがあるのですが、その判定が厳しすぎる場合があるからです。コードに良し悪しはあれど正解はないため様々な書き方が許容されるべきではあるのですが、いろいろなパターンを想定し正解を設定するのも手間がかかるため、ある一定の書き方しか正解に設定されていないことがあります。特にまだプログラミングに詳しくない初心者にとっては何故自分の書き方ではダメなのかが分かりづらいため、勉強に行き詰まってしまうかもしれません。
オンライン学習サイトで勉強する際は、いろいろなサイトを比較検討して自身にあったサイトで勉強しましょう。
プログラミングスクール
プログラミングスクールのメリット
- スクールによっては成果物を作成できる
- メンターや仲間がサポートしてくれる
スクールに通ってプログラミングを学ぶという手段もあります。対面で受講するものやオンラインで全て完結するものなど、スクールによって様々です。あなたに合った受講形式のスクールを選ぶといいでしょう。
スクールによっては、Webサイトやゲームなどの成果物を制作できます。スクールが決めたものを作る場合もあれば、あなたが作りたいと思ったものを作れる場合もあります。どちらにしろ勉強における目標ができるため、挫折しづらくなるでしょう。実際にプログラミングの独学は挫折しやすいという統計もあるため、まずはプログラミングスクールに入り、ある程度プログラミングのベースや考え方などを学ぶことをオススメします。
また、スクールにはあなたに寄り添って教えてくれるメンターや、高めあえる受講生がいます。本やオンライン学習サイトでの学習と違い、分からないところをすぐ質問できたり、悩みを相談できたりと、自分以外の人がいるのは利点です。
プログラミングスクールのデメリット
- 対面授業の場合は通わなければいけない
- 受講料が高い
プログラミングスクールの中には対面でしか実施しないスクールがあります。教室が遠ければ通うだけでも大変ですし、授業時間が決まっていればスクールに合わせて生活を変える必要があります。特に転職者に向けたスクールなどは教室や時間などがスパルタに設定されていることがあるため、スクール選びを誤るととても苦労することになります。
また、プログラミングスクールは本やオンライン学習サイトに比べてお金が多くかかります。スクールによっては100万円を超える場合もあり、初心者が挑むにはやや敷居が高く感じるでしょう。レベルに合わせて教えてもらえることや信頼性を考えると受講料がかかるのは当たり前ですが、あなたが求めるものと料金とのバランスに納得できるスクールを探すことが大切です。
スクールを選ぶ際は、対面かオンラインか、対面ならば近くに教室があるか、そして受講料と得られるスキルが見合っているかを判断材料にしましょう。
C#を学ぶにあたりオススメのプログラミングスクール
スクール選びはその後の学習にも影響を与えます。どんなスクールがありどこがいいのか、比較検討することが大切です。そこで、C#を学べるオススメのスクールを3つご紹介いたします。
- GeekSalon
- TechAcademy
- Winスクール
GeekSalon
GeekSalonは大学生限定のコミュニティ型プログラミングスクールです。受講生も同世代の大学生ばかりなので、切磋琢磨し合いながら楽しく学べるスクールで、日本ですでに12,000人が受講しています。
C#を学べるGameアプリ開発コースはUnityを使用してのゲーム開発を、3ヶ月の学習期間で10万9340円で学習できます。大学生向けの比較的安価な価格設定となっており、文系でもプログラミングの基礎から学ぶことができます。受講は基本オンラインですが、全国に7ヶ所ある教室に行けば同級生と一緒に受講できたりその場でメンターに質問できたりします。
オリジナルゲームの開発がこのコースの目標のため、ゲーム開発に必要な知識をストレートに学ぶことができます。学習終了と同時に成果物が完成する流れになっています。
TechAcademy
TechAcademyは、転職者がメインターゲットのプログラミングスクールです。通過率10%の選考を突破した現役エンジニアからマンツーマンで学ぶことができます。
C#を学習できるUnityコースは最短4週間、25万1900円から受講できます。受講はすべてオンラインで完結するため、住んでいる地域に関わらずどこからでも勉強できます。
以下の4つのアプリ開発を通してC#およびUnityを学んでいくことになります。オリジナルアプリの公開を目指して開発していくため、実務に近い形で学習でき、社会でも通用するスキルが身につきます。
- 2Dゲーム:進めユニティちゃん
- キャラが走ったりジャンプする2Dカジュアルゲーム
- 3Dゲーム(初級):ピンボール
- 自然な物理的挙動を実現した3Dピンボールゲーム
- 3Dゲーム(中級):避けろユニティちゃん
- 地形オブジェクトを利用した3Dダッシュゲーム
- オリジナルゲームアプリ
- 自分のアイデアをカタチにしたゲームアプリ
Winスクール
Winスクールは、全国に展開するITスキル習得のための教育機関です。資格取得や、就職・転職に強いスクールのため、社会人が多く受講しています。
C#プログラミング講座は3ヶ月の受講期間で税込21万6700円で受講できます。デスクトップアプリを開発について学べる講座で、カリキュラムにはCUIプログラミングも含まれています。全国に約50校ある教室でもオンラインでも学習可能です。
成果物の制作はありませんが、初心者に必要な知識を学べるため、卒業後にはアプリケーションを開発できる力が身についているのではないでしょうか。
C#学習後のキャリアパス
C#は幅広い分野で活用できる言語です。Webサービスやシステム開発・ゲーム開発など多くの分野で使われています。
中でも、ゲームやスマホアプリの開発において重宝されます。Unityを利用して作られるゲームはたいていC#が使われているため、Unityでの開発をメインとしてるゲーム会社などで特に活躍できるでしょう。
以下にC#の強みを活かせる職種を3つご紹介します。
ゲーム開発エンジニア
Unityはコンシューマーゲームの開発などにも広く採用されています。最近はSwitchやプレイステーション、パソコン、スマートフォンなどさまざまな媒体でプレイできるゲームが増えているため、クロスプラットフォーム開発が可能なC#は重宝されます。
加えて新しい技術であるVR/AR開発もUnityは可能のため、C#のゲーム開発エンジニアはさらに需要が高まると予想されます。
ゲーム開発エンジニアを目指す方はUnityでの開発経験を積んでおくといいでしょう。
Webサービス開発エンジニア
.NET FrameworkというフレームワークでWebサービス・アプリを効率的に開発することができる、と述べたとおり、C#はWebサービス開発の場でも活用されています。たとえばECサイトの開発でもC#は使われています。
ネットショッピングは販売者は実店舗を構えずとも商品の販売が可能で、購入者はいつでもどこでも商品を購入できるため各方面にメリットが多く、ECサイトは今後も増えていくと考えられます。
Webサービス開発エンジニアを目指す方はフレームワークについて学ぶことをオススメします。
社内SE
C#は業務システムの開発も可能です。他の企業向けのシステムだけでなく、企業の内部で使う業務システムも存在します。社内で働く人々が効率的に働くのをサポートする、縁の下の力持ち的な役割が社内SEです。経理や在庫管理など、幅広い業務システムの開発に携われるでしょう。
社内SEは新卒の採用が比較的少ないため、スキルを身につけてからの転職などで目指すケースが多いです。
C#で開発してみたいならプログラミングスクールがオススメ!
記事を読む前と比べて、C#について格段に詳しくなったのではないでしょうか?この記事を通してC#に興味を持っていただけたなら、ぜひ今後も勉強を続けてみてください。C#は幅広い分野で活用できる上に比較的学びやすいため、初心者の方にこそオススメしたい言語です。
どのように学ぼうか悩んでいる方には、プログラミングスクールがおすすめです。進め方に悩んでしまうことがあっても相談できる仲間がいるため、勉強を進めやすい環境となっているからです。
GeekSalonは大学生限定にはなりますが、比較的安価に学べて成果物の制作も可能です。
受講中は24時間チャットでの質問を受け付けているため、困った時に相談できます。「文面だけじゃ不安」という方もご安心ください。定期的にオンライン勉強会が開催されていたり、教室に行けば対面で質問できたり、直接メンターと話せる場が用意されています。
GeekSalonでは毎日説明会を開催しておりますので、気になった方はお気軽に参加してみてください。
初心者必見!C#で開発経験を得るならGeekSalon
GeekSalonについて詳しく知る