---
# System prepended metadata

title: OPTiMハッカソン

---

# OPTiMハッカソン

:::info
:dart: ゴール

- shunsuke_tamura 成長する
- Rinka
- たかはし 優勝する
:pencil: ルール

:::

## 0927

アイデア出し
- __身の回りの問題__ や社会課題を解決
- スマホとかもIoT

- 身の回りの問題とは
    - 朝起きれない

すでに解決されてる課題でも別のアプローチがないか考える

### 集まれない日程
- 田村
    - 28日 19:00~22:30
    - 30日 午前中

- 茂木
    - 29日　14:00 ~ 17:00
    - 1日　  10:50 ~ 17:00
- 髙橋
    - 特になし

## 仕様のイメージ

1. webアプリのアカウントを作る
2. 作るときにswitchbotのトークンを入力してもらう
3. backendでそのトークンからシーンのリストを取ってくる
4. 取ってきたリストをfrontend表示して通知の種類と紐づける

- Sign in as Google したらユーザーと端末の紐付けが楽そうではある

### memo

Firebaseのエコシステムにどっぷり乗っていく方針

#### ユーザーとスマホの紐付け
- FireAuthを噛ませてユーザーを作成する
- スマホでもウェブでも同じユーザーでログインしてもらうようにする
- ウェブではログインすると「あなた」の「スマホのログイン状況」が表示されるようにする
- スマホにもログインしていたらSwitchBot APIを叩く
- Access Tokenをもらってuidを検証する

```graphviz
digraph D {
  rankdir = "LR";
  subgraph cluster_f {
    label = "Service Server";
    view [label = "Frontend"];
  }
  subgraph cluster_b {
    label = "API Server";
    wh [shape = "box" label = "/webhook"];
    db [label = "DB"];
  }
  subgraph cluster_phone {
    label = "User's smartphone";
    app [shape = "box" label = "Yokodori App"];
  }
  subgraph cluster_sapi {
    label = "SwitchBot API;
    sbt [shape = "box" label = "/execute"];
  }
  
  // view -> wh [dir = "both"];
  app -> wh;
  wh -> sbt;
  sbt -> bot [label = "command"];
}
```

Voyage Treasure
- https://ogijunchang.hatenablog.com/entry/2020/09/03/023132
- https://techlog.voyagegroup.com/entry/2020/09/08/184336#%E6%84%9F%E6%83%B3%E3%83%96%E3%83%AD%E3%82%B0

### スライドを作る

聞き手が聞きたいことを盛り込むのが大切
- 身近な課題を解決する
  - 通知に気づかないことはよくあります(ニーズがある！)
  - よくあると思わない人はデジタルデトックスしましょう(笑)
- 動くもの

コンセプト
- 見てほしいデバイス以外のところから通知が出るところが新しい
- 通知の手段・信号の種類

Spotifyとにているかも
- シークバーの状態がデバイス間で同期されている
- 音が出る装置と操作する装置が分離されている

1. 背景
2. コンセプト
3. 技術1
4. 技術2
5. 実演(3分)
6. まとめ

### 発表会
C
デパートの先のお客様のことを考えていた○
展望が良かった

A
アイデア出し・分担よかった
自分が気づいてほしいから通知を出すやろ
技術面に関して学びの多い一週間だったのではないか
コンセプト設計と（多少強引ながらも）
解決策（コンセプト）を確実に結びつけてやるのはよき
すでにあるものを使える力を養う
プレゼンの進め方をもっと練れば良いのににゃあ
