C#はMicrosoft社が開発したプログラミング言語です。
Javaに非常によく似ているため、Javaを書ける人であればC#はすぐに慣れることができます。
C#にはC++の要素も入っていて、JavaとC++を融合させた言語なんていうことも言われています。
- プログラミングをこれから学習しようとしている
- C#に興味がある
「C#」の特徴
まず、C#の特徴はこちら。
- Windowsアプリケーション開発に最適な「.NET Framework」
- Microsoftだから情報量が豊富
- 汎用性が高い
それぞれについて詳しく解説していきます。
Windowsアプリケーション開発に最適な「.NET Framework」
C#の最大の特徴はWindowsアプリケーションなどが作りやすいことです。
それを可能にしているのは、「.NET Framework (ドットネット フレームワーク)」と呼ばれるものです。
これは、Microsoft社が提供する開発・実行環境です。
つまり、WindowsアプリケーションやWeb系のアプリケーションなどが作りやすい環境なのです。
C#は「Visual Studio」と呼ばれる開発環境で開発することができます。
開発はこのような環境になります
フォームアプリケーションなどではテキストボックスやボタンなどを置いてUI上で名称などのプロパティを編集することができます。
そして、ボタンを押したときの処理をC#で書いていきます。
unsafeコードを利用すればC++のコードも書くことができるので、古いコードを流用するときはとても便利です。
Microsoftだから情報量が豊富
MicrosoftがC#を開発していることのメリットがあります。
それは、
- MicrosoftによるC#のプログラミングガイド
- MicrosoftによるC#のサポート
などです。
まず1つ目に、開発元のMicrosoftからプログラミングガイドが提供されています。
怪しいサイトのコードは参考にしたくないですよね?
開発元にC#の取説がありますから信頼性が非常に高いです。
さらに、情報も豊富にあります。
説明は英語をベースにしているので、日本語環境にしたときにおかしな表現になりますが、英語の勉強もできるので一石二鳥です。
2つ目がサポートです。
C#は2000年ごろに開発されたプログラミング言語です。
そこから頻繁にアップデートがあり機能が追加されています。
一番古いバージョンでC# 1.0、最新バージョンはC# 8.0です。
その間、コーディングの簡素化もされているので最新のC# 8.0を利用すれば、簡略化したコードを書くことができます。
さすが世界のMicrosoftといいますか、20年にわたりC#をサポートし続けるのは凄いですよね。
最近では.NET CoreというWindowsやLinux、さらにはMacでも動かせるクロスプラットフォーム開発にも力を入れているので、今後も目が離せません。
汎用性が高い
C#がWindowsアプリケーションに強いことはわかっていただけたでしょう。
しかし、実はWindowsアプリケーション以外にも強みがあるのです。
それは、
- iPhone・Androidアプリ
- 2D/3Dゲーム・VR
- Webアプリケーション/サービス
になります。
どれも最近流行りの開発ですよね?特にUnityの台頭によりゲームやVR、iPhone/AndroidアプリをC#で開発できるようになりました。
C#ってとても守備範囲が広いプログラミング言語ですよね?
私もC#を使っていて、Windowsアプリ以外にもスマホのアプリ開発や、Webアプリも作れるのでプログラミングがとても楽しく感じます。
そういった楽しめるという点では、先に挙げた学習コストはグッと下がるかもしれませんね!
分野ごとで必要なC#の知識
先に挙げたプログラムで必要な知識は異なります。
Windowsアプリケーション | .NET Framework |
---|---|
iPhone・Androidアプリ | xamarin |
2D/3Dゲーム・VR | Unity |
Webアプリケーション/サービス | ASP.NET |
Windowsアプリケーションはもちろんのこと、
Unity Technology社が提供するゲームエンジン「Unity」を用いた2D/3Dゲーム開発であったり、Xamarinを用いたiPhoneとAndroidに対応したアプリケーションも作成することもできます。
開発できる分野が多岐に渡るので、趣味や興味のあるところを開発することができます。
C#の学習コスト
C/C++に比べるとC#は学習コストは低いです。C#はメモリ領域を気にする必要がないので、C/C++ほど深い知識はいりません。
ただし、難易度はどこまで興味があるのかによって変わってきます。
「CLI(共通言語基盤)」や「.NET Framework」など多少難しい知識があるので、場合によってはC/C++と同じくらい難しい言語になるかもしれません。
C#は「Java」と「C++」のいいとこ取りの言語です。
そのためJavaを書くような感じでプログラミングすることができます。
例えば、「Hello world」表示のソースコードをご覧ください。
// Java Hello world!!の書き方
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
// C# Hello world!!の書き方
using System;
namespace HelloWrold
{
class Hello
{
static void Main() { Console.WriteLine("Hello,world!"); Console.ReadKey(); } }
}
Javaに似ていませんか?
つまり、Javaに馴染みのある方にとってはC#は学習コストが低くなる傾向になります。
また、オブジェクト指向型のプログラマーであればグッと難易度が下がるでしょう。
分野ごとの学習コスト
それぞれの学習コストはこのようになります。
Windowsアプリケーション | [jinstar2.0 color=”#ffc32c” size=”16px”] |
---|---|
iPhone・Androidアプリ | [jinstar5.0 color=”#ffc32c” size=”16px”] |
2D/3Dゲーム・VR | [jinstar4.0 color=”#ffc32c” size=”16px”] |
Webアプリケーション/サービス | [jinstar3.0 color=”#ffc32c” size=”16px”] |
もちろん新しく学習するということは、どの分野でもそれなりに学習するための時間が掛かります。
一番取り掛かりやすいのは、Windowアプリケーション開発でしょう。WindowはOSの世界シェアNo.1ですから情報量が圧倒的に多いです。
そして、パソコン1台あれば実装から検証、実行まで行うことができるのでC#プログラミングの学習にはうってつけですよ!
それ以外だと、Webアプリケーションであればパソコン以外にもサーバーを用意あるいはレンタルしたり、iPhoneアプリであればアプリをリリースするための許可をApple社から取得しなければいけずそれなりに手間が掛かります。
職業として選ぶなら
C#で求人があるエンジニアを調べてみました。
- Web系
- スマートフォン系
- パソコン系
- VR・AR系
- AI・機械学習
が主になるでしょう。
求人の数がとても多いわけではないですが、逆に少なくもないです。
その中でも人気がある職種はWeb系が多いです。
最近ではAIの台頭もあり、大手企業から新卒で年収1,000万クラスの求人がチラホラ見受けられますよね。むしろAI分野は人手が足りていないくらいですから。
時代の流れはWeb系やAIですからC#の需要は今後伸びていくと予想されています。
ただし、日本の場合はまだまだソフトウェアエンジニアの立場が弱いですから求人を選ぶ際は注意が必要になります。
英語ができる方だったら思い切って海外へ行ってしまうのもありでしょう。海外(特にアメリカ)の方が明らかにエンジニアとして成長できる土壌があります。
プログラミング言語って何でたくさんあるの?
今までC#の話しをしていましたが、みなさんプログラミング言語って多いと感じませんか?
私は入社当初、CとかC++、C#とかいまいち違いがわかりませんでした。
「何で言語によってこんなに書き方が違うんだ」
と思っていました。
事実、プログラミング言語は大量にあります。ではなぜ多くのプログラミング言語が存在し使用されているのか?
これはズバリ、用途によって強みが異なるからです。
例えば、日本からヨーロッパへ行くのにわざわざ時間を掛けて船でいきませんよね?時間もそうですが同時にお金も掛かりますから間違いなく飛行機を選択するでしょう。逆に、電車で1時間のところをわざわざ飛行機でいきますか?
これと同じようにシステムの規模や求められる用途によって適切なプログラミング言語は異なるのです。
大規模なシステムを作る場合はJavaやC#、小規模であれば近年人気が急上昇しているPythonやRubyが向いています。システムの速度が求められるときはC++に強みがあります。
コメント