Skip to content

Metanaka .NET Architecture

Rule Levels

  • [Required]: 違反は必須修正として扱う。
  • [Recommended]: 原則として採用する。合理的な理由がある逸脱は許容する。
  • [Contextual]: 記載した条件が成立するときだけ適用する。根拠が不足する場合は違反ではなく確認事項として扱う。

レビュー判定に使う規則はlevel tag付きの箇条書きだけとする。tagのない文章とcode sampleは背景、理由、例を示す。 レビューでは[Required]違反を必須修正、[Recommended]からの理由なき逸脱を任意改善として扱う。[Contextual]は条件成立を確認できた場合にだけ適用し、規則内に重要度が明記されていなければ確認事項として扱う。

仕様判断は要件定義、設計判断は設計資料を正とし、このskillは.NET backendの責務境界と設計規約を定義する。

Routing

作業対象に該当するreferenceをすべて読む。一つの変更が複数領域へまたがる場合は、一つだけ選ばない。

  • directory構造、Feature/Area境界、domain model、Infrastructure配置はreferences/architecture.mdを読む。
  • Minimal API、HTTP境界、DTO、認証filter、OpenAPIはreferences/http.mdを読む。
  • Handler、Command、application result、業務errorはreferences/application.mdを読む。
  • FluentValidation、Value Object factoryのHTTP境界での呼び出し、validation filter、problem mappingはreferences/validation.mdを読む。Value Object化の要否と型設計はarchitecture.mdを正とする。
  • Repository Port、Transaction/Scope、永続化境界はreferences/persistence.mdを読む。
  • EF Core、DbContext、entity mapping、tracking、optimistic concurrency、relational transaction、migrationはreferences/ef-core.mdに加え、同じ作業対象に該当するarchitecture、persistence、runtimeなどの共通referenceを読む。
  • Firestore SDK、Document DTO、path、transaction callbackはreferences/firestore.mdに加え、同じ作業対象に該当するarchitecture、persistence、runtimeなどの共通referenceを読む。Firestore taskという理由だけで共通referenceを全件読む必要はない。
  • TimeProvider、async、CancellationToken、DIはreferences/runtime.mdを読む。
  • 単一fileか複数fileかを問わず、複数のOwnership領域をまたぐレビューはreferences/review.mdと、作業対象のreferenceを併読する。
  • EndpointからHandler、portまでの責務分担を具体的な複数fileで確認する必要がある場合だけsamples/room-create/README.mdと、そこから案内するsourceを読む。sampleは規則の正本ではなく、対象外の構造まで模倣しない。
  • RFC 9457 Problem Details、FluentValidationの全体fail-fast、ErrorOr mapping、Endpoint Filterを一続きのcompile可能な例で確認する場合はsamples/rfc9457-errors/README.mdを読む。このsampleは既知のvalidation/application error経路だけを示し、API全体のexception pipelineやpersistence設計の代わりに使わない。

Ownership

  • [Required] architectureは配置、依存方向、Feature/Area境界の正本にする。
  • [Required] Value Object化の判定条件と型設計はarchitectureを正本にする。
  • [Required] httpはMinimal API、HTTP境界、DTO、認証filter、OpenAPIの正本にする。
  • [Required] applicationはHandler、Command、application result、業務errorの正本にする。
  • [Required] validationはHTTP入力からValue Objectへの変換と失敗の扱い、FluentValidation、validation filter、problem mappingの正本にする。
  • [Required] persistenceはprovider非依存の永続化抽象、ef-coreはEF CoreとRDB固有差分、firestoreはFirestore固有差分の正本にする。
  • [Required] runtimeは時刻、async、cancellation、DIの正本にする。
  • [Required] reviewはレビュー範囲、根拠、重要度だけを定義し、技術規則を再掲しない。