Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「このコード、捨てます」 カンファレンスの景品抽選アプリ開発から学ぶ、Vibe Codingの現在地
Search
わたり
September 19, 2025
Programming
0
9
「このコード、捨てます」 カンファレンスの景品抽選アプリ開発から学ぶ、Vibe Codingの現在地
先日開催されたPHPカンファレンス関西で使った
景品の抽選アプリをVibeCodingで開発した話
わたり
September 19, 2025
Tweet
Share
More Decks by わたり
See All by わたり
開発15年のAIネイティブでない 巨大サービスのAI最適化
rapicro
0
130
AI時代に求められるエンジニア像と、AI活用の勘所
rapicro
0
54
Other Decks in Programming
See All in Programming
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
5
1.9k
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
500
Querying Design System デザインシステムの意思決定を支える構造検索
ikumatadokoro
1
1.2k
Level up your Gemini CLI - D&D Style!
palladius
1
170
Herb to ReActionView: A New Foundation for the View Layer @ San Francisco Ruby Conference 2025
marcoroth
0
240
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
980
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
170
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
380
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
0
330
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
180
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
250
CloudNative Days Winter 2025: 一週間で作る低レイヤコンテナランタイム
ternbusty
7
1.9k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
4 Signs Your Business is Dying
shpigford
186
22k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Balancing Empowerment & Direction
lara
5
780
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Practical Orchestrator
shlominoach
190
11k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Transcript
「このコード、捨てます」 カンファレンスの景品抽選アプリ開発から学ぶ、Vibe Codingの現在地 </> phpカンファレンス関西アフターパーティ </>
わたり • CTO室 プロダクトチーム ◦ 現在はPOS開発 • AIツール ◦ 利用歴は約2年半
▪ ChatGPTが公開されてすぐくらいから利用 ▪ 転職とほぼ同時期 ◦ 社内 ▪ AI利用のルール作り / AIツール価値検証や布教 ▪ プロダクトのAI開発最適化 ◦ プライベート ▪ AItuber作成(配信は10回くらい)
今日は先日開催されたPHPカンファレンス関西で使った 景品の抽選アプリをVibeCodingで開発した話をします
"Vibe Coding"とは? コードを 1 行ずつ記述するのではな く、AI アシスタントをガイドして、より 会話的なプロセスを通じてアプリケー ションを生成、改良、デバッグする ワークフローを指します。
この発表では主に人間がコードの内 容を確認したり直接編集をしないこと を指しています。
なぜ景品抽選アプリを作ることになったのか? PHPerシールの交換を促す施策として、シールを集めて景品抽選するという企画が持ち 上がりました では景品の抽選をどうするか? ガラガラや紙のくじなどいろいろ案があがりましたが どれも調整がしづらくコストも意外とかかったり 会場への持ち込み方法や返却方法も検討が必要でした 抽選を行うwebアプリもありましたが、思っているようなものがなくどれも決め手にかける 状態でした 今なら景品抽選くらいならすぐ作れるのではないかと考えました
(しかし、提案して面倒だったら嫌なのでプロトタイピングします)
アプリ作成の流れ まずはLLMに決まっている仕様を入れました DBとしては無料で簡単に使えるものが良いので スプレッドシート かSQLiteで考えていましたが、 可能性を模索したいので最初はオープンクエスチョンで広いところから投げてみました 「カンファレンスで使う抽選アプリを作成したいです ノートpcを持ち込むのでブラウザで動いて、景品が減っていけばよいです」 「ユーザーidを入力して、1人最大5回まで抽選できます 抽選には派手なエフェクトを付けてください」
するとHTMLのコードを出してくれたのですが、 「ブラウザを閉じない限り 抽選回数が記録されます」というなかなかリスキーな提案だったので 「スプレッドシートや SQLiteと連携することはできますか?」という形で条件を明示しました
アプリ作成の流れ 「Googleスプレッドシートの連携に挑戦されることを強くお勧めします。」との提案 SQLiteは他端末でのセットアップが面倒だと思っていたのでスプレッドシートで確定 コードを出してもらい、指示通りに設定も進める (GASもリポジトリ内にGAS置き場のディレクトリを作成して保持->コピペ) 「エラー: Failed to fetch がでます」
みたいなことも脳死でコピペ入力しながら修正 動作確認を行い特に問題はなさそうになったので提案へ 動画をみながらだらだらやって4〜5時間程度
確認 サンプルのアプリもできたので、チーム内に確認をなげました 「ガラガラなどを使う場合はいくらかかりそうです」 「意外とコストもかかり面倒なので、簡単にサンプルで抽選アプリを作成してみました」 「PC一台でもいけますが、できればスタッフの操作画面と来場者が見る画面を分けたいのでモ ニターは用意できると助かります」 「(画面録画を添付して)アプリの動作はこんな感じです」 という情報を共有しました -> 結果、アプリで行く方向で決定
要件がかたまってくる 他の企画などもあり少し時間が空いて、 他チームの動向や企画、人員との兼ね合いでオペレーションが決まってきました チームと連携し、要件が固まる中で「抽選回数の管理機能」はスタンプでやるため不要 になりました しかし、抽選回数の管理はスプレッドシートのGASにもHTML側のJSにも関連処理があ ります しかしAIでは広範囲にまたがるこの機能をうまく削れませんでした
一度捨てる
なぜ捨てたのか? 元々の仕様が過剰だった • (現状)AIは削るのが苦手 • 調整が面倒 • 作り直しが大した手間ではない
2度目の作成 今度は仕様がかなりかたまっているので最初からCursorに仕様全部入れて対応 仕様が固まっているので余計なやり取りも変なコードもなく、すぐに完成 (動作確認含めても1時間程度だったと思う) -> 提出して確認してもらう 音を付け足したりドラムロールの時間等を微調整
で、本番で動いたの? 一度も問題なく、完璧に動作した 準備段階で会場のネット回線がかなり弱いことが判明、テザリングして対応 抽選は1度も問題が発生することなく無事役目を全う エラー時など万一の際の景品調整などもできるようにしていたが、起きず スプレッドシートに抽選と景品の排出日時がログとして残っている -> 何時に抽選に来る人が多かったか、どの時点でどれだけ景品が残っていたかが分析 可能
実際VibeCodingしたものを利用してみてどうだったか 作るのは簡単 小さいうちはものすごい速さで作れるし改善できる 大きくなってくるとつらくなってくる 特にAIの最初の想定と異なる構造になると詰む コードは読めなくても作れるが、動作の概要(利用するツールの候補や性質、全体の動 作フローや設計)はわかっている方がよい おそらく仕様決めたりしているマネージャーならAI使うの初めてでも作れる
VibeCodingは実務で使えるものか? 捨てるものを作る分にはあり MVP、使い捨ての修正用スクリプト、短納期のもの(簡単なLPやツール)など 特に、コード読むより手でテストした方が早いレベルなら有用 長期的に運用/改善するならどこかでコードを読まないといけなくなる どうにもならなくなってからコード読むとかなりしんどいので、 結局最初から読んで整えている方が楽だし最終的に早い 現状一番寿命が長くなりそうなモデルは無駄な付け足しが少ないGPT5
VibeCodingの現在値 「VibeCodingで100個のアプリを作りました」は比較的ハードルが低め - むしろ開発よりアイデア出しの方が大変 - 非エンジニアでコード読めずアプリを作っている人はかなり多くなっている 「VibeCodingで1サービスを1年間、改善し続けました」は、まだまだ厳しい - 初期はやれなくはないが、後で死ぬ
寿命の長いプロダクトをAIを使いながら開発するには? 計画を立てる AIは余分があると弱いので計画をしっかり立てることで寿命を延ばせる エンジニアはマネージャーか、 AIを部下にもつプレイングマネージャーかの二択になっていく コードは目を通す コードレビュー不要はまだ夢の話 AIは既存コードと似たようなコードを量産したり、付け足しでなんとかしがち -> 開発スピードも早いが負債が増えるとその増幅も早く、制御しないとすぐ死ぬ
ちゃんと削るのは現状人間でないと厳しい 「リファクタして」で削ってくれることもあるが「ここ冗長では?」まで言わないとダメなときも多い AI利用で加速する開発のレビューが大変なので AIによる1次レビューも導入して負担を減らす (CodeRabbitなど)
寿命の長いプロダクトをAIを使いながら開発するには? 課題が出たらプロンプトやルールは適宜改善する • ディレクトリ構成を理解してくれない ◦ STRUCTURE.mdを作成して読ませる • 自動テストを作ってはくれるが後で作成して実行結果を見て調整してくる ◦ 自動テストを作成してから対応するように指示(Red-Green-Refactor)
• プロジェクトの新規加入者に毎回説明するような独自ルールがある(暗黙知) ◦ 新人に説明が必須ならAIにも説明が必要 ◦ 明文化する ◦ 他、関連するデータは渡す(API仕様書や外部のスクリプト等)
AIツールを快適に使うための小技 (家だと)マイク入力を使っています 右⌘キーの右にF13(使わないキー)を設定して、 それをMacの設定で音声入力のショートカットにしています
本日のまとめ VibeCodingは、プロトタイピングや単発のツール開発において革命的な力を発揮する。 一方で、長期的な運用や継続的な改善が求められるプロダクトには、まだ課題があり、 VibeCodingで長期的な開発を行えるまでは短くみてもまだ2,3年はかかりそう。 長期運用するには計画を立てる、ルールを作るなどうまくマネジメントしていくことが必 要。