
6,304 文字
私はGoogleが独自のCursorキラーを立ち上げていると思っていましたが、これは非常に長い道のりの最初のステップに過ぎません。これはGemini Code Assistと呼ばれる新しいコーディングアシスタントです。最高のGeminiコーディングモデルの一つをあなたのIDE(統合開発環境)にもたらします。これはVisual Studio CodeやJetBrainsで利用できる拡張機能です。このビデオでは、この拡張機能の長所と短所について説明します。
まず最初に部屋の中の象について話しましょう。これは決してCursorキラーではありません。実際、Winserfキラーでもありません。GitHub Copilotに近いかもしれませんが、既存のツールのキラーには程遠いです。最も良い点は、これが非常に寛大な使用制限付きで無料であることです。学生や、プロフェッショナル、あるいは支払いができない人であれば、これを使うことができて便利でしょう。しかし、大規模なコードベースを編集したり、コードベース全体のファイルを編集したり、エージェントアシスタントとしての機能を期待するなら、おそらくこれはあなたに向いていません。
使い方の詳細に入りましょう。使い方はとても簡単です。このリンクをクリックすると、Visual Studio Code Marketplaceに移動します。ご覧の通り、現時点での評価はあまり良くありません。すでにわずか1週間で262,000インストールされています。「インストール」をクリックすると、Visual Studio Codeに移動します。私の場合はVisual Studio CodeまたはJetBrains IDEです。それから使用することができます。また、PRを評価するためのGitHubアプリもありますが、私は今回それを使用しません。
サポートされているIDEは2つあります。Visual Studio CodeとJetBrainsです。私はこれをVisual Studio Codeでどのように使用するかをお見せします。Visual Studio Codeで拡張機能をインストールしたら、最初にすべきことはGoogleでサインインすることです。サインインしたら、Googleがこのデータを使用しないようにする必要があります。その方法は、この3つのドットをクリックして、「プライバシー設定」をクリックし、これのチェックを外すことです。これはデフォルトでチェックされており、チェックを外さないとGoogleはあなたのデータを使用します。もしあなたが「Googleが何かを無料で提供してくれるなら、自分のデータを提供しても構わない」と考える倫理的なインターネットユーザーなら、有効にしておいても良いですが、私はそういう人間かどうか確信が持てないので、無効にします。
これを行うと、変更され、使用できるようになります。この拡張機能を使用するには様々な方法があります。最も簡単な方法は、このアイコンをクリックすることです。クリックするとGemini Code Assistantが起動し、そこで何でも望むことを言えます。2つ目の方法は、このコマンドを使用することです。Macではコマンド+I、Windowsではおそらくコントロール+Iを使用できます。これを実行すると、4つのオプション(生成、修正、説明、ユニット生成)がある小さなメニューがポップアップします。SlackやAERなどのスラッシュコマンドを使用したことがあれば、使い方は非常に簡単でしょう。
これらのファイルをすべて選択して、コマンド+Iを押し、「修正」と言って、コードを修正するだけです。そうするとGeminiがそのコードについて考え始め、最終的に応答を返してくれます。この全体で感じたことの一つは、非常に遅いということです。Cursorや、Cent、あるいはGitHub Copilotを試したことがあれば、かなり遅いと感じるでしょう。無料だからなのか、大きなモデルを使用しているからなのか理由はわかりませんが、他のソリューションと比較すると非常に遅いです。
ここでは時間のチェックはしていません。それを実行すると、Cursorのおかげで現在かなり人気のあるdiffスタイルで開かれます。呼び出したこの特定のコマンドがどのような変更を加えたかを確認することができます。ここで変更があり、ここでも変更があります。受け入れるか拒否するかを選択し、先に進むことができます。受け入れた場合は保存でき、その時点で特に保存されます。これが最も簡単な使用方法です。
では、最初からファイルを作る場合、どのように使用できるか見てみましょう。ゼロからなにかを作成するにはこれは間違いなく適切なコーディングアシスタントではないことを言っておかなければなりません。これは主に2つのユースケースに非常に優れています。一つは、非常に大きなコードベースがある場合です。Geminiモデルのおかげで、長いコンテキストウィンドウを取り扱うことができます。二つ目は、非常に大きな単一ファイルがあり、何かを編集したい場合です。例えばタブ、タブ、タブと入力できます。しかし、まったくコードベースがない場合、例えばこのようなスクラッチから何かを作りたい場合、Androidアプリを作成したい場合、そのような特定のタスクには最悪のコーディングアシスタントです。
私はここに行って、非常にシンプルなものを頼んでみます。「生成」をクリックして、このコマンドを与えると、一つの奇妙な現象が起きていることに気づくでしょう。例えば、「テキスト分類を行うためのpythonコードを作成し、roberaを使用し、テストケースを処理し、オブジェクト指向プログラミングに従うようにしてください」と言います。
Transformersやpyoを使用し、Robaのようなものを使って、このようなものを作成することを期待しています。うまくできていますが、最も奇妙なことは、コメント欄で私が説明しなくても気づいてくれるでしょうが、コードが完全ではないことです。わずか51行のコードで、コードが非常に不完全なのがわかります。もし誰かが全く手がかりがなく、受け入れてこのコードを実行しようとすると、このコードは機能しないでしょう。機能しない理由は、このコードが途中で止まっているからです。理由は分かりません。出力コンテキストウィンドウが非常に小さいのか、どのようなことが起きているのか分かりません。
毎回、最終的にここに戻って、おそらくGemini Code Assistantにアクセスし、「コード生成」をクリックして実行する必要があります。そうすると、より多くの提案を生成し始め、例えばここでは全てが完了しているので、タブを押すだけで利用できます。タブ、タブ、タブ、タブと押して、全てを得ることができます。最初に生成されるコードが完全だと思わないように注意する必要があります。完全なコードが欲しい場合は、このコードを保存しましょう。これを「Rober NLP」と呼びます。
まず、コードを簡単に見てみましょう。pandasがあります。入力データセットを読み込むためにpandasを使用しようとしていると思いますが、どこにもpandasは使用されていないようです。それはかなり奇妙です。データセットをどこから読み込んでいるのか分かりません。非常に奇妙です。データセットをどこからも読み込んでいません。train_test_split、accuracy、classification_reportがあり、TextClassificationDatasetがあり、RoBERTaTokenizer、RoBERTaForSequenceClassification、AdamWがあります。最適化器を使用したいようです。DataLoaderはtorch.dataから来ています。それは良いですね。この場合、依然としてpandasは必要ありません。おそらくこのコードは理想的に動作するはずです。classification_reportなど全てがあります。
ここで、このアシスタントの最も良い使用例の一つは、コードの説明です。全てを選択し、「これを説明して」と言うことができます。これを行うと、コードを読み解いて説明してくれます。これは人気のあるプログラミング言語では非常にうまく機能しますが、あまり人気のないプログラミング言語では良くないかもしれません。しかし、誰かのコードベースを使用して、彼らが何をしたのかを理解しようとする場合、最も簡単な方法の一つがこれです。
このビデオはカットしていないので、実際のレイテンシーがどれくらいかかるかを見ることができます。これはそれほど大きなコードではなく、わずか99行ですが、それでも回答を返すのに数秒かかっています。それは分析を提供してくれています。ファイル名はRober_NLP.pyです。このコードはRoBERTaを使用したテキスト分類システムを実装しています。RoBERTaの正式名称は「Robustly Optimized BERT Pre-training Approach」で、これは今まで知りませんでした。インタビューの準備をしておくべきですね。データ準備、モデルセットアップがあります。最適化器としてAdamWが使用されていると言っています。トレーニングループはどこですか?ああ、エポックなどのトレーニングループがあります。評価とコードの内訳もあります。インポートなどがあると言っています。
今から全てを選択して、一つの簡単なことを言います。利用可能なすべてを削除して、「rober_NLP.pyで可変学習率を持つことはできますか」と尋ねます。ハードコードされた学習率の代わりに、可変学習率を持つことができるかどうかを理解しようとしています。これは私が質問したことで、コードを編集してくれることを期待しています。
正直に言って、これはこのエディタ、あるいはこのアシスタントが優れている点です。既存のコードベースがあり、何らかの変更を加えたい場合、質問をして変更してもらうことができます。ファイル内でdiffとして開くことができ、何が変更されたかを確認できます。新しい関数「get_linear_schedule_with_warmup」をインポートしているようです。これはメソッドだと思います。これがインポートされると、コードに変更が加えられ、受け入れることができます。そして最終的に、おそらく私の素晴らしいPythonのおかげでインデントが少し乱れています。インデントが乱れているのかどうかわかりません。何が間違っているのかわかりません。いつでもコードを修正することができます。おっと、私が全てをコメントアウトしてしまいました。それは私のミスです。コマンド+Iで「コードを修正してください」と言えます。
これが最も良い使用例です。ここでチャットして、コードを取得し、ここでdiffを使用して修正し、望むなら受け入れて、先に進むことができます。二つ目にできることは、コードの一部を編集することです。ここですべてを削除して、通常の人間のようにコーディングしていて、何らかのアシスタントが欲しい場合、ここに行って生成させることができます。これは最終的に生成され、現在みんながCursorでやっているように、タブ、タブ、タブと押すだけで良いです。これが2番目のユースケースです。
もう一つの大きなことは、コンテキストに複数のファイルを持ち、何かを生成させることができますが、私にとって最大の問題は、単一のファイルだけを生成するのではなく、複数のファイルを生成してほしいということです。現時点では、それをどうやって行うかはわかりません。
最初から何かを作成する方法の簡単なデモをお見せします。これは特に適切なユースケースではありませんが、その方法をお見せします。ここでチャットを削除して、新しいファイルを作成します。新しいファイルを作成するとき、ファイル名を「stupid_game.html」と名付けます。そして「単一のHTMLファイルで美しいThree.jsフライトシミュレーターゲームを作成してください。すべてがcdnjsから取得され、異なるフライトを選択したり、離陸着陸したりする機能があり、左上に異なるフライトの指標(tatrixと呼ばれる)を表示するようにしてください。最終的に動作する必要があります」と言います。
私がこれを送信し、ご覧のように、これは私がこのビデオを録画している間にリアルタイムで起こっています。ここに編集はなく、多くの手間をかけずにゼロショットで実際に何かができるかどうかを見たいと思います。このビデオを作る前に多くのことを試しましたが、ほとんどの場合、スクラッチから何かを試したとき、常に少し微妙なコードがあり、何度も何度もプロンプトを与える必要がありました。そして昨日、私のビデオにコメントして「それは間違いを犯していると言っているが、人間も間違いを犯すだろう」と言った人がいました。これは現時点ではかなり妥当です。
それは私がどのようなことをするかについての説明を与えてくれました。diffで開いて受け入れようと思います。コードが機能するかどうかは正直わかりませんが、273行は良さそうです。ここに行き、ファイルを開いてみます。「stupid_game.html」があります。Wキーとsキーでピッチをコントロールし、戦闘機、貨物機、旅客機がありますが、何も見えません。コンソールを開いて、エラーがあるかどうか見てみましょう。この時点で未定義の参照があると言っています。それは私がバカだと思っているようです。「stupid_game」というのは私がそう名付けたからです。「このエラーを修正してください」と送信して、まだ問題を引き起こすのか、最終的に修正するのかを見てみましょう。
これはdiffの問題です。問題は何でしょうか。問題はGeminiが常に「全コードを再生できます、全コードを再生できます」と言ってくることです。そのようには機能しません。単純に先に進んで置き換えるだけです。もし私がこれを受け入れたらどうなるか想像してみてください。もし受け入れたら、これらのコードは全て消えてしまいます。なぜなら、ここで私が与えたものが修正すべきものだと考えているからです。
Geminiをコーディングアシスタントとして使用する際の私にとって最大の問題だと思います。与えるコードは常に「残りのコードをここに書くことができます」と言いますが、いいえ、ただ全コードを与えてくれればいいのです。
このビデオはここで終わります。ご覧のように、それがどこに立っているかがわかります。良いですが、特に「残りを埋めることができます」と言われたときは、盲目的にすべてを受け入れないでください。ただし、大きな単一ファイルがある場合や、コーディング中にノート全文のようなアシスタントが欲しい場合には、これは基本的に「マイコードベースとのチャット」として良いアシスタントです。現時点ではCursorキラーではありません。
別のビデオでお会いしましょう。ハッピープロンプティング!


コメント