.NET の使用方法

完了

このユニットでは、アプリケーションの構築の "技術的" な面に注目します。 .NET の言語、ツール、フレームワークを使用して、ソフトウェア開発者が .NET アプリケーションを構築するために使用する一般的なワークフローの概要を示します。

開発者が .NET を使用してアプリケーションを作成する方法

このセクションでは、.NET でのアプリケーション開発のワークフローについて説明します。これには、.NET でアプリケーションの作成を開始する方法に関する詳細が含まれます。

開発環境を設定する

開発者が最初に決定することは、アプリケーションの作成に使用するツールの選択です。 つまり、"開発環境" を選択します。 この決定は通常、グラフィカル ユーザー インターフェイスを備えたよりビジュアルなワークフローを好むのか、それとも開発環境内の移動やコマンドの実行をほとんどキーボードだけに頼るコマンド ライン インターフェイスを好むのかに基づきます。

Note

このモジュールの最後には、開発環境のセットアップを始めるのに役立つリンクがあります。 Visual Studio 2022 または Visual Studio Code と .NET Software Development Kit (SDK) のいずれかを選択できます。

ビジュアル環境を好む開発者にとっては、Visual Studio 2022 が最適な選択です。 お気づきかもしれませんが、Visual Studio 2022 の包括的で視覚的な性質により、このプログラムをダウンロードしてインストールするには、時間、帯域幅、ディスク領域がより多く必要になります。 ただし、一部の初心者にとっては、最も簡単に始めることができる方法であることがわかります。 インターネット接続の速度によっては、インストールに 15 分以上かかる場合があります。

Visual Studio 2022 の Visual Studio インストーラーには、ワークロードの形式のオプションが用意されています。 ワークロードは、特定のアプリ モデルを構築するために連係するフレームワーク、ライブラリ、およびその他のツールのコレクションです。 前のユニットで学習した内容に基づき、ワークロードをインストールして、このアプリ モデルのために新しいアプリケーションを構築したいとと考えるでしょう。

この作業を開始する場合、ASP.NET および Web 開発ワークロードを使用すると、.NET SDK に加え .NET を使用した Web 開発用の追加 SDK がインストールされます。 .NET SDK には、コードの記述を開始するために必要なすべてのライブラリ、ツール、およびテンプレートが含まれています。

コマンド ライン環境の方がよい場合は、Visual Studio Code と .NET SDK を別々にダウンロードしてインストールします。 この選択は、初心者がすぐに作業を開始する場合によく使用されます。 どちらのツールでも、ダウンロードに必要な帯域幅は少なくなります。

作業開始

通常、ソフトウェア開発プロジェクトは一連の要件から始まります。 これらの要件は、アプリ モデルの選択に影響します。 たとえば、Web、デスクトップ、モバイル アプリケーションやバックグラウンド プロセスなどのアプリ モデルから選択できます。

通常は、Visual Studio 2022 または .NET CLI を使用して、プロジェクト テンプレートに基づいて新しいプロジェクトの作成を始めます。 多くのプロジェクト テンプレートから選択できます。 プロジェクト テンプレートには次のような機能があります。

  • テンプレートと定義したプロジェクトの名前に基づいて、フォルダーとファイルが生成されます。
  • 一般的に使用されるライブラリと、アプリ モデルのフレームワークで必要なライブラリへの参照を追加します。
  • アプリケーションを実行し、コードのコンパイルを確認できる小さなサンプルを表示できるように、必要なコードを追加します。
  • コードには指示が含まれる場合があります。 これらの指示に従って、サンプル アプリケーションを変更し、独自のものにします。

Visual Studio 2022 では、[新しいプロジェクト] ダイアログを使用して、インストールされている一連のテンプレートからアプリケーション モデルを視覚的に選択するか、多くのコミュニティ投稿から選択することができます。 .NET CLI では、dotnet new コマンドを使用して新しいプロジェクト テンプレートを選択します。

機能を構築する

次に、アプリケーションのロジックの記述を開始します。 次のような特別なタスクを実行する必要がある場合は、コード ライブラリへの参照を追加します。

  • ネットワーク リソースに接続する
  • データベースにアクセスしてデータを格納または取得する
  • データをある形式から別の形式に変換する
  • アプリケーションでの問題を診断するためにログ記録を追加する

場合によっては、使用するコード ライブラリが、.NET SDK と共にインストールされているため、ローカル ハード ドライブに既に存在していることがあります。

それ以外の場合、開発者は NuGet パッケージ マネージャーを使用してアセンブリ ライブラリをダウンロードして参照を作成します。 これらのリソースを取得するには、開発環境に応じて、Visual Studio の [NuGet パッケージ マネージャー] ダイアログ ボックスまたは .NET CLI のコマンドライン インターフェイスを使用できます。

アプリケーションをコンパイルして実行する

新しい機能を構築する場合は、独自のコードを作成して頻繁に実行します。 このワークフローを使用すると、正常に動作している部分と、修正の必要な部分を評価できます。 ビジュアル アプローチとコマンド ライン アプローチのどちらでも、簡単なコマンドを使用してワークフローを簡単にたどることができます。

コードの構文が言語の規則に従っていない場合、その構文は正しくないと見なされます。 構文が間違っている場合は、お使いの言語の .NET コンパイラによって、"コンパイル エラー" がスローされます。 構文の問題を修正するまで、コンパイラは続行されません。

構文規則に従っているのでコードをコンパイルすることができても、アプリケーションのロジックに問題がある場合があります。 ロジックの原因のために .NET ランタイムでコマンドを実行できない場合、プログラムは "クラッシュ" します。その場合、.NET ランタイムによってコンピューターのメモリからプログラムが削除されます。 このようなエラーは、"ランタイム エラー" または "例外" と呼ばれます。

ヒント

幸いにも、プログラムにより、未加工のシステム エラー メッセージがユーザーの目に触れないようにすることができます。 詳細については、"構造化例外処理" に関するチュートリアルとドキュメントを参照してください。

ロジック エラーの中には、"クラッシュ" が発生しないものもあります。しかし、その場合も、ユーザーが期待する結果は得られません。 これらのエラーは、アプリケーションをテストしてデバッグすることによってのみ解決できます。

アプリケーションをデバッグする

ソフトウェアを作成するときは、アプリケーションを実行し、要件と期待を満たしているかどうかを評価します。 アプリケーションでバグを発見したとしても、そのバグが発生している "理由" や、それを修正するための "方法" が、わからない場合があります。

デバッグを行うときは、アプリケーションを実行しながら監視し、何が起こっているかを把握します。 ブレークポイントを設定してアプリケーションを一時停止させ、1 行ずつコードの実行を追ってみることができます。 変数に格納されている値を確認したり、コードを使用して行をスキップまたは再実行することにより実行のパスを制御したり、変数の値を変更したりすることができます。

ビジュアルとコマンド ラインのどちらのデバッグ ツールでも、アプリケーションの実行を監視して、制御することができます。 この機能を使用して、アプリケーションの実行中に何が起こっているかを確認します。

アプリケーションの配布

アプリケーションがリリースできる状態になったら、ビルドの "リリース バージョン" を作成します。 リリース バージョンの場合は、デバッグに必要なコードを削除します。 この場合も、ビジュアル ツールとコマンド ライン ツールの両方で、リリース バージョンをコンパイルできます。

リリース バージョンを実行するには、まず、対象のコンピューターに .NET ランタイムをインストールする必要があります。 このコンピューターにより、コンパイルの済んだ .NET アセンブリが実行されます。

実行時の .NET のしくみ

アプリケーションの .NET アセンブリと .NET ランタイムを対象のコンピューターにインストールしたら、アプリケーションを実行できます。

".NET ランタイム" は、アプリケーションのための実行環境を提供する緩衝材のようなものです。 .NET ランタイムにより次のことが行われます。

  • プログラムが初めて実行されるときに、中間コードがバイナリ形式にコンパイルされます。 バイナリ形式は、それが実行されるコンピューターのプラットフォームとアーキテクチャ (たとえば、64 ビット Windows) に固有です。
  • プログラムのエントリ ポイントが特定され、各命令の実行が適切な順序で開始されます。
  • メモリやネットワーク アクセスなどのコンピューター リソースが管理されます。 .NET ランタイムによって "メモリが管理される" という場合は、オペレーティング システムと連携してアプリケーション用のメモリがプロビジョニングされることを意味します。 アプリケーションでメモリにデータを格納する必要がなくなった場合は、ソフトウェア開発者が何も指示しなくても、ガベージ コレクション機能によって、そのメモリはオペレーティング システムに戻されます。
  • ユーザーのコンピューターが、悪意を持つ可能性のあるソフトウェアから保護されます。 また、アプリケーション間の分離レイヤーも提供されます。