マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】C#

【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+他」です。

ダウンロード

→Microsoft →Visual Studio IDE

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Python」「Ruby」など。

「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」も提供されています。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。