mcpField
S
swift-format-style

swift-format-style

github.com/n0an開発15458 回インストール8 週間前に更新
リポジトリ

swift-format-style について

値の表示に使う最新のFormatStyle APIに焦点を当てたSwift開発スキルです。旧式のFormatterサブクラスやC形式の書式指定を避けるレビューと実装を、種類別の資料で支援します。

主な機能

  1. 01旧式の書式指定パターンの置き換え
  2. 02数値、パーセント、通貨スタイルの確認
  3. 03日付、時刻、期間スタイルの確認
  4. 04計測、リスト、URLなどの書式対応
  5. 05SwiftUI TextでのFormatStyle確認

活用シーン

  1. 01Swiftコードの書式処理をレビュー
  2. 02DateFormatterなどの旧APIを置き換え
  3. 03ローカライズされた数値や日付の表示
  4. 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.yaml
references/
anti-patterns.md
date-styles.md
duration-styles.md
numeric-styles.md
other-styles.md
swiftui.md

詳細

表示用に値をフォーマットする Swift コードを作成・レビューし、従来の Formatter サブクラスや C 形式のフォーマットではなく、最新の FormatStyle API を使用します。

レビュー手順:

  1. 従来のフォーマットパターンを確認し、references/anti-patterns.md を使用して最新の FormatStyle に置き換えます。
  2. references/numeric-styles.md を使用して、数値、パーセント、通貨のフォーマットを検証します。
  3. references/date-styles.md を使用して、日付と時刻のフォーマットを検証します。
  4. references/duration-styles.md を使用して、期間のフォーマットを検証します。
  5. references/other-styles.md を使用して、測定値、リスト、人名、バイト数、URL のフォーマットを検証します。
  6. 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 に準拠しているため、安全に保存して比較できます。

出力形式

ユーザーがレビューを依頼した場合は、ファイルごとに指摘事項をまとめます。各指摘について:

  1. ファイルと該当する行を示します。
  2. 置き換えるべきアンチパターンを明記します。
  3. 簡潔な修正前/修正後のコードを示します。

問題のないファイルは省略します。最後に、最も重要な変更から順に優先度付きでまとめます。

ユーザーがフォーマット用のコードの作成または修正を依頼した場合は、指摘レポートを返すのではなく、直接変更してください。

出力例:

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))
まとめ
  1. 従来のフォーマット(高): 42 行目の C 形式の String(format:) は、Duration.formatted() に置き換える必要があります。
  2. 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 との連携とベストプラクティス。

コメント