hiro99ma blog

何か技術的なこと

ai: Gemini を vscodeから使う

2025/02/06

はじめに

以前、GitHub Copilot が vscode からも無料で使えるようになったときに nRF Connect SDK のコードを書く補助に使用した。
主に README を書いてもらうためにがんばったのだが、それ以降は特に使っていなかった(無料枠が切れたまま放置していただけだが)。

窓の杜に Gemini のことが記事になっていた。
Bard だか Duet だったかよく覚えていないが、ともかく今は Gemini のようだ。

Android Studio でちょっと使って便利だったので、選択肢として使えるかどうか見ておこう。
なお、Gemini 2.0 などとは関係ないです。

※追記

読んでいると、どうも無料枠の対象ではないように見える。
残念だが傷が浅いうちにアンインストールした。

Gemini

Gemini Code Assitant というのが vscode Extension の名称だ。
これを書いている時点では 2.25.1 が最新だった。

使っている人の記事も少し探した。

そうそう、以前試したときは Google Cloud の方が前面に出ていた気がする。
特にクラウドを使うつもりがなかったので、そのときはすぐにアンインストールしたのだった。

いまは Google Cloud の extension は同時にはインストールされていないと思う。
しかし、使用するのに Google Cloud のアカウントとプロジェクトは必要である。
Google Cloud は無料枠があるので一応アカウントだけはあるのだが、”Gemini for Google Cloud API” を有効にする必要があるとのこと。

私は Windows の WSL2 から使っているので多少面倒だった。

Cソースの説明をしてもらう

昨日作った sample1.c を見てもらった。

vscode のプロジェクトとして開き、テキストを打ち込むだけ。
文字で出力されるのだが、コピーすると読みづらくなりそうなので画像にした。

sample1.cは何をしていますか?

image

・・・なんかやたら詳しいな?
確かにそうなんだけど、リーフスクリプトが 1つしかないとか、コントロールブロックにリーフハッシュは載せてないとかまでわかるものなのか??
ブログには書いたけど、うちのブログって Google Search Console から見ると登録されていないのよね。

image

むしろ登録されているコンテンツの方が少ないという・・・ね。
DuckDuckGo とかじゃないとほとんど検索に出てこないのだ。

image

まあうちのサイトのことは良いとして、もしサイトを見ていたとしても昨日アップした情報を読むとは思えないのだよ。
私の想定が甘い?
ともかく、思ったよりちゃんとコードの説明をしてくれたことは喜んで良いだろう。

Cソースを作ってもらう

では、生成をしてもらおう。
プロジェクトは開いたままにして libwally-core を使ったサンプルにする。

libwally-coreを使ってp2wpkhアドレスへ送金されたoutpointから送金するサンプルコードを生成

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#include "libwally-core/include/wally_address.h"
#include "libwally-core/include/wally_core.h"
#include "libwally-core/include/wally_crypto.h"
#include "libwally-core/include/wally_map.h"
#include "libwally-core/include/wally_script.h"
#include "libwally-core/include/wally_transaction.h"


int main(void) {
    int rc;
...
...

それっぽいコードだ!
ビルドすると wally_tx_sign が見つからないというエラーが出た。
楕円曲線なので wally_ec_sig_from_bytes()_aux が付いた方かな?

wally_tx_signではなくwally_ec_sig_from_bytesを使うように変更

変更に伴い wally_tx_get_btc_signature_hash() でハッシュ値を計算するようになっていた。
ただ引数が違ってコンパイルエラーになる。
それに、script code を引数に取るようなのでデータを作らないといけないのではないか? でも P2TR でも sigMsg は生成してくれるし、script code も witness program があればよいからこれでよいのかな?

ビルドするところまで確認はできなかったが、近いところまで持って行ってくれるんじゃなかろうか。
ただ、vscode で開いているプロジェクトというサンプルがあったからできたのかもしれない。
新規で何も無い状態だと難しいのかもしれない。
似たようなことをやりそうなプロジェクトを作って開いておくと確率は高まるかもしれない。

おわりに

この記事を書き始めてからの Gemini API リクエスト数を見るとこうなっていた。

vscode に登録するまでは 6回くらいだった気がする。
テキストボックスに質問を書いた数は 10回もなかったと思うので、コードの編集などでもリクエストが行われているのだろう。

おまけ

リーエン?

今回は久々に Google Cloud を開いたのだが、昔作ったプロジェクトがあったので、削除しようとしたもののリーエンがどうのこうので削除できない。

リンクが出てきたのでクリックすると Dialogflow のサイトに飛んだ。
たぶん Google Home のアプリを作ってみたときだと思う。

しかし Dialogflow の方には何も残ってないし、設定を見ても何かできるわけでもない。
こちらに載っていた通りにやると削除できた。

プロジェクトの削除は「IAMと管理 > リソースの管理」から行うのが簡単そうだ。
仕事で使っているときはプロジェクトの選択から管理する画面に遷移できていた気がするのだが、よくわからんね。

プロジェクトを作るときに最初から有効なAPI

Google Cloud でプロジェクトを新規作成すると最初から API が 20個ほど有効になっている。
使わなければよいのだろうけど、あるだけで気になる。
手動で 1つ1つ無効にしていくとかなり時間がかかるしめんどくさい。 ChatGPT 氏に訊くと gcloud CLI を使うのが楽そうだった。

最初から API が全部無効になっているプロジェクトを作ることができれば良いのだが、 どうもそういう設定はなさそうだった。
こちらについても gcloud CLI で作成するときに指定すると良いですという回答だった。
まったくもう・・・。

< Top page