C#初心者のための基礎#1!C#とは?

当サイトではアフィリエイト広告を利用しています。

C#初級プログラミング

C#とは

マイクロソフトが開発した言語

C#とはマイクロソフトが2002年に開発したプログラミング言語です。それまではVisual Basicの6.0などが主流となっていましたが,マイクロソフトが.net構想を発表し,C#が世の中に出ました。それまでのVisual Basicプログラマーが開発できなくなる環境になることを避けるためかわかりませんが,Visual BasicはVB.NETという形で登場しましたが,当初は結構みんな戸惑っていました。バージョンが2005になったタイミングで,VB.netをVisual Basic2005とう名前に戻し,関数なども,当初のVBに近づけた記憶があります。

そういったVBプログラマーのしがらみがなく,これから.NETプログラミングを学ぶのであれば,VBではなくC#を学ぶことをお勧めします。

なぜなら,C#は.netが生まれるときに,同時に生まれた言語であり,.NETをうまく使うために最適化された言語だからです。VBのように,以前のバージョンのユーザーに対する考慮などは一切不要で,本当に必要なプログラミングができるようになっています。

オブジェクト指向言語

C#はjavaとC++のいいところをとったようなプログラミングで,オブジェクト指向というプログラミング方法を行えるプログラミング言語です。オブジェクト指向に関しては,この講座でも後半で触れていきますが,簡単に言うと,現実社会をそのままオブジェクトとしてプログラミングしていく手法で,この手法を使うことで,プログラムの複雑さを取り除き,管理しやすいプログラミングができるようになるのですが,色々なことを解説しないと,とても理解できるものではありませんので,今後ゆっくりと解説をしていきます。

イベントドリブン型

C#プログラミングの特徴としては,イベントドリブン型のプログラミング言語であるといえます。イベントドリブンとは,「ユーザーがマウスでボタンをクリックした!」などのきっかけをとらえて,その瞬間にどういった処理を行うかという事を記述していくプログラミング方法になります。

.NET Frameworkとは

アプリケーションが動く土台

C#の勉強をしていくと,.NET Frameworkという言葉を聞くことになると思います。.NET Frameworkとは,アプリケーションが動くための土台になっている部分になります。例えば「.NET Frameworkのバージョン3.0」で動作するプログラムを作成した場合,動作させるPC等に.NET Framework3.0がインストールされていれば動作し,入っていなければ動作しません。.NET Frameworkはこの10数年の間に何度もバージョンアップされ,バージョンに応じて,プログラミングできることに制限があるため,そのあたりも意識してコーディングする必要があります。

VB,C#,C++

.NET Frameworkは複数のプログラム言語に対応しており,VB,C#,C++などは,プログラミング言語は異なりますが,コンパイルしてしまえば最終的には同じ言語となって動作するようになっています。

クラスライブラリ

.NET Frameworkにはクラスライブラリというものがあり,プログラマーの使用できる部品群となります。例えば「ファイルを開く」等の処理をパソコンにさせる場合は,直接OSの関数を実行するのではなく,C#用に用意された関数を呼び出すことで,簡単で安全に処理を行うことができます。こういったクラスライブラリの関数は大量にあるため,経験を重ねて,どのようなクラスがあり,どうやって使用するかを覚えたり,その都度調べながら,コーディングをしていく必要があります。

クラスライブラリのおかげで,プログラミングする画面やコントロール等が用意されています。初期のWindowsフォームと呼ばれるものや,Webフォームなどがありますが,2008年以降はWPFという機能アップした画面を使うことができ,2018年現在の主流です。

また,Windows10以降はUWPというユーザーインタフェースも登場し,Windows10が動作するマシンではどこでも動作するという構想になっています。

数年前にはXamarin(ザマリン)という会社をマイクロソフトが買収したため,AndroidやiOSのプログラミングも無償でできるようになりました。

そのほかはデータベースを操作するADO.net等があり,.NET Frameworkの半分はこういったクラスライブラリの機能となります。

共通言語ランタイム(CLR)

.NET Frameworkにはそのほかにも共通言語ランタイム(CLR)というものがあり,実際に動く部分の仕事をしてくれています。

VBで書こうが,C#で書こうが同じ動きをするようにしている部分や,ガベージコレクションといわれる不要になったメモリー解放処理等を行ってくれています。

最初のうちはこの辺りはあまり気にせず,プログラミングの文法をどんどん覚えていきましょう。

名前空間(Name space)

機能別に分類したもの

C#には名前空間というものがあります。これは主に名前の衝突を防ぐ意味で存在しています。例えばC#ではあらゆるプログラミングに名前を付ける必要があります。名前は基本的には何でもつけれるので,例えばファイルを管理する機能に「FileManagement」という名前を付けることができます。でも先述した.NET Frameworkのクラスライブラリに「FileManagement」という機能があった場合,あなたの作った「FileManagement」なのか,マイクロソフトが作ったFileManagementなのかが判断できません。そのため,単純に「FileManagement」ではなく「Anderson.FileManagement」などという他の会社の人の作る名前とは絶対に重複しないような名前を付けるようにします。

マイクロソフトのクラスライブラリ以外にも,ツールを作っている会社の名前と重複する可能性もあるため,こういった対処をします。

同じ名前を禁止すればいいように思いますが,世界中のプログラマーが自由に名前を付けているため,ワードを禁止し始めるといろんなワードが使えなくなりますし,どんなツールを使うのかもわからない中で,マイクロソフトのワードだけを禁止しても意味がありません。そこで絶対に重複しないように気を付けてコーディングする必要があります。慣例では「会社名.製品名.プロジェクト名.フォルダー名」等の順番でピリオドで区切って名前空間を構成することで,重複を回避します。万が一重複していても,コンパイルエラーになったりするので,その時に変更すれば問題ありません。基本的には,パソコン等で行っているフォルダー構成のような感じで名前を付けていきます。

VisualStudio

最近は2017とか2015くらい

基本的にC#を開発するときはVisualStudioという開発ツールを使います。現状の主流はバージョンの2017です。2015を使っている人も多いと思います。古いバージョンだと2002,2003,2005,2008,2010,2012,2013という感じであります。とりあえず2018年現在では2017が無料でダウンロードできるのでこれを使いましょう。

ソリューション

アプリケーションの作成する際に,まずソリューションといわれるものを作成します。これはアプリケーションを構成する大元になるものです。基本的には製品名やアプリケーション名を付けるといいでしょう。

アプリケーションの製品単位にソリューション

ソリューション名を決めたら,プロジェクトを付けます。プロジェクトとは,ソリューションの中に作る単位です。1ソリューションに1プロジェクトで構成することもできますが,通常は1ソリューションの中に,用途別で複数のプロジェクトを作成してアプリケーションを作成します。

プロジェクトは用途ごとに分けるのがよいでしょう。ユーザーインタフェース単位で1つ。その他,共通関数やデータベースにアクセスするプロジェクトなどの単位で分けます。

参照関係

プロジェクトが分かれてしまうと,通常なにもしなければ,他のプロジェクトの機能を呼び出すことができません。しかし,それではプログラミングに支障が出てしまうので,「参照」というものを設定することで,他のプロジェクトの機能を呼び出すことができます。

1つのプロジェクトにすべてを記述すれば良いように思うかもしれませんが,それではそれぞれのプログラムがすべてのプログラムを参照できるようになってしまい,依存関係が把握できず,結果的に理解しずらいプログラムになってしまったり,共通部品として開発する場合は部品のみを1つのプロジェクトで作成し,複数のプログラムがそのプロジェクトを呼び出せたほうが都合がいい場合があります。マイクロソフト提供しているクラスライブラリも,いくつかのプロジェクトで作成されたものを,我々は呼び出しているため,1つのプロジェクトですべてをカバーするという事は,できない場合はよくあります。