---
# System prepended metadata

title: 最終発表スライド

---

---
marp: true
---
<!-- 担当:  阪口 -->
# <span style="text-transform: none;">Onsche (オンスケ)</span>

#### <span style="text-transform: none;">TeamC</span>
#### 平野大地　小川聡太　阪口丈瑠
#### 佐藤響　宇佐見大希　Sangjun Han

---

<!-- 担当:  阪口 -->
## 私たちのアプリ

![image](https://hackmd.io/_uploads/r10aqTGfxe.png)

オンスケ - Onsche

> # "いつか"を、"いつ"に変える。

<!--
やらなきゃいけないことがあるけど、取り掛かれない
やることリストはあるのに、行動に移すスケジュール化が難しい
Onscheの解決策
やるべきことと予想所要時間、締め切りを入力
アプリが自動で、達成に向けたスケジュールを分割・配置
「今日はこれをやればOK」という状態にして、取りかかるハードルを下げる

よさそう

-HANの意見-
'目標'ってちょっと曖昧かなと思いました
ユーザーの入力：タスクのタイトル、予想所要時間、（＋締切？）
アプリの出力：タスクを行う最適なタイミングを提示
-->


---

## 背景

![bg](https://hackmd.io/_uploads/BJl1FgJQMlx.png)


---

<!-- 担当:  阪口 -->
## コンセプト

![bg](https://hackmd.io/_uploads/ByHkFCGMgg.png)

---

![bg](https://hackmd.io/_uploads/BJB1tCzfee.png)

---

![bg](https://hackmd.io/_uploads/HyrkKRzGll.png)

---

![bg](https://hackmd.io/_uploads/BJHJYAfzgx.png)

---

## デモとアプリイメージ :iphone: 

Androidビルドがあるので実演をします

---

## 設計と発展 :pencil: 

```plantuml

package Domain {
    class Object
    enum ObjectType
    Object *- ObjectType
}

package AppCore {
    interface IContext
    interface IObjectRepository
    interface IService
    class FeatureService
    IObjectRepository .u.> Object
    IObjectRepository -* IContext
    IContext *- IService
    IService <|- FeatureService
}

package Infrastructure {
    class LiteDBManager
    class DObject
    static class ObjectDao {
        DObject FromDomain(Object);
        Object ToDomain(DObject);
    }
    class ObjectRepository
    class Context
    ObjectDao <. ObjectRepository
    LiteDBManager -u-* ObjectRepository
    DObject <. LiteDBManager
    LiteDBManager -u-* Context
    DObject <.u. ObjectDao
    ObjectDao .u.> Object
    ObjectRepository -u-|> IObjectRepository
    Context -u-|> IContext
}

package Presentation/View {
    class InAppContext
    class FeatureScene
    InAppContext *-u- IContext
    FeatureScene -u-> FeatureService
}

package Runner {
    class AppRunner
    AppRunner .u.> Context
    AppRunner .u.> InAppContext
}

package Test {
    class MockObjectData
    class TestContext
    class TestFeatureService
    MockObjectData -* TestContext
    TestContext .u..> Context
    TestContext <- TestFeatureService
}

package UnityEngine {
    class MonoBehaviour
    class TestRunner
    MonoBehaviour <|-u--- FeatureScene
    MonoBehaviour <|-u-- AppRunner
    TestRunner .u.> TestFeatureService
}

```

---

<!-- 担当:  平野 -->
## 使用技術 :books: 

| Technology | Detail |
| -------- | -------- |
| Unity(C#) | アプリ制作フレームワーク<br> テスト実行 |
| LiteDB | ローカルデータベース |

Library: 
ReactiveExtensions: R3,
async/await integration: UniTask
secure storage: keystore/keychain

---

## 今後の展望 :sunrise_over_mountains: 

- 具体的実装の継続 :construction: 
    - 全員が同じように動くための実装チュートリアル(32p)を作成した。
- CI/CDの導入に挑戦 :sparkles: 
    - テスト環境が整っている => 実行の自動化
    - ビルドに成功している => ビルドの自動化
- 外部からのカレンダー自動入力 :mailbox_with_mail: 
    - GoogleCalendarからのインポート

