業務に近い形でアプリ開発を行い、iOSアプリ開発の立ち上がりを修了していただきます。
GitHubクライアントアプリを開発していただきます。
デザイン: ios-training - Figma
Events | Repository | User |
---|---|---|
使用するGitHub APIは以下の4つです。
既にベースになるプロジェクトは作成済みです。
こちらを基に機能追加という形で開発していただきます。
- こちらのレポジトリをご自身のGitHubアカウントでForkする。
- こちらを参考にセットアップを行う。
- Training.xcworkspaceをXcodeで開いて開発を進める。
- イベント一覧画面のセルをデザイン通りに修正する
- レポジトリ画面の作成・遷移
- レポジトリ画面の作り込み
- ユーザー画面の実装 (作成・遷移・作り込み)
Combine
を使ってリファクタリングViewModelを作成してリファクタリング
$ brew install rbenv
$ make install
- Swift Package Manager
- Cocoapods
- bundler
Ref
- iOSアプリ開発にSwift Package Managerを使おう - Qiita
- 【Swift】CocoaPods導入手順 - Qiita
- bundler で cocoapods そのもののバージョン管理をする - Qiita
- Alamofire/Alamofire: Elegant HTTP Networking in Swift
- mac-cain13/R.swift: Strong typed, autocompleted resources like images, fonts and segues in Swift projects
Clean Architecture を簡略化したものを使用しています。
View
からUseCase
を呼び出し、UseCase
がNetwork(API)
から取得した情報を返しています。
Presentation層のクラスをテストしやすくするため、UseCase
をDIしています。
final class MainViewController: UIViewController {
struct Dependency {
var getEventsUseCase: GetEventsUseCase = GetEventsDefaultUseCase()
}
// ...
private let dependency: Dependency
// MARK: - Initializer
private init(coder: NSCoder, dependency: Dependency) {
self.dependency = dependency
super.init(coder: coder)!
}
}
// MARK: - Instantiate
extension MainViewController {
static func instantiate(dependency: Dependency = .init()) -> Self {
R.storyboard.main().instantiateInitialViewController { coder in
Self(coder: coder, dependency: dependency)
}!
}
}