推しアイデア
「オートチェス x ハッカソン」なところ
「オートチェス x ハッカソン」なところ
このハッカソンが今週3つめのハッカソンだから
cloudflare ベースの構成にチャレンジしているとこ
「ハッカソン・デベロッパー」は、「オートチェス」に「ハッカソン」要素を組み合わせた、リアルタイム対戦型カードゲームです。
※オートチェス:チェスでいうところの「コマ」をショップから取り合い、同じ駒を集めたりして強化し、自由に並べて競うゲームジャンル。始まりは「Dota Auto Chess」といわれており、近年タイトルが増加している。
参照:近年最も成功したと言われるゲーム「オートチェス 」とは?|エガオヲミセテ@オートチェス日記
このゲームでの目的は、「自分なりの技術を育て、ハッカソンで高い順位を取り続けてハイスコアを目指す」ことが目的のゲームになっています!
以下の「技術カード」を集め(もしくは奪い合って)、自分なりの技術を育てていきます。
基本的には「1ターン=1ハッカソン」として、全10ターンのハッカソンをこなしていくことになります。
各ターンの準備フェーズでは
を 45秒で 行う必要があります。 つまり、
必要があります!(むずい!)
フロント https://github.com/2509-democracy/democracy-next
インフラ https://github.com/2509-democracy/democracy-infra
採点用のAI Agent https://github.com/2509-democracy/scoring-agent.git
画像生成のworker https://github.com/2509-democracy/create-image-worker
CloudflareのAgents SDKを使って、採点用のAI Agentsを作成
Agentsのフローとしては、全てを統括するオーケストレーターが各項目の採点官(ワーカー)に向けてタスクを生成する。 各ワーカーがそれぞれの採点タスクをこなし、その結果を全てオーケストレーターが統括して返す。
採点する項目によって、使用するLLMのモデルを変えることでモデルの強みを活かした賢い採点をすることができている。
昨今、スペック駆動の AI Agent が出てきたりして「設計」のフェーズに踏み込んだツールが増えつつあります。 これ自体はうれしいことですが、ハッカソンではとても速いスピードでのデバッグ能力が求められることがあります。そうした際、人間がコードベースのことを理解していない という状況は忌避すべきです。
そのため、私は copilot を推しています。人間の判断の余地を残すことで、開発の一員として人間が取り残されないように開発しています。
...といっても普通に使うだけでは他の Agent と大して変わらないので、以下のようなカスタムプロンプトで制御しています。
# copilot-instructions.md 各作業を以下のように定義する。 - 「調査」と指示された場合、都度 docs/reports に記載すること - 「計画」と指示した場合、docs/tasks.md に計画を記載する - 前回の内容が残っている場合は、読まずに消して構わない - コードベース / docs を読み込み、要件に関連性のあるファイルパスをすべて記載すること - 不明な点については、fetch mcp を使用して検索すること - 必要最小限の要件のみを記載すること - このフェーズで、コードを書いては絶対にいけない - ユーザが「実装」と指示した場合、docs/tasks.md に記載された内容に基づいて実装を行う - 記載されている以上の実装を絶対に行わない - 実装が終了したあと、`coderabbit --plain` を使用して、コードの説明と次にユーザが取れる行動を説明する - 「デバッグ」と指示された場合、直前のタスクのデバッグ「手順」のみを示す
たとえば何も知らない Terraform を使って AWS のリソースを立てる場合、
...のように、人間と AI がほどよいペースでキャッチボールを行うように開発することで、AI に丸投げしないような開発スタイルをじつげんしてます。
↑に付随しますが、copilot と documentation MCP を使うことでソースをより信用できるものにしています。 今回は
あたりを使用しています。
最近登場したCode Rabbit CLIを使って、Pull Req作る前や自分の任意のタイミングでCode Rabbitにレビューしてもらうことができる。 そのフィードバックをもとに、質の高いコードをPull Reqに乗っけられる
Pulumi Neoは、おそらく回答を作成する際にPulumiのドキュメントを読んで返してくれるので、かなり精度の高いコードが生成されていた。 Pulumi Neoを使うことで、慣れていないC#でのIaCもなんとかなった
ただ要件を投げるだけでなく、MCPを使って要件に必要なContextを与えるようにしたり、デバッグの手段を生成AIに与えることで、無駄なデバッグの手間を省くことができた
Context Enginneringのために使ったMCPたち
当初、リアルタイムは supabase realtime を使用して初心者2人に任せる予定...でした。 ところが夜中まで作業してもランダムマッチング処理が動作せず、仕方なく AWS 構成に変更しました。簡単に実装できるだろうと思っていた部分で6時間程度潰してしまい、胃が痛いです.......