C#とは?C#言語の特徴や初心者にオススメの理由を紹介します

C#言語の特徴やC#言語がプログラミング初心者にオススメの理由を解説していきます。

C#とは何でしょう

C#とは、近代において幅広く使われているプログラミング言語

C#言語の基礎的な作法を覚えれば‥

VB」や「java」など他のメジャーな言語も不自由なく取り組める!
エンジニアエンジニア

「初心者教育の一環」としてC#を取り入れているIT企業が増えてきているんだ

C#が使われているプログラミングにはこんなものがあります。

電子機器ゲーム
鉄道会社のシステム
ホテルのフロントが利用するシステム

そこで本記事では

C#の特徴、動作環境などの解説
C#と他のC言語との違い
C#でできること
C#で仕事や学習方法

などについて詳しく解説していきます。

C#とはどんなプログラミング言語なのか


C#を習得したり、今後、「仕事用のプログラミング言語」として使って行く上で必要な知識を解説していきます。

C#の特徴

C#の特徴‥「人間の感性に近いオブジェクト指向型言語」
簡単に言うと「javaとC++とVBのいいところをかけ合わせた言語」です
エンジニアエンジニア

これは現役エンジニアが全員口を揃えていうことだよ。

java」や「C++」はオブジェクト指向として作られている

オブジェクト指向って?

プログラムの部品の一部と考えて、その部品を組み合わせたり拡張することで最低限のコストでシステムを作り上げる思想のもと作られたプログラミング手法
「VB」‥「BASIC」という言語から派生してより人間の感性に近い言語形態

それらの特徴を盛り込んだ、「人間の感性に近いオブジェクト指向型言語」として生み出されたのがこのC#になります。

C#の動作環境

C#はWindows上で動くことを想定した言語

後の「C#」と「C#.Net」の違いで詳しく説明します

開発環境はMicrosoft Visual Studioという「IDE」(統合開発環境=開発用のソフト)を利用して開発
ご参考まで

2019年4月にVisual Studio 2019が公開されました。

Visual Studio導入時の注意点

Visual Studioには.Net Frameworkという開発や実行を補助するツール(ライブラリ)が存在します。

ご利用中のOSでサポートしていないと正しく動作をしない可能性があります。

また、サポートが切れているバージョンもあります。

導入前に確認!

  • 0Sに対応しているか
  • サポートは切れていないか

下記サイトで確認してください!

・マイクロソフト公式ブログ [Visual Studio] 開発ツール対応 OS 一覧
https://blogs.technet.microsoft.com/mssvrpmj/2018/11/20/vs_osall/

・マイクロソフト公式ドキュメント .NET Framework のシステム要件
https://docs.microsoft.com/ja-jp/dotnet/framework/get-started/system-requirements

C#とC言語の違い

C#」と「C言語」は全く違う言語です。

  • プログラムの書き方
  • 開発する環境
  • 開発時の作法

など違いは多岐多数に渡ります。

「C#」と「C言語」は全てにおいて異なっており同じ「C系の言語」でありながら互換性はありません

「C#」は「C++」「VB」「java」と言う言語を足した形です。

「java」が一番近い言語になります。

IDE統合開発環境)も「java」のIDEである「eclipse」に酷似している
エンジニアエンジニア

「Microsoft Visual Studio」でCの開発環境として有名な「Linuxのviエディタ」「Windowsで動くBorland」などと比較しても「java」のIDEである「eclipse」似てるんだ

外部のファイルを読み込むときの作法(参照)やメモリの管理の仕様などはとても「java」に近いものがあります。

C#とC#.netの違い

「C#」と「C#.Net」には違いはありません。

「C#.Net」はVisual C#と呼ぶところもあります。

違いは厳密にいえば違いはありますが、「C#」と「C#.Net」ほぼ同義です。

「C#」も「C#.Net」もMicrosoftが開発した言語

現在、プログラムを実行形式に直すコンパイラは.Net Frameworkが提供するJITコンパイラしか存在しません。

C#は以下の二つで分かれていました。

コマンドの一部として動くVBScriptやWSHと同等の機能を有するWindowsコマンドのようなもの
目に見えるプログラムとしてexe形式やwebで使われることを目的としたもの
エンジニアエンジニア

当初はそれぞれに専用のコンパイラが存在していたんだ

しかし、現在では公式に提供されているコンパイラがJITコンパイラしかありません。

そのため、「C#」と「C#.Net」は同義となります。

補足:C#とC#.Netの歴史

「C#」と「C#.Net」がどのように統合されたのかを補足します。

年表バージョン補足
『2002年』.Net Framework1.0「C#」と「C#.Net」は別物として存在
『2003年』.Net Framwork1.1「C#」と「C#.Net」は別物として存在
『2004年』.Net Framework1.1 SP1「C#」と「C#.Net」は.Net寄りになっているが、それぞれのコンパイラが存在
『2005年』.Net Framework2.0「C#」のコンパイラの開発が停止され、「C#.Net」に統合される
『2004年』.Net Framework1.1 SP1「C#」と「C#.Net」は.Net寄りになっているが、それぞれのコンパイラが存在

またこのころから「C#.Net」という呼び方が改められ、「Visual C#」と呼ばれるようになる

『2006年』.Net Framework3.0・「C#」と「C#.Net」の違いが一切なくなる

C#の学習とプログラミング初心者におすすめの理由

「C#」‥習得難易度が低い初心者向けの言語

ここからは「C#」が初心者におすすめの理由と他言語と比較した習得難易度を細かく見てきましょう。

C#がプログラミング入門者や初心者におすすめの理由

「C#」の学習がプログラミング初心者になぜおすすめなのか?

理由はこの2点です。

1.専門知識を有していなくてもプログラムが組める
2.新人プログラマであっても数カ月の内にシステムが組めるようになる

それぞれの理由を、細かく解説していきます。

専門知識を有していなくてもプログラムが組める

「C#」は専門知識を有していなくてもそれなりのプログラムが組むことができます。

Q.なぜ専門知識がなくてもプログラムが組めるのですか?

A.IDEの補助機能や.Net Frameworkが提供する機能が、知識を補助してくれるから

「C#」はVisual StudioというIDEで開発することを前提として作られています。

Visual Studioの補助機能や.Net Frameworkが提供する機能はとても多く、本来であればかなり高い専門性の知識を必要とする機能も簡単に実現できます。

例えば、暗号化や通信の仕組みの構築など本来ならかなり高度な知識が求められる機能です。

暗号化するためには「System」や「Security」、「Cryptography」などの機能を利用します。

エンジニアエンジニア

しかし、これらの機能は本来であれば暗号化を理解し、数百行のプログラムを組まなければいけません

しかし、Visual Studioで開発すれば、Net Frameworkの該当する機能を呼び出せば、高度な知識を有することなく実現できます。
エンジニアエンジニア

.Net Frameworkであればものの10行程度で実現できるのです。

新人プログラマであっても数カ月の内にシステムが組めるようになる

Q.なぜ、数ヶ月という短期間で実現できるのですか?

A.クラスダイアグラムオブジェクトブラウザと呼ばれる機能がVisual Studioに備わっているから

システムを組むには、ソースの結びつきや機能の呼出し順序などを理解しなければけません。

IDEであるVisual Studioにはこれらを理解しなくても使えるような機能が全て備わっています。

Visual Studioに備わっている機能

プログラムの構造を可視化する機能
クラスの概要を表示する機能
ソースの結びつきで過不足を指摘する機能

これらの機能はクラスダイアグラムオブジェクトブラウザと呼ばれます。

C#を他の言語と比べた時の学習難易度

「C#」を他の言語と比べた時の学習難易度は低い
エンジニアエンジニア

新人でも1カ月も経たないうちにWebサイトやアプリでなど簡単なものは組めるようになるよ。

大体の人は1年足らずでかなり大きなアプリが作れるようになったり、勘が鋭い人はゲームも作れるようになります。

C#学習難易度が簡単であるがゆえの注意点

「C#」は初心者でも「それなりに」作れてしまう反面、落とし穴もあります。

仕組みを理解すれば「C#」は「誰でも習得が可能な言語」です。

C#を勉強するときは、「プログラム本体の書き方を勉強する期間や労力」より次のことに重点をおこう

  • 「intとは何か?stringとは何か」といった型の勉強
  • 「varとは何か?objectとは何か」といった「なんでも入ってしまう型」の扱い
  • 「ToStringとstring(値)、As string」「int.Parse、int(値)」といった型変換
なぜ、プログラム本体の書き方よりも上記に重点をおくのかと言うと「C#」は変数の型(数値、文字列など)をかなり厳密に見ているからです。

例えば‥「数字の1」と「文字の1」は全くの別物

当然条件の「True」と文字で記載した「true」は別物。

つまり以下のようなプログラムは通るどころかエラーとなる

  • if (1 = “1”)
  • if (bln = “true”)
エンジニアエンジニア

実際、「それなりに」作れてしまった人の大半がこの不具合に陥ります。

そのため、C#を勉強するときは、プログラム本体の書き方を勉強する期間や労力より

  • 「intとは何か?stringとは何か」といった型の勉強
  • 「varとは何か?objectとは何か」といった「なんでも入ってしまう型」の扱い
  • 「ToStringとstring(値)、As string」「int.Parse、int(値)」といった型変換

などの勉強に注力した方が効率的に覚えられるのです。

「数字を文字に変換する」作業は何百回と書くことになるのでそこまで苦労はしません。

しかし、その「仕組み」を理解していないと、実際のシステムで「メジャーに行われいる処理」が理解できずに不具合になる原因になります。

エンジニアエンジニア

例えば「応用として任意の文字をボタンに変換する」、「どのボタンやクリック時の動作を動的に制御する」などの「メジャーに行われいる処理」が理解できなくなります。

しかも厄介なことに、「それなりに」作れてしまった人は

不具合混入に気付かない
不具合の原因が理解できない

といった障害にぶつかったりします。

この点を理解すれば、「C#」は「誰でも習得が可能な言語」になります。

C#でできること:C#はどんなサービスやプロダクトを開発できるか


ここからは世の中のどの分野で「C#」が使われているかを「業界別」にメジャーなところを解説していきます。

ゲームのクライアントの大半はC#で作られている

王道でいえばゲームになります。

メジャーゲームのドラゴンクエストポケモンGOもC#で書かれた言語で作られています。

ゲームはこの二つに分けられます

  • クライアント‥プレイヤーが実際に操作する画面
  • サーバー‥データの通信をしたり、ソシャゲであればガチャの抽選を行う部分
エンジニアエンジニア

現在この「クライアントの部分」の殆どはC#で書かれているんだ。

Unity」や「Powered by Unity」という文字をゲーム起動時に見たことは無いでしょうか。

Unityは「C#で書かれた言語」

冒頭で挙げたゲームは、Unityの代表作です。

ホテル事業でもC#が使われている

ホテルのフロントの人が利用している端末にも「C#」が使われています。

いつ予約が入ったかを知らせる
どの部屋に予約が入ったかを知らせる
客の金額を予約内容から計算する

これらの機能が「C#」を使った端末の機能です。

エンジニアエンジニア

これらの機能はクライアントもサーバーも全て「C#」で作られていることが多いです。

他にも旅行の予約サイトも「C#」で組まれています。

自動釣銭機にはC#が使われている

近年主流になってきた自動釣銭機世界シェアの50%ほどは「C#」が使われています。

エンジニアエンジニア

「世界シェア80%を誇る外資系企業」の自動釣銭機レジの大半はC#で作られているんだ

例えば、ドラッグストアやスポーツ用品店大手デパートで使われているレジはC#で組まれています。

ただ、「C#」のみで作られているものはありません。「VBScript」や「java」「javascript」などで作られている機能もあります。

C#はどんな仕事につけるのか


C#はどのような仕事につかるかを実際の求人情報を参考に記載いたします。

C#を使う仕事の求人数

C#の求人数

2019年10月6日現在 598企業、1292求人

エンジニア向けの転職サイト「Green」

仕事内容も多岐に渡ります。

例えばゲームエンジニア
ARエンジニア
自動車産業
VR
NHKなど多岐多様年収の中央偏差は大体450万~500万前後です。
エンジニアエンジニア

キャリアによっては700万以上を狙える求人もあるよ。

求人サイトなどには掲載されることは少ないですが、次の求人数が増えている傾向にあります。

C++やjavaで書かれたプログラムをC#に移行

「C++」や「java」のプログラムを「C#」で書き直す移行案件が比較的多い

Q.なぜ「C++」や「java」のプログラムを「C#」で書き直す移行案件が多いのですか

A.「C#」に移行するために充実した機能のメリットを得られるから。
また、javaが有償化されたから

「C#」は「C++」よりも機能が充実しているため移行することで次のメリットが得られます。

メンテナンス性を上げる
C#の可読性の高さを実現する
エンジニアエンジニア

このメリットが目的の案件が増えているんだ

また、「java」については最近版権がOracleになって(以前はサンマイクロシステム)有償化されています。

そういった流れもあって「C#」を利用する現場が多く存在します。

VB6のプログラムの移行

VB6のサポートが切れたり、「新しいOSで動作保証がない」ことが要因でC#への移行が増えてきてる
エンジニアエンジニア

「Windows7」のサポート終了が発表されてから「Windows10」に環境を移す検証が行われているんだ。

下記の要因もあって「C#」でプログラムを書き直す案件が急増しています。

  • 「VB6が一部正常に動作しない」という事例が多数挙がっている。
  • Windows10は「.Net Framework」があらかじめ入っている

クラウド開発

高度な専門知識が要求されますが、クラウド開発に力を入れている現場が増えてきています。

Microsoftのクラウドサービスである「SharePoint」や「OneDrive」が「C#」で作られています。
エンジニアエンジニア

そのため、「C#」を使う求人が増えてきています。

「クラウドサービスの処理を自動化するアプリ」の開発案件もあり、クラウドで管理する必要性のある保険会社がここに相当します。

⭐︎実際にアプリに使われているクラウドサービス処理事案

顧客情報の管理
契約確認

C#を使ったサービスなど

C#をメインで使っているサービスとしては

ソシャゲ(シェア38%以上かつ世界最大規模のシェア)
クラウドサービス(Microsoft SharePointがシェア40%前後で世界最大のシェア)
現在のIT業界の世界最大シェアのトップ2に「C#」が使われているんですね

また、東京オリンピックに向けていろいろな会社がスマホやタブレットで独自サービスを提供しようとしています。

エンジニアエンジニア

その技術として「C#」が主流とされている「Ruby」や「Python」と並んで注目されているんだ。

一部の会社ではオリンピックの会場にARVR機能を使い、臨場感あふれるサービスを提供しようと試みています。

C#のおすすめの学習方法


C#のおすすめの学習方法

オンライン受講サービスと経験をしながら学べる書籍がおすすめ

ここからはそれぞれの学習方法について解説していきます。

C#を学べる学習サービスのおすすめはオンライン受講サービス

引用元:Paizaラーニング

C#を学べる学習サービスとして「Paizaラーニング」というオンライン受講サービスがあります。

⭐︎Paizaラーニングでは

勉強したことを復習をしながらゲームの制作過程を習得
入門編が無料公開されているので気軽に始めることができる
1日1章勉強するとして、30分程度でC#に慣れ親しむことができる
エンジニアエンジニア

プログラミング学習はスクールに通うのが一番習得が早いんだ

Paizaラーニングの無料レッスンでは次のことを学べます。

クラスの基礎
・継承
・Dictionary(配列の使い方)

もちろん、現場で作業するためにはこの知識だけでは不十分です。

しかし、1日1章勉強するとして、30分程度でC#に慣れ親しむことができます。

まずは挫折せずに学習するために

  • C#は難しくない
  • C#を理解すればこれだけのことができる

と言うことを理解しましょう

C#を本で学ぶなら

C#をで学ぶ際におすすめの書籍を紹介していきます。

つくって覚えるC#入門

著:オフィス加減

出版社 アスキー・メディアワークス

アスキー・メディアワークスの書籍紹介ページ

C#を初心者が本で学ぶなら「つくって覚えるC#入門」がオススメです。

この本がおすすめの理由

「自分が作っている」という実感と達成感が得られる
エンジニアエンジニア

この本は「記載されたプログラムをそのまま入力」することでプログラムの動作を見ることができるよ。

初心者のうちは「なぜ動くか?」かは二の次でOK。

とにかく「動くものを作れるだけ作ってみる」ことが重要です。

独習C#

 

著:山田祥寛

出版社・翔泳社

翔泳社の書籍紹介ページ

こちらの「独習C#」という本もおすすめです。

「なぜ動くのか」「どんな仕組みで動くのか」「どのように書くのか」などの疑問解説に特化
ある程度慣れた後のステップアップのために使うと非常に優秀な書籍
「プログラム未経験者」や「初心者」には少しハードルが高い

しかし、先述したように初心者は理屈よりもとにかく動作実績を積んでください。

そうすると自ずと「動く仕組み」というのが少しずつ理解できるようになります。

まとめ

C#とは人間の感性に近いオブジェクト指向型言語です。

専門知識を持っていなくても、IDEの機能補助によってプログラムが組めるため、初心者でも「できる」ことを実感させてくれます。

また、新人プログラマでもシステムが組める環境が整っています。

すぐにプログラムが組める楽しさは、経験しないとわかりません。

C#が使える人材を、現在、企業は求めてます。

ぜひ、C#を学んでみましょう!

初めてのプログラミングスクールをお探しですか?
プログラミングスクールを選ぶ際に
「挫折しないか」「仕事に繋げられるか」は重要なポイントですよね。

プログラミングジャパンでは「あなた専用のカリキュラム」を作成し、マンツーマンで就職、転職まで徹底的にサポートします。プログラミングジャパンの詳細はこちら