Humans vs. Cursors vs. Hackathons(人間vs.Cursor vs.ハッカソン)

NanamiTakemoto 23 views 59 slides Oct 27, 2025
Slide 1
Slide 1 of 59
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59

About This Presentation

This is a record of my participation in the 3rd AI Agent Hackathon with Google Cloud.


Slide Content

人間vs.Cursor vs.ハッカソン
竹本七海
1

自己紹介
名前:竹本 七海
?????? 読み書きが出来る言語:
-Python(一番分かる)
-JS(Node.js, TypeScript, 昔のVue.jsをチョット)
IaC,CI/CD :
-Terraform,Ansible:初級レベル
-GitHub Actions, GitLab Runner:初級レベル
-Docker (詳しいことは分からないけど Dockerfileやdocker-compose.yml
が書けるレベル )
?????? 苦手:
-フロントエンド
-静的型付き言語
-DB設計
??????アプリ開発:
-開発経験はあるが、作りきった経験はあまりないレベル
2

アジェンダ
✘前提
✘ハッカソンの紹介
✘ハッカソンに応募した作品
✘ハッカソンの流れ
✘開発をどのように進めたか
✘デモ動画と記事の作成
✘応募
✘まとめ
3

前提
✘今回の話は「ハッカソンで使う生成 AI」の話です
✘長期運用は考慮しておらず、最低限の品質と運用しか考慮していません
✘学割の話が出てきて、ちょっとズルいです(生成 AIのProプランを使用します)
✘クーポンの話が出てきて、ちょっとズルいです( GCPで28万円分の無料枠が存在
する状態です)
✘既に生成AIを使いこなしてハッカソンに応募したことがある人には、目新しい話
はありません
✘(重要)今回の話はハッカソンにチャレンジした話であり、入賞した話ではありま
せん(残念ながら入賞には至らず …)

4

この発表で伝えたいこと
✘ハッカソンに参加〜応募する方法
✘同期型のAIエージェントと立ち上げから作品の完成
まで並走する方法
✘生成AIを試すにはハッカソンがピッタリだということ
5

第3回 AI Agent Hackathon with Google Cloudへの応募
https://zenn.dev/hackathons/google-cloud-japan-ai-hackathon-vol3
ルール:
●作品には、指定された Google Cloud
アプリケーション実行プロダクトを 1つ
以上利用すること
●作品には、指定された Google Cloud
AI 技術を1つ以上利用すること

提出物:
●プロジェクトの GitHub公開リポジトリ
のURL
●プロジェクトをデプロイした URL
●プロジェクトについて説明した Zennの
記事のURL
○デモ動画やアーキテクチャ等の
指定あり(省略)
6

このハッカソンに応募した理由
✘Google Cloudクレジット300ドル分のクーポンを先着で貰えるか

✘生成AIの使用に制限がないから
✘入賞以下でもキャンペーンページに掲載してもらえるから
✘応募者はクラスメソッドで開催される懇親会に参加できるから

=> もちろん入賞はしたかったが、入賞しなくてもメリットが沢山ある
点が魅力的だった
7

応募作品
応募記事:https://zenn.dev/rii_n/articles/6d5445c99c4f31
応募リポジトリ: https://github.com/nanami-takemoto/ai_agent_hackathon_2025_teamLN
Peacek - AI画像匿名化ツール
8

デモ動画
9

参加登録の流れ
1.申し込み
2.オフィスアワー
3.チームビルディング
4.アイデア出し
5.開発
6.デモ動画と記事の作成
7.提出
10

参加登録
✘ハッカソンは大体、参加登録と提出に分かれていることが
多い(気がする)
✗参加登録:ハッカソンに参加する意思を表明する
(フォーム等)
■この時点でチームを結成する必要がある場合も
あるが、今回はチームビルディングは応募後で
可だった
■応募後、詳細な情報にアクセスできる
●今回はDiscordに招待される形だった
✗提出:応募作品の提出
11

オフィスアワー
✘過去の入賞者がどのようにハッカソンを
進めたのか講演してくれる
✘審査員から、審査のポイントを聞くことが
できる
✘チームの募集を聞くことができる
12

チームビルディング (8/5~9/7)
✘Discordで募集をかけている人がいるので、そのチームに参加しても良い
✗メリット:アイデアを自分で考えなくて良い
✗デメリット:設計にどこまで関われるかわからない、グダグダするリスク

✘今回はSecHack365というハッカソンで仲良くなった友人に声をかけて組むことにしました
✗私:アイデア出し、開発全般、記事・デモ用のスクショ撮影・構成図作成
✗友人:アイデア出し、エントリー用の記事作成、エントリー用のデモ動画作成、応募作業

✘チームビルディング後にやること
✗応募要件の確認(ルール一覧、応募フォーム等で確認)
■特に応募フォーム内の PR文などは見落として後で慌てがちなので、最初に確認する
✗アイデア出し
✗開発
✗応募用記事等の作成
✗応募作業
13

アイデア出し (9/7~9/15)
✘2週間くらい使ってアイデア出しを行った
✘最終的に「SNSにアップロードする顔写真を雰囲気を損ね
ることなく加工しよう」ということで固まった
✘目標は「応募要件を満たし、応募作品一覧に掲載されるこ
と」に設定

✘アイデア出しでやったこと
✗Discordで通話しながら miroにアイデアを書き出す
✗前回の応募作品集を見ながら、
■完成形を認識する
■自分たちで実現可能な規模を考える
■既存の作品と重複していないか考える
■受賞作品の傾向を見る
14

開発 (9/15~9/24)
1.開発要件の確認
2.GitHubのリポジトリだけ先に作成し、 Cursorでローカルリ
ポジトリを開く
3.Cursorに必須要件を伝えて構成を相談
4.最小構成を伝えて変更点を都度確認して作成してもら

5.リファクタを依頼
6.変更依頼を重ねて調整(画像の前処理など …)
15

1.開発要件の確認
ハッカソンでは応募要件を確実に満たさないと審査の対象にならないので、ま
ずは応募要件をしっかりと確認することから始める。
チームメンバーと読み合わせを行うと見落としが減って良いと思う。
今回のハッカソンでは、以下の必須要件があった。
✘テーマ:AIエージェントが現実を豊かにする
✘作品には、指定された Google Cloudアプリケーション実行プロダクトを 1つ以
上利用すること
✘作品には、指定された Google Cloud AI 技術を1つ以上利用すること
✘作品は公開し、 URLを応募フォームに記載すること
✘ソースコードは GitHubで公開リポジトリに格納し、 URLを応募フォームに記
載すること
✘作品制作に生成 AIの利用制限は無し
16

開発プロジェクト条件
✘作品には、指定された Google Cloudアプリケー
ション実行プロダクトを 1つ以上利用すること

✗App Engine
✗Google Compute Engine
✗Google Kubernetes Engine (GKE)
✗Cloud Run
✗Cloud Functions (旧 Cloud Functions)
✗Cloud TPU / GPU

✘ 作品には、指定された Google Cloud AI 技術を1つ以上利用すること

✘ Vertex AI
※AIモデルのトレーニング、デプロイ、管理を行うための統合
プラットフォーム。 AutoML、Vector Search、Explainable AIなどの
機能を含みます。
✘ Gemini API
※最先端のマルチモーダル AIモデル。Vertex AI経由での利用
を推奨しますが、直接利用することも可能です。
✘ Gemma
✘ Imagen
✘ Agent Builder
✘ ADK (Agents Development Kit)
✘ Speech-to-Text / Text-to-Speech API
✘ Vision AI API
✘ Natural Language AI API
✘ Translation AI API
17

開発プロジェクト条件
✘作品には、指定された Google Cloudア
プリケーション実行プロダクトを 1つ以
上利用すること

✗App Engine
✗Google Compute Engine
✗Google Kubernetes Engine (GKE)
✗Cloud Run
✗Cloud Functions (旧 Cloud
Functions)
✗Cloud TPU / GPU

✘ 作品には、指定された Google Cloud AI 技術を1つ以上利用する
こと

✘ Vertex AI
※AIモデルのトレーニング、デプロイ、管理を行うため
の統合プラットフォーム。 AutoML、Vector Search、
Explainable AIなどの機能を含みます。
✘ Gemini API
※最先端のマルチモーダル AIモデル。Vertex AI経由で
の利用を推奨しますが、直接利用することも可能で
す。
✘ Gemma
✘ Imagen
✘ Agent Builder
✘ ADK (Agents Development Kit)
✘ Speech-to-Text / Text-to-Speech API
✘ Vision AI API
✘ Natural Language AI API
✘ Translation AI API
これらを全て調べるのは大変すぎる!
18

そこで、構成決めから生成 AIを頼ることに
私が使用可能だった生成 AI
✘Cursor Pro (Student Discount)
✘GitHub Copilot (GitHub Student Developer Pack)
✘Google Gemini Pro(Google AI Pro 学生無料キャンペーン )
✘Google Jules
✘ChatGPT Plus (有料課金)
✘Dify Pro(教育版プラン)
→ 最終的にほぼ GeminiとCursorしか使わなかった
機能性より、何なら安く使えるのか?の観点で選定
19

Cursorの特徴
✘AI統合IDE(コードエディタ)
✘Visual Studio Codeをベースとしている
✘同期型エージェントと非同期エージェントの両方が使える
✘複数のAIモデルをアクセスキー無しで使用可能
✘無料プランと有料プランがある
✗今回使用したのは有料プラン( Cursor Pro)
✘難しいことを考えなくていいので、なんとなく使いやすい
20

生成AIを比較検討したい人におすすめ
今月発売の Software Design 11月号は、
「AI開発ツール大整理」が特集されています。
序章の「AI開発ツールの概観」では、 AIツールを分類する
3つの視点が紹介されていました。
-同期型エージェント vs. 非同期エージェント
-GUI vs. CLI
-単一モデル vs. マルチモデル
https://gihyo.jp/magazine/SD/archive/2025/202511
各ツールがどれに当てはまるのか?
それ以外の特徴は?
詳細は、実際に購入して読んでみてください〜
21

今回の役割
✘人間(私)… Geminiに相談しつつ Cursorに指示を出す
✘Gemini … メンター
✘Cursor … 作業してくれる上に提案もしてくれる頼れる作業員
22

23

使用したモデルについて
基本的にAutoを使っていたので意識せず

多分、Autoでgpt-5が使われていたっぽい?
24

2. GitHubのリポジトリだけ先に作成し、 Cursorでローカルリポ
ジトリを開く
✘今回の作品は GitHubの公開リポジトリに載せる必要があったので、
先にリポジトリを準備しておく
✗GitHubに空のリポジトリを作成
✗ローカルに git cloneする
✗Cursorでローカルリポジトリのフォルダを開く

=> ここまでは普通のエディタと同じなので、困りポイントは特にないはず
25

3. Cursorに必須要件を伝えて構成を相談
ポイント:
✘いきなり構築せず、構成を相談する
✘相談時は詳細に伝えすぎない
✗その詳細は今考慮すべきことなのか?必須条件なのか?
✗シンプルな構成なら詳細に伝えても良いと思うが、条件が複雑であればあるほど、コミュニ
ケーションの齟齬が致命的になる気がする(伝わったと思ったのに伝わってなかったとか)
✘なので、最初はこの一文から相談を始めました


26

アーキテクチャの提案
言語指定をしていなかったので、
Node.jsで提案されました。
これをPythonに変えたくなりました
27

Pythonでサンプルコードを出してもらう
最低限読める言語を選択した方が良いかもです
28

Geminiにも相談
29

GCPは初めて使うので、何を使え
ばいいのか、何をするべきなのかを
教えてもらえたのはありがたかった
です
30

一旦draw.ioで図を描いて、フローを整理
して、
それを確認してもらうことにしました
31

VertexからCloudStorageへのアップロードが不要
と言われました
32

疑問は全て生成 AIに質問
33

別に逆になってないので、スルー
34

この時点で構成やゴールをメモに書き出しました
チャットベースだと情報が時系列に流
れてしまって頭が整理出来ないので、
人間側は自分向けのメモを取っておくと
良いかなと思います。
35

Cloud Run: サーバレスコンテナコンピューティングサービス
Cloud Storage: オブジェクトストレージサービス
Vertex AI:生成AIを構築して使用するためのフルマネージド統合 AI開発プラットフォーム
Imagen:AI画像生成ツール( imagen-3.0-generate-001, imagegeneration@006を使用)

構成の説明
36

Terraformも使いましたが、
結局気がついたら gcloudコマンドラインツールを使
うことになっていました
37

Cursorへのプロンプトを Geminiと考える
38

Cursorとの進め方を Geminiに相談する
39

ちなみにこの後、 Cursorのチャットが分割でき
ることに気が付くまで
Geminiに質問を続けました …
最初からCursorだけで良かったかも

40

これからZenn AI Agent Hackathonの作品として、 Google Cloudで動作する Webアプリケーションを構築します。このアプリケーションは、 Cloud Run、Cloud Storage、Vertex AIで構成されます。以下の
要件を満たす Terraformコードを生成してください。
要件:
プロバイダ設定 : プロジェクトIDはgcp-zenn-hackathon-2025、リージョンは asia-northeast1(東京)とします。プロジェクト IDは変数として扱い、 .tfvarsファイルで設定するようにしてください。
Cloud Runサービス: サービス名は image-processorとします。
コンテナイメージは [YOUR_CONTAINER_IMAGE_URL]をプレースホルダーとして使用し、この値も変数として扱うようにしてください。
サービスの URLは変数として出力してください。
CPUは1コア、メモリは 1GB、最大インスタンス数は 5に設定してください。
Cloud Storageバケット: バケット名は [YOUR_BUCKET_NAME]をプレースホルダーとして使用し、これも変数として扱うようにしてください。
APIの有効化 : aiplatform.googleapis.comとrun.googleapis.comの2つのAPIを有効化するコードを含めてください。
IAM設定: Cloud Runサービスアカウントに、以下の IAMロールを付与してください。
storage.objectAdmin(Cloud Storageへの読み書き権限)
aiplatform.user(Vertex AIの利用権限)
機密情報の分離 : APIキーやサービスアカウントキーなどの機密情報は、 Terraformコードにハードコーディングせず、外部から参照する安全な方法( .tfvarsファイルや環境変数など)で扱うよう
にしてください。そのためのプレースホルダーや variableブロックを適切に含めてください。
上記を踏まえた上で、以下の Terraformファイル(variables.tf, main.tf, outputs.tf, terraform.tfvars)を生成してください。
4. 最小構成を伝えて変更点を都度確認して作成してもらう
41

一応変更点を確認して承認してから反映する方
式を取りました。
今回はソースコードを提出する必要があったの
で、基本的には公開しても問題ないかだけチェッ
クしました。
42

人間側のメモ
チャットでデバッグしていると、
元々何をしたかったんだっけ?となってしまう
ので、手元でメモを取っていました
デバッグしている内に問題のネストが深くなっていく。
チャットベースでネストを記憶しておくのは辛いので、
どこから派生した問題なのかを階層構造でメモしておく
43

無理に理解しようとせず、説明も生成 AIに依頼
44

5. リファクタを依頼
45

46

6. 変更依頼を重ねて調整
47

48

顔認識と加工の微調整
✘ 全体の機能実装は完了したが、肝心の顔認識の精度が悪い状態
処理としては、、、
1.入力画像をリサイズ
2.どこが顔なのかをマスク or 顔検出
がない場合は中央トリミング画像を
生成
3.Imagenに渡すプロンプトを変数に
格納
4.Imagenで成功しなければ SDXL
Inpaintingを試行
5.その他加工
↓謎のフォールバック
49

ここからはひたすら、エラーを渡しながらトライ
50

51

完成形
52

デモ動画と記事の作成(この辺でかなりバタバタする)
✘デモ動画作成には素材が必要なので、素材作成を開発完成前にやる必要がある
✘記事はGemini ,ChatGPT,Edgeのサイドバーにいる Copilotに相談しながら作成

ちなみにEdge以外にも
Firefoxでもサイドバーで AIが使えたり
します
53

応募
✘応募要項を満たしているかの再確認
✘応募後のルールの再確認
✗期間中は作品にアクセスできるようにしておくこと
✗GitHubを更新してはいけない。更新したい場合は応募時
点でタグを作成し、バージョン情報を含んだ URLで応募す
ることなど
✘応募作業は、応募担当者のスケジュール次第なところがある
ので、締切=応募締切と思わずに、あらかじめ予定を聞いて
おこう!「締切の日は仕事が忙しいから前日の夜には提出し
たい」などメンバーの要望があるかも!
54

結果??????
55

所感
✘ハッカソンは通常の開発と異なり、可能性をアピールするために安定性・冗
長性・保守性などは度外視したスピード開発を行う
✘生成AIはアイデアを出してくれるし、ベストな開発をしてくれるが、あくまでも
統計的な回答をしているに過ぎないので、業務で扱うには品質を担保する
開発手法が必要かも(テスト駆動開発とか?)
✘ハッカソンなら上記を気にしなくて良いので、生成 AIとバトルするのにピッタ
リ!

=> ハッカソンに参加して、 AIとバトルしよう!

56

おまけ
非同期エージェントの Julesも使ってみました。オセロやテトリスなど、仕様の詳
細を伝えなくても伝わるものであれば、非同期型は便利だなと感じました
57

GitHub リポジトリ
ハッカソン+Cursorのリポジトリ:
https://github.com/nanami-takemoto/ai_agent_hackathon_2
025_teamLN

Julesのリポジトリ:
https://github.com/nanami-takemoto/a_study_for_game_app
58

ありがとうございました
59