mobile-ios-design
iOS Human Interface GuidelinesとSwiftUIのパターンを熟知し、ネイティブiOSアプリの構築を支援します。iOSインターフェースの設計、SwiftUIビューの実装、またはAppleのデザイン原則に沿ったアプリ開発を行う際に活用してください。
description の原文を見る
Master iOS Human Interface Guidelines and SwiftUI patterns for building native iOS apps. Use when designing iOS interfaces, implementing SwiftUI views, or ensuring apps follow Apple's design principles.
SKILL.md 本文
iOS Mobile Design
iOS Human Interface Guidelines (HIG) と SwiftUI パターンをマスターして、Apple プラットフォームに自然に統合された洗練されたネイティブ iOS アプリケーションを構築します。
このスキルを使う場面
- Apple HIG に従った iOS アプリインターフェースの設計
- SwiftUI ビューとレイアウトの構築
- iOS ナビゲーションパターン (NavigationStack, TabView, sheets) の実装
- iPhone と iPad の適応的レイアウトの作成
- SF Symbols とシステムタイポグラフィの使用
- アクセシブルな iOS インターフェースの構築
- iOS 固有のジェスチャーとインタラクションの実装
- Dynamic Type と Dark Mode 対応の設計
コア概念
1. Human Interface Guidelines の原則
明確さ: コンテンツが読みやすく、アイコンが正確で、装飾が控えめ 配慮: UI がユーザーのコンテンツ理解を助け、それ自体が目立たない 奥行き: ビジュアルレイヤーとモーションが階層を表現し、ナビゲーションを可能にする
プラットフォーム別の考慮事項:
- iOS: タッチファースト、コンパクトディスプレイ、ポートレート向き
- iPadOS: より大きなキャンバス、マルチタスキング、ポインタ対応
- visionOS: 空間コンピューティング、アイ/ハンド入力
2. SwiftUI レイアウトシステム
スタックベースレイアウト:
// 垂直スタック(配置とスペーシング付き)
VStack(alignment: .leading, spacing: 12) {
Text("Title")
.font(.headline)
Text("Subtitle")
.font(.subheadline)
.foregroundStyle(.secondary)
}
// 柔軟なスペーシングを持つ水平スタック
HStack {
Image(systemName: "star.fill")
Text("Featured")
Spacer()
Text("View All")
.foregroundStyle(.blue)
}
グリッドレイアウト:
// 利用可能な幅を埋める適応的グリッド
LazyVGrid(columns: [
GridItem(.adaptive(minimum: 150, maximum: 200))
], spacing: 16) {
ForEach(items) { item in
ItemCard(item: item)
}
}
// 固定列グリッド
LazyVGrid(columns: [
GridItem(.flexible()),
GridItem(.flexible()),
GridItem(.flexible())
], spacing: 12) {
ForEach(items) { item in
ItemThumbnail(item: item)
}
}
3. ナビゲーションパターン
NavigationStack (iOS 16+):
struct ContentView: View {
@State private var path = NavigationPath()
var body: some View {
NavigationStack(path: $path) {
List(items) { item in
NavigationLink(value: item) {
ItemRow(item: item)
}
}
.navigationTitle("Items")
.navigationDestination(for: Item.self) { item in
ItemDetailView(item: item)
}
}
}
}
TabView (iOS 18+):
struct MainTabView: View {
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
Tab("Home", systemImage: "house", value: 0) {
HomeView()
}
Tab("Search", systemImage: "magnifyingglass", value: 1) {
SearchView()
}
Tab("Profile", systemImage: "person", value: 2) {
ProfileView()
}
}
}
}
4. システム統合
SF Symbols:
// 基本的なシンボル
Image(systemName: "heart.fill")
.foregroundStyle(.red)
// レンダリングモード付きシンボル
Image(systemName: "cloud.sun.fill")
.symbolRenderingMode(.multicolor)
// 可変シンボル (iOS 16+)
Image(systemName: "speaker.wave.3.fill", variableValue: volume)
// シンボルエフェクト (iOS 17+)
Image(systemName: "bell.fill")
.symbolEffect(.bounce, value: notificationCount)
Dynamic Type:
// セマンティックフォントを使用
Text("Headline")
.font(.headline)
Text("ユーザーの設定に応じてスケールするボディテキスト")
.font(.body)
// Dynamic Type を尊重するカスタムフォント
Text("Custom")
.font(.custom("Avenir", size: 17, relativeTo: .body))
5. ビジュアルデザイン
色とマテリアル:
// ライト/ダークモードに自動適応するセマンティックカラー
Text("Primary")
.foregroundStyle(.primary)
Text("Secondary")
.foregroundStyle(.secondary)
// ブラー効果用のシステムマテリアル
Rectangle()
.fill(.ultraThinMaterial)
.frame(height: 100)
// オーバーレイ用のビブラントマテリアル
Text("Overlay")
.padding()
.background(.regularMaterial, in: RoundedRectangle(cornerRadius: 12))
シャドウと奥行き:
// 標準的なカード影
RoundedRectangle(cornerRadius: 16)
.fill(.background)
.shadow(color: .black.opacity(0.1), radius: 8, y: 4)
// 浮き上がった外観
.shadow(radius: 2, y: 1)
.shadow(radius: 8, y: 4)
クイックスタートコンポーネント
import SwiftUI
struct FeatureCard: View {
let title: String
let description: String
let systemImage: String
var body: some View {
HStack(spacing: 16) {
Image(systemName: systemImage)
.font(.title)
.foregroundStyle(.blue)
.frame(width: 44, height: 44)
.background(.blue.opacity(0.1), in: Circle())
VStack(alignment: .leading, spacing: 4) {
Text(title)
.font(.headline)
Text(description)
.font(.subheadline)
.foregroundStyle(.secondary)
.lineLimit(2)
}
Spacer()
Image(systemName: "chevron.right")
.foregroundStyle(.tertiary)
}
.padding()
.background(.background, in: RoundedRectangle(cornerRadius: 12))
.shadow(color: .black.opacity(0.05), radius: 4, y: 2)
}
}
ベストプラクティス
- セマンティックカラーを使用: ライト/ダークモード自動対応のため、常に
.primary,.secondary,.backgroundを使用してください - SF Symbols を活用: 一貫性と自動アクセシビリティのためシステムシンボルを使用してください
- Dynamic Type に対応: 固定サイズではなく、セマンティックフォント (
.body,.headline) を使用してください - アクセシビリティを追加:
.accessibilityLabel()と.accessibilityHint()モディファイアを含めてください - セーフエリアを尊重:
safeAreaInsetを尊重し、スクリーン端に固定パディングを避けてください - 状態復元を実装: ユーザーの状態を保持するために
@SceneStorageを使用してください - iPad マルチタスキングをサポート: スプリットビューとスライドオーバーに対応する設計をしてください
- 実機でテスト: シミュレータは完全なハプティクスとパフォーマンス体験をキャプチャしていません
よくある問題
- レイアウトの崩れ:
.fixedSize()は慎重に使用してください。柔軟なレイアウトを優先してください - パフォーマンスの問題: 長いスクロールリストには
LazyVStack/LazyHStackを使用してください - ナビゲーションのバグ:
NavigationLinkの値がHashableであることを確認してください - Dark Mode の問題: ハードコーディングされた色を避けてください。セマンティックカラーまたはアセットカタログカラーを使用してください
- アクセシビリティの失敗: VoiceOver を有効にしてテストしてください
- メモリリーク: クロージャ内での強い参照循環に注意してください
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- wshobson
- リポジトリ
- wshobson/agents
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/wshobson/agents / ライセンス: MIT
関連スキル
nano-banana-2
inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」
octocode-slides
洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。
gpt-image2-ppt
OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。
nano-banana
Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。
oiloil-ui-ux-guide
モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。
axiom-hig-ref
Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。