iOS 開発ロードマップ 2023

# はじめに：
- 急速なペースで技術が進化し続ける現代において、ロードマップは静的な文書ではなく動的なものであり、業界の現状を反映したもので、将来の洞察や予測が必要です。
- この文章ではiOS開発の競技場で成功するために必要な知識とツールをまとめようとします。
- 私は全然達者ではありません。今後の学び、振り返り、ビルディングブロック作りで一人を超えた人々参考になればもっとうれしいです。
- 他にもSwiftとObjective-C、UIKitとSwiftUIのようにある程度スタック選択可能、重要度、アドバンテージ性の違いも反映させたい考えです。
- もちろんのことですが全ての知識ではなく幾つかの知識を活かせれば開発に取り組むのが可能なので初心者視点での最短ルートのコンテンツも今後反映します。
- もしも少しても役に立つと思い、コメントいただければ積極的に検討後反映いたします。

##### 下のMarkdownコードはチェックアウトし、XmindかObsidianでカスタマイズ可能です。

![iOS Development Roadmap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/450661/e4da5ad0-d0de-8bb5-4448-03a15c0cf2ec.png)

# iOS Development Roadmap

## 1. Programming Languages
   - Swift
     - Basics
     - Protocol Oriented Programming
     - Associated type
     - Generics]]
     - Property Wrapper
     - Concurrency
   - Objective-C
     - Memory Management (ARC)
     - Objective-C Runtime]]
     - Categories and Extensions
   - C++
     - Object-Oriented Concepts
     - STL (Standard Template Library)
     - RAII (Resource Acquisition Is Initialization)

## 2. Coding Fundamentals
   - Clean Code
   - SOLID
   - Design Patterns
     - Creational
     - Structural
     - Behavioral
 - Data Structures and Algorithms

## 3. iOS Development Fundamentals
   - Xcode IDE
   - App States
   - ViewController Lifecycle
   - iOS Features
     - Push Notifications
     - Home Screen Quick Actions
     - App Clips
     - Widgets
     - Deep Links / Universal Links

## 4. Version Control
   - Git Basics
     - Commits and Branches
     - Merge and Rebase
     - Git Workflow
   - Branching and Merging
     - Feature Branches
     - Pull Requests
     - Conflict Resolution
   - Collaborative Workflows
     - Git Collaboration (GitHub, GitLab)
     - Git Best Practices
     - Code Reviews
 - Strategies
	 - Release Train
	 - Gitflow
	 - Trunk-Based

## 5. Architecture Patterns
   - MVC, MVP
   - MVVM (Model-View-ViewModel)
     - Data Binding
     - Reactive Programming
     - MVVM in iOS
   - VIPER (View-Interactor-Presenter-Entity-Router)
     - Modular Design
     - Testability
 - Coordinator

## 6. User Interface
- UIKit
	- Storyboards and XIBs
	- Programmatic Views
	- Auto Layout
		- Constraints and Priorities
		- Stack Views
		- Layout Anchors
	- Custom UI Components
		- UIView Subclasses
		- Creating Custom Controls
		- Core Graphics for Custom Drawing
- SwiftUI

## 7. Networking
   - HTTP and REST APIs
     - HTTP Methods (GET, POST, PUT, DELETE)
     - RESTful Web Services
     - API Authentication
   - URLSession
     - Data Tasks
     - Download and Upload Tasks
     - Background Downloads
   - Alamofire Library
     - Networking Abstraction
     - Request and Response Serialization
     - Error Handling and Validation
 - GraphQL
 - Connectivity status
	 - NWPathMonitor
	 - Reachability

## 8. Data Persistence
   - UserDefaults
   - Core Data
     - Managed Object Model
     - Core Data Stack
     - Data Fetching and Sorting
   - SwiftData
   - Realm
   - Keychain
   - Cloud
	   - Firebase
	   - iCloud

## 9. Memory Management
   - ARC (Automatic Reference Counting)
     - Strong, Weak, Unowned References
     - Reference Cycles (Retain Cycles)
     - ARC in Closures
   - Memory Leaks
     - Identifying Leaks with Instruments
     - Deallocating Resources
     - Retain Cycles Resolution
   - Profiling Tools
     - Xcode Instruments
     - Memory Debugger
     - Allocations and Leaks Instruments

## 10. Concurrency

- Grand Central Dispatch (GCD)
- Operations
- Async/ Await

## 11. Reactive Programming
   - RxSwift
   - ReactiveCocoa
   - Combine Framework
     - Publishers and Subscribers
     - Operators (map, filter, merge)
     - Error Handling with Combine

## 12. Accessibility
   - VoiceOver
   - Dynamic Type
   - Accessibility Audit

## 13. Debugging
   - LLDB Debugger
   - Breakpoints
   - View Hierarchy Debugger
   - Crash Reporting
     - Crash Logs and Diagnostics
     - Symbolication
     - Analyzing Crash Reports

## 14. Building Process
   - Xcode Build Settings
     - Build Configurations
	     - Build Settings / Phases / Rules
	     - Scheme / Target
     - Preprocessor Macros
     - Build Settings Inheritance
   - Code Signing
     - Code Signing Identities
     - Provisioning Profiles
     - Code Signing in Xcode
   - Continuous Integration (CI/CD)

## 15. Performance
   - Instruments Profiling
     - CPU / Memory / Disk / Network
   - App Optimization
     - Performance Analysis
     - Code Optimization
     - Network Performance
   - Caching Strategies
     - Data Caching
     - Image Caching
     - Cache Management

## 16. Dependency Managers
   - CocoaPods
   - Carthage
   - Swift Package Manager
     - Package.swift File
     - Dependencies and Targets
     - SPM in Xcode Projects

## 17. Framework Creation
   - Creating Custom Frameworks
     - Framework Structure
	     - Static Library / Framework / XCFramework
     - Public and Private APIs
     - Module Setup
   - API Design
     - Design Guidelines
     - Versioning and Stability
     - Documentation Practices
   - Documentation
     - Header Documentation
     - Markdown Documentation
     - Jazzy Documentation Generation

## 18. Analytics
   - Integrating Analytics Tools
     - Google Analytics
     - Firebase Analytics
     - Mixpanel Integration
   - User Behavior Analysis
     - Event Tracking
     - User Segmentation
     - Conversion Tracking
   - A/B Testing
     - Experiment Design
     - A/B Testing Tools
     - Data-Driven Decisions
 - New Relic

## 19. Testing
   - Unit Testing
     - XCTest
     - Mocking Dependencies
   - UI Testing
     - XCUI Testing
     - UI Test Automation
     - UI Test Strategies
   - Test-Driven Development (TDD)
     - TDD Principles
     - Red-Green-Refactor Cycle
     - TDD in Practice
 - Beta Testing
	 - TestFlight
	 - Firebase App Distribution

## 20. Security
   - Data Storage
	   - Encrypt Data
		   - CommonCrypto
		   - CryptoKit
   - App Permissions
     - Privacy Settings
     - Permission Requests
     - Handling Denials
   - Communications
	   - App Transport Security Settings
		   - Exception Domains
		   - SSL Pinning
- Identity and Access Management
	- Touch ID / Face ID
	- Server-Sid Token Validation
- Code
	- Avoid Injection Attacks

## 21. Internationalization
   - Localizations
     - Localizable Strings
     - Pluralized Strings
   - Date and Number Formatting
     - DateFormatter and NumberFormatter
     - Locale Settings
     - Custom Formatting

## 22. Continuous Integration
- CI Tools
	- Jenkins
	- TravisBuilds
	- GitHub Actions
	- App Center
- Device Farms
	- AWS Device Farm
	- Firebase TestLab
	- BrowserStack
- Fastlane
- SwiftLint

## 23. App Distribution
   - App Store Submission
     - App Store Connect
     - App Submission Process
     - App Review Guidelines
   - Ad Hoc Distribution
     - Provisioning Devices
     - Ad Hoc Builds
     - Testing on Devices
   - Enterprise Distribution
     - In-House Apps
     - Enterprise Certificates
     - Enterprise App Deployment
     - MDM
	     - Airwatch
	     - Intune

## 24. Keep Learning
   - Stay Updated
     - Apple WWDC
     - iOS News and Blogs
     - Twitter iOS Community
   - Online Courses
     - Coursera and edX
     - iOS Development Courses
     - Swift Programming Tutorials
   - Conferences and Meetups
     - Attending Tech Conferences
     - Local iOS Developer Meetups
     - Networking and Learning

参考文献：
　　https://medium.com/@andres.carort/ios-developer-roadmap-2023-330fd5cb7479