<< All versions
Skill v1.0.0
Trusted Publisher100/100microsoft/aspnetcore-ja-handbook/code-verifier
──Details
PublishedMay 24, 2026 at 08:12 PM
Content Hashsha256:534433fa8edabe2d...
Git SHA
──Files
Files (1 file, 7.9 KB)
SKILL.md7.9 KBactive
SKILL.md · 191 lines · 7.9 KB
version: "1.0.0" name: code-verifier description: 'ドキュメントのコードサンプルを実装しテストで検証する。Use when: コードサンプルを検証する、サンプルコードをテストする、実装を確認する、コードが動作するか確認する。コードサンプルの実装とテスト、動作検証。' argument-hint: '検証対象の章番号またはドキュメントファイルパスを指定'
ASP.NET Core ハンドブック コードサンプル検証スキル
概要
このスキルは、docs/ フォルダ内のマークダウンドキュメントに含まれるコードサンプルを実際に実装し、テストで動作を検証するためのワークフローです。
前提条件
- 対象バージョン:
.github/instructions/versioning.instructions.mdのバージョン決定ルールに従い、使用する .NET および ASP.NET Core のバージョンを確定する。プロジェクト作成時の--frameworkオプションや NuGet パッケージのバージョン指定もこのルールに準拠すること。 - 実行環境: 通常の bash ターミナルで
dotnetコマンドを実行 dotnetコマンド実行時はサンドボックスを使用しない(unsandboxed 実行)。- テストフレームワーク: xUnit
- アサーションライブラリ: xUnit 組み込み(必要に応じて FluentAssertions を追加可)
- モックライブラリ: NSubstitute(必要な場合のみ)
ディレクトリ構成
src/└── {NN}/ # 章番号(2桁ゼロ埋め)├── {SampleName}/ # コードサンプル名(PascalCase)│ ├── {SampleName}.csproj # 実装プロジェクト│ └── *.cs # 実装ファイル└── {SampleName}.Tests/ # テストプロジェクト├── {SampleName}.Tests.csproj└── *Tests.cs # テストファイル
命名規則
| 要素 | 規則 | 例 | |
|---|---|---|---|
| 章フォルダ | src/{NN}/(NN は章番号の2桁ゼロ埋め) | src/06/ | |
| 実装プロジェクト名 | ドキュメントのセクション内容を反映した PascalCase | FactoryRegistration | |
| テストプロジェクト名 | 実装プロジェクト名 + .Tests | FactoryRegistration.Tests | |
| テストクラス名 | テスト対象クラス名 + Tests | TimeServiceTests | |
| テストメソッド名 | {テスト対象メソッド}_{条件}_{期待結果} パターン | GetTime_WhenCalled_ReturnsCurrentTime |
手順
1. コードサンプルの抽出
対象ドキュメントからコードブロック( `csharp で囲まれた部分)を特定する。
- 各コードサンプルに対して、そのサンプルが示す概念・機能を把握する
- 断片的なコードサンプル(1〜2行の説明用スニペット)はテスト対象外とする
- 完全なクラス定義、メソッド定義、または
Program.csの設定コードをテスト対象とする
2. プロジェクトの作成
コードサンプル1つにつき、実装プロジェクト1つとテストプロジェクト1つを作成する。
実装プロジェクトの作成
bash
cd "$(git rev-parse --show-toplevel)"mkdir -p src/{NN}cd src/{NN}dotnet new classlib -n {SampleName} --framework net{N}.0
[!NOTE]コードサンプルが ASP.NET Core の WebApplication を必要とする場合はclasslibの代わりにwebまたはwebapiテンプレートを使用する。
テストプロジェクトの作成
bash
cd "$(git rev-parse --show-toplevel)/src/{NN}"dotnet new xunit -n {SampleName}.Tests --framework net{N}.0cd {SampleName}.Testsdotnet add reference ../{SampleName}/{SampleName}.csproj
必要なパッケージの追加
コードサンプルの内容に応じて、以下のパッケージを追加する。
bash
# DI コンテナーが必要な場合dotnet add package Microsoft.Extensions.DependencyInjection# ホスティングが必要な場合dotnet add package Microsoft.Extensions.Hosting# ASP.NET Core のテストが必要な場合(テストプロジェクトに追加)dotnet add package Microsoft.AspNetCore.Mvc.Testing# モックが必要な場合(テストプロジェクトに追加)dotnet add package NSubstitute
3. 実装の作成
- ドキュメントのコードサンプルを そのまま 実装ファイルに配置する
- コードサンプルが断片的な場合は、コンパイルが通るよう最小限の補完を行う
- 補完した部分にはコメントで
// ドキュメント外: テスト用に追加と注記する namespaceはプロジェクト名と一致させる
4. テストの作成
テストは以下の方針で作成する。
テストの観点
- コンパイル確認 — コードサンプルがコンパイルエラーなくビルドできること
- 動作確認 — コードサンプルの説明通りの動作をすること
- DI 登録確認 — サービスが正しく解決できること(DI 関連の場合)
テストの書き方
csharp
using Xunit;using Microsoft.Extensions.DependencyInjection;namespace SampleName.Tests;public class SampleClassTests{[Fact]public void Method_Condition_ExpectedResult(){// Arrangevar services = new ServiceCollection();// ドキュメントのコードサンプル通りにサービスを登録// Actvar provider = services.BuildServiceProvider();var result = provider.GetRequiredService<ITargetService>();// AssertAssert.NotNull(result);}}
5. ビルドとテストの実行
bash
cd "$(git rev-parse --show-toplevel)/src/{NN}/{SampleName}.Tests"dotnet builddotnet test
- すべてのテストが ✅ パスすることを確認する
- ビルドエラーやテスト失敗が発生した場合は、ドキュメント側のコードサンプルに誤りがないか確認する
- ドキュメントのコードサンプルに誤りがある場合は、修正内容を報告する
6. 結果の報告
検証結果は以下の形式で報告する。
| コードサンプル | 実装パス | テストパス | 結果 | 備考 | |
|---|---|---|---|---|---|
| セクション名 - サンプル説明 | src/NN/SampleName/ | src/NN/SampleName.Tests/ | ✅ / ❌ | エラー内容等 |
ドキュメント修正が必要な場合
テストの結果、ドキュメントのコードサンプルに誤りが見つかった場合:
- 正しいコードを特定する(MS Learn で裏取りを行う)
- ドキュメント側のコードブロックを修正する
- テストが通ることを再確認する
- 修正内容を結果報告に含める
ソリューションファイル
章ごとにソリューションファイルを作成し、その章のすべてのプロジェクトをまとめる。
bash
cd "$(git rev-parse --show-toplevel)/src/{NN}"dotnet new sln -n Chapter{NN}dotnet sln add {SampleName}/{SampleName}.csprojdotnet sln add {SampleName}.Tests/{SampleName}.Tests.csproj
既にソリューションファイルが存在する場合は、新しいプロジェクトを追加するだけでよい。
注意事項
- テストプロジェクトでは
IServiceProviderを直接使ったテストを許容する(テスト対象が DI の動作確認であるため) WebApplicationFactory<T>を使う統合テストは、コントローラーやエンドポイントのテストでのみ使用する- テスト内で外部リソース(DB、ネットワーク)に依存しないこと。必要な場合はモックを使用する
ImplicitUsingsとNullableは有効のままにする(対象バージョンのデフォルト設定に従う。バージョンは.github/instructions/versioning.instructions.mdで決定する)