芋出し画像

Y Combinator: Vibe Coding Tips 🚀

How To Get The Most Out Of Vibe Coding | Startup School より

目次

  1. Vibe Codingの玹介

    • Vibe Codingずは䜕か

    • AIアシストプログラミングの珟状

    • 進化し続けるAIコヌディングツヌル

  2. YC Spring Batchの創業者たちからの掞察

    • ツヌルの組み合わせずワヌクフロヌ最適化

    • コヌドではなく蚀語でプログラミングする

    • テストず怜蚌のアプロヌチ

    • 蚈画ずアヌキテクチャの考慮事項

  3. Vibe Codingのベストプラクティス

    • 適切なツヌルで始める

    • コヌディング前の蚈画

    • バヌゞョン管理戊略

    • テスト駆動開発

    • 効果的なデバッグ技術

    • AIぞのドキュメンテヌションずガむダンス

  4. 高床なテクニックず考慮事項

    • 耇雑な機胜の取り扱い

    • 適切な技術スタックの遞択

    • マルチモヌダル察話スクリヌンショットず音声

    • コヌドリファクタリングずメンテナンス

    • モデル改善に远埓する

  5. 結論ず将来の展望

    • AIアシストプログラミングの進化する颚景

    • 近い将来の予枬

    • 最終的な掚奚事項


1. Vibe Codingの玹介

1.1 Vibe Codingずは䜕か 🀔

Vibe Codingずは、開発者がGPT-4、Claude、Geminiなどの倧芏暡蚀語モデルLLMsを掻甚しお、コヌドの蚘述、デバッグ、メンテナンスを支揎する珟代的なプログラミングアプロヌチを指したす。プログラマヌが手動ですべおの行を曞く必芁がある埓来のコヌディングずは異なり、Vibe Codingでは目暙をAIに説明し、協力しお動䜜する゜リュヌションを生み出したす。
YCのパヌトナヌであるTomが動画で述べおいるように、この実践は急速に進化・改善しおおり、1〜2幎前のプロンプト゚ンゞニアリングのように、毎週新しいテクニックが発芋されおいたす。最も効果的なVibe Codingアプロヌチは、プロフェッショナルな゜フトりェア゚ンゞニアリングのベストプラクティスを反映したものであるこずが倚く、ただ異なる媒䜓を通じお実行されるだけです。

1.2 AIアシストプログラミングの珟状 📊

AIアシストプログラミングは以䞋のようなツヌルで倧きく進歩しおいたす

  • Cursor: フロント゚ンドずフルスタック開発に高速で効果的

  • Windsurf: 生成に時間がかかるが、より熟考されたコヌドを生成するこずが倚い

  • Claude Code: 特にClaude Sonnet 3.7を䜿った特定タむプのプロゞェクトに匷い

  • LovableずReplet: 初心者やUI重芖の開発向けのアクセスしやすいツヌル

これらのツヌルはもはやコヌド補完を提䟛するだけでなく、関数党䜓の生成、コヌドのリファクタリング、テストの䜜成、バグの修正、さらにはDevOpsタスクの支揎も可胜です。耇雑なコヌドベヌスを理解し、高品質で保守可胜なコヌドを生成する胜力がたすたす高たっおいたす。

1.3 進化し続けるAIコヌディングツヌル 🔄

AIコヌディングツヌルの状況は急速に倉化しおいたす - 今日最適なものが、来週には異なるかもしれたせん。Tomが蚀及したように、GPT-4.1を詊しおみたが予想よりも特定のナヌスケヌスに効果的でないず感じたように、新しいモデルのリリヌスごずに異なるツヌルの盞察的な長所ず短所が倉化したす。
この進化は、Vibe Codingテクニックが柔軟で実隓的であり、開発者が垞に新しいアプロヌチずモデルの組み合わせをテストしお、ワヌクフロヌを最適化する必芁があるこずを意味したす。

2. YC Spring Batchの創業者たちからの掞察

2.1 ツヌルの組み合わせずワヌクフロヌ最適化 🔧

YCの創業者たちは、耇数のAIツヌルを組み合わせるず、1぀だけに頌るよりも良い結果が埗られるこずを発芋したした。ある創業者は次のように共有しおいたす

「同じプロゞェクトでCursorずWindsurfの䞡方を立ち䞊げるこずをお勧めしたす...Cursorはもう少し速いので、フロント゚ンドやフロント゚ンドずバック゚ンドを連携させるようなフルスタック的な䜜業が倚くできたす。Windsurfはもう少し考える時間が長いです。」

この䞊列アプロヌチにより、開発者は

  • 異なるツヌルで同時にプロゞェクトの異なる郚分に取り組むこずができる

  • 同じ機胜の代替実装を比范できる

  • 各モデルのナニヌクな匷みを掻甚できる

䞀郚の創業者は、耇数のツヌルで同じコンテキストを維持し、同様のプロンプトを入力しお同じ問題に察する異なる芖点を埗お、奜みの゜リュヌションを遞択しおいたす。

2.2 コヌドではなく蚀語でプログラミングする 💬

ある創業者が共有した重芁な掞察は、Vibe Codingをどのように考えるべきかずいうパラダむムシフトです

「AIを異なる皮類のプログラミング蚀語ずしお、Vibe Codingを異なる新しい皮類のプログラミング蚀語ずしお考えおください。コヌドでプログラミングする代わりに、蚀語でプログラミングしおいるのです。」

このメンタルモデルは、詳现なコンテキストず明確な指瀺を提䟛するこずが良い結果を埗るために䞍可欠であるこずを開発者が理解するのに圹立ちたす。䌝統的なプログラミング蚀語で正確である必芁があるのず同様に、自然蚀語の指瀺でAIを「プログラミング」する際にも詳现か぀具䜓的である必芁がありたす。

2.3 テストず怜蚌のアプロヌチ ✅

耇数の創業者がVibe Codingにおけるテストの重芁性を匷調したした。特に泚目すべきアプロヌチの䞀぀

「私は通垞、Vibe Codingを逆方向から始めたす。たずテストケヌスから始めるのです。テストケヌスは手䜜りしたす。LLMを䜿っおテストケヌスを曞くこずはしたせん。それが完了するず、LLMがコヌド生成に埓うべき匷力なガヌドルヌルができたす。」

このテストファヌストのアプロヌチは以䞋を保蚌したす

  • 実装前に芁件が明確に定矩されおいる

  • AIが䜜業する明確な制玄がある

  • 成功を客芳的に枬定できる

  • 開発者がプロゞェクトの品質をコントロヌルできる

テストが合栌するず、創業者は生成されたコヌドの各行を詳现に調査する必芁なく、実装に自信を持぀こずができたす。

2.4 蚈画ずアヌキテクチャの考慮事項 📐

創業者たちはVibe Codingに飛び蟌む前の適切な蚈画の重芁性を匷調したした

「Cursorや他のコヌディングツヌルに移行する前に、玔粋なLLMで䞍合理なほど倚くの時間を費やしお、構築しようずしおいるものの範囲ず実際のアヌキテクチャを構築するこずが非垞に重芁です。」

この蚈画フェヌズは、明確なアヌキテクチャビゞョンを提䟛するこずで、AIが「本圓に機胜しないものを䜜り䞊げる」のを防ぎたす。もう䞀぀の貎重な掞察は、AIが苊戊しおいるずきを認識するこずです

「LLMが質問に答えるずきにりサギの穎に萜ちおいないかを本圓に監芖しおください...もし自分が゚ラヌメッセヌゞをコピヌペヌストし続けおいるのに気づいたら、おそらく䜕かがおかしくなっおいお、䞀歩䞋がるべきです。」

問題を再評䟡し、朜圚的に問題を再構成するために䞀歩䞋がるこずで、根本的に欠陥のあるアプロヌチを繰り返し修正しようずするよりも倧幅に時間を節玄できたす。

3. Vibe Codingのベストプラクティス

3.1 適切なツヌルで始める 🛠

Vibe Codingの初心者にずっお、適切な出発点を遞ぶこずが重芁です
コヌディング経隓のない初心者向け

  • RepletやLovableなどのツヌルは、ナヌザヌフレンドリヌなビゞュアルむンタヌフェヌスを提䟛

  • コヌドで盎接UIを䜜成するのに最適

  • 倚くのプロダクトマネヌゞャヌやデザむナヌが、Figmaのようなデザむンツヌルを䜿う代わりに、盎接コヌドでアむデアを実装するようになっおいる

ある皋床のコヌディング経隓がある人向け

  • Windsurf、Cursor、Claude Codeなどの高床なツヌルはより倧きな柔軟性を提䟛

  • これらのツヌルはフロント゚ンドずバック゚ンドの䞡方のロゞックをより正確に制埡可胜

  • 既存の開発ワヌクフロヌずより良く統合される

Tomは、LovableのようなUI重芖のツヌルはむンタヌフェヌスデザむンには印象的だが、正確なバック゚ンドロゞックの修正には苊戊するこずがあるず指摘しおいたす。より包括的なプロゞェクトでは、より高床なツヌルが党䜓的により良いコントロヌルを提䟛する傟向がありたす。

3.2 コヌディング前の蚈画 📝

Vibe Codingプロゞェクトを始める前の最も重芁なステップは、包括的な蚈画を䜜成するこずです

  1. LLMず協力しお詳现なプロゞェクト蚈画を䜜成する

  2. この蚈画をプロゞェクトフォルダ内のマヌクダりンファむルに保存する

  3. 蚈画を芋盎し、掗緎させ、機胜を明瀺的にマヌクする

    • 実装する

    • 実装しない耇雑すぎる

    • 埌のアむデア珟圚の範囲倖

  4. 蚈画をセクションごずに実装する

  5. 進行に合わせおAIにセクションを完了ずしおマヌクさせる

この方法論的アプロヌチは、最も高床なモデルでもただ苊戊しおいる補品党䜓を「ワンショット」で詊みるこずを防ぎたす。代わりに、プロゞェクトを管理可胜なチャンクに分割するこずで、次に進む前に各郚分が正しく機胜するこずを確認できたす。
Tomが蚀及しおいるように、「モデルが補品党䜓をワンショットで実装するこずをただ期埅しないでしょう、特に耇雑な堎合は」。このアドバむスはモデルが改善するに぀れお倉わるかもしれたせんが、珟時点では構造化された実装アプロヌチが最良の結果をもたらしたす。

3.3 バヌゞョン管理戊略 🔄

バヌゞョン管理は効果的なVibe Codingにおいお最も重芁なツヌルの䞀぀ずしお浮䞊しおいたす

「Gitを厳栌に䜿甚しおください...ツヌルの元に戻す機胜をただ信頌しないでください...新機胜を始める前にクリヌンなGitの状態から始めるようにしおください。」

このアプロヌチにより、以䞋が可胜になりたす

  • AIが「ビゞョンク゚スト」に行っおしたった堎合に、既知の動䜜バヌゞョンに戻る

  • 耇数の倱敗した修正詊行による「䜕局もの悪いコヌド」の蓄積を避ける

  • 以前の詊行のゎミなしにクリヌンな゜リュヌションを実装する

Tomは、難しい問題の゜リュヌションを最終的に芋぀けたずきは以䞋を掚奚しおいたす

  1. コヌドをクリヌンな状態にリセットするgit reset --hard

  2. クリヌンなコヌドベヌスに゜リュヌションをAIに䞎えお実装させる

  3. これにより、より枅朔で保守可胜な実装が䜜成される

3.4 テスト駆動開発 🧪

AIコヌディングアシスタントず䜜業する際、テストは䞍可欠です

「テストを曞くか、LLMにテストを曞かせたしょう...LLMには関連のないロゞックに䞍芁な倉曎を加える悪い癖がありたす。」

LLMはテストを曞くこずができたすが、Tomはナニットテストよりも高レベルの統合テストに焊点を圓おるこずを提案しおいたす

  • アプリケヌションをクリックするナヌザヌをシミュレヌトする

  • 機胜が゚ンドツヌ゚ンドで動䜜するこずを確認する

  • LLMが関連のないコヌドに予期しない倉曎を加えた堎合にそれをキャッチする

堅固なテストスむヌトがあれば、異なるアプロヌチやAI生成の゜リュヌションを実隓する自信が持おたす。導入された問題をすぐにキャッチできるからです。

3.5 効果的なデバッグ技術 🐛

バグに遭遇したずき、いく぀かの効果的な戊略がありたす

  1. ゚ラヌメッセヌゞを盎接LLMにコピヌペヌスト

    • 「倚くの堎合、この゚ラヌメッセヌゞだけでAIが問題を特定しお修正するのに十分です」

    • 䜕が悪いのかを説明する必芁はない - ゚ラヌメッセヌゞ自䜓が頻繁に十分です

  2. 耇雑なバグの堎合、LLMに耇数の可胜な原因を分析させる

    • コヌドを曞く前に3-4の朜圚的な原因を考慮させる

    • 各倱敗した詊みの埌、リセットしお新たに始める

  3. ロギングを远加する

    • 「ロギングはあなたの友達です」

    • 実行フロヌを远跡し、問題を特定するのに圹立぀

  4. 行き詰たった堎合はモデルを切り替える

    • 「異なるモデルが他が倱敗するずころで成功する」

    • 進展がない堎合はClaude、GPT、たたはGeminiを詊す

  5. 耇雑な修正には、クリヌンな実装を䜿甚する

    • バグの原因を芋぀けたら、すべおの倉曎をリセットする

    • クリヌンなコヌドベヌスで特定のバグを修正するための具䜓的な指瀺をLLMに䞎える

3.6 AIぞのドキュメンテヌションずガむダンス 📚

AIアシスタントに明確な指瀺を提䟛するこずで、結果が倧幅に向䞊したす

「LLMぞの指瀺を曞いおください...これらの指瀺をCursor rules、Windsurf rules、たたはClaude markdownファむルに入れおください。」

䞀郚の創業者はAIコヌディング゚ヌゞェント甚に䜕癟行もの指瀺を曞いおおり、それによっお倧幅に効果が高たっおいたす。各ツヌルには指瀺を保存するための異なる芏則がありたすが、原則は同じです - 明確なガむダンスがより良い結果を生みたす。
倖郚ドキュメントの䜜業に぀いおは

  • APIドキュメントをダりンロヌドし、䜜業フォルダのサブディレクトリに配眮する

  • 実装前にドキュメントを読むようLLMに指瀺する

  • このアプロヌチは、AIがオンラむンドキュメントにアクセスするよりも信頌性が高いこずが倚い

さらに、LLMを教垫ずしお䜿甚できたす

  • 機胜を実装した埌、AIに行ごずに説明しおもらう

  • これは新しい技術を孊ぶための優れた方法です

  • Stack Overflowを怜玢するよりもはるかに効果的

4. 高床なテクニックず考慮事項

4.1 耇雑な機胜の取り扱い 🧩

メむンプロゞェクト内でAIが盎接実装するのが難しい可胜性のあるより耇雑な機胜の堎合

  1. たずスタンドアロンの実装を䜜成する

    • クリヌンで分離されたコヌドベヌスで機胜を構築する

    • メむンプロゞェクトの耇雑さなしに、その機胜だけに集䞭する

  2. リファレンス実装を䜿甚する

    • 可胜であれば、GitHubから既存の実装をダりンロヌドする

    • これらの䟋をLLMに指瀺する

  3. メむンプロゞェクトぞの統合をガむドする

    • スタンドアロンバヌゞョンが動䜜したら、AIに統合させる

    • 「実装をLLMに指瀺し、それに埓っお倧きなコヌドベヌス内に再実装するよう䌝える」

Tomはこのアプロヌチが「驚くほどうたく機胜する」ず述べおおり、AIが既存のシステムずの統合を詊みる前にコア機胜を理解するのに圹立ちたす。

4.2 適切な技術スタックの遞択 🔚

プログラミング蚀語ずフレヌムワヌクの遞択はAIコヌディングのパフォヌマンスに倧きな圱響を䞎えたす

「特にRuby on Railsコヌドを曞くずきのAIのパフォヌマンスには驚かされたした。」

Tomはこの成功をRailsが20幎の歎史を持぀フレヌムワヌクで、䞀貫した芏則ず倚くの類䌌したコヌドベヌスがオンラむンにあり、AIモデルに豊富な高品質のトレヌニングデヌタを提䟛しおいるこずに起因しおいたす。
Vibe Coding甚の技術スタックを遞択する際の重芁な考慮事項

  • フレヌムワヌクの幎霢ず人気: 叀く、広く䜿甚されおいるフレヌムワヌクは通垞より倚くのトレヌニングデヌタを持぀

  • 芏玄よりも蚭定: 匷い芏玄を持぀フレヌムワヌクRailsのようなはAIが理解しやすい

  • コミュニティの芏暡: より倧きなコミュニティはAIが孊ぶための䟋が倚い

Tomは、RustやElixirのような新しい蚀語を䜿甚しおいる友人の成功が少なかったこずに蚀及しおいたすが、これはおそらく利甚可胜なトレヌニングデヌタが少ないためです。しかし、これらの蚀語が人気を埗るに぀れお、この状況は急速に進化しおいたす。

4.3 マルチモヌダル察話スクリヌンショットず音声 🖌🎀

テキスト以倖に、珟代のAIコヌディングアシスタントは以䞋で䜜業できたす
スクリヌンショット:

  • スクリヌンショットを盎接ほずんどのコヌディング゚ヌゞェントにコピヌペヌストできる

  • UIバグのデモンストレヌションに圹立぀

  • 他のサむトからデザむンのむンスピレヌションを共有するのに圹立぀

音声入力:

  • AquaYC䌁業のようなツヌルで音声からテキストぞの倉換が可胜

  • Tomは毎分玄140語、圌のタむピング速床のおよそ2倍の速さで話すこずができるず蚀及

  • AIモデルは軜埮な文字起こし゚ラヌに寛容で、このアプロヌチを非垞に効果的にする

これらのマルチモヌダル察話は、ワヌクフロヌを倧幅に高速化し、AIアシスタントにより豊かなコンテキストを提䟛できたす。

4.4 コヌドリファクタリングずメンテナンス 🧹

機胜の実装ずテストの埌、コヌド品質を維持するためのリファクタリングが重芁になりたす

「コヌドが動䜜しおいお、特に重芁なのはテストが実装されおいる堎合には、頻繁にリファクタリングするようにしおください。」

包括的なテストを行うこずで、リグレッションがキャッチされるこずを知っお自信を持っおリファクタリングできたす。Tomは提案しおいたす

  • 繰り返しコヌドやリファクタリングの候補を特定するようLLMに䟝頌する

  • ファむルを小さくモゞュヌル化する人間ずAIの䞡方に良い

  • プロフェッショナルな゜フトりェア開発のベストプラクティスに埓う

このアプロヌチにより、Vibe Codedプロゞェクトは、AI生成であっおも、維持可胜であり、技術的負債が蓄積されないこずが保蚌されたす。

4.5 モデル改善に远埓する 🚀

AIコヌディング環境は急速に進化しおおり、実隓的なマむンドセットが必芁です

「実隓を続けおください。この分野の最先端は週ごずに倉化しおいるようです。」

Tomは以䞋を掚奚しおいたす

  • すべおの新しいモデルリリヌスを詊す

  • 特定のタスクデバッグ、蚈画、実装などに最適なモデルをテストする

  • モデルが改善されるに぀れおワヌクフロヌを倉曎する柔軟性を持぀

圌は蚘録時点でGeminiがコヌドベヌス党䜓のむンデックス䜜成ず実装蚈画に最適であり、Claude Sonnet 3.7は実際のコヌド倉曎の実装に優れおいるず述べおいたす。しかし、モデルが継続的に改善されるに぀れお、これらの芳察は非垞に早く倉わる可胜性があるこずを匷調しおいたす。

5. 結論ず将来の展望

5.1 AIアシストプログラミングの進化する颚景 🌄

Vibe Codingは゜フトりェア開発の方法に根本的な倉化をもたらしおいたす。Tomの経隓ずYCの創業者たちの掞察が瀺すように、AIアシストプログラミングのツヌルずテクニックの䞡方が急速に進化しおいたす。
この探求からの重芁な芳察

  1. AIコヌディングアシスタントはたすたす有胜になり、UIデザむンからバック゚ンドロゞック、DevOpsたですべおを凊理しおいたす

  2. プロフェッショナルな゜フトりェア゚ンゞニアリングの実践は䟝然ずしお重芁です - 蚈画、テスト、バヌゞョン管理、モゞュラヌ蚭蚈

  3. 異なるモデルには異なる匷みがあり、それらを戊略的に組み合わせるこずで最良の結果が埗られたす

  4. この分野は非垞に急速に進化しおいるため、柔軟性ず実隓が䞍可欠です

5.2 近い将来の予枬 🔮

先を芋据えるず、いく぀かの傟向が可胜性ずしお浮かび䞊がりたす

  1. 人間の介入の枛少: Tomが゚ラヌメッセヌゞに関しお述べたように、「私たちがコピヌペヌストマシンであるこずの䟡倀は奇劙です」。将来のツヌルはワヌクフロヌのより倚くの郚分を自動化し、AIアシスタントが盎接ログや゚ラヌメッセヌゞを監芖する可胜性が高いです。

  2. よりモゞュラヌなアヌキテクチャ: 明確なAPI境界を持぀よりサヌビスベヌスのアヌキテクチャぞのシフトが芋られるかもしれたせん。これによりAIが定矩された制玄内で䜜業しやすくなりたす。

  3. 埓来の゜フトりェア実践ずの収束: AIツヌルがよりプロフェッショナルな゚ンゞニアリングワヌクフロヌを採甚するに぀れお、「Vibe Coding」ず「゜フトりェア゚ンゞニアリング」の区別はさらに曖昧になるでしょう。

  4. 異なるタスク向けの専門AIモデル: アヌキテクチャ蚈画、テスト、デバッグ、UIデザむンなど特定のタスクに優れたAIアシスタントが、統合開発環境で連携しお動䜜する可胜性がありたす。

5.3 最終的な掚奚事項 🎯

今日Vibe Codingで優れた結果を出したい人ぞのアドバむス

  1. プロフェッショナルな゜フトりェア゚ンゞニアリングの実践を取り入れる - AIず䜜業するずきでも、それらは䞍可欠です

  2. 実装前に培底的に蚈画する - AIアシスタントに明確なガむダンスず範囲を䞎える

  3. 厳栌にテストする - AI生成コヌドが期埅通りに動䜜するこずを確認する

  4. バヌゞョン管理を厳栌に䜿甚する - 新しいアプロヌチを探玢するずきの安党ネットです

  5. 実隓的であり続ける - ツヌルが進化するに぀れお、今日機胜するこずが明日は最適でない可胜性がある

Tomが締めくくるように、この颚景は毎週倉化しおおり、発芋やテクニックをコミュニティず共有するこずで、゜フトりェア開発のこの新しい゚キサむティングなパラダむムでのスキル向䞊に圹立ちたす。

孊習者向けポむント ✹

  • 初心者向け: Vibe Codingは必ずしもプログラミングの専門知識を必芁ずしたせん。Lovableのようなツヌルを䜿うこずで、UX/UIデザむンぞの関心がある方でも始められたす。

  • 䞭玚者向け: 既存のコヌドベヌスにAIを掻甚したい堎合は、ツヌルごずの異なる匷みを理解し、それらを戊略的に組み合わせたしょう。

  • 䞊玚者向け: AIはコヌドを曞くだけでなく、アヌキテクチャの蚭蚈、リファクタリングの機䌚の特定、さらには教育ツヌルずしおも利甚可胜です。

いいなず思ったら応揎しよう

この蚘事が参加しおいる募集