.NET(.NET Framework) VB/C# 入門

Visual Studioとはなにか?。.NET(.NET Framework)とはなにか?。開発ツールの比較や.NET VB及びC#での開発に必要な知識全般について記載しています。

Visual Studioとは

VisualBasicやC#は、Microsoft社のVisualStudioというアプリケーションを使って行います。プログラミングに必要なあらゆる機能を提供しています。このことから、VisualStudioのような開発ツールを総称して、総合開発環境(IDE)と呼んでいます。

VisualStudioはアプリを開発するためのアプリケーション

Windows上で動作する様々な形態のアプリを開発できます。OS上に.NET(.NET Framework)というものがあり、その上にコンソール、デスクトップ、WPF、Web、データベースなどのアプリが動作します。これはアプリケーションが.NET(.NET Framework)を経由してOSの機能を利用することを示しています。.NETはOSとアプリとのやり取りを行うためのプログラムをまとめたものです。.NETが間に入ることで、アプリの開発者は、アプリで実現したい機能の開発に集中できます。

Visual Studio
  • コンソールアプリ:コンソール上で動作するCUI(キャラクターユーザーインターフェース)
  • デスクトップアプリ:Windowsのデスクトップで動作するアプリ。メモ帳やOfficeアプリなどGUI(グラフィカルユーザーインターフェース)を持つ一般的に広く利用されている形態
  • WPFアプリ:XAMLと呼ばれるマークアップ言語を使って画面を構築するデスクトップアプリ
  • UWP(ユニバーサルWindowsアプリ):Windowsがサポートする様々なデバイスで動作させることが可能なアプリです。デスクトップ、タブレット、Xboxなどで同じように動作するのが大きな特徴
  • データベースアプリ:データベースと連携して動作するアプリケーション
  • Webアプリ:Webサーバー上で動作するアプリケーション

Visual Studioで使用できる言語

  • Visual Basic
  • Visual C#
  • Visual C++
  • F#
  • JavaScript
  • Python
  • TypeScript
  • XAML(GUI画面開発)
  • クエリ言語(SQLを用いたデータベース開発)

.NET(.NET Frameworkとは)

「.NET」は、VisualStudioで開発したアプリをWindowsやmacOS、Linuxなどの複数のOSで実行するためのプラットフォームです。Windows専用のプラットフォームである.NET Farmeworkをクロスプラットフォーム化した「.NET Core」を経て、現在は.NETという名称で呼ばれています。最新のVisualStudio(現在は、2022)では、従来の.NET Frameworkに加え、.NET Core、最新の.NETに対応したアプリケーションの開発が行えます。

クロスプラットフォーム
異なるプラットフォーム(Windows、macOS、Linuxなど)上で、同じプログラムを動かすこと

.NET(.NET Frameworkとは)構造

クロスプラットフォーム用途として開発された.NET Coreや.NETの基幹部分には.NET Frameworkが実装されています。.NET Frameworkは、インストールプログラムの形態で配布されていますが、VisualStudioやWindowsにも標準で搭載されています。内容は、VisualBasicやVisualC#が利用するためのプログラム部品(クラス)の集合体である「ライブラリ」と、プログラムを実行するためのJITコンパイラーなどのソフトウェアが含まれる「共通言語ランタイム(CLR)」で構成されています。

構造

.net framework structure

.NETや.NET Coreの場合は、ASP.NETとADO.NETがそれぞれASP.NET Core、ADO.NET Coreになります。UWPアプリは、.NET Frameworkとは別のWinRTと呼ばれる環境をプラットフォームとします。

共通型システム(CTS)
データ型は、それぞれのプログラミング言語で固有の型が定義されています。.NET Frameworkでは、共通型システム(CTS)という規格に基づいて、.NET Framework対応のすべての言語で共通して使用するデータ型を決めています。VisualBasicでは、これを独自の名前で使えるようにしていますので、例えば整数型の共通名「int32」は「integer」となります。

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

CLR(共通言語ランタイム)は、.NET(.NET Framework)共通の開発環境やプログラムの実行環境を提供するソフトウェア群です。

.NETをプラットフォームとするVisualBasicやVisual C#で開発されたプログラムは、OSの種類に関わらず.NETが搭載されたコンピューター上で動作することを目的としています。このため、開発したプログラムをコンパイル(実行できる状態にすること)する際に、いきなりネイティブコードに変換するのではなく、MSILと呼ばれる中間コードに変換します。このように中間コードに変換されたものが実行ファイルになり、実際にプログラムを起動する際は、.NETに搭載されているJITコンパイラーがネイティブコードに変換してからプログラムが実行されます。

このような仕組みがあることで、Microsoft .NET対応のツールで作成されたプログラムは、CLRを含む.NETが備わったコンピューターであれば、OSの種類やCPUなどのハードウェアに関係なく実行することが可能です。

ランタイムとは
アプリケーションソフトを実行する際に必要となるソフトウェアのこと。Windowsの場合はDLLファイルの形で提供される。ランタイムはアプリケーションソフトに含めて配布される場合もあるが、別途インストールしなければならない場合もある
ネイティブコード
コンピューターが理解できる言語(マシン語)で記述されたプログラムのこと。

CLRの役割

CLRには、MSILのコードをネイティブコードに変換するJITコンパイラーを含む様々なソフトウェアが含まれています。

JITコンパイラー

JITコンパイラーは、.NET(.NET Framework)をプラットフォームとする環境で開発した実行可能なプログラムのMSILコードをネイティブコードにコンパイルするソフトウェアです。

インタープリター式の利点を保ちつつ高速化を実現

JITはJust-In-Timeの略で、JITコンパイラーは、プラグラムの実行時にコードのコンパイルを行います。これは、JavaScriptなどのインタープリター方式と似ていますが、一度コンパイルされたネイティブコードは、プログラムが終了するまで保持されると主に、必要に応じて再利用されるので、プログラムを効率的に実行できるようになっています。また、インタープリター方式のソースコードがテキストベースで記述されているのに対して、JITコンパイラーがコンパイルするのは、よりネイティブコードに近い中間言語(MSIL)であるため、コンパイルにかかる時間が短くて済みます。

クラスローダー

プラグラムの開発にあたっては、.NET(.NET Framework)のクラスライブラリに収録されているクラスを利用してプログラミングを行います。このため、コンパイル済みの中間コードの中には、必要に応じて、ライブラリ内のクラスを呼び出すための記述があります。

クラスローダーは、このようなクラスの呼び出し命令を読み取って、指摘されたクラスの情報をメモリ上に展開するためのソフトウェアです。

ガベージコレクター

ガベージコレクターは、プログラム実行中のメモリー管理を行うソフトウェアです。プログラムが起動すると、ガベージコレクターがメモリを監視し、不要になったメモリー領域の解放を行います。このような処理はガベージコレクションと呼ばれ、ガベージコレクションを行うことで不要になったメモリー領域が残り続けることを防止します。

セキュリティ

CLRには、コードベースのセキュリティを実現するための機能が組み込まれています。コードベースのセキュリティとは、プログラムコードの信頼度及びコードが実際に実行する処理の安全性を事前にチェックし、コードの実行の有無を制御することです。

開発ツール比較

エディション有償/無償内容
VisualStudio Community 2022無償Professional版とほぼ同様の機能を持つ
VisualStudio Professional 2022有償個人や小規模なチームによる開発向け
VisualStudio Enterprise 2022有償大規模開発に対応するエディション

Visual Studioのインストール方法

Visual Studio Community 2022のインストール方法

Visual Basicとは

Visual Basicは、Microsoft社によって開発されたプログラム言語です。VisualBasicによる開発はソースコードの入力画面や入力したコードをコンピューターが理解できるように翻訳する機能など、開発に必要なすべてを組み込んだVisual Studioというソフトウェアを使用しています。

VisualBasicの起源は、プログラミングの学習向けとして1970年代に広く使われた「Basic」という言語です。その後、BASICはQuickBASICに進化し、様々な機能を取り入れることで、現在のVisualBasicになりました。起源は学習用途のプログラミング言語でしたが、このように機能を拡張してきたことにより、現在では、本格的な業務用アプリケーションの開発もVisualBasicで行われています。また、Microsoft社のOfficeアプリケーションで利用されているVBAは、Visual Basicの機能をOfficeアプリ向けに限定した簡易版の言語です。

このようにVisualBasicは学習向けの言語という特徴を残しつつ、業務アプリをはじめとする様々な形態のアプリの開発まで幅広く利用されています。

Microsoft社では、C#言語をベースにした開発したVisualC#をVisualStudiono主要開発言語の1つとしていますが、プログラムの実行速度や言語自体の仕様は、VisualBasicとほとんど同じであると考えてよいでしょう。異なるのはソースコードの書き方の違いだけです。

.NET Frameworkのバージョン比較表

各種.NETフレームワークのバージョンの対応OSについてのまとめと「GrapeCity」製品の対応表

.NET VB

データ型

数値型、実数型、文字列型、日付型、論理型、オブジェクト型、10進数型などのデータが型について解説

.NET VB

変数と定数スコープ(有効範囲)

変数・定数の宣言や使用方法。スコープ(有効範囲)や値型・参照型について解説

.NET VB

命名規則について

予約までされていないが特定の意味を持つ単語があるので、使用を避けたほうがよい単語や変数、プロシージャ、コントロール名のプレフィックス(接頭辞)や変数、クラス、プロパティ、関数、メソッド等の命名規則

.NET VB

式と演算子について

ifやselectなどに使用される演算子(代入演算子、算術演算子、連結演算子、ビット演算子、比較演算子、論理演算子、ビット演算子、Like演算子、Is演算子、シフト演算子)の使用方法について解説

.NET VB

配列

配列(1次元配列、多次元配列)の使用法、要素数の調べ方(Lengthプロパティ、GetLengthプロパティ、GetUpperメソッド、GetUpperBoundメソッド)、配列の初期化(初期データの入れ方)、要素数を動的に変更(ReDim、New演算子、Preserveキーワード)

.NET VB配列①

ジャグ配列、配列内のバイナリサーチ、要素のクリア、配列の初期化、配列コピー、配列内の要素のソート・逆ソート、配列の型の調べ方、配列の次元数の調べ方

.NETVB配列②

プロシージャについて

プロシージャの基本的な使用方法の解説。また、引数の渡し方(ByVal、ByRef)、任意位置で処理を抜ける方法(Exit Sub、Return)、引数に配列の渡し方、オーバーロード、Optional演算子による引数にデフォルト値を設定する方法、引数に仮引数名(:=)を使用した値の渡し方、引数にパラメーターリスト(ParamArray演算子)を使用する方法

.NET VB

制御

If、Select、For~Next、For Eath、Continue For、While End While、Do While、Gotoの解説

.NET VB

データ型変換(キャスト)

インライン関数、Convetクラス、DirectCast演算子、CType関数、TryCast演算子、Parse・TryParse メソッド解説

.NET VB

データ型を厳密に扱う方法

初期設定のままでは、データ型が異なる場合でも暗黙の型変換により自動的に変換されてしまうので、ビルド時にエラーで止める方法。

.NET VB