swift-format-style について
値の表示に使う最新のFormatStyle APIに焦点を当てたSwift開発スキルです。旧式のFormatterサブクラスやC形式の書式指定を避けるレビューと実装を、種類別の資料で支援します。
主な機能
- 01旧式の書式指定パターンの置き換え
- 02数値、パーセント、通貨スタイルの確認
- 03日付、時刻、期間スタイルの確認
- 04計測、リスト、URLなどの書式対応
- 05SwiftUI TextでのFormatStyle確認
活用シーン
- 01Swiftコードの書式処理をレビュー
- 02DateFormatterなどの旧APIを置き換え
- 03ローカライズされた数値や日付の表示
- 04SwiftUIテキストの書式指定を修正
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ n0an/ swift-formatstyle-agent-skill --skill swift-format-styleインストール後、Claude Code で/swift-format-styleを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/anti-patterns.mddate-styles.mdduration-styles.mdnumeric-styles.mdother-styles.mdswiftui.md詳細
表示用に値をフォーマットする Swift コードを作成・レビューし、従来の Formatter サブクラスや C 形式のフォーマットではなく、最新の FormatStyle API を使用します。
レビュー手順:
- 従来のフォーマットパターンを確認し、
references/anti-patterns.mdを使用して最新の FormatStyle に置き換えます。 references/numeric-styles.mdを使用して、数値、パーセント、通貨のフォーマットを検証します。references/date-styles.mdを使用して、日付と時刻のフォーマットを検証します。references/duration-styles.mdを使用して、期間のフォーマットを検証します。references/other-styles.mdを使用して、測定値、リスト、人名、バイト数、URL のフォーマットを検証します。references/swiftui.mdを使用して、SwiftUI の Text ビューが FormatStyle と適切に連携しているか確認します。
作業の一部だけを行う場合は、関連する参照ファイルのみを読み込みます。
基本指示
- 基本的な FormatStyle の最低対象バージョンは iOS 15+ / macOS 12+ です。Duration と URL のスタイルには iOS 16+ / macOS 13+ が必要です。
- 従来の
Formatterサブクラス(DateFormatter、NumberFormatter、MeasurementFormatter、DateComponentsFormatter、DateIntervalFormatter、PersonNameComponentsFormatter、ByteCountFormatter)は絶対に使用しないでください。 - 数値のフォーマットに C 形式の
String(format:)は絶対に使用しないでください。必ず.formatted()またはFormatStyleを直接使用してください。 - バックグラウンドスレッドでのフォーマットに
DispatchQueueは絶対に使用しないでください。FormatStyle 型は値型であり、スレッドセーフです。 - 単純なケースでは
.formatted()インスタンスメソッドを優先し、再利用する設定や複雑な設定には明示的なFormatStyle型を使用してください。 - SwiftUI では、
Text("\(value.formatted())")ではなくText(_:format:)を使用してください。 - 通貨の値には
Float/DoubleではなくDecimalを使用してください。 - FormatStyle 型はデフォルトでロケールに対応しています。ユーザーの現在のロケールとは異なる特定のロケールが必要な場合にのみ、ロケールを明示的に設定してください。
- FormatStyle 型は
CodableとHashableに準拠しているため、安全に保存して比較できます。
出力形式
ユーザーがレビューを依頼した場合は、ファイルごとに指摘事項をまとめます。各指摘について:
- ファイルと該当する行を示します。
- 置き換えるべきアンチパターンを明記します。
- 簡潔な修正前/修正後のコードを示します。
問題のないファイルは省略します。最後に、最も重要な変更から順に優先度付きでまとめます。
ユーザーがフォーマット用のコードの作成または修正を依頼した場合は、指摘レポートを返すのではなく、直接変更してください。
出力例:
RecordingView.swift
42 行目:時刻の表示には String(format:) ではなく Duration.formatted() を使用します。
// Before
let minutes = Int(duration) / 60
let seconds = Int(duration) % 60
return String(format: "%02d:%02d", minutes, seconds)
// After
Duration.seconds(duration).formatted(.time(pattern: .minuteSecond))
78 行目:文字列補間ではなく Text(_:format:) を使用します。
// Before
Text("\(fileSize.formatted(.byteCount(style: .file)))")
// After
Text(fileSize, format: .byteCount(style: .file))
まとめ
- 従来のフォーマット(高): 42 行目の C 形式の String(format:) は、Duration.formatted() に置き換える必要があります。
- SwiftUI(中): 78 行目の Text の文字列補間は、format: パラメーターを直接使用する形に変更する必要があります。
例終わり。
参照資料
references/anti-patterns.md- 置き換える従来のパターン:String(format:)、DateFormatter、NumberFormatter、その他の Formatter サブクラス。references/numeric-styles.md- 丸め、精度、符号、表記法、スケール、桁区切りを含む数値、パーセント、通貨のフォーマット。references/date-styles.md- 日付/時刻の合成、ISO 8601、相対、逐語的、HTTP、期間、コンポーネントの各スタイル。references/duration-styles.md- パターン、単位、幅、小数秒を含む Duration.TimeFormatStyle と Duration.UnitsFormatStyle。references/other-styles.md- 測定値、リスト、人名、バイト数、URL のフォーマット、およびカスタム FormatStyle の作成。references/swiftui.md- SwiftUI Text との連携とベストプラクティス。
コメント
Markdown 対応