ios について
ios は、Apple SDK でネイティブ iOS アプリを開発するためのスキルで、Swift または Objective-C を使う開発者向けです。シーンベースのライフサイクル、権限設定、Human Interface Guidelines を中心に扱います。
主な機能
- 01UIKit と SwiftUI による UI 構築
- 02シーンベースのライフサイクル管理
- 03Info.plist での権限設定
- 04HIG に沿ったアクセシビリティとレイアウト
- 05Xcode によるビルドとテスト
活用シーン
- 01ネイティブ iOS アプリの開発
- 02カメラや位置情報の権限対応
- 03シーン状態の管理
- 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 の使い方を共有しています。
コメント
Markdown 対応