- iOS開発とは
- iOS開発の歴史と進化
[[iPhone OSからiOSへ]]
[[Objective-CからSwiftへの移行]]
[[UIフレームワークの変遷 (UIKitからSwiftUIへ)]]
[[主要なiOSバージョンの変遷と新機能]]
- 開発を始めるための準備
[[必要な機材 (Mac)]]
[[Apple Developer Programへの登録 (無料アカウントと有料アカウントの違い)]]
[[Xcodeのインストールとセットアップ]]
[[iOSシミュレータと実機でのテスト]]
- iOSアプリのライフサイクル (概観)
[[アプリの状態 (Not Running, Inactive, Active, Background, Suspended)]]
- iOS開発の学習ロードマップ (例)
- Swiftとは
- 基本構文
[[変数 (var) と定数 (let)]]
[[型推論 (Type Inference) と型アノテーション (Type Annotation)]]
- 基本的なデータ型 (
Int, Double, Float, Bool, String, Character)
[[型安全性 (Type Safety)]]
[[演算子 (算術, 比較, 論理, レンジなど)]]
[[文字列と文字 (String and Character)]]
[[コレクション型 (Array, Set, Dictionary)]]
[[制御構文 (if/else, switch, for-in, while, repeat-while, guard)]]
[[タプル (Tuples)]]
- オプショナル (Optionals) MOC
- オプショナル型の概念 (値が存在しない可能性の明示)
[[オプショナルバインディング (if let, guard let)]]
[[オプショナルチェイニング (?)]]
[[Nil結合演算子 (??)]]
[[強制アンラップ (!) とその危険性]]
[[暗黙的アンラップオプショナル (Implicitly Unwrapped Optionals)]]
- 関数 (Functions)
[[関数の定義と呼び出し]]
[[引数ラベルとパラメータ名]]
[[デフォルト引数]]
[[可変長引数]]
[[in-out引数]]
[[関数型 (Function Types)]]
[[高階関数 (Higher-Order Functions)]]
- クロージャ (Closures)
[[クロージャ式の構文]]
[[後置クロージャ (Trailing Closures)]]
[[キャプチャリスト (Capture Lists) と循環参照]] ([weak self], [unowned self])
[[エスケープクロージャ (@escaping)]]
[[オートクロージャ (@autoclosure)]]
- クラス (Classes) と構造体 (Structures) の比較 MOC
- プロパティ (Properties)
[[ストアドプロパティ (Stored Properties)]]
[[コンピューテッドプロパティ (Computed Properties)]]
[[プロパティオブザーバ (willSet, didSet)]]
[[型プロパティ (static)]]
[[遅延ストアドプロパティ (lazy)]]
- メソッド (Methods)
[[インスタンスメソッド]]
[[型メソッド (static/class)]]
[[mutating メソッド (値型向け)]]
- サブスクリプト (Subscripts)
- 継承 (Inheritance) (クラスのみ)
[[スーパークラスとサブクラス]]
[[オーバーライド (override)]]
[[final キーワード]]
- イニシャライザ (Initializers)
[[指定イニシャライザ (Designated Initializer) と便宜イニシャライザ (Convenience Initializer)]]
[[必須イニシャライザ (required)]]
[[失敗可能イニシャライザ (init?)]]
- デイニシャライザ (Deinitializers) (
deinit)
- 列挙型 (Enumerations - Enums) MOC
[[基本的なenumの定義]]
[[関連値 (Associated Values)]]
[[Raw値 (Raw Values)]]
[[再帰的enum (indirect)]]
[[enumとswitch文の組み合わせ]]
[[Error プロトコル]]
[[throw, throws]]
[[do-catch 文]]
[[try?とtry!]]
[[defer 文]]
3.1. SwiftUI MOC (モダンな宣言的UIフレームワーク)
- SwiftUIの基本
- 基本的なView
[[Text, Image, Button, TextField, SecureField, Slider, Toggle, Picker]]
- レイアウトコンテナ
[[VStack, HStack, ZStack]]
[[Spacer, Divider]]
[[ScrollView, List, Form]]
[[LazyVStack, LazyHStack, Grid]]
[[GeometryReader]]
- 状態管理 (State Management)
[[@State]] (Viewローカルな状態)
[[@Binding]] (親子間の状態共有)
[[@ObservedObject, @StateObject, @EnvironmentObject]] (参照型の状態管理)
[[ObservableObject プロトコルと @Published プロパティラッパー]]`
[[@Environment]] (環境値)
- ナビゲーション
[[NavigationView / NavigationStack]]
[[NavigationLink]]
[[シート (Sheet) とモーダル表示]]
[[TabView]]
- リストとデータ
[[ListとForEach]]
[[Identifiable プロトコル]]`
- 描画とグラフィックス
[[図形 (Shape - Rectangle, Circle, Path)]]
[[色 (Color) とグラデーション (Gradient)]]
[[Canvas]]
- アニメーションとトランジション
[[暗黙的アニメーション (.animation())]]
[[明示的アニメーション (withAnimation)]]
[[トランジション (.transition())]]
- SwiftUIとUIKit/AppKitの連携
[[UIViewRepresentable]]
[[UIViewControllerRepresentable]]
- SwiftUIのライフサイクル (
@main と App, Scene)
3.2. UIKit MOC (伝統的な命令的UIフレームワーク)
[[宣言的 vs. 命令的]]
[[状態管理のアプローチ]]
[[学習曲線と生産性]]
[[パフォーマンスと柔軟性]]
[[相互運用性と移行戦略]]
[[どちらをいつ選ぶか]]
- URLSession MOC (HTTP/HTTPS通信の標準API)
[[URLSessionDataTask, URLSessionUploadTask, URLSessionDownloadTask]]
[[URLRequestとURLResponse]]
[[デリゲートベースとクロージャベースのAPI]]
[[Swift Concurrencyとの連携 (URLSession.shared.data(from:))]]
- JSONのパース (Parsing) MOC
[[Codable プロトコル (Encodable&Decodable)]]
[[JSONEncoderとJSONDecoder]]
- ネットワークライブラリの活用
[[Alamofire]] (サードパーティライブラリ)
- APIクライアントの設計
- ネットワーク状態の監視 (
Network.framework)
- GraphQLクライアント (
Apollo iOS)
- 位置情報と地図
[[Core Location MOC]] (GPS, Wi-Fi, ビーコンによる位置情報取得)
[[MapKit MOC]] (地図表示とアノテーション)
- マルチメディア
[[AVFoundation MOC]] (音声・動画の再生と録画)
[[Photos MOC]] (写真ライブラリへのアクセス)
- センサー
[[Core Motion MOC]] (加速度計、ジャイロスコープ)
- UI/UX拡張
[[Core Animation MOC]] (高度なアニメーション)
[[Core Graphics MOC]] (2D描画)
- 機械学習
[[Core ML MOC]] (学習済みモデルの実行)
[[Vision MOC]] (画像分析)
[[Natural Language MOC]] (自然言語処理)
- 拡張現実 (AR)
- 通知 (Notifications)
[[ローカル通知 (Local Notifications)]]
[[プッシュ通知 (Push Notifications - APNs)]]
- バックグラウンド処理 (Background Modes)
- App Extensions (Today Widget, Share Extensionなど)
- XCTestフレームワーク MOC
[[ユニットテスト (XCTestCase)]]
[[UIテスト (XCUIApplication, XCUIElement)]]
[[パフォーマンステスト (measure)]]
- テスト戦略
[[テストピラミッドの適用]]
[[TDD/BDDの実践]]
- モックとスタブ
- コードカバレッジ
- CI/CDパイプラインとの統合
- デバッグ手法
[[Xcodeデバッガ (LLDB) の活用]]
[[ブレークポイントと変数監視]]
[[Viewデバッギング]]
[[メモリグラフデバッガ]]
- クラッシュレポートと分析 (Firebase Crashlyticsなど)
- TestFlightによるベータテスト
- App Store Connect MOC
[[アプリの登録とメタデータ管理]]
[[スクリーンショットとプレビュー動画]]
[[ビルドのアップロードと管理]]
- プロビジョニングとコード署名
[[証明書 (Certificates), 識別子 (Identifiers), プロファイル (Profiles)]]
- ビルド構成とスキーム
[[DebugビルドとReleaseビルド]]
[[複数の環境 (開発、ステージング、本番) の管理]]
- App Store審査ガイドライン
- アプリ内課金 (In-App Purchase)
- アプリの分析 (App Analytics)
- アプリのアップデートとバージョニング
- ユーザーレビューへの対応
- Objective-Cの基本
[[C言語のスーパーセットとしての特徴]]
[[メッセージ式構文 ([receiver message])]]
[[ヘッダファイル (.h) と実装ファイル (.m)]]
[[ポインタとメモリ管理 (手動参照カウント - MRC)]]
- Foundationフレームワーク (
NSString, NSArray, NSDictionaryなど)
- SwiftとObjective-Cの相互運用性 MOC
[[ブリッジングヘッダ (Bridging Header)]] (SwiftからObjective-Cを呼び出す)
[[@objcと@objcMembers]] (Objective-CからSwiftを呼び出す)
- 既存のObjective-Cコードベースの保守とSwiftへの移行戦略
- Appleのヒューマンインターフェースガイドライン (HIG)
- セキュアコーディングプラクティス
- パフォーマンスチューニング
- API設計のベストプラクティス (ライブラリ/フレームワーク作成時)
- 主要なカンファレンス (WWDCなど) とそのキャッチアップ
- コミュニティリソース (ブログ、ポッドキャスト、ニュースレター)
- オープンソースライブラリの活用と貢献
- iOS開発におけるアンチパターン