「バイブコーディング」とは何か?私のやり方を紹介します…

ソフトウェア開発・プログラミング
この記事は約12分で読めます。

この動画では、Vibe Codingという新しいプログラミング手法について紹介している。これは開発者が一切コードを書かず、AIに全てのコーディングを任せるという革新的なアプローチである。AI研究の第一人者であるAndre Karpatyが提唱したこの手法を実際に検証し、ログイン認証ページの作成から始まり、テトリスゲームの開発、さらにはそのテトリスをプレイするAIの機械学習モデルの構築まで、一行もコードを書くことなく実現する過程を実演している。

What is "Vibe Coding"? Here's how I do it...
Check out Langtrace's GitHub here: discount for Langtrace here: Langtrace’s upcoming webinar...

Vibe Codingとは何か

Vibe Codingとは何でしょうか。これは基本的にコードを一切書かず、AIに完全にコーディングを任せる新しいプログラミング手法です。皆さんが手を上げて「そんなのばかげてる」と言う前に、人工知能分野の第一人者であるAndre Karpathyがこれについて投稿し、気に入っていると述べていることをお見せしましょう。

これが何なのかをご紹介した後、実際にテストしてみます。シンプルなプロジェクトから、もっと複雑なプロジェクトまで作ってみます。テトリスゲームを構築して反復改善し、機能を追加し、さらにAIにテトリスをプレイさせるための完全な機械学習フレームワークを構築します。そして私は一行もコードを書くことなく全てを行います。どれほどクールか見てください。

こちらがAndre Karpatyの投稿です。380万回の表示があるので、人々も同意しているようです。Vibe Codingと呼ぶ新しい種類のコーディングがあります。完全にバイブに身を委ね、指数関数的成長を受け入れ、コードが存在することすら忘れてしまうのです。これが可能なのは、LLM、CursorのComposerとSonnetがあまりにも優秀になっているからです。

また、私はComposerとSuper Whisperで話すだけなので、キーボードにほとんど触れません。サイドバーのパディングを半分に減らしてのような最も愚かなことを頼みます。見つけるのが面倒だからです。私は常に全て受け入れ、差分は読みません。エラーメッセージが出たら、コメントなしでそのままコピー&ペーストします。通常それで修正されます。

コードは私の通常の理解を超えて成長します。しばらく本当に読み込まなければならないでしょう。時々LLMがバグを修正できないこともあるので、単に回避策を取り、修正されるまでランダムな変更を求めます。使い捨ての週末プロジェクトにしては悪くありません。とても面白いですね。

Vibe Codingの実践テスト

今日これをテストしてみましょう。私は少し違うスタックを使います。Cursorの代わりにWindSurfを使い、Andre Karpatyと同じようにSuper Whisperを使います。

Super Whisperに馴染みのない方のために説明すると、これは非常に優秀に動作する音声検出AIツールです。それではテストしてみましょう。O3 Miniを中程度の推論で使用します。

Super Whisperを開いて始めましょう。

ログイン認証ページを作ってください。

はい、ログイン認証ページを作ってくださいと言いました。エンターを押しましょう。生成中です。とても早かったですね。ログイン認証ページを含む小さなFlaskプロジェクトを作成します。以下をセットアップしますと言っています。

readme、app.pyすべて良いです。ファイルを作成しますので、作成されるはずです。作成してくださいと言いましょう。親フォルダでGitリポジトリが見つかりました。リポジトリを開きますかと聞いています。はい。推奨されるPython拡張機能をインストールしますかと聞いています。もちろん、それを行いましょう。

これは私がWindSurfを使う初回なので、これを行わなければなりません。全ての変更を受け入れ、考えることすらしません。既に書かれたコードの量を見てください。

サーバーの起動とトラブルシューティング

では、サーバーを起動するよう頼んでみましょう。このアプリを実行できるかどうか見てみます。

サーバーを起動してこのアプリを実行してください。

ターミナルを開くように言われているので、これを行いましょう。CDして、仮想環境をセットアップし、アクティベートします。素晴らしい。要件をインストールします。これは全てコピー&ペーストです。全く考えていません。

最初の問題に遭遇しました。文字通りそれをコピーして、ここに貼り付けて、エンターを押します。1つのファイルがレビューを必要としています。レビューすることすらしません。全て受け入れます。

再度要件をインストールします。言われた通りに正確に行い、app.pyを実行します。うまくいきました。開いてみましょう。ユーザー名とパスワードのログインページができています。

でもここで止まりません。続けましょう。

このページにGoogle認証を追加してください。

WindSurfのCascadeは、一度に1つのファイルではなく、プロジェクト全体に変更を加えることができるので、なかなか良いです。これはCursorとは少し違います。

エラーが出ましたが、まだ編集が完了していないので、待ちます。差分も変更も見ません。結果だけを見て、うまくいったかどうか確認します。

依存関係を更新してflaskを追加してセットアップを完了してくださいと言っています。フォルダを開いてWindSurfが再起動されたので、変更が行われたが全てではない奇妙な状態になっています。何が起こるか見て、修正してもらいましょう。

flask モジュールが見つかりません。エラーをコピー&ペーストします。既に何だかわかっています。正しいconda環境にいませんが、正しく行う方法を教えてくれるかどうか見てみます。

教えてくれませんでした。ここで仮想環境をアクティベートします。戻りました。app.pyを実行すると、flask-danceがありません。

同じ問題があるようです。コピー&ペーストします。もちろんPython環境管理が私を躓かせるものです。flask-danceをインストールしましょう。再度実行してみます。考えることはほとんどありません。コピー&ペーストして確認するだけです。動きました。

ページを更新しますが、まだGoogleボタンはありません。

Google認証の実装

Google認証ボタンが見えないと伝えます。コードはありますが。

これまでコーディングをしたことがない方でも、これはできます。これは簡単です。いくつかの可能性を確認してみましょう。Googleブループリントがアプリケーションに適切に登録されていることを確認してください。Googleブループリントを適切に登録するにはどうすればよいですか?私のためにやってください。

実際にできるかどうか見てみましょう。コードをたくさん追加し、もちろん全て受け入れます。login/googleエンドポイントが表示されるはずだと言っています。入力すると確かにあります。でもボタンが見えません。

何か間違っているのは確実ですが、あまり考えすぎないようにしています。スクリーンショットを撮ります。このモデルは画像をサポートしていないので、モデルを切り替えます。Claude 3.5 Sonnetに切り替えて言います。

このページにGoogleオフボタンが見えません。追加してください。

それを話すべきでしたが、大丈夫です。問題がわかりました。ログインページにテンプレートを使用していますね。テンプレートをチェックしましょうと言っています。

別のモデルを使用しているので、このモデルの方が良いかもしれません。少し遅く感じますが、全て受け入れて、ここにあります。見た目はあまり良くありません。小さな壊れた画像がありますが、十分です。

テトリスゲームの開発

次にテトリスゲームを書いてもらい、機械学習を使って自分でプレイするようにしてみます。できるかどうか見てみましょう。

Pythonでテトリスゲームを作ってください。

バックグラウンドターミナルコマンドが提案されています。はい、続けて受け入れます。全て受け入れます。そこにたくさんのコードがあります。実行してみましょう。

このコードを実行するために何をする必要がありますか?

CDして、仮想環境をアクティベートし、全ての要件をインストールして、ファイルを起動します。あまり考えずにコピー&ペーストしました。何かキーを押してプレイしてください。良い感じです。適切に動作することを確認しましょう。ラインが消えるはずです。良いです。

そこで止めましょう。追加したいことがいくつかあります。

次のピースのプレビューウィンドウがあることを確認してください。

それだけです。何が起こるか見てみましょう。ファイルを書いています。全て受け入れて、何もせず、再度実行して動作するかどうか見てみます。

次のピースプレビューエリアが見えません。修正してください。

Claude 3.5 Sonnetを試さなければならないかもしれません。これがコーディング支援やコーディングモデルのゴールドスタンダードだと思いますが、これが動作するかどうか見てみましょう。

画面幅を増やすのが良いですね。真のVibe Codingでは差分を見るべきではありませんが、ちょっと覗いてしまいました。全て受け入れて、プレイして何が起こるか見てみます。

次の形があります。見てください!とてもクール!素晴らしい!頼んでいませんでしたが、スコアも追加されています。このラインを消すとスコア10になるはずです。スコア10、良いです。

ポーズと終了ゲームボタンを追加してください。

全て受け入れて、再度実行してみましょう。何かキーを押してプレイしてください。ポーズと終了ゲームボタンが画面の真ん中、テトリスゲームの上の変な場所にあります。

ポーズと終了ゲームボタンがテトリスゲームの真ん中に表示されています。全て左に移動してください。

全て受け入れてプレイしましょう。完璧です。ポーズゲームが動作することを確認し、終了ゲームも確認しましょう。ポーズしますが、その後何もしません。修正してもらいましょう。

ゲームのポーズは動作しますが、ポーズ解除ができません。それを追加し、終了ゲームもいつでも動作することを確認してください。

何らかの理由で実際に変更を行いませんでした。これらの変更を行ってくださいと頼みましょう。

何らかの理由で実際に変更を行っていません。自分で行います。コードをコピーして、ポーズゲームを見つけて、持っているコードで置き換えます。

コードのこの部分を更新して、適切にインデントしましょう。保存します。手動で行わなければならないのは奇妙ですが、大丈夫です。

ゲームをポーズし、ポーズ解除し、終了ゲーム。完璧です。素晴らしいです。

AI学習機能の実装

今度はAIにこのゲームをプレイすることを学習させたいと思います。できるかどうか見てみましょう。

これで全て動作します。今度はAIにこのテトリスゲームをプレイすることを学習させ、自分でプレイさせたいです。

どのように実装するか全くわかりませんので、見てみましょう。基本的なAIエージェントモードを追加しました。将来の学習のプレースホルダーがあり、ランダムな動きを選択しますと言っています。AIモード、素晴らしいですが、実際に何か追加されましたか?

Claude 3.5 Sonnetに切り替えてみます。少し運が良くなり、毎回変更を行うよう指示する必要がないかもしれません。繰り返しで不必要に感じます。

これで全て動作します。今度はAIにこのテトリスゲームをプレイすることを学習させ、自分でプレイさせたいです。

Stable Baselines 3という人気ライブラリを使用すると言っています。素晴らしいです。Claude 3.5 Sonnetは依然としてAIコーダーのゴールドスタンダードかもしれません。

これを見てください。Stable Baselines 3を使用してDQN(Deep Q-Network)エージェントを実装し、トレーニングと評価コードを追加します。とてもクールです。たくさんのコードが書かれています。受け入れますか?

ここからインストールが実行されています。ターミナルでこれを行う必要すらありませんでした。素晴らしいです。全て受け入れます。トレーニングプロセスを開始しますか?はい。

train.pyを実行しますと言っています。このコマンドを実行しますか?受け入れます。何が起こるか見てみましょう。バックグラウンドで実行されています。

問題があるのでコピーして、ここに貼り付けて修正してもらいます。メインファイルからshapesをインポートする必要があります。修正しましょうと言っています。再度実行してください。

まだ問題があります。全て受け入れて、問題をコピーして、再度貼り付けてエンターを押します。shapeの不一致とピース情報のエンコード方法について。修正してくださいと言っています。

再度試してみると、見てください!実際に動作しています。メッセージが出ています。報酬が出ています!これはとてもクールです。

いつ終了するでしょうか?全ての変更が受け入れられ、コード内にあることを確認するために全て受け入れます。まだ実行中のようです。

トレーニングにはどのくらい時間がかかりますか?今実行中です。

実行中でもWindSurfで作業を続けることができます。AIは100万のうち約151,000タイムステップを完了したので15%完了です。素晴らしいです。約4分半かかるはずです。先に進んで見せましょう。

ゲームオーバー、総報酬8.89。素晴らしい、完了したようです。

今度はどうやってプレイさせますか?

メインゲームを修正してAIプレイヤーモードを含めましょうと言っています。全て受け入れます。

問題が発生したので、貼り付けます。循環インポートの問題です。修正してください。

バックグラウンドの提案は実行したくありません。全て受け入れて、手動で実行します。動作するかもしれません。何かキーを押してプレイしてください。

別の問題に遭遇しました。ゲームが開始されましたが、このエラーで終了しました。エラーを貼り付けて修正してもらいます。それは実行したくありません。全ての変更を受け入れて、自分で実行します。

AIが実際にゲームをプレイしていないようです。ゲームを終了します。

ゲームが起動しますが、AIがプレイしていません。どうやってプレイさせますか?

いいえ、トレーニングしました。

トレーニングしましたと言っています。既にトレーニングファイルがあるはずです。チェックしています。保存されなかったのかもしれません。

ここにあります。はい、ありました。修正しましょう。実際にファイル構造を見て、必要なファイルを見つけることができるのは本当にクールです。

今度はゲームを再度実行して、aを押してAIのプレイを見てください。

拒否します。全て受け入れて開いて、aを押すと、見てください!AIがプレイしています。あまり上手ではありませんが、確実にプレイしています。負けました。

さらに進歩させることもできますが、今のところはここで残しておきます。Vibe Codingとはこういうことです。これは素晴らしいと思います。ここで一行もコードを書かずに、テトリスゲームを動作させ、基本的にこのようなことをほとんど経験せずにAIをトレーニングすることができました。

この動画を楽しんでいただけたら、いいねとチャンネル登録をご検討ください。次の動画でお会いしましょう。

コメント

タイトルとURLをコピーしました