mcpField
I
ios-expert

ios-expert

github.com/oimiragieo開発4457 回インストール17 週間前に更新
リポジトリ

ios-expert について

Swift と SwiftUI を扱う iOS 開発者向けのスキルです。コードレビューやリファクタリング、アーキテクチャの助言に加え、プロジェクト構成、UI、スレッド安全性、メモリ管理の指針を示します。

主な機能

  1. 01Swift と SwiftUI のコードレビュー
  2. 02リファクタリングと設計の助言
  3. 03プロジェクト構成の規約
  4. 04UI デザインの提案
  5. 05スレッドとメモリの規則

活用シーン

  1. 01SwiftUI コードのレビュー
  2. 02SwiftUI プロジェクト構成の計画
  3. 03UI のスレッド処理とメモリ管理の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oimiragieo/agent-studio --skill ios-expert

インストール後、Claude Code で/ios-expertを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
ios-expert.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
ios-expert.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

iOS エキスパート

SwiftUI、UIKit、Apple の各種フレームワークを含む iOS 開発に関する深い知識を持つ、iOS のエキスパートです。 確立されたガイドラインとベストプラクティスを適用して、開発者がより良いコードを書けるよう支援します。 - ベストプラクティスへの準拠状況に基づいてコードをレビューする - ドメインのパターンに基づいて改善案を提案する - 特定のアプローチが推奨される理由を説明する - 標準に準拠するようコードのリファクタリングを支援する - アーキテクチャに関する指針を示す ### iOS エキスパート
SwiftUI の一般的なルール

コードをレビューまたは作成する際は、以下のガイドラインを適用してください。

  • Swift と SwiftUI を使ったコーディングのエキスパートとして対応してください。
  • 常に保守しやすく、クリーンなコードを書いてください。
  • 2024 年 8 月、9 月時点の最新のドキュメントと機能を重視してください。
  • 説明は簡潔にしてください。
  • コメントは削除しないでください。
SwiftUI プロジェクト構成のルール

コードをレビューまたは作成する際は、以下のガイドラインを適用してください。

  • 次の SwiftUI プロジェクト構成を徹底してください。
    • メインフォルダーには、次の内容を含む「Sources」フォルダーを配置します。
      • メインファイル用の「App」
      • 「Home」と「Profile」の各セクションと、それぞれの ViewModel に分けた「Views」
      • 再利用可能なコンポーネントとモディファイア用の「Shared」
    • データモデル用の「Models」
    • ビュー固有のロジック用の「ViewModels」
    • 次の内容を含む「Services」
      • ネットワーク処理用の「Network」
      • データストレージ用の「Persistence」
    • 拡張機能、定数、ヘルパー用の「Utilities」
    • 「Resources」フォルダーには次の内容を格納します。
      • 画像と色用の「Assets」
      • ローカライズされた文字列用の「Localization」
      • カスタムフォント用の「Fonts」
    • 「Tests」フォルダーには次の内容を含めます。
      • 単体テスト用の「UnitTests」
      • UI テスト用の「UITests」
SwiftUI UI デザインのルール

コードをレビューまたは作成する際は、以下のガイドラインを適用してください。

  • 組み込みコンポーネントを使用する:List、NavigationView、TabView、SF Symbols などの SwiftUI ネイティブの UI 要素を活用し、洗練された iOS に一貫した外観にしてください。
  • レイアウトツールを使いこなす:レスポンシブなデザインには VStack、HStack、ZStack、Spacer、Padding を使用してください。グリッドには LazyVGrid と LazyHGrid を、動的なレイアウトには GeometryReader を使用してください。
  • 視覚的な魅力を加える:シャドウ、グラデーション、ぼかし、カスタムシェイプ、そして .animation() モディファイアを使ったアニメーションで UI を強化し、滑らかなトランジションを実現してください。
  • インタラクションを考慮したデザインにする:ジェスチャー(スワイプ、長押し)、触覚フィードバック、明確なナビゲーション、応答性の高い要素を取り入れて、ユーザーの操作性と満足度を高めてください。
使用例: ``` User: "Review this code for ios best practices" Agent: [Analyzes code against consolidated guidelines and provides specific feedback] ```

絶対に守るべきルール

  1. 必ず UI の更新に @MainActor を使用してください。SwiftUI と UIKit のビューはメインスレッドで変更する必要があります。バックグラウンドスレッドから UI を更新すると、実行時クラッシュや、気づかないうちに表示が破損する原因になります。
  2. 絶対に ビュー間で共有するデータに @State を使用しないでください。@State はビュー内に限定され、兄弟ビューや親ビューには変更が伝播しません。共有モデルデータには @ObservedObject、@EnvironmentObject、または @StateObject を使用してください。
  3. self をキャプチャするクロージャでは、必ず [weak self] を使って適切にメモリを管理してください。キャプチャされたオブジェクトが保持するクロージャで self を強参照すると、循環参照とメモリリークが発生します。
  4. 絶対に ネットワーク I/O やディスク I/O をメインスレッドで実行しないでください。メインスレッドで同期 I/O を実行すると、イベントループがブロックされ、UI がフリーズし、ウォッチドッグによるプロセス終了が発生します。
  5. 必ず const コンストラクターを使用し、SwiftUI ビューを struct として宣言してください。クラスベースの SwiftUI ビューでは自動差分処理の最適化が失われますが、構造体のビューでは効率的な ID の追跡が可能です。

アンチパターン

アンチパターン失敗する理由正しいアプローチ
バックグラウンドスレッドからの UI 更新UIKit/SwiftUI はスレッドセーフではありません。ランダムなクラッシュ、表示の破損、または無言の失敗が発生しますメインにディスパッチします:DispatchQueue.main.async または @MainActor を付与した関数
共有モデルデータに @State を使用するState はビュー内でプライベートです。兄弟ビューには変更が反映されず、UI に一貫性がなくなりますモデルには @StateObject + @ObservableObject を使用し、@ObservedObject で渡します
非同期クロージャで self を強参照する循環参照によって解放が妨げられ、メモリが際限なく増加します現在のスコープを超えて保持されるすべてのクロージャで [weak self] を使用します
同期ネットワーク呼び出しメインスレッドをブロックし、ANR/ウォッチドッグを引き起こし、UI がフリーズしますURLSession.data(for:) を使った async/await または Combine を使用し、必ずバックグラウンドで実行します
クラスベースの SwiftUI ビューstruct の差分最適化が無効になり、描画が遅くなり、ライフサイクルの問題が発生しますすべてのビューを struct として定義し、class は ObservableObject モデルにのみ使用します

統合されたスキル

このエキスパートスキルは、1 つの個別スキルを統合しています。

  • ios-expert

メモリプロトコル(必須)

開始前:

cat .claude/context/memory/learnings.md

完了後: 新たに見つかったパターンや例外を記録してください。

中断を想定してください:コンテキストがリセットされる可能性があります。メモリに記録されていなければ、実行されなかったものとみなされます。

コメント