先日開催された「次世代オートモーティブ生成AIハッカソン」の優勝チームのエンジニアさんからご寄稿いただきました。
先日MeltingHack主催の「次世代オートモーティブ生成AIハッカソン」に出場したのですが、光栄なことに優勝という結果を残すことができました。
ハッカソンで開発したのは「頭文字zk」というプロダクトで、生成AIに加えてゼロ知識証明とブロックチェーンも使っています!
簡単にいうと「画像認識で読み取った車のナンバープレートを使って車をデジタルウォレット化してしまおう」というものになります!
「ナンバープレートをブロックチェーンに刻んでも良いのか??」
と疑問に思われた方、そこでゼロ知識証明が出てきます!!
デモビデオ: YouTube https://www.youtube.com/watch?v=ZadbU3WnY10
GitHubリポジトリ: https://github.com/eyepyon/car
今回のハッカソンには自分を含めて3人のチームで参加しました。3人ともWeb3のイベントでの知り合いでハッカソン出場経験もあったため、ブロックチェーンには精通しているチームでの挑戦となりました!
チームビルディングまでは良かったですが、良いアイディアが中々思い浮かばずに1日目が終わってしまってずっと唸っているだけでした….笑
2日目も14時ごろまでずっとアイディアを考えているだけで何も進まずに苦戦していました…。周りはすでにアイディアが固まり実装し始めているチームもいたのでかなり焦っていました笑
アイディアの素案は何度かメンターの方にも聞いてもらいましたが他チームで既に類似アイディアが出ているという話を聞き、断念することに….。
残されたアイディアや車のパーツについて話していたときに
「車のナンバープレートを使って車をウォレット化したら面白くね?」
となり、2日目の16時すぎぐらいにやっとアイディアが決まりました!
提出までの時間から逆算して開発できる時間が0.5日しかなかったので急いで設計を進めました。
もちろんSpec駆動開発を実践しました!
Spec駆動開発とは?仕様駆動開発(Spec-Driven Development:SDD)は、コードを書く前に詳細な仕様(Spec)を定義し、それを唯一の正(Single Source of Truth)としてAIを活用して実装・テストを自動生成する開発手法です。人間とAIが「何を作るか」を明確に合意・共有することで、設計と実装の乖離を防ぎ、高品質なソフトウェアを迅速に開発します。
ギリギリまでプロダクトのアイディアを考えられるようになったのでハッカソンの戦い方がガラリと変わったことを実感しました。
僕たち人間がメインでやったことは:
プロダクトのコンセプト決め
資料作り
AGENT.mdやMCP・SKILL・プロジェクトのベース部分のセットアップ
皆さんは普段AIを使ってコーディングするときに0から実装させていたりしませんか?ある記事で見たのですがAIが最も苦手なことは環境構築だそうです。(人間と同じですね)なのでAIが最高のパフォーマンスを発揮するためにお膳立てをしてあげると良いです!
具体的に今回のハッカソンでやった事は:
pnpm モノレポのセットアップ
フォーマッター&リンターのセットアップ
フロントエンドとバックエンドのベースプロジェクトのセットアップ
AGENTS.mdのセットアップ
MCPのセットアップ
SKILLのセットアップ
そして最低限、ビルドコマンドが通ることを確認してからAIに渡しました!
これをやるだけで実装量やAIが考慮すべき量がグッと減るので本質的なロジックの実装にパワーを割くことができるようになります。
README.mdが人間向けのドキュメントだとすればAGENTS.mdはAIエージェント向けのドキュメントです!
特にチーム間で共通のGitHubリポジトリを対象に作業するときにAIエージェントの振る舞いをある程度共通化させることができます!
さらにAGENTS.mdはClaude CodeやGitHub Copilot、Kiroなど複数のAIエージェントも読み込み対象としています。なので複数のAIエージェントを併用するときにも使いまわせるので非常に便利です。
実際今回のハッカソンで用意したAGENTS.mdは以下のような内容をまとめました:
全体的な方針
SKILLについて
Sub Agentについて
Project Context
Development Guidelines
Minimal Workflow
Development Rules
Steering Configuration
開発の基本理念
エラーハンドリングの原則
コード品質の基準
テスト規律
保守性とリファクタリング
セキュリティの考え方
パフォーマンスの意識
信頼性の確保
プロジェクトコンテキストの理解
トレードオフの認識
Git運用の基本
コードレビューの姿勢
デバッグのベストプラクティス
依存関係の管理
ドキュメントの基準
継続的な改善
実際のファイルは以下のリンクから確認できます:
https://github.com/eyepyon/car/blob/main/AGENTS.md
このAGENTS.mdは0からオリジナルで作ったものではなく、以下の2つのブログ・GitHubの中身を参考に作成しました:
【コピペOK】技術的負債を作らないためのルールを設定しよう(Claude Code, Codex, Cursor対応)
AGENTS.mdと並んで必須級に設定しておいた方が良いのがSerena MCPです!Claude Code のベストプラクティスでも言及されているようにAIにコーディングをさせる上でコンテキストエンジニアリングが最重要課題です。このコンテキストエンジニアリングの課題を解決するアプローチとして注目されているのがSerena MCPです!
https://code.claude.com/docs/en/best-practices
https://github.com/oraios/serena
Spec駆動開発により作成した要件定義書、設計書、タスクリストさらにこれに加えてセットアップしたプロジェクトのベース、AGENTS.mdを組み合わせることで、「やりたいことの背景や意図をしっかり汲み取みとりながら実装してくれる」ようになります!
ゼロ知識証明とブロックチェーンという専門的な技術を組み合わせながらも短時間でしっかりしたプロダクトが開発できたのは、このやり方を実践したからだと考えています!
開発時間が0.5日しかなかったため持ち合わせているものをフル活用!
実際に使ったのは:
Kiro(要件定義書、設計書、タスクリストの作成&実装担当)
Antigravity(実装担当)
Codex(実装担当)
Claude Code(実装担当)
GitHub Copilot(実装担当)
5つも使いましたが、AGENTS.mdとSerena MCPのおかげでちゃんとプロジェクトの背景情報を汲み取ってくれて開発を進めてくれました!
コンテキストエンジニアリングめちゃくちゃ大事です笑
新しいことも試してみようということでAgent SKILLもハッカソン中に作ってみました!
SKILLの作成には skill-creatorを使いました:
https://github.com/anthropics/skills/tree/main/skills/skill-creator
このSKILL、新しく作ってみたい場合にはめちゃめちゃ使えるのでおすすめです!
今回はこのskill-creatorを使って:
circom-dev: ゼロ知識証明用のサーキット(算術回路)開発を支援するSKILL (circom-dev)
erc4337-privacy-wallet-dev: 決定論的にウォレットを算出するコントラクト開発を支援するSKILL (erc4337-privacy-wallet-dev)
を新たに作ってみました!どちらも専門知識が必要となり、ゼロから作るとなるとかなり大変です。実際にSKILLを使ってAIに実装させてみましたが、ほぼ想定通りにプロダクトを実装してくれました!!
コード以外にも設定ファイルやユニットテストコードの実装などもしっかりカバーしてくれていたのでフロントエンドと結合させる前に事前検証もできました◎!
SKILLを見てみたいという方は下記のリンクからご覧ください:
https://github.com/eyepyon/car/tree/main/.claude/skills
ナンバープレートをそのままブロックチェーンに刻むことはリスクがあります。特にEthereumなどのパブリックブロックチェーンに一度取り込まれたデータを後からなかったことにするのは仕組み上とても困難です。
ハッカソンの審査員からも同様の質問をいただきましたが、そこで僕たちが採用したアプローチが「ゼロ知識証明を使って決定論的なウォレットアドレスを算出させる」というものです。
実は類似したアプローチを採用しているプロダクトがあり、それがマイナンバーカードをウォレット化させる「マイナウォレット」というものです。
マイナウォレット株式会社: https://www.mynawallet.co.jp
ブロックチェーン上にはステーブルコインやその他多くのプロダクトのプログラムコードが大量にデプロイされています。
ブロックチェーンにプログラムをデプロイすることはこれら巨大なエコシステムと密接に繋がることを意味しており、専用のアプリを介さずともシームレスな決済処理が行えるようになったり他のプログラムの処理を自由に呼び出したりすることができるようになります!
開発者目線の意見になりますが、この点がアプリのインフラとしてブロックチェーンを採用する最大のメリットだと考えています。
ビットコインやイーサリアムが生まれてからもう10年以上経過しました。技術進歩により、もはやブロックチェーンは「高くて遅い」インフラではなくなりました!レイヤー2と呼ばれるブロックチェーン群の代表格であるBaseはガス代も0.001ドルなど非常に安いですし、処理性能も高いです!
Base: https://www.base.org
OP Stack - Optimism: https://www.optimism.io
スマートコントラクトなどを学べる教材もだんだん増えてきています。
金融の世界とは切っても切り離せない関係のため、どうしても投機的な話ばかりが目立ってしまいがちですがブロックチェーン自体はとてもしっかりしたインフラテクノロジーです。今回のハッカソンを通して取り組みのように他の技術との掛け合わせ次第でとても面白いことがいくらでも起こせます!
そしてそのことを体現できたことをとても嬉しく思っています!
これからも技術を磨いてもっと面白いプロダクトを作っていけるように日々精進していきたいと思います!
ハッカソンで0.5日という限られた時間で優勝できた要因をまとめると:
Spec駆動開発でアイディア決定までギリギリまで粘れた
AGENTS.mdでチーム全体のAIエージェントの振る舞いを統一
Serena MCPでコンテキストエンジニアリングを最適化
SKILLで専門的な実装を効率化
最低限のセットアップは人間側で済ませておく
AI駆動開発の時代、これらのベストプラクティスを活用することで、短時間でも高品質なプロダクトを作ることができます!
以上、AICU mediaへの寄稿としてHarukiがお送りしました。
この記事に「いいね!」と思ったら、いいねとフォロー、おすすめをお願いします!
AICU media: https://note.com/aicu
X(Twitter): @AICUai
Haruki: @haruki_web3
AICUマガジン Vol.22「Claude Code入門」特集では、本記事で紹介したSpec駆動開発やAGENTS.md、SKILL、MCPなど、Claude Codeを使いこなすための実践的なテクニックをさらに深掘りしていきます。
次号もお楽しみに!
都内某企業でエンジニアとして働きながら、Web3エンジニアコミュニティ「UNCHAIN」の運営も手がける。OSSでWeb3アプリの開発手法が学べる学習コンテンツを公開中。
UNCHAIN: https://www.unchain.tech