Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ドキュメントの更新 (2023/08/13) #33

Merged
merged 8 commits into from
Aug 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions Documents/BL/BL-A01.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# BL-A01 アプリ起動時

## 入力

* 無し

## 出力

* 新規起動
* 通常起動
* アップデート後の初回起動

## 処理

1. 編集中 (ステータスが `editing`) のレコードをすべて削除する
2. ユーザのログイン状態を確認する
* ログインしていない場合、「新規起動」を返す
3. ステータスが `ready` のレコードをバックエンドへアップロードする
4. 「[BL-Z04 アプリバージョンのチェック](./BL-Z04.md)」を実行して、アプリバージョンを確認する
* 「通常起動」または「アップデート後の初回起動」を返す
4 changes: 2 additions & 2 deletions document/BL/BL-B02.md → Documents/BL/BL-B02.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

## 出力

* 成功
* 失敗
* 成功 (success)
* 失敗 (failed)

## 処理

Expand Down
23 changes: 23 additions & 0 deletions Documents/BL/BL-S02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# BL-S02 ログアウト

## 入力

* なし

## 出力

* 成功 (success)
* 失敗 (failed)

## 処理

1. ステータスが `ready` のレコードをバックエンドへアップロードする
* 「[BL-Z01 TODOアイテムのアップロード](./BL-Z01.md)」を実行する
* アップロードが成功した場合: サインアウトする
* アップロードが失敗した場合: エラーを返して終了する
2. サインアウトする
* サインアウトが失敗した場合: エラーを返して終了する
3. すべての未送信の通知リクエストと配信済みの通知を削除する。
4. ローカルデータを全て削除する。
* 削除に成功した場合: 成功を返して終了する。
* 削除に失敗した場合: エラーをログに出力し、成功を返して終了する。
25 changes: 25 additions & 0 deletions Documents/BL/BL-Z01.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# BL-Z01 TODOアイテムのアップロード

## 入力

* なし

## 出力

* 成功 (success)
* 失敗 (failed)

## 処理

1. ステータスが "ready" のTODOアイテムをローカルから取得する。
2. アイテムがなければ成功を返して終了する。
3. ネットワーク接続が利用可能かを確認する。
* 接続可能な場合は、次のステップに進む。
* 接続不可能な場合は、成功を返して終了する。
4. 各TODOアイテムについて以下の処理を行う:
* アイテムが完了している場合は、Firestoreから該当するアイテムを削除する。
* アイテムが未完了の場合は、Firestoreにアイテムを追加または更新する。
5. Firestoreとの同期後、ローカルデータのステータスを `complete` に更新する。
6. 各TODOアイテムについて以下の処理を行う:
* アイテムが完了している場合は、ローカルから該当するアイテムを削除する。
* アイテムが未完了の場合は、そのアイテムのステータスを更新する。
4 changes: 3 additions & 1 deletion document/BL/BL-Z02.md → Documents/BL/BL-Z03.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## 入力

* なし

## 出力

* 接続中 connected
Expand All @@ -12,4 +14,4 @@
1. デバイスのネットワーク接続状態を確認する
* 未接続なら処理を終了する
2. 自分のサイトへアクセスして、正しい文言が得られるか調べる
* `https://ch3cooh.net/success.html` にアクセスして `Success`が得られるかどうか確認する
* `https://ch3cooh.net/success.html` にアクセスして `Success`が得られるかどうか確認する
19 changes: 19 additions & 0 deletions Documents/BL/BL-Z04.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# BL-Z04 アプリバージョンのチェック

## 入力

* なし

## 出力

* 初回起動・またはアップデートしていない (notUpdate)
* アップデート後の初回起動である (showVersionInformation)

## 処理

1. 現在のアプリバージョンを取得する
2. 以前の起動時のアプリバージョンを UserDefaults から取得する
3. 現在のアプリバージョンと以前のアプリバージョンを比較する
* 両者が同じ場合、何も表示せずに終了
* 現在のバージョンが以前のものより低い場合 何も表示せずに終了
* 現在のバージョンが以前のものより新しい場合、現在のバージョンをUserDefaultsに保存する
File renamed without changes.
59 changes: 30 additions & 29 deletions document/README.md → Documents/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,38 @@
# Documents

以下は、TodoNote の開発資料である
これは「TodoNote」アプリの開発資料である。

## コンセプト

* オフラインでも利用可能な TODO 管理アプリ
* ユーザーにネットワーク状態を意識させない
* オフライン状態でも操作できるTODO管理アプリ
* ユーザーがネットワークの状態を気にすることなく利用できる設計

## 現時点での制約

* 現時点では、TODOアイテムの登録・編集時にアプリを kill された場合、次回のアプリ起動時に編集中のアイテムがあるかどうか調べて、途中から復帰できない
* v1.0.0 では、TODO登録画面で(タスクの登録・編集中に) アプリが終了した場合、次回起動時に編集を再開することができない

## 画面遷移図
## 画面

### 画面遷移図

<img width="749" alt="screen-transition" src="https://github.com/CH3COOH/todonote-ios/assets/137952/dbdc0ac1-96f2-4873-ade5-7f9c9cbc7da1">

### 画面一覧

| ID | 画面名 | 備考 |
|:-----|:-----|:-----|
| A-01 | スプラッシュ | |
| A-02 | ログイン | Firebaseへのログイン |
| A-03 | 通知許諾 | |
| B-01 | ホーム | タスクのリストを表示する |
| C-01 | TODO登録 | タスクの登録/編集をおこなう |
| S-01 | 設定 | |
| S-02 | ライセンス | LicensePlistViewController で表示 |
| S-03 | 問い合わせ | Googleフォームを SFSafariViewController で表示 |

## TODOアイテムについて

TODOアイテムは、ローカル(アプリ内データベース) と バックエンド (Firestore) にて管理する
TODOアイテムは、ローカル(アプリ内データベース) と バックエンド (Firestore) の両方で管理する

### TODOアイテムのステータスについて

Expand All @@ -28,39 +43,25 @@ TODOアイテムは、ローカル(アプリ内データベース) と バック

### TODOアイテムの登録/編集処理

登録時・編集時の処理の詳細は、[データベースの仕様](./Database.md) にて記す。以下は簡単なデータフローの説明である
以下は、登録時・編集時のデータフローの簡易的な説明である。詳細については、[データベースの仕様](./Database.md)を参照すること

* ステータスが `ready` のアイテムは、TODOアイテムの保存時・アプリ起動時に バックエンドへ同期する
* オフラインでもエラーを表示しない
* ステータスが `editing` のアイテムは、TODO登録画面以外では存在させない
* 登録画面上でアプリを終了させた場合、`editing`のレコードが残るため、スプラッシュ画面で削除する
* スプラッシュ画面から登録画面への導線を引きたいが、これは将来的に考える

## 画面

| ID | 画面名 | 備考 |
|:-----|:-----|:-----|
| A-01 | スプラッシュ | |
| A-02 | ログイン | Firebaseへのログイン |
| A-03 | 通知許諾 | |
| B-01 | ホーム | TODO一覧 |
| C-01 | TODO登録 | |
| S-01 | 設定 | |
| S-02 | ライセンス | LicensePlistViewController で表示 |
| S-03 | 問い合わせ | Googleフォームを SFSafariViewController で表示 |
* `ready` ステータスのTODOアイテムは、保存時やアプリ起動時にバックエンドにアップロードされる
* オフライン時の保存でもエラーメッセージは表示しない
* `editing` ステータスのアイテムは、TODO登録画面でのみ扱われ、それ以外の場面での存在は許容しない
* TODO登録画面の表示中にプロセスを終了した場合、`editing` ステータスのレコードが残る可能性があるため、スプラッシュ画面でそれらのレコードを削除する

## ユースケース
## ユースケース一覧

| ID | ユースケース名 | 備考 |
|:-----|:-----|:-----|
| [BL-A01](./BL/BL-A01.md) | アプリ起動時 | |
| BL-B01 | TODOリストの取得 | sort option |
| BL-B02 | TODOアイテムの削除 | |
| BL-C01 | TODOアイテムの登録・編集開始 | editing のレコードを作成する |
| BL-C02 | TODOアイテムの登録・編集完了 | Firestoreへの同期 |
| BL-C02 | TODOアイテムの登録・編集完了 | |
| BL-C03 | TODOアイテムの編集キャンセル | editing のレコードを削除する |
| [BL-S02](./BL/BL-S02.md) | ログアウト | |
| [BL-Z01](./BL/BL-Z01.md) | TODOアイテムのアップロード | Firestore へ ready のレコードをアップロード |
| BL-Z02 | TODOアイテムのダウンロード | Firestore からデータをダウンロード |
| [BL-Z03](./BL/BL-Z02.md) | ネットワーク接続状態のチェック | |
| BL-Z04 | アプリバージョンのチェック | |
| [BL-Z03](./BL/BL-Z03.md) | ネットワーク接続状態のチェック | |
| [BL-Z04](./BL/BL-Z04.md) | アプリバージョンのチェック | |
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
[![Build Status](https://app.bitrise.io/app/80fabd50-5db4-48ac-8357-21cbc43d7cb9/status.svg?token=-E0kWr3snOcU4eLFaYi9Vw&branch=master)](https://app.bitrise.io/app/80fabd50-5db4-48ac-8357-21cbc43d7cb9)

# TodoNote for iOS

TodoNote は、iOS用TODO管理アプリである。
TodoNote は、iOS向けTODO管理アプリです。

![fk-PAUI8193_TP_V](https://github.com/CH3COOH/todonote-ios/assets/137952/d06483a2-846e-44ae-9713-88cf6aa2ddc2)

## ビルド方法

Expand All @@ -10,11 +14,11 @@ bundle install
bundle exec pod install
```

* `GoogleService-Info.plist` はプロジェクトには含まれていないため、ビルド前に追加すること。
* `GoogleService-Info.plist` はプロジェクトには含まれていない。ビルド前に追加すること。

## 開発
## Development

開発向けのドキュメントは [document](./document/README.md)ディレクトリに置いている。
開発向けのドキュメントは [Documents](./Documents/README.md)ディレクトリに置いている。

### 開発環境

Expand All @@ -26,4 +30,5 @@ bundle exec pod install
* UIの実装: SwiftUI (View) + UIKit (Navigation)
* アーキテクチャ: Clean Architecture
* パッケージマネージャ: CocoaPods
* バックエンド: Firestore
* バックエンド: Cloud Firestore
* CI: Bitrise
2 changes: 0 additions & 2 deletions document/BL/BL-A01.md

This file was deleted.

7 changes: 0 additions & 7 deletions document/BL/BL-S02.md

This file was deleted.

10 changes: 0 additions & 10 deletions document/BL/BL-Z01.md

This file was deleted.