推しアイデア
人と一緒にクイズをタイムを競って行う
―
人と一緒にクイズをタイムを競って行う
初対面の人と滑らかにコミュニケーションするのはとても困難を極める。 クイズというどの年齢層でも知っているわかりやすいゲームでコミュニケーションを図る一歩としたい!!!
cognit,WebSocket,VPS,Django
フロントエンド https://github.com/KinuGra/202507-front
バックエンド https://github.com/KinuGra/back_202507
今回の開発プロセスは従来の一番安定する 「細かいタスクに割り振ってアサインしていく」 から 安定を考えない、挑戦型の 「要件を完璧に決めてやりたいものを自ら考え実装する」
これには大きなデメリットが伴います
AI時代は企画、設計、実装、評価をする経験を積んだほうがいい。 と書かれており、僕たちはそれに共感し感銘を受けました。 そのため、この力を磨くために最低限のIssueのみを立ててプロダクトを作り、「自律的」に行う経験を積みました。
– Takatoshi Kobayashi によって開発された「みんなで早押しクイズ」をリスペクトした、 –早押しクイズゲームで、リアルタイム対戦が可能です。
早押しボタンを押すと、解答を一文字ずつ選択していきます。
例) 正答が「りんご」なら ”り”, ”ん”, ”ご” と回答する
制限時間内に解答に成功すると点数を獲得し、すべての問題が終了すると最終的な得点と順位が表示されます。
[フロントエンド] ・Next.js ・React ・TypeScript
[バックエンド] ・Next.js(API Routes) ・Django/Django REST Framework ・SQLite ・WebSocket(PUSHER) ・Discord Webhook(サーバーのログをDiscordで表示)
[AWS] ・AWS Cognito(認証) ・AWS Lambda(サーバーレス関数) ・Amazon DynamoDB ・CloudWatch(ログ・モニタリング)
[インフラ] ・VPS(サーバー) ・Nginx ・Gunicorn
・AWS Cognit ・AWS Lambda ・AmazonDynamoDB ・CloudWatch CloudWatchはLamdaのログを出力し、デバッグに使用しました。
AWS Cognitで認証(パスキーによる認証も実装)し、Next.js API RoutesからDjangoのAPIにリクエストすることでDBを操作。
DiscordのWebhookを使ってVPSのエラーログをDiscordに出力しています。
問題作成画面ではLambdaにリクエストを送って、それから問題や解答をDynamoDBにCRUD(クラッド)します。
開発の分担がしやすいようにTS, React, Next.jsでコンポーネント、ページごとに開発した。
Next.jsのベストプラクティスに沿ったディレクトリを採用。
uiフレームワークとしてTailwind CSS, Radix UIを活用。
バックエンド(Django)はVPSにデプロイし、Nginxが外部からのリクエストを受け取り、Gunicornに渡して、そのリクエストをDjangoが処理する構成。
WebAPIに関してはNext.jsとDjango REST FrameworkでAPIを生やした。
WebSocketはPUSHERにホストすることでリアルタイム通信を実現。 WebSocketのサーバーサイドのプログラムはNext.jsのAPI経由で実行
・ChatGPTでテストデータの作成 ・GitHub Copilotでバグの検証 ・Amazon Q、Gemini CLI、GitHub Copilotによるコーディング支援、リファクタリングの提案 ・ChatGPT(o3)にデータベース設計の添削をしてもらった