マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】C#


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「C#」とは
「C#」基本情報
■概要
C#(シーシャープ)とは、Microsoftが開発した「.NET Framework」向けマルチパラダイムプログラミング言語です。「.NET Framework」の中核的言語として位置づけられており、タイプセーフなオブジェクト指向型言語です。
■基本説明
C#は汎用のオブジェクト指向プログラミング言語です。開発者が行いたいことを可能な限りそのまま書けるように設計されています。
C言語/C++言語をベースに拡張しつつ、Javaの影響も受けています。共通言語基盤(共通言語ランタイムなど)が解釈する共通中間言語にコンパイルされて実行されます。
■主なメリット
C#のメリットとして次のような点があります。
・高機能—GUI開発、データアクセス関連、グラフィック関連、サウンド関連
・安定性
・インターネット向け仕様に対応できる
・Microsoftによる強力なサポート—機能強化
・ドキュメントが充実
・学習コストが低め—C++より簡単に習得できる など
■経緯
・2002年:初版リリース
名称由来
「C#」という名称の由来については、「Cの音を半音上げる→C言語を改良したもの説」、「C++言語をさらに拡張→C++++言語説」などがあります。
■オフィシャルサイト情報
オフィシャルサイト
→Microsoft →Docs →.NET →C# のガイド
ライセンス情報
C#のライセンスは「GNU General Public License+他」です。
ダウンロード
■同様製品
同様な機能を提供する製品として、次のようなものがあります。
「C#」のユースケース
C#は、主にビジネスアプリケーション開発用途として広く利用されています。
さまざまなプラットフォーム向けアプリケーションを開発できることから、C#を習得するだけでさまざまなアプリケーション開発を行えます。
■Windowsアプリケーション開発
C#はMicrosoftが開発しているプログラミング言語であるため、特にWindows向けアプリケーション開発に対する親和性があります。
■Webアプリケーション開発
Webアプリケーションフレームワーク「ASP.NET」を利用することで、Webアプリケーション開発も行えます。
■クロスプラットフォーム開発
クロスプラットフォームアプリ開発環境「Xamarin」を利用することで、クロスプラットフォームアプリケーションを開発できます。
1つのコードから、「Windows用アプリ」「Mac OS用アプリ」「iPhone(iOS)アプリ」「Androidアプリ」などを開発できます。
→OSS×Cloud News →オープンソースのフレームワーク/Xamarinとは
■ゲーム開発
ゲームエンジン「Unity」を利用すると、C#で、さまざまなゲームプラットフォームに対応する本格的なゲーム開発も行えます。
「C#」の言語仕様
「C#」の言語仕様
■オブジェクト指向言語
C#は、「C++」や「Java」と同じように、オブジェクト指向言語です。
文法はJavaに似ているため、Javaの利用経験がある場合は、C#を習得しやすいメリットがあります。
■コンポーネント指向言語
C#には「コンポーネント指向プログラミング」のサポートが含まれています。
最近のソフトウェア設計では、機能を自己完結型/自己記述型パッケージの形式にする「ソフトウェアコンポーネント化」が増えています。
コンポーネント化のためには次のような要素が必要とされています。
・プロパティ/メソッド/イベントを使用してプログラミングモデルを表現
・コンポーネント宣言に関する情報を提供する属性が存在
・独自ドキュメントの組み込み機能 など
C#は、これらの概念を直接サポートする言語コンストラクトを提供しているため、コンポーネント化しやすい特徴があります。
■コンパイラ言語
C#はコンパイラ言語で、共通言語基盤(共通言語ランタイムなど)が解釈する共通中間言語にコンパイルされて実行されます。
コンパイラを通さずにプログラムを解釈しながら実行する「JavaScript」などのインタプリタ言語よりも高速処理できるメリットがあります。
■マルチパラダイム言語
C#は、パラダイム言語であり、複数のパラダイム要素特性を持ちます。
・強い型付け
・命令型
・宣言型
・手続き型
・関数型
・ジェネリック
・オブジェクト指向 など
■言語仕様の標準化
C#の言語仕様は、標準化団体「Ecma International」を通じて公開/標準化されています。ISOやJISにも標準規格として登録されています。
第三者が、Microsoftとは無関係に、コンパイラ/実行環境を実装できます。
デザイン目標
ECMA標準には、C#の設計目標が記載されています。
・シンプルでモダンな汎用目的のオブジェクト指向プログラミング言語
・ソフトウェアの堅牢性/耐久性/生産性
・強力な型チェック
・配列境界チェック
・初期化されていない変数の使用の試みの検出
・自動ガベージコレクション
・分散環境での展開に適したソフトウェアコンポーネント開発
・移植性
・国際化サポート など
「C#」のアーキテクチャ
「C#」のアーキテクチャ
C#プログラムの実行については、プログラム実行環境「.NET Framework」が必要です。
■.NET Frameworkとは
「.NET Framework」とは、OSとアプリケーションの間に位置するもので、プログラム実行環境です。主要機能として「共通言語ランタイム(CLR)」と「クラスライブラリ」があります。
プログラム作成後にコンパイルを行うと「中間言語」という形式で出力されます。「.NET Framework」が中間言語を読み込み、プログラムを解釈することで実行されます。
「C#でプログラムを作成する」=「.NET Frameworkで動作するプログラムを作成する」となります。
■共通言語ランタイム
共通言語ランタイムは「中間言語を.NET Frameworkで動作する機械語に変換する処理」を実行します。
■クラスライブラリ
クラスライブラリには、さまざまな基本的な処理が含まれている共通ライブラリ(部品)が格納されています。
コーディング時に、クラスライブラリを活用することで、1からプログラミングをする必要がなくなり、効率的に開発できます。
■実行環境非依存
マシン上で直接実行する他言語と比較した場合、C#は共通言語ランタイムを通す手順が増えることになりますが、「1つのプログラムをさまざまなOS(環境)で動作させることができる」というメリットがあります。動作させるためには「.NET Framework環境」が用意されている必要があります。
これは、JavaのVM(仮想マシン)と同様に、「OS」「プロセッサアーキテクチャ」「大規模ライブラリ」などの環境面に依存しない実行形態です。
この仕組みによりプログラム互換性を高めることができ、実行端末ごとにプログラムを対応させる作業を大幅に減少できます。
■.NET Framework相互連携
.NET Frameworkを基盤とすることで、C#プログラムは、他の.NET系言語(Visual Basic/Visual C++など)と相互連携できます。
他言語で記述されたクラスを継承でき、その逆も可能です。
■堅牢なアプリケーション構築
C#には、堅牢で永続的なアプリケーション構築を支援するさまざまな機能が用意されています。
タイプセーフ設計
次のようなタイプセーフのための制限があります。
・初期化されていない変数の読み取り
・範囲を超える配列のインデックス付け
・未確認の型キャスト実行 など
例外処理
例外処理機構として、「エラー検出」と「エラー状態からの回復のための構造化された拡張可能なアプローチ」を提供します。
自動ガベージコレクション
C#では、ガベージコレクション機構により「使用されていないオブジェクトによって占有されている到達不可能なメモリ」を自動的に解放します。プログラマーを「メモリ解放に関する責任」から解放し、メモリリークの発生を防げます。
明示的な処理としてメモリを解放する方法は存在せず、参照されなくなったメモリはガベージコレクタによって自動的に解放されます。
■ライブラリバージョン管理対応
C#の設計では「ライブラリのバージョン管理」に大きな重点が置かれています。
他の多くのプログラミング言語は、言語仕様ベースでライブラリバージョン管理についてさほど考慮されていません。それらの言語で書かれたプログラムは、依存するライブラリの新しいバージョンが導入された場合など、想定を上回るメンテナンス作業が必要となるケースがあります。
C#の場合、C#のプログラムとライブラリが互換性を保ちながら時間とともに進化できるように設計されています。
・virtual修飾子
・override修飾子
・メソッドのオーバーロードの解決規則
・明示的なインターフェースメンバー宣言のサポート など
「C#」の統合開発環境「Visual Studio」
「C#」の統合開発環境「Visual Studio」
Microsoftは、C#と共に、統合開発環境「Visual Studio」を提供しています。
一般的に、C#はVisual Studioと共にインストールされるため、Visual Studioで開発するパターンがメインとなります。
日本語化されており、手間のかかる環境構築作業(パス設定など)も不要であるため、初心者にとって導入しやすい環境になっています。
■ビジュアルプログラミング
Visual Studioでは、ビジュアルプログラミングが可能です。
フォームに、ボタン/テキストボックスなどのコントロール部品をドラッグアンドドロップで配置することで、簡単にフォームアプリケーションを作成できます。
■開発生産性
Visual Studioには、高度で強力な「入力候補機能」「自動補完機能」などが備わっているため、メソッド名などを覚えていなくても入力候補から選択して使用できます。
C#と密接に連携している豊富なサポート機能により、開発生産性を向上できます。
■Mac版「Visual Studio for Mac」
Mac用の「Visual Studio for Mac」も提供されています。
参考元サイト
- Microsoft →Docs →.NET →C# のガイド
- Wikipedia →C Sharp (programming language)
- 侍エンジニア塾 →専門知識いらず!C#とは?言語の特徴やメリットを網羅的に徹底解説
- プロスタ →【C#入門】C#の特徴とは?CとC++と比較
- CroudTech →C#とはどんなプログラミング言語なのか?
- kuguru →C#入門!C#とはどんな言語?特徴とメリット・デメリット
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク3位🏆
【無料で使える】「 グループウェア 」まとめ - 🏆ランク4位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク5位🏆
【AIツール実験室】画像生成AIツール「 Emi 」(前編) - 🏆ランク6位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク7位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク8位🏆
【無料で使える】「 バックアップ 」ツールまとめ - 🏆ランク9位🏆
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選 - 🏆ランク10位🏆
【ChatGPT使ってみる実験室】 WordPress関数を作って記事リストを出力