推しアイデア
褒めてあげるのではなく、危機感を煽る
褒めてあげるのではなく、危機感を煽る
つよつよになるまでの問題として技術力、モチベ、勉強量、危機感がない、と要因分析していくと「危機感がない」という課題が出てきたため。
WebSocket, CloudFormation, RAG, Three.js

会場に来ている方はデプロイ済みなので触ってみてください!
学びスニペットとAIによる採点結果をリアルタイムで共有し、他プレイヤーや活躍している学生に比べてどれくらい遅れているかを見せつけて焦らせるアプリケーション。
フロントエンド https://github.com/KinuGra/2511-egret-front
バックエンド https://github.com/KinuGra/2511-egret-back
インフラ https://github.com/zatunohito/2511-aws-code

・ Next.js ・ Cloud Firestore ・ Three.js

・ Python(FastAPI) ・ RAG ・ Chroma DB

・ API Gateway ・ WebSocket ・ Lambda(Node.js) ・ Amazon Bedrock ・ DynamoDB ・ S3 ・ EC2 ・ VPC + Nginx

FastAPI + RAG + Geminiによる採点機能については「工夫したこと」に書きました。

スニペットはCloud Firestoreに保存しており、スニペットが投稿されるとAWSで構築したWebSocketでリアルタイムに周囲のユーザーの学んだこととスコアが通知されます。

2つのAI(RAG・Gemini、Bedrock)によって採点されたスコアはリアルタイムに通知されるだけでなく、Three.jsで制作した惑星モデルの大きさに直結しており、さらにプログレスバー、スニペットと紐づいています。
3Dでタイトル、惑星を実装しているのでドラッグすると回転させることが可能。
ConoHa VPSでデプロイしているバックエンドもコードで構成するつもりだったが、時間がなかった。
AWSに関してはCloudFormationを使い、コードで管理することでGUIによるミスを減らすことに挑戦しました。
JSON Schemaで出力を制御することで、LLM が必ず"depth_of_learning": intのような正しい JSON を返すように制御
config={ "response_mime_type": "application/json", "response_json_schema": SnippetScore.model_json_schema(), }
採点品質を高めるためにRAGを用いた。 Embedding → 類似検索 → プロンプト生成まで全て実装した。
流れ:
① Gemini の embedding
② ChromaDB にクエリ
③ 類似スニペット取得
④ プロンプトに注入
⑤ Gemini が “良い例と比較しながら採点”

・Geminiの役割
Embedding(意味を数値化) 例文比較をした上での採点(LLM)
・ChromaDB の役割
例文データベース 類似検索(近いスニペットを探す) これらを用いてLLMの弱点を補完しています。
・AWS Bedrock(Claude) ・RAG Gemini
我々以外の強い人がやることが多かったAPI Gateway + Lambda + DynamoDBによるリアルタイム通信を今回は当日までに勉強し、コネクションに関するエラーと戦いつつもなんとか実装しました。
Next.jsといえばVercelで爆速デプロイすることが多く、今回はEC2を使ってデプロイしてみようという話になったのでメンターさんに教えてもらいながらもデプロイすることができました。
FastAPIも仮想サーバーを借りて、生のUbuntuにNginxやFastAPIの環境構築を1から行いました。
2つの評価を取得し平均することで、単一AI依存を避け、信頼性を高めた。
WebSocketの接続したユーザーがbodyを送ったとき、そのbodyを送ったユーザーに返したくない。 ページのコンポーネントが再レンダリングされるたびに再接続され、connectionIdが同じでなくなってしまった。 そこでuseRefという参照を維持するreactの関数コンポーネントを使うことでconnectionIdがそろい、bodyが送信者に送り返されなくなった。 うれしいね。
企画・開発・振り返りのミーティングでは以下のような課題があります。
・手動で議事録を手動で作成するのが面倒で、開発時間が削られる ・複雑な議論の振り返りの困難さ:ハッカソンのミーティングでは複雑な技術的議論や専門用語が多く、内容を追いきれないことがあった ・ミスコミュニケーションのリスク:議論内容の認識のズレや、聞き逃した内容の確認が難しい
Notion AIでDiscordでのミーティング内容を、文字起こしから要約までを全て自動で行うことで、上記の課題解決に活用しました。ミーティングに関して思い出せないことがあれば、Notionのミーティングブロックをプロンプトに含めてNotion AIに質問することで効率的に検索することが可能です。
・「議事録作成の手間を減らし、開発時間を最大化」 ・「振り返りの容易化」 ・「チームの意思決定の明確化」
Notion AIのパーソナライズを利用して事前にコマンドを設定することで、必要に応じてページ作成までを自動で行うようにした。
・実際のパーソナライズ設定

・実際のプロンプト

・調査結果のドキュメント自動作成

話し合いが煮詰まってきたら一度AIに課題設定、ターゲット設定、要件定義をレビューさせることで改善点を探りました。

Figmaに書いている要件定義をプロンプトとして提示し、プロトタイプを作成することでメンバーへのイメージの共有や実装に必要な処理がイメージしやすくなるようにしました。

・ChatGPT ・Gemini ・Codex ・GitHub Copilot
実装の際の技術的な疑問点の解消、適切なブランチ名の提案など、実装だけでなく雑務にも活用しました。
工夫した点としては、AIが提示するコードに対して以下のようなプロンプトを提示。
自分がコードを見て、何も見ずに実装できないであろう部分は学びながら実装できるように「概要」「技術的な仕組み」「文法」を解説してもらいながら実装するようにしました。
以下の3点に沿って教授してください。 ・コードの概要 ・実装コードの技術的な仕組みの解説 ・実装コードの文法的な解説
・Google Antigravity Googleが11月19日、AIエージェントによって開発を支援するIDEを公開。
現在はパブリックプレビュー期間中で無料で利用できるため使ってみました。
AIが実装計画を提示してくれるので、それに対して人間がレビューすることでAIと人間の認識の差異を最小限に抑えることが可能です。
・Google Code Assist PRの自動レビュー、サマリーの提示によりレビュワーの負担が減るだけでなく、自分自身でコードのリファクタリングができるようにしました。
スコアに応じて大きさが変わる3Dオブジェクト!回転します(笑)

ReactMarkdownを用いており、マークダウン形式で投稿が可能です。

自分が送った投稿は「送信できました。」という通知がきます。

自分以外が送った投稿は採点処理が終わったのち、リアルタイムに受信されます。
