Toilを無くして徒然なるままに日暮し硯に向かひたい

生成AIアプリケーション開発などを行うエンジニアのブログです。

Gemini CLI AI駆動開発体験ハンズオン

この記事は#17 Gemini CLI AI駆動開発体験ハンズオン【オンライン】 - connpassの資料です。

Gemini CLI AI駆動開発体験ハンズオン

🎯 本日のゴール

このハンズオンでは、Googleの強力なAIモデルであるGeminiをターミナルから対話的に利用できるGemini CLIを使い、以下の3つの体験を通じて、日々の開発タスクを劇的に効率化する「AI駆動開発」の第一歩を踏み出すことを目指します。

  1. 面倒なドキュメント作成の自動化
  2. 未知のアプリケーションの迅速な立ち上げ
  3. 対話によるスマートな機能追加

🧠 Gemini CLIとは?

Gemini CLIは、Googleが公開したオープンソースのAIエージェントです。ターミナル(コマンドライン)から自然言語で指示を出すだけで、まるで優秀なアシスタントがいるかのように、以下のようなタスクをこなします。

  • コードの生成・編集・解説
  • ファイル操作
  • 情報検索
  • ワークフローの自動化

それでは、早速AIとのペアプログラミングの世界を体験してみましょう!

1. 準備

a. Node.js (npm) のインストール

Gemini CLIのインストールに必要です。未インストールの方はVer.20以上をインストールしてください。

b. Gemini CLIのインストールと設定

ターミナルを開き、以下のコマンドを実行します。

# Gemini CLIをインストール
npm install -g @google/gemini-cli
# インストールされたことを確認
gemini --version

以下のようにバージョン情報が表示されればOKです。

0.3.2

c. 認証設定

Gemini-CLIのREADMEを参照

github.com

ターミナルで

gemini

と入力すると、対話モードとなります。

/quit

で退出できます。

2. ハンズオン1: ローカルコードを解析してREADME.mdを自動生成

まずは、既存のコードからプロジェクトの説明書であるREADME.mdを自動生成させてみましょう。

手順

1. 作業用ディレクトリの作成と移動

mkdir gemini-cli-handson && cd gemini-cli-handson

2. サンプルコードの作成

簡単なWebサーバーのPythonコードを作成します。main.pyというファイル名で以下の内容を保存してください。

touch main.py
import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
main.pyを動かしてください

などと入力することで起動させることができます。

3. ハンズオン1: GeminiにREADMEの作成を依頼!

カレントディレクトリの情報をコンテキスト (-c ) として渡し、READMEの作成を依頼し、> を使ってファイルに保存します。

💻 実行するコマンド:

gemini -p "このプロジェクトのREADME.mdを日本語で生成してください。プロジェクトの概要、使い方、実行方法を簡潔にまとめてください。" -c  > README.md

ls コマンドで README.md ファイルが作成されていることを確認してください。たったこれだけで、プロジェクトのドキュメントが完成しました!

4. ハンズオン2: 未知のアプリを動かしてみる

次に、GitHubから使い方があまり書かれていないプロジェクトをCloneしてきて、Geminiに起動方法を尋ねて動かしてみましょう。

手順 サンプルリポジトリのクローン まずは一つ上の階層に戻り、サンプルリポジトリをクローンします。

git clone https://github.com/shu-kob/rag-app-handson

READMEがあるとGeminiがその内容をヒントにしてしまうため、READMEがなくてもどれだけ自力でアプリの構造を理解できるか試すために README.mdを削除します。

cd rag-app-handson
rm frontend/README.md backend/README.md

Geminiに起動方法を質問してみます。 このディレクトリにはREADME.mdがありません。どうやって動かせばいいか、Geminiに聞いてみましょう。

💻 実行するコマンド:

gemini -p "このプロジェクトの実行方法を教えて。必要な手順をステップバイステップで説明して。" -c 

Geminiは ファイルを見て、以下のような実行手順を説明してくれます。

5. ハンズオン3: プロンプトを工夫して機能追加

最後に、対話を通じてアプリケーションに新しい機能を追加してみましょう。ハンズオン1で作成したPythonのWebサーバーコードを拡張します。

手順 作業ディレクトリへ移動

cd gemini-cli-handson

現在のコードを確認

cat main.py

で現在のコードを再確認します。これはシンプルなWebサーバー機能しかありません。

Geminiに機能追加を依頼! このWebサーバーに、「アクセスすると'Hello, Gemini!'と表示する」機能を追加してもらいましょう。コード全体を書き換えてもらうように依頼するのがポイントです。

💻 実行するコマンド:

gemini -p "現在のmain.pyを修正して、どのパスにアクセスしても 'Hello, Gemini!' というテキストを返すように変更してください。コード全体を提示してください。" -c main.py

生成されたコードでファイルを上書き Geminiが修正版のmain.pyコードを生成します。上書きの指示をしてください。

(生成されるコードの例)

import http.server
import socketserver

PORT = 8000

class MyHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/plain; charset=utf-8')
        self.end_headers()
        self.wfile.write('Hello, Gemini!'.encode('utf-8'))

with socketserver.TCPServer(("", PORT), MyHandler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

動作確認 変更したWebサーバーを起動し、ブラウザやcurlコマンドで動作を確認します。

💻 実行するコマンド (ターミナル):

python3 main.py

もしくは、Gemini-CLIで「main.pyを起動してください」と指示します。

💻 別のターミナルを開いて実行、またはブラウザで http://localhost:8000 にアクセス:

curl http://localhost:8000

ターミナルに "Hello, Gemini!" と表示されれば、機能追加は成功です!