Skip to content

Mayachiu/YUMEMI-Codecheck

Repository files navigation

株式会社ゆめみ iOS エンジニアコードチェック課題

期間: 11/10 ~ 11/17

全体的な構成

  • Issue、Pull Requestの両方を使って進めました。
  • 細かな実装はPull Requestsにcommit単位で書きました。
  • mainブランチからfeature/XXという風にブランチを切って作業しました。

環境

  • Xcode 14.1
  • Swift 5.7.1
  • iOS14.0
  • CocoaPods 1.11.3

セットアップ

YUMEMI-Codecheck下で

pod install

iOSEngineerCodeCheck.xcworkspaceが生成され、これを利用する。

アーキテクチャ

MVP(Passive View)

使用ライブラリ

  • Nuke(画像処理)
  • Sourcery(モック自動生成)
  • PKHUD(ローディングアニメーション)
  • SwiftMessages(アラート)

こだわり

  • ストーリーボードではなく、Xibで画面を実装
  • 検索画面のユーザー体験をよくするために、検索ワード・結果に応じた適切なローディング画面・アラートを表示するようにした
  • テストで使用するモックデータを自動生成

自動生成したいprotocolの上に

// sourcery: AutoMockable
protocol SearchPresenterOutput: AnyObject {
}

のようにコメントをつけ、YUMEI-Codecheck下で以下のコマンド

./Pods/Sourcery/bin/sourcery --config scripts/sourcery_automockable_config.yml

を実行すると、AutoGeneratedMocksに自動生成されたものが追加される。

Simulator.Screen.Recording.-.iPhone.SE.3rd.generation.-.2022-11-17.at.09.42.03.mp4

概要

本プロジェクトは株式会社ゆめみ(以下弊社)が、弊社に iOS エンジニアを希望する方に出す課題のベースプロジェクトです。本課題が与えられた方は、下記の概要を詳しく読んだ上で課題を取り組んでください。

アプリ仕様

本アプリは GitHub のリポジトリーを検索するアプリです。

動作イメージ

環境

  • IDE:基本最新の安定版(本概要更新時点では Xcode 13.0)
  • Swift:基本最新の安定版(本概要更新時点では Swift 5.5)
  • 開発ターゲット:基本最新の安定版(本概要更新時点では iOS 15.0)
  • サードパーティーライブラリーの利用:オープンソースのものに限り制限しない

動作

  1. 何かしらのキーワードを入力
  2. GitHub API(search/repositories)でリポジトリーを検索し、結果一覧を概要(リポジトリ名)で表示
  3. 特定の結果を選択したら、該当リポジトリの詳細(リポジトリ名、オーナーアイコン、プロジェクト言語、Star 数、Watcher 数、Fork 数、Issue 数)を表示

課題取り組み方法

Issues を確認した上、本プロジェクトを Duplicate してください(Fork しないようにしてください。必要ならプライベートリポジトリーにしても大丈夫です)。今後のコミットは全てご自身のリポジトリーで行ってください。

コードチェックの課題 Issue は全て 課題 Milestone がついており、難易度に応じて Label が 初級中級ボーナス に分けられています。課題の必須/選択は下記の表とします:

初級 中級 ボーナス
新卒/未経験者 必須 選択 選択
中途/経験者 必須 必須 選択

課題 Issueをご自身のリポジトリーにコピーするGitHub Actionsをご用意しております。
こちらのWorkflow手動でトリガーすることでコピーできますのでご活用下さい。

課題が完成したら、リポジトリーのアドレスを教えてください。

参考記事

提出された課題の評価ポイントに関しては、こちらの記事に詳しく書かれてありますので、ぜひご覧ください。 ライブラリの利用に関しては こちらの記事も参照ください。

About

株式会社ゆめみ コーディングテスト

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors