きせいハッカソン打ち合わせ

決めたいこと

  • 「きせい」の解釈
  • やること
  • タスク割

前提

  • 工数抑えたいです😭

議事録

  • 奇声をあげてストレス発散
    • 声の大きさと時間に応じてnginxのポッドを立てまくる

設計

  • Auth系が必要
  • voice2text・・・pythonで作ったやつがある
  • 声の大きさ・・・どうやって計るんや?
  • フロントからバックエンドにどうやって声送るんだ?
  • Safariはサポート外

作業

  • フロントでやること

    • 音声を録音(notch_man)
    • 音声を送信(notch_man)
    • スコアを表示
    • 散財額を表示
    • ユーザー認証(にっしー)
    • create react app(にっしー)
  • バックエンドでやること

    • 音声からスコアを計算(notch_man)
    • ユーザー毎にスコアを格納(にっしー)
    • kubernetesの現在のnginxのpods数を取得する
    • podsからおおよその散財額を算出(1podの値段は適当に決め打ち)
    • スコアに応じて順位付けを行い散財額を決定
    • フロントに通知
    • スコアデータを返す(にっしー)
  • フロントはReactで作る(生React)

  • バックエンド

    • 音声周り:python
    • 他:Python
      • redis
      • websocket
      • kubernetes API

設計(Python鯖)

音声送信(WebSocketやりたくない)

{ 
    "action":"SEND_VOICE_DATA"
    "voice_data":<BASE64 decoded>
    "user_id":"example-user-id"
}

フロントに送るスコアデータの定義

{ "action":"SCORE_DATA" "score":1000 "cost":1000 //単位は円です "count":114514 // 接続ユーザー数 "pod_num":40 // 現在立ち上がっているpod数 }

設計(Go鯖)

スコアデータ登録(POST)

これはPython鯖からGo鯖へ送る

Request

{ "score":128 "user_id":"example-user-id" }

Response

{ "message":"ok" }

このスコアをDBのユーザーカラムに加算する

スコアデータ(GET)

query parameter:

  • user_id:example-user-id

response:

{
    "cost":1000,
    "score":100,
    "user_count":10,
}

出来たこと

notch_man

  • 良い感じに音をアップロード出来るようになった
  • wavを読み込んで再生長さを取ったりしてスコアリング出来るようになった
  • フロントで録音してアップロードする機構を作った

nissie

  • pod数の取得
  • 認証出来るようになった
  • Go鯖のデプロイ

やらないといけないこと

notch_man

  • アップロード時のファイル名をランダムにする
  • python鯖からGo鯖への繋ぎ込み
  • バックエンドでスコアデータを定期的に流すのを作る
  • Go側でのスコアリングロジック
  • WebSocketで値を流す
  • トータルスコアに応じてPodを増加させる機能の実装
  • スタイリング(最低限)

nissie

  • pod数の更新
  • 本番環境のサーバー構成
  • フロントでWebSocketを頑張る
  • デプロイ壊れたら直す

あとでやる

  • Topazの編集
  • スタイリング(凝る)
  • スコア計算のアルゴリズムの改良
Select a repo