Skip to content

Latest commit

 

History

History
84 lines (60 loc) · 4.95 KB

SKILL_TEST.ja.md

File metadata and controls

84 lines (60 loc) · 4.95 KB

お題「GitHubのDirect Messageアプリを作る」

あなたが特定の状況にいると想定して、GitHub上でDirect Messageが別の開発者と送り合える架空のアプリを実装します。

想定

あなたは計5名のiOSチームのリーダーです。このチームでiOSアプリを新規開発します。このプロジェクトは、チームで長期に渡って開発とメンテナンスが行われる見込みです。チームで開発する前に、あなたはリーダーとしてアプリの設計を行い、基礎部分を実装することになりました。

最低限の仕様

  • 最初の画面にはAPIから任意のユーザーを取得し表示する
    • 表示項目はスクリーンネームとプロフィール画像とする
    • APIはGET usersを利用する
      • このAPIは認証なしでリクエストすることができるが、rate limit が存在するため、その場合のエラー処理を実装する
  • あるユーザーをタップするとメッセージ画面に遷移する
  • メッセージ画面ではそのユーザーとメッセージを送り合うことができる
    • ただしここではGitHubのAPIは叩かず、ダミー実装でアプリ内で送り合っているように見せる ○ あるメッセージを送信すると1秒後にそのメッセージを2回繰り返した返事が返ってくるようにする (例: “Hi.” に対して “Hi. Hi.” と返事)
  • 最低限実装すべき画面は「最低限の画面仕様」を参照
  • Portrait, Landscapeのどちらのレイアウトにも対応する

追加で実装された場合に評価の対象になる仕様

前節で示されている以外の仕様は必須ではありませんが、追加仕様の実装は評価の対象になります。以下に例を示します。

  • よりユーザーにとって使いやすい動作にする
  • メッセージの送信履歴を永続化する
  • その他の機能や動作を実装する
  • Readmeに、なぜそのアーキテクチャを採用したか、今後改善するとすればアーキテクチャのどの部分を改善することができるかを記述する

最低限の画面仕様

UI specifications

条件

  • Mac App Storeで入手できる最新のXcodeを使用する
  • 実装言語
    • SwiftまたはObjective-C
      • Objective-Cを選択した場合でも、面接時にSwiftについての質問をする場合があります
    • 言語のバージョンは上記Xcodeで使用可能な最新のもの
  • Deployment Targetは最新のiOSバージョンにする
  • 外部ライブラリを使用しない
    • iOS SDKだけで作成する
  • SwiftUIは使用しない
  • 吹き出しの背景画像は同梱の left_bubble.pngright_bubble.png を使う

コーディングガイド

ここに表記されているものが全てではありませんが、提出して頂いた課題では主に以下のようなコード品質が期待されます。

モダンなアーキテクチャ

MVVMやVIPERなどの現在のアーキテクチャのトレンドに則り、各モジュールがよく構造化されテストがしやすいアーキテクチャになっている。

Cocoa Touchの知識

Cocoa Touch、特にUIKitへの造詣が深い様がコードから伺える。角丸のViewへの対応や、メンテナンスしやすいレイアウトのコードなど、最新のUIのBest Practiceを実行している。

High Quality Swift

Swiftの各機能がコンベンションに則り適切な場所で効果的に使われている。(クラス名や関数名がSwiftの命名規則に則っている、クラスや構造体の使い分け、サードパーティライブラリを使わないJSON Decodingといった最近追加された機能の活用)

モダンなObjective-Cのコード

課題で使用する言語としてSwiftが推奨されますが、Objective-Cも使用可能です。ただし、Swiftへの互換性を意識し、Objective-Cの最新バージョンの機能を使ってください。

評価基準

前述の最低限の仕様に加え、ご自身の得意分野を活かした追加仕様が実装されているか、設計の意図が明示されているか、エンジニアリングのベストプラクティスに従っているかなどが評価されます。

提出物

  • Xcodeでビルドするだけで動くようにプロジェクトまたはワークスペースを構成する
  • そのプロジェクトまたはワークスペースと README.md を含むディレクトリをまとめてmasterブランチにコミットする

技術課題に必要なデータです

resources
├── left_bubble.png
├── [email protected]
├── [email protected]
├── right_bubble.png
├── [email protected]
└── [email protected]

0 directories, 6 files