ASP.NET CoreでC#ウェブアプリケーションを作成する
ウェブアプリケーションを構築することは、現代の開発者にとって基本的なスキルであり、基本となるプロジェクト構造を理解することは不可欠です。 この記事は、ティム・コーリーのビデオ"Intro to Web API"に触発され、ASP.NET Coreフレームワークを使用したWebアプリの構築の複雑さに飛び込みます。
Timの洞察に従って、効率的で保守性の高いWebページやAPIを構築するために、ASP.NET Coreフレームワークの可能性を最大限に活用して、Webアプリケーションを設定、構成、最適化する方法を探ります。Web開発初心者でも、スキルを磨きたい方でも、このガイドを読めば、複雑なWeb開発作業をナビゲートし、効果的で高性能なWebアプリケーションを構築するために必要な知識を得ることができます。
はじめに
Tim Coreyはチュートリアルの冒頭で、ASP .NET CoreでAPIを作成するトピックを紹介します。 彼は、堅牢でスケーラブルなウェブアプリケーションを構築するために、APIの基礎を理解することの重要性を強調しています。
Timは、BlazorウェブサーバーやBlazorウェブアセンブリのような異なるウェブ開発フレームワーク間の通信を容易にし、APIが現代のソフトウェア開発において果たす重要な役割を説明することで、舞台を整えます。 Razor pagesの基本的なプロジェクトタイプはASP.NET Coreであり、複数のプロジェクトにまたがるさまざまな機能をシームレスに統合してWebアプリを構築することができます。
ASP.NETコアWeb APIプロジェクトを作成する
はじめに、Tim Coreyが新しいASP.NET Core Web APIプロジェクトをセットアップする方法を示します。 以下は、彼のビデオで説明された手順です:
1.Visual Studioを開く: Visual Studioインストーラーを開き、新しいプロジェクトを作成するオプションを選択して開始します。

2.APIテンプレートを選択します:プロジェクトテンプレートから"ASP.NET Core Web API"を選択し、"次へ"をクリックします。

3.プロジェクト設定の構成: プロジェクト名を入力し、場所とソリューション名を選択します。

4.追加情報:.NET Frameworkを選択し、認証タイプを選択し、他の設定は変更しないことを推奨しています。

5.プロジェクトを作成する:作成"をクリックすると、デフォルトの設定と必要なコードでプロジェクトが生成されます。
VisualStudioがProgram.cs、controllersフォルダ、appsettings.jsonのような重要なコンポーネントを含む基本的な構造を生成し、API開発の基礎を提供します。
デフォルト API アプリケーションの概要
Tim Coreyのビデオの5:57では、ASP.NET Coreが生成するデフォルトのAPIアプリケーションの概要を説明しています。
デフォルト アプリケーションの実行
Timはまず、デフォルトのアプリケーションを実行し、開発者が箱から出してすぐに使えるものを説明します。 プロジェクトが実行されると、APIがビルドされ、必要なNuGetパッケージがダウンロードされ、Webページが起動します。 この初期セットアップでは、APIの基本的な構造と機能性をそのまま示します。

APIとの相互作用
起動するウェブページは、現在OpenAPIとして知られているSwaggerで動いています。 Swaggerは、APIと対話するためのユーザーフレンドリーなインターフェイスを提供します。 これにより、開発者と非開発者の両方がAPIエンドポイントを簡単に理解し、テストできるようになります。 このインターフェイスは、APIがどのように動作するかを視覚化し、ドキュメンテーションの目的で特に有益です。
Swaggerについて
Swaggerは、APIで利用可能なエンドポイントを紹介します。 デフォルトのセットアップでは、設定済みのエンドポイントの1つは "天気予報 "エンドポイントです。 このエンドポイントをクリックし、"Try it out "機能を使用することで、ユーザーはAPIコールを実行し、レスポンスを確認することができます。 このレスポンスにはJSON形式の天気予報が含まれており、APIからどのようにデータが返されるかを示しています。
8:32のTimは、生のJSONデータはブラウザから直接読むのは難しいかもしれないが、Swaggerのドキュメンテーションオーバーレイを使えばはるかに消化しやすくなることを強調している。 ドキュメントでは、リクエストメソッド(GET、POSTなど)、返されるデータの構造、必要なパラメータなど、エンドポイントに関する詳細な情報を提供します。
JSONドキュメンテーションとAPIバージョン管理
Swaggerは、9:10でTimが指摘するように、APIを機械可読形式で文書化したJSONファイルも生成します。 このドキュメントは、利用可能なエンドポイント、データスキーマ、および期待される応答について説明するため、APIと相互作用する必要がある他のアプリケーションにとって非常に重要です。
9:29のTimは、APIにおけるバージョン管理の重要性を指摘している。デフォルトのセットアップにはバージョンインジケーターが含まれており、複数のAPIバージョンの可能性を示唆している。 バージョン管理は、後方互換性を維持するために不可欠です。 APIへの変更が既存のクライアントを壊す可能性がある場合、複数のバージョンを持つことで、開発者は現在のユーザーを混乱させることなく新機能や変更を導入することができます。
APIとは
11:22では、ティム・コーリーが現代のウェブ開発におけるAPI(アプリケーション・プログラミング・インターフェース)の基本的な役割について説明しています。 異なるソフトウェア・コンポーネント間のデータ交換を管理し、安全性を確保する上での重要性を強調しています。
APIの目的
ティムは、ほとんどのアプリケーションはデータ検索、操作、表示を中心に展開されると強調する。 APIは、ユーザーインターフェースと基礎となるデータとの仲介役として機能し、安全で効率的なデータアクセス手段を提供します。 この一元化は、いくつかの理由から非常に重要です:
1.セキュリティ:APIはデータアクセスを管理する安全な方法を提供します。 モバイルおよびクライアントサイドのアプリケーションは、重大なセキュリティリスクをもたらすデータベース認証情報をクライアントコード内に埋め込むことを避けるため、データベースに直接接続すべきではありません。
2.抽象化:APIはユーザーインターフェイスからデータレイヤーを抽象化し、異なるクライアントアプリケーション(モバイルアプリ、ウェブアプリ、デスクトップアプリ)がデータベースやその認証情報を公開することなく、同じデータソースとやりとりできるようにします。
さまざまなフレームワークでの多用途性
ティムは、APIは特定のフレームワークや言語に限定されるものではないことを指摘しています。 例えば、C# APIは、Angular、React、Vueなど for JavaScriptフレームワークからアクセスでき、APIのクロスプラットフォーム機能を紹介します。
APIウェブアプリのコードレビュー
15:21から、Tim CoreyがASP.NET Core APIプロジェクトの構造と機能の詳細なウォークスルーを開始します。 以下は、APIウェブアプリを作成する際にHTTPサーバーとサーバーサイドの技術を使用する際に理解する必要がある、彼の説明のキーポイントです:
1.Program.csの概要1.
TimはProgram.csをレビューし、Webアプリケーションを構築し、コントローラやSwagger (OpenAPI)の依存性注入のようなサービスを設定することを指摘します。 コードは、アプリケーションをビルドして実行する前に、必要不可欠なサービスを設定します。
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();2.環境設定
TimはlaunchSettings.jsonで環境設定がどのように構成されているかを説明します。 デフォルト環境はローカルテスト用に "Development "に設定され、Swaggerが有効になります。 本番環境では、セキュリティのためSwaggerは通常無効になっていますが、開発チェックを外すことで有効にすることができます。
{
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebApplication": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}3.HTTPSリダイレクトとコントローラ
Timは、HTTPSリダイレクトとコントローラのマッピングについて指摘しています。 このセットアップでは、APIルートが適切に設定されていることを確認します。 彼は、HTTPリクエストとレスポンスのルートを明確にするために、"api "という接頭辞を使用することを好みます。
4.天気予報コントローラー
TimはWeatherForecastController.csに深く入り込み、ルート設定を強調します。 デフォルトのルートは/weatherforecastであり、"api"プレフィックスを含めるように変更できます。 コントローラは、データを取得するためにHTTP GETを使用し、指定されたルート経由でアクセスできます。
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
}using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
}5.HTTP動詞とルーティング
Timは、HTTP動詞(GET、POST、PUT、DELETE)がどのようにAPIエンドポイントを定義するかを説明します。 GETリクエストでは、ブラウザはコントローラ内の指定されたメソッドを呼び出します。 その他の動詞には、テスト用のPostmanのようなツールが必要です。
APIコントローラの作成
Timは、APIコントローラを作成するプロセスを示します:
1.コントローラの追加:Controllers "フォルダを右クリックし、"Add > Controller "を選択します。
2.APIコントローラの選択: "API Controller - Empty "を選択し、コントローラの名前を指定します。

3.アクションの定義: さまざまなHTTPリクエストを処理するために、コントローラ内にアクションを実装します。 Timは、GET、POST、PUT、DELETEメソッドの定義方法を示すコード例を提供しています。 詳細なコードについては、26:25以降のビデオを参照してください。
この実践的なデモンストレーションは、開発者がさまざまなタイプのリクエストを処理するためのAPIコントローラを構築し、設定する方法を理解するのに役立ちます。
REST API
ティム・コリーは、REST(Representational State Transfer)とその原理を紹介しています:
1.RESTとは:RESTは、ネットワークアプリケーションを設計するためのアーキテクチャスタイルです。 ステートレス通信に依存し、標準的なHTTPメソッド(GET、POST、PUT、DELETE)を使用して操作を実行します。
2.RESTfulの原則:RESTful APIは、リソースを表すためにURLパターンを使用します。 例えば、/users/5はID 5の特定のユーザーを取得します。
3.RESTコンプライアンス: Timは、RESTはもともと理論的なモデルであったため、RESTの完全なコンプライアンスを達成するのは難しいことだと述べています。 しかし、RESTの原則に従うことで、より直感的で一貫性のあるAPIを実現することができます。
ティム氏は、RESTへの準拠を目指す一方で、使いやすさと機能性を確保するために、実用的な考慮事項をAPI設計の指針にする必要があることを強調しています。
最小限の API アプリケーション
Coreyは、ASP.NET CoreにおけるAPI開発の合理化アプローチであるMinimal APIを紹介します:
1.Setting Up Minimal APIs: Timは、プロジェクトのセットアップ時に"Use Controllers"オプションのチェックを外して、Minimal APIプロジェクトを作成する方法を示します。
- 簡素化されたコード: ミニマムAPIはコントローラやルーティング属性の必要性を排除し、開発者が
app.MapPost()のようなメソッドを使って直接エンドポイントを定義できるようにします。
3.コード例: Timは、1行のコードがエンドポイントを定義するコード例を提供します。 最小限の構成で、GETリクエストをエンドポイントにマッピングする方法を示します。
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();最小限のAPIは、特に小規模なアプリケーションやマイクロサービスの開発を簡素化するように設計されています。
なぜ Minimal API なのですか?
Timは、Minimal APIの利点について説明します:
1.Create New Project: Timは新しいWeb APIプロジェクトを作成しますが、今回は追加情報でuse controllersオプションのチェックを外しました。 これにより、最小限のAPIを使用するプロジェクトの作成が可能になります。

2.ボイラープレートの削減:最小限のAPIは、コントローラや追加のルーティング設定の必要性を取り除くことで、定型的なコードの量を減らします。
3.シンプルさ:シンプルなAPIに対して、よりわかりやすいアプローチを提供し、コードの理解と保守を容易にします。
4.マイクロサービス:最小限のAPIは、APIが限られたアクションのセットを実行する必要があり、従来のコントローラの全機能を必要としないマイクロサービスにとって特に有用です。
Timは、Minimal APIは特定のシナリオに有益である一方、従来のコントローラは、より大規模またはより複雑なアプリケーションに適しているかもしれないことを認めています。
ベストプラクティス、要約、最終的なコメント
Tim Corey氏は、API開発のベストプラクティスでチュートリアルを締めくくります:
- 関心の分離:
Program.csやコントローラーアクションにビジネスロジックを直接配置することを避けます。 その代わり、ロジックを別のクラスライブラリやサービスに移動して、コードのクリーンさを維持し、SOLIDの原則を遵守してください。
2.ユーザーインターフェイスとしてのAPI:APIをユーザーインターフェイスとして扱い、直感的で十分に文書化されたものにすることに重点を置きます。 ティムは、明確なドキュメントと効果的なAPI設計の重要性を強調しています。
3.Swaggerとドキュメンテーション:APIドキュメンテーションとバージョニングにSwaggerを活用する。 Timは、コード内のXMLコメントを使用して詳細なAPIドキュメントを生成する方法を説明します。
4.追加の考慮事項:APIのパフォーマンスとセキュリティを強化するために、キャッシュ、レート制限、その他の要素を考慮してください。
Timは、開発者がさまざまなプロジェクトの種類やツールを探求することを奨励し、APIと最新のソフトウェア開発におけるその役割を理解することの価値を強調します。
結論
Tim Coreyのビデオは、ASP.NET CoreでのAPIの作成と管理に関する徹底的なガイドを提供し、RESTfulとMinimal APIアプローチの両方をカバーしています。 彼の洞察は、開発者がAPI設計の要点を把握するのに役立つだけでなく、効果的なソリューションを実装するための実践的なアドバイスも提供しています。
C#やその他のプロジェクトタイプに関する詳細なチュートリアルや洞察については、ティム・コーリーのYouTubeチャンネルIAmTimCoreyをぜひご覧ください。


