# teamBアイデア ### テーマ:オンライン x コミュニケーション x ○○仲間 - チャットに限らないコミュニケーションが欲しい - zoomとか - 候補 - 読書 - (○)授業中わからない時にちょっとノート見せてくれる - 隣の人ツンツン機能.フレンドのノートをリクエスト - 寄り道 - スマブラ仲間←スマメイト #### 対象ユーザ - ○○仲間がほしいがオフラインで出会うきっか - けを失ったユーザー - 授業中で相談できる相手が欲しいけど、同じ授業を受けている友達がいなくて困っている大学生 - 授業を真面目に聞かない大学生 #### 目的 「オンライン×コミュニケーション×授業仲間」 - 大学内で、共通の授業を受けているもの同士によるコミュニケーション機会の増加![](https://i.imgur.com/hF8qQUs.png) ### FB - 1. ユーザーにとっての価値を一言で言うと - このサービスを通して同じ授業を受けている人の連絡先がゲットできた! - *何を目的にユーザーが使うのか* - なぜ友達におすすめするのか - オフラインの時によく友達にしていた「つんつん」をオンラインでできる! - 友達がいないけど、授業に関してわからないことを同じ授業を受けている人に相談できる! - 話しかける対象を席で絞ってくれるから、話しかける相手を選びやすい&理由づけができる - 友達が授業切ってていなくても、分からないことを一緒の授業聞いている人に聞ける - これ使ったら新しいタイプの友達できた! - これ使うと結構教えてくれる! - 授業一瞬聞き逃した時とかマジで役立つ! - 唐突につんつんしてダジャレ送ってきたやつおった - 昨日このサイトで仲良くなった人と課題一緒にやった - 対面授業になったときもぼっちしなくて済んだ - パートナーができました! - このサービスを通して同じ授業を受けている人の連絡先がゲットできた!はし,しだ 井上, 名取 吉川、西尾 - このサービスを通して友達がいなくても、先生に聞きづらい小さな疑問がその場で解決できた - 2. (ツンツンするまでの?)ユーザーストーリー - ユーザーストーリーフォーマット - ![](https://i.imgur.com/C6zffnY.png) - ペルソナフォーマット - ![](https://i.imgur.com/U9D1b0g.jpg) - ユーザーストーリー - (who)不真面目だが地頭がいい、友達も(授業内に)いない大学生が - (what)授業内容を理解したい - (why)よく聞き逃すから - ユーザーストーリー2 - (who)真面目だけど,頭があまりよろしくない大学生が - (what)授業内容を理解したい - (why)先生の説明を一度で理解できないから - ユーザーストーリー3 - (who)お笑い好きな大学生が - (what)こっそり誰かに話しかけたい - (why)ダジャレを言いたい欲求を抑えられないから - ユーザーストーリー4 - (who)コロナの影響で友達が少ない大学生が - (what)大学の授業きっかけで友達が欲しい - (why)今後も大学内の授業で頼れるから - ペルソナ - 絞り込むほどよい - 何年生 - 学科 - 科目 - 状況 - 誰に何を - 20歳 - 大学3年生 - サークルには友達いるけど,授業を一緒に受ける友達がいない. - 授業はあまり真面目に聞かない - (ゲームで夜更かししがち) - フラストレーション - 今課題の説明してたけど全く聞いてなかった! - でも教授に聞き直すのはやりにくい... - 同じ授業受けてる友達もいない... - 不特定多数が見てる場で聞くのは恥ずかしい - ゴール(何を目的にユーザが使うのか) - 課題の内容がわかる - 授業中の疑問を解消できる. - (副次的効果として)一緒に授業を受ける友達ができるかもしれない. - 質問内容等、具体的な物を想定すべき - 知っている人にしかツンツンしない?? - Line等ではなくこのアプリを使う優位性を表現すべき - そもそもLine持ってない - 授業を共有しやすい等 - 手紙を回す文化が消えた? - DM→電話? - グループ - 青春の定義? - 高校時代しかできないこと - つんつん自体 - 自己紹介がコア?? - テストの点数?? - トップダウン #### 課題 - コミュニケーションを始めるきっかけがない(1位) - 同じ授業を受けている人が集まるルーム作成 - こそこそ会話する手段(青春)がない(2位) - 授業中隣の人にツンツンできない←これ手段 - 一方的にツンツンされるのじゃなくて相互にやりたい - 机を並べた状態を再現.隣の机の人にだけつんつんできる - つんつんミュート.つんつんしたいことをアピール. - つんつんして無視されると悲しい. - テスト前に確認したいことを確認できる友達がいない(3位) - 授業内課題を(ちょっとだけ)教えてほしい(4位) #### 背景 - コミュニケーションを始めるきっかけがない(1位) - コロナにより対面のコミュニケーションが少なくなった - それにより気軽に声をかけれる人が少なくなった - こそこそ会話する手段(青春)がない(2位) - コロナにより対面のコミュニケーションが少なくなった - それにより気軽に声をかけれる人が少なくなり、友達ができたとしても声をかけるハードルが上がった #### アプローチ - コミュニケーションを始めるきっかけがない(1位) - 席の振り分け機能 - ユーザーの情報表示機能(自己紹介とか) - こそこそ会話する手段(青春)がない(2位) - DM機能 #### なぜそれに価値があるのか - コミュニケーションを始めるきっかけがない(1位) - 席の振り分け機能 - 席の振り分けがあることで学生間の距離が近くなる - Zoom等ではこれがないため、学生間のコミュニケーションが少ない - ユーザーの情報表示機能(自己紹介とか) - つんつん機能 - リアルタイムでコミュニケーションを始めるハードルが下がる - こそこそ会話する手段(青春)がない(2位) - DM機能 - たわいもない雑談とノートの共有がこっそり行える - それにより憧れだった青春時代を再現できる #### 必要な機能の洗い出し(想定されるコア機能) - (ユーザー登録) - 名前(ニックネーム) - 大学 - 履修している授業 - 自己紹介 - むしろ匿名性を売りにする.だれだかわからない状態を楽しんでもらう. - 席の振り分け機能 - 机を並べた状態を再現.座席表生成 - 授業登録している人を並べる機能 - (つんつん機能) - 授業取っている人の中から座席表の前後左右斜めの人を選択してつんつんできる. - 端の人は逆端の人をつんつんできる - つんつん許可ボタン - つんつんミュート.つんつんしたいことをアピール. - つんつんして無視されると悲しい. - つんつんされた回数をカウント.頼れる人を可視化 - 遠くの人には紙飛行機をとばせる - 有料? - DM機能 - DMにツンツンを送信 - テキストと画像を送れる - 1対1 - (友達機能) - あとから自分で同じ授業を取っている人を選択できる(授業ごとに友達デッキを作れる)← あの授業あいつ頭いいから近くへ... - (友達デッキ機能) - 友達デッキを作ったらそのデッキの中にいる人だけにつんつん、作らなかったらランダムな人につんつん ### 機能の優先順位 - Must - 発表にデモンストレーションと構成図2つを必ず含めること。 - 課題 - コミュニケーションを始めるきっかけがない(1位) - 席の振り分け機能(デモ) - 机に並べられた人々の画像 - 授業内容を聞き逃したりしたときに解決できる手段がない(2位) - DM機能 - Want 1. 成果物が審査員が触れることが出来る状態になっていること。 - クラス振り分け機能(実装) 2. リーン開発。Minimum Viable Product を担保すること。 - ユーザー登録 ### デモの解像度 1. 2台の端末で机の画面を開ける 2. A: つんつんする 3. B: つんつん通知がくる 4. DMでやりとり ### deploy先=Heroku ### アイデア出し #### 井上 - 音楽 - ライブとかに行けなくなったから - 手芸 - 雑談 - 料理 - 下手でも一緒に向上できる感じ(インスタはプロ) - カードゲーム - 謎解き - Todo - 読書 - 本の内容を語る会 - SNS機能とビデオ通話機能があるサービス? - ニュース共有 - 遊びプラン #### よしかわ - お年寄り - 趣味がなくても集まれるのがメリット - 音楽ゲーム - 夜ごはん食べる - 進捗 - ボードゲーム - 授業中わからない時にちょっとノート見せてくれる - 寄り道 - 部室どうせいないからいいやってよらなくなる - 逆にいるかどうかわかるサービス #### はし * スポーツ仲間 * 旅行 * ボードゲーム * スマブラ仲間←スマメイト * 音楽 * 作業仲間 #### にしお - プログラミング仲間 - ゲーム仲間 - 就活仲間 - カラオケ仲間 - カードゲーム仲間 #### なとり - 飯 - スポーツ全般 - チーム - ex: フットサル - 個人問わず - ボルタリング - 登山 - 旅行 - ゲーム - カード - 集まってスマブラ的な - ボドゲ - #### しだ - 飲み仲間 - 酒の好み,飯の好みが同じ - 登山仲間 ### 画面 - 講義選択 `/` - ニックネーム入力 - レクチャー画面 `/lecture` - DM画面 `/dm/{from_id}/{to_id}` ### フロントエンド #### atom一覧 - LeaveButton井上 - MailButton井上 - MessageBoxはし - SubmitButtonはし - TunTunIcon吉川 - 指丸 #### Molecule一覧 - UserCard - TunTunNotify - 「アイコン + つんつんしました」のやつ - InformItem ### バックエンド #### API設計 - ~~(講義選択)~~ `/` - `/api/lectures` get - response array - lecture_id - lecture_name - ~~(ニックネーム入力)~~ - `/api/lectures/enter` post - request - lecture_id - nickname - response - user_id - レクチャー画面 `/lecture/{lecture_id}` - `/api/lecture/classmates` get - request - ~~lecture_id~~ - user_id - ~~n_of_users (default: 8)~~ - response - array(user_id, nickname) - 要検討 - サンプル - `/api/lecture/classmates?user_id=10` - ```[ [ {"id":6,"nickname":"\u308f\u305f\u306a\u3079"}, {"id":7,"nickname":"\u3084\u307e\u3082\u3068"}, {"id":8,"nickname":"\u306a\u304b\u3080\u3089"}, {"id":9,"nickname":"\u3053\u3070\u3084\u3057"}, {"id":11,"nickname":"\u3059\u305a\u304d"}, {"id":12,"nickname":"\u305f\u304b\u306f\u3057"}, {"id":13,"nickname":"\u305f\u306a\u304b"}, {"id":14,"nickname":"\u3044\u3068\u3046"} ] - `/api/dm/check` get - request - user_id - ~~latest_message_id~~ - response - ~~users~~ - ~~partner_id~~ - ~~partner_nickname~~ - ~~latest_message_id~~ - value: bool - サンプル - `/api/dm/check?user_id=1&latest_message_id=0` - ```[ { "users":[ { "partner_id":1, "partner_nickname":"\u3055\u3068\u3046" } ], "latest_message_id":4 }``` - DM画面 // `/dm/{from_id}/{to_id}` - `/api/dm/messages` get - request - user_id - partner_id - response - messages - array( - from_id, - to_id, - message or image_path, - created_at - サンプル - `/api/dm/messages?user_id=1&partner_id=2` - ```[ [ {"id":2, "from_id":2, "to_id":1, "message":"\u306a\u3093\u3067\u3059\uff1f", "created_at":"2022-09-11T04:58:11.000000Z", "is_read":true }, {"id":1,"from_id":1,"to_id":2,"message":":tuntun:","created_at":"2022-09-11T04:58:11.000000Z","is_read":true}, {"id":3,"from_id":1,"to_id":2,"message":"\u3055\u3063\u304d\u306e\u8a71\u308f\u304b\u3063\u305f\uff1f","created_at":"2022-09-11T04:58:11.000000Z","is_read":true}, {"id":5,"from_id":1,"to_id":2,"message":"\u3086\u3073\u3086\u3073","created_at":"2022-09-11T05:02:54.000000Z","is_read":true}, {"id":6,"from_id":1,"to_id":2,"message":"\u3064\u3093\u3064\u3093","created_at":"2022-09-11T05:03:07.000000Z","is_read":true} ] - `/api/dm/messages/` post - request - user_id - partner_id - message - :tuntun: - "こんにちは!" - サンプル - `/api/dm/messages` body: ```[ { "from_id":1, "to_id":2, "message":":tuntun:" } - レスポンスなし - ~~`/api/dm/messages/image` post~~ - request - from_id - to_id - image - response - image_url - `/api/dm/partners` get - request - user_id - response - array( - id - from_id - message - partner_id - is_read - partner_nickname - created_at ) - レスポンス例(変更可能性あり) ```[ [ { "id":1, "from_id": 1 "message":":tuntun:", "partner_id":1, "is_read": True, "partner_nickname": "さとう", "created_at":"2022-09-11T01:22:28.000000Z", }, ... ] - DM一覧画面 - つんつんされた時の処理(メッセージのリアルタイム) - ポーリング→簡単そう - ---- できれば↓↓↓ - graphql - websocket - grps #### DB設計(テーブル設計) - lectures - id - name - users - id - nickname - lecture_id - messages - id - from_id - to_id - message→image?? - timestamp - is_read - // images - message_id - url?? #### 構成(インフラアーキテクチャ設計) - 加点 - RDS等ゴリゴリ? - どれだけ多くの方法を検討したか - なぜBを使わなかったか - fly.io - mysql - pg:my → 5:5 - スケーラビリティ - 冗長せい - 設計 - herokuでphpがどう動いているか - master→herokuの自動デプロイ - API設計の話 - 今後作成する予定の機能 - figma? - 通信 - WebSocket - graphql - grps - #### 残件 - user_idをクエリ指定する hashi - partnersのAPIを叩いて履歴一覧を表示する inoue - DMメッセージ取得 yoshikawa - メールボックスボタンをクリック時、DMページに遷移する shida - 左リストクリック時に右チャット画面が変化する ### 振り返り