--- name: fsharp-csharp-bridge description: F# Domain/Application層とC# Infrastructure/Web層の型変換パターンを自律的に適用。F#↔C#境界コード実装時・型変換エラー発生時・contracts-bridge Agent作業時に使用。Phase B1で確立した4つの変換パターンをガイド。 allowed-tools: Read, Grep --- # F#↔C# Type Conversion Patterns ## 概要 このSkillは、F# Domain/Application層とC# Infrastructure/Web層の境界で発生する型変換パターンを自律的に適用します。Phase B1 Step7で確立・実証された4つの変換パターンを提供します。 ## 使用タイミング Claudeは以下の状況でこのSkillを自律的に使用すべきです: 1. **F#↔C#境界コード実装時** - Contracts層のTypeConverter実装 - Blazor ServerコンポーネントからF# Applicationサービス呼び出し - C# Infrastructure層からF# Domainモデル変換 2. **型変換エラー発生時** - `IsOk`アクセスエラー - Record型のRead-onlyプロパティエラー - Discriminated Unionのパターンマッチングエラー - Option型のnull参照エラー 3. **契約層作業時** - contracts-bridge Agent作業時の自動参照 - DTOとDomainモデル間の変換実装時 ## 4つの型変換パターン ### 1. F# Result型 ↔ C# 統合パターン **詳細**: [`patterns/result-conversion.md`](./patterns/result-conversion.md) **概要**: - **IsOk/ResultValueアクセスパターン**(推奨) - NewOk/NewError生成パターン - Railway-oriented Programming統合 **典型的なエラー**: `Error CS1061: 'FSharpResult' does not contain a definition for 'IsOk'` ### 2. F# Option型 ↔ C# 統合パターン **詳細**: [`patterns/option-conversion.md`](./patterns/option-conversion.md) **概要**: - Some/None生成パターン - IsSome/Valueアクセスパターン - null許容型変換パターン **典型的なエラー**: Option型のnull参照エラー ### 3. F# Discriminated Union ↔ C# 統合パターン **詳細**: [`patterns/du-conversion.md`](./patterns/du-conversion.md) **概要**: - switch式パターンマッチング - Role型(Discriminated Union)のC#統合 - Enumとの違い(重要) **典型的なエラー**: `Error CS0246: The type or namespace name 'Role' could not be found` ### 4. F# Record型 ↔ C# 統合パターン **詳細**: [`patterns/record-conversion.md`](./patterns/record-conversion.md) **概要**: - コンストラクタベース初期化パターン(必須) - camelCaseパラメータ使用 - Read-onlyプロパティ対応 **典型的なエラー**: `Error CS0200: Property or indexer cannot be assigned to -- it is read only` ## 品質基準 このSkillを適用した実装は以下を満たすべきです: - ✅ **型安全性**: コンパイル時型チェック完全通過 - ✅ **実行時安全性**: null参照例外ゼロ - ✅ **パフォーマンス**: 不要な変換オーバーヘッドなし - ✅ **可読性**: F#/C#それぞれの慣用句に準拠 ## Phase B1での実証結果 - **実装箇所**: 36ファイル(Contracts層7ファイル・Web層3コンポーネント) - **修正エラー数**: 36件の型変換エラーを完全解決 - **品質評価**: 97/100点(Clean Architecture準拠) - **成功率**: 100%(0 Warning/0 Error達成) ## 関連Agents - **contracts-bridge**: F#↔C#境界実装専門Agent(このSkillの知見を活用) - **csharp-web-ui**: Blazor Server実装時にこのSkillを参照 - **csharp-infrastructure**: Infrastructure層実装時にこのSkillを参照 ## 注意事項 1. **F# Record型は不変型**: C#のオブジェクト初期化子は使用不可 2. **Discriminated UnionはEnumではない**: switch式でパターンマッチング必須 3. **Option型はnullではない**: IsSome/Noneチェック必須 4. **Result型は例外ではない**: IsOk/ErrorValueで明示的処理 ## 参考資料 - Phase B1 Step7実装記録: `Doc/08_Organization/Completed/Phase_B1/Step07_完了報告.md` - contracts-bridge Agent定義: `.claude/agents/contracts-bridge.md` - tech_stack_and_conventionsメモリー: F#↔C# 型変換パターンセクション