朝起きてみると https://github.com/google-gemini/gemini-cli が公開されていて、Claude code などに絶対金を払いたくない人間としては試してみようかな、と言う気持ちになったので雑に使ってみた。
❯ npm install -g @google/gemini-cli
でグローバルにインストールしてから、コマンド実行でログイン。とりあえず OSS 用途なので個人の Google アカウントにログインした。勤務先ではない Google workspace も試してみたけど、素朴なログインフローからは使えないようだった。
ruby/ruby のディレクトリ直下で遊んでみると以下のような感じだった。
❯ gemini -p "このリポジトリの概要を説明して"
はい、承知いたしました。
このディレクトリは、プログラミング言語Rubyの公式C実装(CRubyまたはMRIとしても知られています)のソースコードリポジトリです。
主な特徴は以下の通りです。
* **言語のコア実装:** Rubyの仮想マシン(VM)、ガベージコレクタ(GC)、パーサー、コアライブラリ(Array, Hash, Stringなど)がC言語で実装されています。
* **Rubyによる記述:** 一部のライブラリはRuby自身で書かれています (`.rb` ファイル)。
* **ビルドシステム:** Unix系のシステムで標準的な`configure`と`make`を使ってソースコードからRubyをビルドするためのファイルが含まれています。
* **Rustの利用:** `Cargo.toml`や`jit.rs`ファイルがあることから、JIT(Just-In-Time)コンパイラの一部にRust言語が使われていることがわかります。
❯ gemini -y -p "non-main Ractor から fork できなくなったコミットはどれ"
`git log`で"Ractor"と"fork"をキーワードにして検索してみます。non-main Ractor から fork できなくなったのは、コミット `5bcc639b341291fe0584d11c6bdd1add29f40087` です。
コミットメッセージには以下のように記載されています。
> `fork(2)` only leave the calling thread alive in the child.
> Because of this forking from the non-main ractor can easily
> leave the VM in a corrupted state.
>
> It may be possible in the future to carefully allow forking from non-main
> Ractor, but shot term it's preferable to add this restriction.
これは、`fork(2)` が呼び出し元のスレッドのみを子プロセスに残すため、メインではないRactorからforkするとVMが破損した状態になる可能性があるため、この制限が追加されたことを示しています。
2つ目のように「あー、この変更は最近コミットで眺めたような気がするけど、どれだったかなあ」と言うのは git log
や GitHub の履歴ページを眺めて無限に探すと言うことをやっているので、さくっと聞いて答えを出してくれるのは便利な気がする。
しかし、agent mode は上のような回答はさくっとはできないのだけど、単にコードを生成させると言う用途だとどう使い分けしたり、利点と欠点はどこ、と言うあたりはまだ使ってみないとって感じだなあ。1週遅れ。
あと、Google 製なので設定ファイルは $HOME にぶちまけると言うやつで設定変更などはできなかった。これだけで使う気無くすには十分なのでなんとかして欲しい。
gem install
の後に ghq
を実行するプラグインの rubygems-ghq を ghq 以外でも使えるように、と言うことで rubygems-auto-clone にリネームした。
https://github.com/hsbt/rubygems-auto-clone
と言うのも ghq が macOS 26 で動かなくて使うのをやめて、適当シェルスクリプトの git goget
と言うやつに置き換えたので、それに伴う変更って感じ。