SwiftUIAudit — SwiftUI デザインシステム監査ツール

Tool

概要

SwiftUIAudit は、SwiftUI アプリケーション向けの静的監査(design-system compliance auditor)ツールです。リポジトリの README によれば、ハードコーディングされた値やアクセシビリティの問題、パフォーマンスのアンチパターンをリリース前に検出することを目的としています。SwiftLint が提供するアクセシビリティルールは限定的であり、タイポグラフィ・カラートークン・スペーシングといったデザインシステム準拠のチェック、タッチターゲットやローディング/エラーパターンの検証、SwiftUI 固有のパフォーマンス問題に対応するギャップを埋めるツールとして位置づけられています。設定ファイル(YAML)と実行サンプルが付属しており、CI 連携やローカル実行が想定されています。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 5
  • ファイル数: 8
  • メインの言語: Swift

主な特徴

  • デザインシステム準拠チェック(タイポグラフィ/カラー/スペーシングのトークン使用検証)
  • アクセシビリティ検査(ラベルやタッチターゲットなどの不足検出)
  • SwiftUI 固有のパフォーマンスアンチパターン検出
  • YAML による設定・CI 統合が可能(例示ファイルと出力サンプルあり)

技術的なポイント

リポジトリには Package.swift が含まれており、Swift Package Manager(SPM)ベースの実行可能ツールとして開発されていることが推測されます。また .swiftui-audit.example.yml の存在から、ルールや閾値をプロジェクトごとにカスタマイズできる設計です。EXAMPLE_OUTPUT.md によって、どのような形式で警告やレポートが出力されるか明示されており、CI(GitHub Actions 等)での自動実行を想定した出力フォーマットになっている可能性が高いです。

技術的には、Swift のソースコード解析を行って特定のパターンを検出する必要があるため、SwiftSyntax や SourceKit のようなパーサ/AST ツールを利用していることが考えられます。チェック対象として README に挙げられている項目(タイポグラフィトークン、カラートークン、スペーシング、タッチターゲット、読み込み・エラーハンドリング、パフォーマンス)を自動検出するためには、View のコード内に直接書かれた定数(例: Color(red:…), font: .system(size: …)、padding 固定値)や、アクセシビリティ修飾子の未使用、複雑な body 計算や不要な再描画を引き起こすパターン(重い同期処理、頻繁に変わる状態に高コストの計算を混在)といった AST レベルのパターン抽出が必要です。

導入フローとしては、ローカルで SPM によりビルドして実行、もしくは CI に組み込み、YAML でルールのオン/オフや閾値を制御、出力をパイプして警告に変換する運用が考えられます。軽量な静的チェックであればプルリクエスト段階で検出可能になり、デザインシステムの逸脱を早期に防ぐ効果が期待できます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • .swiftui-audit.example.yml: file
  • EXAMPLE_OUTPUT.md: file
  • LICENSE: file
  • Package.swift: file

…他 3 ファイル

まとめ

SwiftUI の設計品質やアクセシビリティ、パフォーマンスを CI で自動監査できる有用なツールです。

リポジトリ情報:

READMEの抜粋:

SwiftUI Audit

A design system compliance auditor for SwiftUI projects. Catches hard-coded values, accessibility issues, and performance anti-patterns before they ship.

Why?

SwiftLint has 2 accessibility rules. That’s it. No tool exists for:

  • Typography token compliance
  • Color token compliance
  • Spacing token compliance
  • Touch target validation
  • Loading/error state patterns
  • Performance anti-patterns in SwiftUI

SwiftUI Audit fills this gap.

Real-World Example

We ran this on a…