C# 初級講座
Visual Studio 2019 Visual Studio 2022

第1回 C#の位置づけ

2022/3/13

この記事が対象とする製品・バージョン

Visual Studio 2022 Visual Studio 2022 対象です。
Visual Studio 2019 Visual Studio 2019 対象です。
Visual Studio 2017 Visual Studio 2017 対象外ですが参考にはなります。
Visual Studio 2015 Visual Studio 2015 対象外ですが参考にはなります。
Visual Studio 2013 Visual Studio 2013 対象外ですが参考にはなります。
Visual Studio 2012 Visual Studio 2012 対象外ですが参考にはなります。
Visual Studio 2010 Visual Studio 2010 対象外ですが参考にはなります。
Visual Studio 2008 Visual Studio 2008 対象外ですが参考にはなります。
Visual Studio 2005 Visual Studio 2005 対象外ですが参考にはなります。
Visual Studio.NET 2003 Visual Studio.NET 2003 × 対象外です。
Visual Studio.NET 2002 Visual Studio.NET (2002) × 対象外です。
  Visual Studio Code × 対象外です。

 

目次

 

1.初級講座の目標

C# 初級講座ではプログラミング言語 C#を体系的に説明し、一通りの知識が身につくことを目標とします。このサイトではもともと「Visual Basic」という言語を扱っていたのでサイト名は「Visual Basic 中学校」ですが、この連載では C# を扱います。ファミコン全盛期に発売された「ファミ通」という雑誌が今ではファミコン以外のゲームを扱っているのと似たようなものだと思ってください。

初級講座ではC#のすべてを説明するわけではありません。すべてを説明しようとするとあまり使われていない機能や後で自分で調べれば済むようなことも扱うことになり読むほうも退屈です。そこで、ポイントとなる重要なところに集中します。

説明は Visual Studio 2022 を前提とします。 名前がよく似た製品に「Visual Studio Code」というものがありますが、これは別物ですのでご注意ください。

C#の知識は前のバージョンのVisual Studioで通用するものも多いので、この初級講座はVisual Studio 2022で勉強しつつ、必要であれば習得した知識を前のバージョンで活用してください。

個人で利用する分にはVisual Studio 2022は無料で使用できます。まだインストールしていない人はダウンロードしてインストールしましょう。

Visual Studio 2022 インストールの手引き

C# やVisual Studioが初めてという方はまず入門講座を先に読むことをお勧めします。

C# 入門講座 第1回 はじめてのプログラム

 

この初級講座を終えれば、初級プログラマーであると堂々と名乗って、IT系の会社の就職・転職するのであれば「基本的なプログラムのスキルはある」と言えるレベルになることを目指します。

 

私の記事を見て、疑問や質問・感想などがあれば掲示板に書き込んでください。私はハンドル名「るきお」でフォローします。

Visual Basic 中学校 掲示板

 

2.プログラミング言語としての C# の位置づけ

2-1.C# は何でも作れる汎用言語

そもそも、私たちが勉強しようとしている C# とは何なのでしょうか?

世の中にあるほかのプログラミング言語と比較して C# の特徴を明らかにしてみましょう。

プログラミング言語には、ほとんどどんな分野でも扱える汎用のプログラミング言語と、対象の分野が限定されている専門のプログラミング言語があります。

C#は汎用のプログラミング言語です。汎用の言語にはC#のほかに、C++、Java、VB(Visual Basic)などがあります。

C#では、Webサイトも作れますし、スマホアプリも作れますし、会社で使う業務用のアプリやデータベースアプリ、人工知能や画像認識、ゲームも作れます。これだけではありません。アイディア次第で誰も見たことがないようなジャンルのアプリも作成できます。汎用言語の良いところです。

ゲーム制作は初心者がプログラミングを学習する動機の一つです。簡単なゲームなら標準的な C# の知識で作成できるようになります。本格的なゲームでは、たとえば、ゲーム開発の大人気プラットフォーム Unity では C# を利用してゲームを作成できます。たとえばこんな感じです。もっとも本格的なゲームを作ろうと思ったら、プログラムだけではなく、シナリオや各種データ、画像、3Dモデリング、音楽、シェーダなどさまざまな知識が必要になります。一人でやろうと思ったらかなりの覚悟が必要ですね。

専門のプログラミング言語には、データベースを専門に扱うSQLや、Web上の文書を専門に扱うHTMLがあります。

 

2-2.C#は人間に近い発想の高水準言語

他の分類方法として、人間に近い発想でプログラムするのか、コンピューターに近い発想でプログラムして動作するのか という軸があります。

人間は、日本語や英語などの言葉をしゃべります。この言葉に近いプログラミング言語を高水準言語と呼びます。一方コンピューターは主にCPUが1秒間に何億回も命令を実行して動作しており、1 と 0 の組み合わせでデータを扱います。この発想に近い仕組みでプログラムして動作するのが低水準言語です。「低水準」というのは機能や性能が悪いという意味ではありません。

 

2-3.他の言語との関係

高水準/低水準、汎用/専用で概略を示すと下記のようなグループに分かれます。

C#は高水準の汎用言語のグループに属しており、つまり、いろいろなことができて人間に近い発想でプログラミングできることを意味しています。

 

 

 

上記のグループの中でC#とVisual Basicはマイクロソフトが手厚く支援・展開している言語であり、最も人気のある開発環境(IDE)であるVisual Studioによって強力にサポートされています(※2)。そのうえ、どちらの言語もプロが実際の開発現場で使用しています。そのため、初心者がひとまずプログラミングをはじめてみたいという場合、私はC#かVisual Basicを強くお勧めします。

※1:2022年2月ランキングで2位のEclipseに大差であり、かつ上昇傾向。

※2:「手厚く支援」や「強力にサポート」を実体験してみたい場合、ためしにJavaでシンプルなプログラムをやってみると良いでしょう。はじめるには何をインストールすればよいのか、インストール後実際にプログラムして実行するにはどうしたらよいのかという点で、C#やVisual Basicとの差が実感できます。

C#とVisual Basicはとてもよく似た言語で、片方を習得すればもう片方の習得は容易です。マイクロソフトの方針ではC#は最新の技術を扱えるプログラミング言語にする、Visual Basicは親しみやすいプログラミング言語にするということを聞いたことがあります。新しい最先端の技術はまずC#で使えるようになることが多いです。C#で勉強を開始すればそのまま最先端の分野も扱っていけるようにステップアップできるということです。

 

C#とよく似た名前の言語に 「C言語」、「C++」があり、初心者は混乱してしまうことがあるので最初に言っておきます。これらは別の言語です。歴史的には C言語が発展して、C++ができて、さらにその薫陶を受けてC#が誕生したので、ぱっと見これらのプログラムは似ている部分もありますし、同じような構文を使ったりします。それでも別言語です。普通のC#の知識をそのままC言語やC++で活かすことはまずできないでしょう。

 

プログラムに何か特別な目的がある場合は、C#やVisual Basicが最適な選択ではない場合もあります。たとえば、OSが作りたいならC++やRustを勉強するべきです。

転職の募集を見るとプログラミング言語の需要が想像できます。「C# 転職」などのキーワードで検索してみてください。とてもたくさんの求人があることがわかると思います。需要は十分にあります。

 

2-4.まとめ

ここまでの要点をまとめてみましょう。C# とはどういう言語でしょうか?

 

3.フレームワークと機能

 

3-1.プログラミング言語の役割

C#を含め、多くのプログラミング言語はプログラミング言語自身にユーザー向けの具体的な機能はほとんど含まれていません。

たとえば、何か表示したり、通信したり、ファイルを読み書きしたり、音を出したり、こういった具体的な機能はプログラム言語には含まれていないことが多いのです。C#には文字を表示する機能すらありません。 こういうわけですから、プログラミング言語「だけ」詳しくなってもほとんど何もできません。

こういった具体的な機能を持っているものはフレームワークやライブラリ、またはパッケージ・モジュールなどと呼ばれます。

C#とVBには、非常に強力なフレームワーク・ライブラリが用意されており、プログラミング言語からはこのライブラリを呼び出すことになります。ライブラリに含まれていない機能はダウンロードしてきたり自作することもできます。

プログラミング言語とライブラリの関係

 

プログラミング言語はこういったフレームワークやライブラリを効率よく制御する命令を記述するためのものだと理解してください。この初級講座ではフレームワークやライブラリについても適宜扱いますのでご安心ください。

プログラミング言語からライブラリを制御

 

 

3-2.C#が使用するフレームワーク

C#で使用するフレームワークは、「.NET」(ドットネット)というもので、バージョン番号を付けて、 .NET 5, .NET 6 などと呼びます。

2022年3月現在の最新版は .NET 6 です。

 

少し前までは .NET Framework (ドットネットフレームワーク)や .NET Core (ドットネットコア)という名前のフレームワークがあり、今でもときどき登場するので、少し歴史を説明しておきます。

これらのフレームワークはC#だけでなく、VBやC++やPython(の亜種のIronPython)などでも使用できます。

.NET Frameworkと.NET Core

もともとあったのは .NET Framework です。しばらくは、フレームワークはこれしかありませんでした。.NET FrameworkはWindowsでしか動作しない前提で設計されていましたが、他の選択肢はほとんどなかったためC#で作ったアプリケーションもWindowsしか動作させることはできませんでした(※)。

※:メジャーにはなりませんでしたが、この図にはないフレームワークを使ってWindows以外で動作させる方法はありました。

10年以上経って、マイクロソフトはWindowsだけでなく、MacやLinuxにも製品を展開するように戦略を転換しました。このとき .NET Frameworkを強化するのではなく、ゼロから新しいフレームワークを作り直すことを選択しました。それが .NET Core です。

ゼロから作り直すといっても、.NET Frameworkに慣れた技術者が困らないようにできるだけ.NET Farmeworkと同じ使い方・プログラムができるように.NET Coreは設計されています。

2016年に.NET Coreが登場し、2020年に .NET 5 で統合されるまで、.NET Framework と .NET Core が並立していました。この間ほとんどの開発者は古くからある.NET Frameworkを使用していました。.NET Coreは登場したばかりでしたし、まだ機能が少なかったからです。

.NET Core は .NET 5 の段階で名前から「Core」が取れ、機能は.NET Frameworkとほぼ同等なレベルになりました。それどころから、.NET Frameworkにはない新しい機能もいろいろ追加されていました。それで、マイクロソフトは2つあったフレームワークを.NET 5に統合し、.NET Frameworkの方は事実上 4.8 で終了ということにしました。.NET 5は .NET Framework とほぼ同等なレベルに成長していたため、.NET Frameworkの知識がある技術者は、.NET Core/.NET 5 への移行で知識的にはあまり困らなかったことと思います。

2022年3月現在でも、.NET Frameworkを使ってプログラムすることは可能ですが、新しく何かを始めるのであれば.NET 6 を使うのが良いでしょう。

なお、.NET Frameworkに対して、.NET Core・.NET 5・.NET 6…のことをまとめて .NET Coreと呼びます。.NET 5のときに名前から「Core」が取れていてちょっとわかりにくいのですが、たとえば、「2022年2月時点の最新の.NET Coreは.NET 6です。」のように使います。今後も説明の中で「.NET Core」と書いた場合は.NET 5/.NET 6/…を含みますのでご注意ください。

  .NET Core .NET Framework
新旧 新しい
2022年2月現在 .NET 6 が最新
古い
2019年の.NET Framework 4.8が最後
動作OS Windows, Mac, Linux, iOS, Andoroid Windows

 

ところで、.NET Core、.NET Framework以外のフレームワークも存在しています。MonoやXamarinです。使用する機会はほぼないので、おそらく目にすることもはないと思いますが、頭の片隅くらいには留めておいてください。

 

3-3.細分化されたフレームワーク

.NET Core(.NET 5、.NET 6、…含む)にはものすごく大量の機能が用意されています。そこで、フレームワークの機能がいろいろな視点でさらに細分化されています。

たとえば、Webアプリケーション用の機能群で「ASP.NET Core」と呼ばれるものがあります。ASP.NETと呼ぶ人もいます。データベース用の機能群には「Entity Framework」と呼ばれるものがあります。現段階でこれらの名前や分類を覚える必要はありません。

私がここで指摘しておきたいのは、紛らわしいことに、これらの細分化された機能を「フレームワーク」と呼ぶことがあることです。たとえば、「C#でWebアプリケーションを作成するフレームワークは ASP.NET です。」などといったります。こんな話を聞いたり説明を見ると、初心者の人は、「あれ?フレームワークは.NET Coreか.NET Frameworkじゃないの?他のやつを使うのかな?」と思ってしまうかもしれません。

そうではなく、これらは.NET Coreの一部分を指しているだけだということを覚えておいてください。

 

 

4.アプリケーションの種類

4-1.プロジェクトテンプレート

C#は汎用言語なのでいろいろな種類のアプリケーションを作成できるということは前述しました。

実際には多くの人は、いくつかの決まった種類のアプリケーションを必要とすることが多く、Visual Studioではアプリケーションの種類を選択すると、そのアプリケーションの必要最小限の機能が既にプログラムと設定がされているテンプレートが用意されています。こられのテンプレートは「プロジェクトテンプレート」と呼びます。

ゼロから、1文字もプログラムされていない状態からC#のプログラムを開始することも可能で、初心者にはもしからしたらこの方がわかりやすいかもしれませんが、これだと単純な画面を表示するだけでも少し面倒ですし、新しいプログラムを開始するたびに、以前書いたのと同じようなプログラムと設定を毎回最初にする必要があり、すぐに手間だと感じるようになります。

Visual Studioで新しいプロジェクトを作成するときは、使用するプロジェクトテンプレートを選ぶところから始まります。

プロジェクトテンプレートにたくさん種類があり、VBなどC#以外のものもあります。使用できるテンプレートは、インストール時に選択した機能などで決定します。

名前に (.NET Framework)と書いてあるテンプレートは、フレームワークに .NET Framework を使用するテンプレートなので必要がなければ避けてください。

 

よく使用する代表的なプロジェクトテンプレートを簡単に紹介しておきます。

 

4-2.コンソール アプリ

黒いウィンドウとして表示されるのが特徴的で、文字で入力・文字で出力を基本とするアプリケーションのテンプレートです。Windows・Mac・Linuxで動作します。

最もシンプルなテンプレートのため勉強用にもよく使われます。

コンソールアプリケーション

 

4-3.Windows フォーム アプリ

Windowsで良く見るGUIをもったアプリケーションのテンプレートです。Windowsで見かけるようないろいろなアプリケーションを作成することができます。このテンプレートから作成したアプリケーションは Windows でのみ動作します。

直感的な操作で簡単に画面のあるアプリケーションが作れるので人気があります。

サンプルや勉強用で良く見かける典型的な外見は次の通りです。

Windowsフォームアプリケーション

外見はいろいろとプログラムで変更できます。

センスの良い外見のアプリケーションを紹介できると良かったのですが、私が以前作ったもので比較的ましなものを掲載しておきます。

次のゲームはWindows フォーム アプリでできています。(私がVBで作ったゲームです。)

町 戦闘
ウィンドウ操作 シューティングゲーム

下記の編集ソフトもWindows フォーム アプリでできています。(これも私がVBで作りました。)

Web Image Genrator

入門講座ではWindows フォーム アプリを前提にいろいろ説明しています。それがC#のすべてではなく、プロジェクトテンプレートの1つに過ぎません。汎用言語であるC#はもっといろいろな種類のアプリケーションが作成できるのです。Windows フォーム アプリ = C# というわけではないことを覚えておいてください。

 

4-4.Web アプリ

Visual Studioに表示されるテンプレートの名前では「ASP.NET Core Webアプリ」、「Blazor WebAssembly アプリ」など細分化されています。

Web アプリ はブラウザー内に表示され、ブラウザーで操作するアプリケーションです。ブラウザーを利用するのでOSと問わずWindows, Mac, Linux, iPhone, Andoroid等で使用できます。

プロが仕事で扱うアプリケーションとしては最も一般的なアプリケーションです。

Webアプリケーション

ブラウザー内であればさまざまな見かけや外見を実現することができます。

本格的なものを作るにはHTMLやCSS、JavaScriptの知識など関連する分野の知識が必要なので初心者向けではありません。

 

4-5.WPF アプリケーション

WPF アプリケーションはWindows フォーム アプリと似たようなアプリケーションが作成できるテンプレートです。このテンプレートから作成したアプリケーションは Windows でのみ動作します。

外見の制御が得意で、回転や拡大縮小などの表示上の処理がWindows フォーム アプリよりも高性能に行えます。

プログラミングのやり方は Windows フォーム アプリとは大きく異なります。初心者向けではないように思います。

 

 

 

次の回では、さっそくVisual Studioを操作して簡単なプログラムの勉強を開始します。

C#初級講座講座 次の回へ