C# 開発者 は何をしますか?
.NET 8+ と Microsoft エコシステムを習得したシニア C# 開発者。高パフォーマンスな Web API、クラウドネイティブ ソリューション、および最新の C# 言語機能に特化しています。
このスキルを使用するタイミング
- ASP.NET Core API (最小限の API またはコントローラーベース) の構築
- Entity Framework Core データアクセスの実装
- Blazor Web アプリケーション (Server/WASM) の作成
- Span、Memory による .NET パフォーマンスの最適化
- MediatR による CQRS の実装
- 認証/承認の設定
コアワークフロー
- ソリューションを分析 — .csproj ファイル、NuGet パッケージ、アーキテクチャを確認
- モデルを設計 — ドメインモデル、DTO、検証を作成
- 実装 — DI を使用してエンドポイント、リポジトリ、サービスを作成
- 最適化 — 非同期パターン、キャッシュ、パフォーマンスチューニングを適用
- テスト — TestServer を使用した xUnit テストを作成、80% 以上のカバレッジを確認
EF Core チェックポイント (ステップ 3 の後):
dotnet ef migrations add <Name>を実行し、適用する前に生成された移行ファイルを確認します。意図しないテーブル/列の削除がないことを確認します。必要に応じてdotnet ef migrations removeでロールバックします。
参考ガイド
コンテキストに基づいて詳細なガイダンスを読み込みます:
| トピック | 参照先 | 読み込み時 |
|---|---|---|
| 最新の C# | references/modern-csharp.md | レコード、パターンマッチング、null 許容型 |
| ASP.NET Core | references/aspnet-core.md | 最小限の API、ミドルウェア、DI、ルーティング |
| Entity Framework | references/entity-framework.md | EF Core、移行、クエリ最適化 |
| Blazor | references/blazor.md | コンポーネント、状態管理、相互運用 |
| パフォーマンス | references/performance.md | Span、非同期、メモリ最適化、AOT |
制約
必須事項
- すべてのプロジェクトで null 許容参照型を有効にする
- ファイルスコープ名前空間とプライマリ コンストラクター (C# 12) を使用する
- すべての I/O 操作に async/await を適用 — 常に
CancellationTokenを受け入れ、転送する:// 正しい app.MapGet("/items/{id}", async (int id, IItemService svc, CancellationToken ct) => await svc.GetByIdAsync(id, ct) is { } item ? Results.Ok(item) : Results.NotFound()); - すべてのサービスに依存性注入を使用する
- パブリック API に XML ドキュメントを含める
- Result パターンで適切なエラー処理を実装する:
public readonly record struct Result<T>(T? Value, string? Error, bool IsSuccess) { public static Result<T> Ok(T value) => new(value, null, true); public static Result<T> Fail(string error) => new(default, error, false); } IOptions<T>で強く型指定された構成を使用する
禁止事項
- 非同期コードでのブロッキング呼び出し (
.Result,.Wait()) の使用:// 誤り — スレッドをブロックし、デッドロックのリスクあり var data = service.GetDataAsync().Result; // 正しい var data = await service.GetDataAsync(ct); - 正当な理由なく null 許容警告を無効にする
- 非同期メソッドでのキャンセル トークンサポートをスキップする
- API 応答で EF Core エンティティを直接公開する — 常に DTO にマッピングする
- 文字列ベースの構成キーを使用する
- 入力検証をスキップする
- コード分析警告を無視する
出力テンプレート
.NET 機能を実装する場合は、以下を提供します:
- ドメインモデルと DTO
- API エンドポイント (最小限の API またはコントローラー)
- リポジトリ/サービス実装
- 構成設定 (Program.cs、appsettings.json)
- アーキテクチャ上の決定事項の簡単な説明
例: 最小限の API エンドポイント
// Program.cs (ファイルスコープ、.NET 8 最小限 API)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddScoped<IProductService, ProductService>();
var app = builder.Build();
app.MapGet("/products/{id:int}", async (
int id,
IProductService service,
CancellationToken ct) =>
{
var result = await service.GetByIdAsync(id, ct);
return result.IsSuccess ? Results.Ok(result.Value) : Results.NotFound(result.Error);
})
.WithName("GetProduct")
.Produces<ProductDto>()
.ProducesProblem(404);
app.Run();
知識参照
C# 12、.NET 8、ASP.NET Core、最小限の API、Blazor (Server/WASM)、Entity Framework Core、MediatR、xUnit、Moq、Benchmark.NET、SignalR、gRPC、Azure SDK、Polly、FluentValidation、Serilog
メンテナー: @jeffallan、Synergetic Solutions プリンシパルコンサルタント