Windowsの定番言語でありながら、近年はUnityやXamarinにより人気がさらに加速している「C#」。今回は「C#の基本が知りたい」「これからC#を勉強し始めようと思っている」エンジニアに向けて、書籍「プログラミング言語大全」(著:クジラ飛行机/技術評論社)より、「C#」の章を一部抜粋して紹介する。
C#の基本情報
容易度 ★★★★☆
将来性 ★★★★☆
普及度 ★★★★☆
保守性 ★★★★☆
開発者:Microsoft、Anders Hejlsberg(アンダース・ヘルスバーグ)
分類:静的型付け、オブジェクト指向
影響を受けた言語:C、C++、Delphi、Eiffel、Java
影響を与えた言語:D、F#、Java、TypeScript、Dart、Kotlin、Swift
Webサイト:https://docs.microsoft.com/ja-jp/dotnet/csharp/
【言語の特徴】Microsoftが「.NET Framework」のために開発した生産性の高い言語
C#はMicrosoftが開発し、同社が最も力を入れているプログラミング言語です。名前の#の由来はC++に++を更に追加して並べた形(C++++)からです。C++の次世代言語というような名付けをしています。(※C++のパワーアップ言語と見なされることもありますが、どちらかというとDelphiやJava、特にJavaの影響が強い文法です)
「.NET Framework」という実行環境の上で動かすことを目的に作られました。.NET FrameworkはWindowsに最初からインストールされています。C#はWindows上で動作するプログラミング言語として人気を集めます。最近では、Windowsだけでなく、macOS、Linux、Android、iPhoneなどでも動くようになっています。(※.NET CoreやXamarin による。後述)
共通中間言語(CIL)にコンパイルされてから実行される点や文法的な類似点から、Javaと比較して語られることもあります。
C# 言語の歴史
C#及びその実行環境の.NET Frameworkの設計や開発に携わったのは、BrolandのDelphiを開発したAnders Hejlsbergです。(※DelphiはWindowsの開発ツールとして人気がありましたが、当時のDelphiの提供元であるボーランド社が開発ツール部門の廃止を計画したため、開発チームを引き連れてMicrosoftに移籍しました。Delphiの開発は紆余曲折を経て継続しています)
C#1.0は、Microsoftから2002年4月にリリースされました。その後、C#には、次々と新機能が追加され、ジェネリクス、コルーチン、型推論、ラムダ式、クエリ式LINQなどをサポートしました。当初ライバルのJavaと異なり動作がWindows上に限定されていたにもかかわらず、機能追加への積極さなどから、プログラマーからの人気が高い言語でした。
当初はC#はほぼWindows専用の言語でしたが(※Miguel de IcazaによるMonoなど、Microsoftによらないマルチプラットフォーム向けの実装もありました)、Microsoftは近年クロスプラットフォーム化に大きく舵を切りました。
Microsoftは、2016年にC#をモバイルでも使うための技術を開発していたXamarinを買収、クロスプラットフォームの.NET Coreを公開します。これによって現在では、macOSやAndroidなどでC#を動かせます。
C#が活躍するシーン
Windowsサーバー向けを中心に、Javaと似たような用途で使われることが多くあります。C#によるWeb開発ではASP.NETが人気で、WebのUIを開発できるBlazorも注目されます。デスクトップWindowsアプリケーションも、C#で開発されたものが多いです。Windowsアプリケーションの開発ではC#は最も手厚くサポートされる言語の1つです。
ゲーム開発環境UnityではC#を公式な開発言語としてサポートしており、C#で開発されたゲームが世界中で遊ばれています。クロスプラットフォームツールのXamarinでスマートフォンアプリ作成もできます。
.NET Framework
.NET Frameworkは、Windows向けのアプリケーションの実行環境とライブラリです。C#で書かれたコードは、最初、共通中間言語(CIL)にコンパイルされます。そして、.NET Framework ではCILをネイティブコードに変換してから実行します。
やや立場は異なりますが、JavaのJVMと近いものだと考えてください。今後はクロスプラットフォームの.NET Coreが中心に据えられるため、こちらはメンテナンス期に突入します。
.NET Core
2016 年にリリースされた『.NETCore』はMicrosoftとコミュニティによるオープンソースの.NET実装です。Windows、macOS、Linuxをサポートします。Webアプリケーションやコマンドラインに加え、.NETCore 3以降ではWindowsのWPFなどのデスクトップアプリケーション作成もサポートしています。
Microsoftが公式にクロスプラットフォーム対応の実行環境を提供したことで大きく話題になりました。
Xamarin/Mono
Monoは、2001年にリリースされたオープンソース、クロスプラットフォームの.NET実装です。Windows中心だったC#をmacOSやLinuxで動かせたため人気となりました。
以前はWindows以外でC#のプログラムを動かすのに欠かせない環境でしたが、現在は.NET Coreが登場したため、以前よりは存在感が低下しています。XamarinはMonoの技術と関連の深い、モバイル向けにC#アプリケーションを作成するソフトウェアです。Mono とXamarin とはモバイルOS向けの.NET実装に位置づけられます。
【コード】C#のFizzBuzz
C#のFizzBuzzです。クラス定義の内部、Main内でFizzBuzzを素朴に実行しています。影響元のC++のものよりもスッキリしていて見通しが良いです。
Visual Studioで高い生産性
IDEのVisual Studioを使うことによってC#の生産性は飛躍的に向上します。というのも、C#の設計時に、言語の読みやすさや書きやすさだけでなく、Visual Studioによるコードの補完機能の動作を考慮に入れて総合的に言語仕様が決められたことなどが背景にあります。確かに、Visual Studioを使うと、サクサクとC#のプログラムを書くことができます。
Xamarinでスマートフォンアプリの開発
Xamarin(ザマリン)とは、Microsoftが提供するクロスプラットフォームなアプリケーション開発環境の名称です。Windows、macOS、LinuxといったデスクトップOSはもちろん。スマートフォンのiOS、Android上で動作するプログラムを作成できます。生産性の高いC#を用いて、かつ各プラットフォーム間でコードを一部共有しながら、スマートフォンのアプリ開発ができるということで注目を集めました。
C#発のプログラミングテクニック
C#は言語機能を意欲的に進化させてきたため、数多くのファンがいます。リアクティブプログラミングなど多言語に影響を与えた機能も多くあります。C#発祥のプログラミングテクニックのうち、特にLINQはC#発祥の使いやすい機能としてファンが多くいます。
ゲーム開発のUnity
C#のユースケースで人気があるのがゲームです。ゲームは高速な動作が求められることからC++などが人気でしたが、ゲームエンジンUnityがC#を公式にサポートしていることから、現在はC#でのゲーム開発も非常に人気があります。UnityはVRコンテンツ制作などにも使えるため、C#の適用領域を広げることに大きく貢献しています。
【コード】オブジェクト指向を使ってFizzBuzz のプログラム
C#の特徴の一つである、オブジェクト指向をより活用してFizzBuzzのプログラムを作ってみます。なんとなく、Javaに似ているのが見て取れます。
Column
C#は名前の通りC/C++の影響を受けています。ただし、Turbo PascalやObject Pascal/Delphi(※設計者Anders Hejlsberg の影響と思われます)、Javaなどの言語の影響も強く感じられるもので、C/C++の単純な後継とは言えません。C/C++とは得意分野もだいぶ違うので、その点には注意が必要です。(※C#はガベージコレクションを有し、実行に.NET Framework を必要とするなどCやC++ とはだいぶ性格が違います)
.NET Frameworkは標準の充実したライブラリ(基本クラスライブラリ)を持ち、さまざまな処理を手軽に記述できます。
詳しくは書籍「プログラミング言語大全」をチェック!
プログラミング言語の大全集! 100以上のプログラミング言語や処理系,関連言語を幅広く解説。C,Java,Python,PHP,Ruby,JavaScript…主要言語はもちろんマイナー言語まで収録。初心者にも経験者にも楽しい一冊です。
>>書籍はこちら