本プロジェクトは株式会社ゆめみが出す課題の結果プロジェクトです。
ベースプロジェクトにあった課題の中に、「新機能を追加」以外は全部取り組んだと思います。
最終的にこの様に動作をしています:
Simulator.Screen.Recording.-.iPhone.12.Pro.-.2021-07-29.at.01.11.02.mp4
- Xcode 12.5.1
- Swift 5.4.2
- 開発ターゲット:iOS 14.1
- サードパーティーライブラリーの利用:Kingfisher, Snapkit, SwiftLint
- No storyboard
- UI ブラッシュアップ
- 通信部分を切り分け
- 通信部分のテスト
- UIKit / SwiftUI 両方使用
- Combine による MVVM アーキテクチャの採用
- ViewModel のテスト
-
Entity
API のレスポンスを表す構造体
-
Network
通信部分
Request
リクエストのプロトコル。一つのリクエストがRequest
に準拠する。Client
のプロトコルとその実現GithubClient
、リクエストの発送を担当する。RepositorySearchRequest
レポジトリを検索するリクエとRepositoryRequest
レポジトリ自体のリクエ (前者にレポジトリの Watcher 数が含んでいないため、後者でレポジトリ詳細をリクエスト必要がある)
-
Utility
開発に補助するもの
-
PreviewData:
SwiftUI の Preview を使うため入れたダミーデータ
-
View
レポジトリ検索とレポジトリ詳細がある。UIKit と SwiftUI を合わせるため、
ViewModel
の実現が少し違う。 -
Test
通信と ViewModel の動作テストを入れた。UITest なし。