uikit-max について
uikit-maxは、SwiftとUIKitのコードレビュー用スキルです。正確性、APIの新しさ、アクセシビリティ、パフォーマンス、並行処理、プロジェクト規約を確認し、実際の問題に絞って報告します。
主な機能
- 01非推奨UIKit APIの確認
- 02ビューとAuto Layoutのレビュー
- 03ナビゲーションとコントローラーの検証
- 04アクセシビリティと性能の確認
- 05並行処理とコード衛生の検査
活用シーン
- 01プルリクエスト前のUIKit変更レビュー
- 02iOSインターフェースのアクセシビリティ問題の発見
- 03レイアウトとライフサイクル実装の確認
- 04並行処理や非推奨APIの点検
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tornikegomareli/ uikit-agent-skill --skill uikit-maxインストール後、Claude Code で/uikit-maxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/accessibility.mdapi.mdconcurrency.mdcontrollers.mddesign.mdhygiene.mdlayout.mdnavigation.mdperformance.mdswift.mdtableview-collectionview.mdviews.md詳細
Swift と UIKit のコードについて、正確性、最新の API の使用状況、プロジェクトの規約への準拠をレビューします。実際の問題のみ報告し、細かな指摘や根拠のない問題の作成は避けてください。
レビュー手順:
references/api.mdを使用して、非推奨 API を確認します。references/views.mdを使用して、ビュー、サブクラス化、コンポジションのパターンがベストプラクティスに従っているか確認します。references/layout.mdを使用して、Auto Layout の使用方法と制約のパターンを検証します。references/controllers.mdを使用して、ビューコントローラーのライフサイクルとアーキテクチャが適切か確認します。references/navigation.mdを使用して、ナビゲーションのパターンが最新で保守しやすいか確認します。references/tableview-collectionview.mdを使用して、UITableView と UICollectionView の使用方法を検証します。references/design.mdを使用して、Apple の Human Interface Guidelines に準拠したアクセシブルなデザインが採用されているか確認します。references/accessibility.mdを使用して、Dynamic Type、VoiceOver、trait などへのアクセシビリティ対応を検証します。references/performance.mdを使用して、コードが効率的に実行されるか確認します。references/concurrency.mdを使用して、並行処理とスレッドセーフティを確認します。references/swift.mdを使用して、Swift コードを簡易検証します。references/hygiene.mdを使用して、最後にコードの衛生状態を確認します。
レビューが部分的な場合は、関連するリファレンスファイルのみを読み込んでください。
基本方針
- iOS 26 が存在し、最新の iOS バージョンです。プロジェクトで別途指定されていない限り、新しいコードでは iOS 17 以降を最低デプロイメントターゲットとします。
- Swift 6.2 以降を対象とし、最新の Swift 並行処理を使用します。
- プロジェクトのデプロイメントターゲットを尊重してください。 最新の API を提案する前に、その API が利用可能か確認してください。プロジェクトが古い iOS バージョンを対象としている場合は、利用可能な最善の代替案を推奨し、新しい API は
if #availableチェックで囲んでください。リファレンスファイルには主要な API の対応 iOS バージョン(例:「iOS 15+」)が記載されています。代替手段を示さずに、プロジェクトの最低ターゲットで利用できない API を提案しないでください。 - UIKit の開発者として、ユーザーは UIKit のパターンを期待しています。明示的に求められない限り、SwiftUI への置き換えを提案しないでください。
- 事前に確認せず、サードパーティのフレームワークを導入しないでください。
- 複数のクラス、構造体、列挙型を同じファイルに配置するのではなく、型ごとに異なる Swift ファイルに分けてください。
- アプリの機能によってフォルダー構成を決め、一貫性のあるプロジェクト構成にしてください。
- 新しいコードでは、プロジェクトがすでに Interface Builder を広範に使用している場合を除き、Storyboard や XIB よりも Auto Layout アンカーを使ったプログラムによる UI を優先してください。
出力形式
ファイルごとに指摘事項をまとめます。各問題について:
- ファイル名と該当する行を示します。
- 違反しているルール(例:「非推奨の
UIAlertViewではなくUIAlertControllerを使用する」)を明記します。 - 修正前と修正後のコードを簡潔に示します。
問題のないファイルは省略します。最後に、優先度の高い順に、最も影響の大きい変更をまとめてください。
出力例:
ProfileViewController.swift
8 行目:非推奨の UIAlertView ではなく UIAlertController を使用してください。
// Before
let alert = UIAlertView(title: "Error", message: msg, delegate: self, cancelButtonTitle: "OK")
alert.show()
// After
let alert = UIAlertController(title: "Error", message: msg, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default))
present(alert, animated: true)
24 行目:NSLayoutConstraint.activate で制約をまとめて有効にしてください。
// Before
label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
label.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
// After
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.topAnchor),
label.leadingAnchor.constraint(equalTo: view.leadingAnchor)
])
42 行目:制約を追加する前に translatesAutoresizingMaskIntoConstraints = false を設定してください。
// Before
view.addSubview(label)
label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
// After
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.topAnchor)
])
まとめ
- 非推奨 API(高): 8 行目の
UIAlertViewをUIAlertControllerに置き換える必要があります。 - レイアウト(中): 24 行目の制約を個別に有効化するのではなく、
NSLayoutConstraint.activateを使用してください。 - レイアウト(中): 42 行目で
translatesAutoresizingMaskIntoConstraintsが設定されていないため、制約の競合が発生します。
例終わり。
参考資料
references/api.md— 非推奨のUIKit APIと、現在推奨されている代替API。references/views.md— UIViewのライフサイクル、構成、サブクラス化、カスタム描画。references/layout.md— Auto Layout、レイアウトアンカー、UIStackView、固有のコンテンツサイズ、Safe Area。references/controllers.md— UIViewControllerのライフサイクル、コンテナコントローラー、Massive View Controllerの回避。references/navigation.md— ナビゲーションコントローラー、タブバー、コーディネーターパターン、モーダル表示。references/tableview-collectionview.md— 差分可能なデータソース、コンポジitionalレイアウト、セルの構成、プリフェッチ。references/design.md— Human Interface Guidelines、UIAppearance、トレイトコレクション、ダークモード、アダプティブレイアウト。references/accessibility.md— VoiceOver、Dynamic Type、アクセシビリティ特性、ラベル、ヒント。references/performance.md— オフスクリーンレンダリング、レイヤーの最適化、画像キャッシュ、メインスレッドのパフォーマンス。references/concurrency.md— メインスレッドの安全性、async/await、DispatchQueueからの移行、バックグラウンドタスク。references/swift.md— 最新のSwiftコード、Swiftの並行処理、Objective-Cとの相互運用。references/hygiene.md— メモリ管理、保持サイクル、KVO/通知のクリーンアップ、deinitのパターン。
コメント
Markdown 対応