ios-training

業務に近い形でアプリ開発を行い、iOSアプリ開発の立ち上がりを修了していただきます。

概要

GitHubクライアントアプリを開発していただきます。

デザイン: ios-training - Figma

Events Repository User

GitHub API

使用するGitHub APIは以下の4つです。

進め方

既にベースになるプロジェクトは作成済みです。
こちらを基に機能追加という形で開発していただきます。

  1. こちらのレポジトリをご自身のGitHubアカウントでForkする。
  2. こちらを参考にセットアップを行う。
  3. Training.xcworkspaceをXcodeで開いて開発を進める。

課題

  1. イベント一覧画面のセルをデザイン通りに修正する
  2. レポジトリ画面の作成・遷移
  3. レポジトリ画面の作り込み
  4. ユーザー画面の実装 (作成・遷移・作り込み)
  5. Combineを使ってリファクタリング
  6. ViewModelを作成してリファクタリング

セットアップ

$ brew install rbenv
$ make install
  1. rbenv をインストールして特定のruby versionをインストール出来るようにする。
  2. make installを実行し依存ツール・ライブラリをインストールする。(実行内容はこちら

ベースプロジェクトの構成

Dependency

Package Manager

  • Swift Package Manager
  • Cocoapods
  • bundler

Ref

Library

アーキテクチャ

Clean Architecture を簡略化したものを使用しています。
ViewからUseCaseを呼び出し、UseCaseNetwork(API)から取得した情報を返しています。

DI (Dependency Injection)

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)
        }!
    }
}

MainViewController.swift

その他参考になる研修資料

yumemi-inc

mixi-inc