このプロジェクトは、ABEMA の iOS アプリ開発で用いられている開発環境やライブラリ、開発フローに慣れるためのサンプルプロジェクトです。
- Xcode 14.0.1
ツールやライブラリの導入は 開発をはじめる を参考にしてください。
classDiagram
AbemaTutorial ..> UIComponent
UIComponent ..> UILogicInterface
UILogicInterface <|-- UILogic
UILogic ..> UseCaseInterface
UseCaseInterface <|-- UseCase
UseCase ..> RepositoryInteface
RepositoryInteface <|-- Repository
Repository ..> Domain
RepositoryInteface ..> Domain
UseCase ..> Domain
(全モジュールから依存可能な Extension は略)
チュートリアルの進め方 を参考に開発環境を整え、下記のタスクに取り組んでください。
master ブランチの実装には不具合があり、一部動作しない機能があります。
⌘+Uでテストを実行すると、失敗している箇所があるはずです。
テストが通るように実装を修正してください。
- セルにリポジトリの説明文を追加してください。
- 追加したロジックについてのユニットテストを追加してください。
APIClient
は、時々エラーを返します。
- エラーが返ってきたときにアラートを表示するようにしてください。
- 文言の定義は導入済みのSwiftGenを用いてください。
- アラートを閉じたときに、データを再取得するようにしてください。
- 追加したロジックについてのユニットテストを追加してください。
- 以下の仕様を満たすお気に入り機能を実装してください、
- セルか、セル上のボタンをタップしてお気に入りに追加/削除できるようにしてください。
- 同じセルは一度のみお気に入りに追加できるようにしてください。
- お気に入りに追加したリポジトリのみを表示する機能を追加してください。
- 別のタブにするかフィルタを付けるかなど、表示方法は任意です。
- アプリを再起動しても、お気に入りデータが消えないようにしてください。
- 保存方法は任意です。
- セルか、セル上のボタンをタップしてお気に入りに追加/削除できるようにしてください。
- Issue に仕様や基礎設計がある程度わかるような説明文を書いてください。
- 追加したロジックについてのユニットテストを追加してください。
以下のコマンドで、本リポジトリを Clone できます。
$ git clone https://github.com/abema/abema-ios-tutorial-public.git
brew.sh に記載の手順に従って Homebrew をインストールしてください。
また、以下のコマンドで各種ツールをインストールしてください。
$ make brew-install
$ rbenv init # 表示される内容に従う
$ rbenv install
$ brew install mint
make brew-install
によって実行されるコマンドの中身は、Makefile
に書かれています。
以下のコマンドで、本リポジトリを Clone できます。
$ git clone https://github.com/abema/abema-ios-tutorial-public.git
以下のコマンドで、ビルドに必要なライブラリを取得できます。
$ make bootstrap
取得が終わったら、AbemaTutorial.xcodeproj
を開いてプロジェクトを実行できるはずです。
チュートリアルに取り組む際は、自分用の master ブランチを作成してください。
例:
$ git checkout -b akkyie-master master # <自分の名前>-master で作成してください
$ git push
Issues から、自分が取り組むタスクについての Issue(チケット)を作成してください。 Issue には、以下の項目を記入・設定してください。
- タイトル: 取り組むタスクの内容を簡潔に記述してください。
- 説明文: テンプレートを参考に、不具合の修正であれば不具合の原因と対応を、機能追加であれば追加する機能の仕様についてなるべくわかりやすく記述してください。
- Asignees: 自分を設定してください。
- Labels: 不具合の修正ならバグ、機能追加なら機能追加など、適切なラベルを設定してください。また、作業時間の見込み(見積もり)に応じて、
1
3
5
の中から適切なストーリーポイントを設定してください(おおよそ 1 ポイント= 1 営業日以内に完了するタスクです)。 - Milestone: 実装が完了する見込みのスプリントを設定してください。
実装は、自分用の master ブランチから切ったブランチ(Feature ブランチ)で行います。
Feature ブランチの名前は、 IOS-<Issueの番号>
または IOS-<Issueの番号>-<わかりやすい名前>
としてください。
例:
$ git checkout -b IOS-123-fix-layout akkyie-master
$ git push
いくつかコミットを行ったら、作業中でも Pull Request を作成しましょう。
この時、base ブランチが自分用の master ブランチになっていることを確認してください。
Issue と同様に、Pull Request にも Assignees・Labels・Milestone を設定しましょう。また、作業中の Pull Request には必ず WIP (Work in progress) ラベルを付けましょう。
タイトルに [WIP]
と入れたり、Draft Pull Requestにしたりするとより分かりやすいですが、これらは任意です。
実装が完了し、自分自身のレビューも完了したら、WIP ラベルを外して Reviewers に自分のトレーナー(もしくはトレーナーが指定した誰か)を指定しましょう。 レビューを受けて修正する必要がある場合、もし修正に時間がかかりそうであれば、修正を行う旨をコメントして再度 WIP ラベルを付けた上で作業を行いましょう。
コードに修正を加える際は、なるべく force push を避けましょう。これは再度レビューしてもらうときに差分を分かりやすくするためです。 ただし、実装方法をまるっきり変える場合など、コミットを追加することでむしろ差分が見づらくなる場合は、force push して履歴を見やすくしてもよいです。
レビュー対応が終わって Approve されたら、自分でその PR をマージします。 PR をマージしたら、対応する Issue も合わせてクローズしましょう。