mcpField
I
ios

ios

github.com/alphaonedev開発41 回インストール
リポジトリ

ios について

ios は、Apple SDK でネイティブ iOS アプリを開発するためのスキルで、Swift または Objective-C を使う開発者向けです。シーンベースのライフサイクル、権限設定、Human Interface Guidelines を中心に扱います。

主な機能

  1. 01UIKit と SwiftUI による UI 構築
  2. 02シーンベースのライフサイクル管理
  3. 03Info.plist での権限設定
  4. 04HIG に沿ったアクセシビリティとレイアウト
  5. 05Xcode によるビルドとテスト

活用シーン

  1. 01ネイティブ iOS アプリの開発
  2. 02カメラや位置情報の権限対応
  3. 03シーン状態の管理
  4. 04クロスプラットフォーム開発での iOS 機能統合

インストール

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill ios

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

詳細

ios

目的

このスキルでは、Apple の SDK を使用した iOS 開発の主要なタスクを扱います。シーンベースのアプリライフサイクル管理、Info.plist の NSUsageDescription による権限設定、UI/UX の一貫性を保つための Human Interface Guidelines(HIG)の遵守に重点を置いています。

使用する場面

  • Swift または Objective-C でネイティブ iOS アプリを構築するとき。
  • シーンベースのアーキテクチャ(例:iOS 13 以降)でアプリの状態を管理するとき。
  • カメラや位置情報などのユーザー権限をリクエストするとき。
  • アクセシビリティやデザイン基準に関する HIG の遵守を徹底するとき。
  • クロスプラットフォームプロジェクトに iOS 固有の機能を統合するとき。

主な機能

  • UI 構築に UIKit や SwiftUI などの iOS SDK コンポーネントを使用します。
  • シーンベースのライフサイクルイベント(例:sceneDidBecomeActive)を処理します。
  • Info.plist にキー(例:NSCameraUsageDescription)を追加して権限を管理します。
  • アダプティブレイアウトや VoiceOver のサポートなどを通じて HIG の遵守を徹底します。
  • Xcode ツールと Apple エコシステムとの統合をサポートします。

使用パターン

  • まず Xcode プロジェクトを設定します。xcodegen を使用するか、Xcode の UI から作成し、Swift Package Manager で依存関係を追加します。
  • アプリのライフサイクルを管理するには、シーンマニフェストに UISceneDelegate のメソッドを実装します。
  • 権限を処理するには、Info.plist を直接編集するか、Xcode のプロパティリストエディタを使用して、用途の説明をそれぞれ文字列として追加します。
  • Auto Layout の制約を使用し、Accessibility Inspector でテストして HIG に準拠します。
  • Xcode のビルドスキームを使って、シミュレーターまたはデバイスでアプリをテストします。デバイスを選択してから、xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14' build を実行します。

主なコマンド/API

  • CLI コマンド:ビルドには xcodebuild を使用します:xcodebuild -workspace MyApp.xcworkspace -scheme MyApp clean build。アーカイブには xcodebuild -scheme MyApp -configuration Release archive を使用します。
  • API エンドポイント:直接使用するエンドポイントはありません。カメラ権限には AVCaptureDevice.requestAccess(for: .video) などの iOS API を使用します。
  • コードスニペット:
    • カメラ権限をリクエストする:
      import AVFoundation
      AVCaptureDevice.requestAccess(for: .video) { granted in
          if granted { print("Access granted") } else { print("Denied") }
      }
      
    • SceneDelegate.swift でシーンのライフサイクルを処理する:
      func sceneDidBecomeActive(_ scene: UIScene) {
          // Resume tasks, e.g., start timers
      }
      func sceneWillResignActive(_ scene: UIScene) {
          // Pause tasks
      }
      
    • Info.plist に権限を追加する(XML 形式):
      <key>NSCameraUsageDescription</key>
      <string>This app uses the camera for photo capture.</string>
      
  • 設定形式:権限には Info.plist(キーと値のペア)を使用し、iCloud などの機能にはエンタイトルメントファイルを使用します(例:<key>com.apple.security.application-groups</key><string>group.com.example</string>)。

統合に関する注意

  • Xcode でリンクしてほかのツールと統合します。CocoaPods で Pod を追加(pod install)するか、Package.swift にパッケージを追加します。
  • App Store Connect などの Apple サービスでは、API キーに環境変数を使用します。$APPLE_API_KEY を設定してスクリプトから参照します(例:xcrun altool --upload-app --file MyApp.ipa --username $APPLE_USERNAME --password $APPLE_API_KEY)。
  • Android(モバイルクラスター経由)と組み合わせる場合は、共通の設定を使用しつつ、条件付きブロックで iOS 固有のコードを処理します(例:Swift の #if os(iOS))。
  • CI/CD では GitHub Actions と統合します。actions/checkout を使用してから、macOS ランナーで xcodebuild を実行します。
  • サードパーティ SDK を使用する場合は、Swift Package Manager で追加します。Package.swift を編集し、swift package resolve で依存関係を解決します。

エラー処理

  • 権限が拒否された場合は、AVAuthorizationStatus.authorized で状態を確認し、必要に応じて UIAlertController を使ってユーザーに許可を求めます。
  • xcodebuild のビルドエラーは、出力を解析して対処します。「Command PhaseScriptExecution failed」を探してスクリプトを修正し、詳細を確認するには xcodebuild -verbose を使用します。
  • ライフサイクルの問題については、デリゲートメソッドにログを追加します(例:sceneWillEnterForeground で print("Scene error: \(error)"))。
  • よくある解決方法:Info.plist のキーが不足していると、Xcode のビルド時にエラーが発生します。プロジェクトエディタでキーを追加してください。HIG に違反している場合は、Xcode のアクセシビリティ監査ツールを使って警告を解消します。
  • API 呼び出しには try-catch を使います。例:do { try AVAudioSession.sharedInstance().setCategory(.playAndRecord) } catch { print(error.localizedDescription) }。

使用例

  • 例 1:カメラの使用許可が必要な基本アプリ Xcode プロジェクトを新規作成し、Info.plist に NSCameraUsageDescription を追加して、ViewController.swift で許可をリクエストする処理を実装します。

    import UIKit
    import AVFoundation
    class ViewController: UIViewController {
        override func viewDidLoad() { super.viewDidLoad(); requestCamera() }
        func requestCamera() { AVCaptureDevice.requestAccess(for: .video) { granted in if granted { /* Proceed */ } } }
    }
    

    xcodebuild -scheme MyApp build でビルドして実行し、シミュレーターでテストします。

  • 例 2:アプリのライフサイクルの管理 シーンベースのアプリでは、SceneDelegate.swift で状態の変化を処理します。

    import UIKit
    class SceneDelegate: UIResponder, UIWindowSceneDelegate {
        func sceneDidBecomeActive(_ scene: UIScene) { print("App active") }
        func sceneWillEnterForeground(_ scene: UIScene) { /* Reload data */ }
    }
    

    xcodebuild test を使って、アプリのテスト中にライフサイクルイベントを検証します。

グラフの関係

  • 関連先:mobile(クラスター)。モバイル開発のパターンを共有しています。
  • 接続先:android(スキル)。クロスプラットフォームのモバイル連携を介してつながっています。
  • リンク先:apple-ecosystem(タグ)。Apple の各種サービスを幅広く扱います。
  • 関連項目:sdk-tools(暗黙)。iOS のコンテキストで SDK の使い方を共有しています。

コメント