はじめに
Googleが2025年10月15日、開発者向けのターミナルツール「Gemini CLI」をアップグレードすることを発表しました。新バージョン(v0.9.0)では、vim、git rebase -i、topなどの対話的(インタラクティブ)なシェルコマンドをGemini CLI内で直接実行できるようになります。本稿では、この機能の技術的な仕組みと活用可能性について解説します。
参考記事
- タイトル: Say hello to a new level of interactivity in Gemini CLI
- 著者: Gal Zahavi、Jack Wotherspoon
- 発行元: Google Developers Blog
- 発行日: 2025年10月15日
- URL: https://developers.googleblog.com/ja/say-hello-to-a-new-level-of-interactivity-in-gemini-cli-1/
・本稿中の画像に関しては特に明示がない場合、引用元記事より引用しております。
・記載されている情報は、投稿日までに確認された内容となります。正確な情報に関しては、各種公式HPを参照するようお願い致します。
・内容に関してはあくまで執筆者の認識であり、誤っている場合があります。引用元記事を確認するようお願い致します。
要点
- Gemini CLI v0.9.0は、PTY(疑似ターミナル)をサポートし、vim、git rebase -i、htopなどの対話的なコマンドをGemini CLI内で直接実行できるようになった
- 従来はこれらのコマンド実行時にGemini CLIから別のターミナルに切り替える必要があったが、新機能により全てのコマンドがGemini CLIのコンテキスト内で実行される
- ターミナルの状態を毎フレーム「スナップショット」として取得し、テキスト、色、カーソル位置を含めてリアルタイムで画面に表示する仕組みになっている
- キーストローク入力とウィンドウリサイズの両方向通信に対応し、ネイティブターミナルと同様のユーザー体験を提供する
詳細解説
対話的コマンド実行の課題と解決
従来のCLIツールでは、vim、nano、git rebase -i、npm initなどの対話的なコマンドをサポートすることに課題がありました。これらのコマンドは、テキスト入力、キーボード操作、画面のリアルタイム更新が必要で、Googleによれば、従来のGemini CLIではこうしたコマンドが「ハング」(応答不可状態)になったり、ユーザーが別のターミナルに切り替えて実行する必要がありました。
さらに問題なのは、別のターミナルで実行したコマンドの結果がGemini CLIのコンテキスト(文脈や履歴)から切り離されてしまう点です。これでは、AIアシスタントとしてのGemini CLIが、実行したコマンドの結果や状態を理解できず、継続的なサポートが難しくなります。
新機能はこの問題をPTY(疑似ターミナル)の導入により解決しています。PTYは、オペレーティングシステムがコマンドラインインターフェースをターミナルとして認識するための仲介役です。これにより、対話的なコマンドを「ネイティブな状態で実行する」ことが可能になり、同時にGemini CLIのコンテキスト内に留めることができるようになりました。
PTYとシリアライザーの技術的仕組み
Googleの説明によれば、Gemini CLIは「node-pty」というライブラリを使用して、バックグラウンドで疑似ターミナルプロセスを立ち上げます。このPTYがテキストエディタ、システムモニター、ターミナルコントロールコードに依存したアプリケーションを実行するために必要なインターフェースを提供するということです。
技術的には複雑に聞こえますが、概念的には「ビデオストリーム」に例えることができます。バックグラウンドで動作している疑似ターミナルの状態を、新しく開発された「シリアライザー」が、毎フレーム「スナップショット」として撮影するイメージです。このスナップショットには、表示されるテキスト、色情報、さらにはカーソルの位置も含まれます。これらのスナップショットがリアルタイムでユーザーに送信され、ユーザーの画面に映し出されるという仕組みになっています。
一般的なCLIツール設計では、コマンドの出力テキストだけをやり取りする方式が主流です。しかし、対話的なコマンド(特にテキストエディタ)では、画面上の特定位置のテキストを変更したり、色付けしたり、カーソルを移動させたりする必要があります。シリアライザーがこうした「視覚的な状態」を全て捉えることで、ユーザー側で正確に再現できるようになった点が、この実装の工夫と言えるでしょう。
双方向通信とネイティブターミナル相当のUX
新機能は単なる一方向の「表示」ではなく、双方向通信を実現しています。ユーザーがキーボードから入力したキーストロークはGemini CLIから実行中のプロセスに送信され、またウィンドウをリサイズすれば、バックグラウンドのアプリケーションがそのリサイズ情報を受け取って、レイアウトを自動的に調整します。これは、ネイティブなターミナルアプリケーションと同じ動作パターンです。
Googleによれば、カラフルなターミナル出力の表示にも対応し、ユーザーの好みのコマンドラインツールを「全ての色彩のままで」楽しめるようになったとのことです。また、ユーザーはCtrl+Fを押してターミナルにフォーカスを集中させることも可能になっています。
利用開始方法と活用例
新機能はGemini CLI v0.9.0以降でデフォルトで有効化されています。最新版へのアップグレードは以下のコマンドで実行できます。
npm install -g @google/gemini-cli@latest
Googleが公開している具体的な活用例には、以下のようなコマンドが挙げられています。これまで別のターミナルを開く必要があったこれらの作業が、Gemini CLI内で完結するようになります。
- vim、nvim、nanoを使用したコード編集
- git commit、git rebase -i などのインタラクティブなGitコマンド
- Python、Node.js、Rubyなどの対話的REPL(Read-Eval-Print Loop)の実行
- htop、mcなどの全画面表示ターミナルアプリケーション
- npm init、ng new などのセットアップスクリプト
- gcloudコマンドなどの対話的なプロンプト対応
Googleは、この機能をプラットフォーム間で継続的に改善する予定であり、ユーザーからのフィードバックをGitHubリポジトリで受け付けています。
まとめ
Gemini CLIの新機能により、開発者はターミナルを切り替えることなく、複雑な対話的なコマンドをGemini CLI内で一貫して実行・管理できるようになります。これはAIアシスタントとしてのGemini CLIが、開発者のワークフロー全体の文脈を保持しながらサポートできることを意味します。今後のプログラミングやシステム管理の作業において、開発体験が大きく向上する可能性があります。一度試してみる価値があるツール進化と言えるでしょう。