Gemini CLI インストールガイド:AI開発を始めよう


Gemini CLI インストールガイド:AI開発を始めよう

はじめに

現代のテクノロジーにおいて、AI(人工知能)はもはや未来の技術ではなく、私たちの日常やビジネスに深く根差した存在となっています。特に近年、生成AIの目覚ましい進化は、クリエイティブな分野、ソフトウェア開発、教育、研究など、あらゆる領域に革新をもたらしています。この革新の中心にいるのが、Googleが開発した高性能な生成AIモデル「Gemini」です。

Geminiは、テキスト、画像、音声、動画などの異なる種類の情報を同時に理解し、処理できるマルチモーダル能力を持つことが特徴です。この強力な能力は、単なる文章生成にとどまらず、より複雑で現実世界に近い問題解決への道を開きます。

さて、この強力なGeminiモデルを使ってAI開発やアプリケーション開発を始めたいと思ったとき、どのような方法があるでしょうか? GoogleはGemini APIを提供しており、Python、Java、Node.jsなどの各種プログラミング言語に対応したSDK(Software Development Kit)を利用するのが一般的です。しかし、ちょっとした試行錯誤や、スクリプトからの簡単な呼び出し、あるいは学習目的で手軽にGeminiの能力を試したい場合、本格的な開発環境のセットアップやSDKの学習は少し大げさに感じられるかもしれません。

ここで役立つのが、Gemini APIをコマンドラインから直接操作できるツール、すなわち「Gemini CLI(Command Line Interface)」です。Gemini CLIを利用すれば、最小限の準備でGeminiの各機能(テキスト生成、マルチモーダル生成、埋め込みなど)を素早く実行し、結果を確認できます。これは、初めてGeminiに触れる方にとって学習のハードルを下げ、また既存のエンジニアにとっては開発・検証プロセスを効率化する強力なツールとなります。

本記事は、このGemini CLIを使ってAI開発の第一歩を踏み出すための詳細なインストールガイドと基本的な使い方、さらに活用方法を解説することを目的としています。約5000語にわたり、Gemini CLIの概要から始まり、前提条件、詳細なインストール手順、APIキーの設定方法、基本的なコマンドの使い方(テキスト生成、チャット、マルチモーダル、埋め込みなど)、そしてCLIをさらに活用するためのヒントまで、網羅的に説明します。

AI開発の世界へようこそ。Gemini CLIを使って、生成AIの力を体験し、新たな可能性を探求していきましょう。

第1章:GeminiとGemini CLIの概要

AI開発を始めるにあたり、まず対象となる「Gemini」そしてそれを操作するための「Gemini CLI」がどのようなものかを理解することは重要です。

1.1 Geminiとは?

Geminiは、Googleが開発した最先端のAIモデルファミリーです。その最大の特徴は「マルチモーダル」であること。これは、テキストだけでなく、画像、音声、動画、コードといった複数の異なる種類のデータを同時に理解し、推論を行う能力を指します。例えば、画像とその画像に関する質問を同時に与え、画像の内容を理解した上で質問に回答するといったことが可能です。

Geminiモデルは、用途に応じていくつかのサイズが提供されています。

  • Gemini Ultra: 最も大きく、複雑なタスクに対応できる高性能モデル。
  • Gemini Pro: 幅広いタスクに対応できるバランスの取れたモデル。データセンターで実行されることを想定しています。
  • Gemini Nano: デバイス上で直接実行されることを想定した、より軽量で効率的なモデル。

開発者が主にAPI経由で利用するのは、現時点ではGemini ProおよびGemini Pro Vision(画像対応版)が中心となります。これらのモデルは、自然言語処理、コード生成、データ分析、創造的なコンテンツ作成など、多岐にわたる応用が可能です。

1.2 Gemini APIとは?

開発者が自身のアプリケーションやサービスにGeminiの能力を組み込むための主要な手段が、Gemini APIです。Gemini APIは、RESTインターフェースとして提供されており、インターネット経由でモデルにリクエストを送信し、応答を受け取ることができます。

さらに、Googleは主要なプログラミング言語向けにSDKを提供しています。これらのSDK(Python, Node.js, Java, Goなど)を利用することで、API呼び出しをより簡単かつ効率的に行うことができます。SDKは、認証、リクエスト構築、応答処理といったAPI操作に伴う定型的な処理を抽象化してくれるため、開発者はモデルとの連携ロジックに集中できます。

APIやSDKを利用することで、チャットボット、コンテンツ生成ツール、画像分析アプリケーション、データ分析パイプラインなど、Geminiを活用した様々なアプリケーションを構築することが可能になります。

1.3 Gemini CLIとは?

本記事の主役であるGemini CLIは、その名の通り、Gemini APIをコマンドラインインターフェースから操作するためのツールです。Pythonで開発されたパッケージとして提供されており、pip コマンドで簡単にインストールできます。

Gemini CLIを使うことで、SDKをインストールしたり、プログラミング言語でコードを書いたりすることなく、ターミナルから直接Geminiモデルにプロンプトを送信したり、他の操作を実行したりできます。これは、内部的にはPythonのGoogle Generative AIクライアントライブラリ(SDK)をラップして実現されています。

1.4 Gemini CLIのメリット

なぜGemini CLIを使うのでしょうか? 主なメリットは以下の通りです。

  • 手軽な試行と実験: 新しいプロンプトのアイデアを素早く試したり、モデルの応答を確認したりするのに最適です。コードを書く手間なく、コマンド一つで実行できます。
  • 学習ツールとしての利用: APIの各機能がどのように動作するか、どのようなパラメータがあるかを実際に試しながら学ぶのに役立ちます。SDKを使った開発に入る前のステップとして非常に有効です。
  • スクリプト化と自動化: 簡単なバッチ処理や自動化スクリプトの中でGeminiの機能を呼び出すことができます。例えば、ファイルリストに対するテキスト処理や、定型的な応答生成などをシェルスクリプトやPythonスクリプトから実行する際に便利です。
  • 環境構築の簡略化: フル機能のSDKを利用する場合に比べて、依存関係が少なく、セットアップが比較的簡単です。
  • CI/CDとの連携可能性: コマンドラインツールであるため、継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインの一部として組み込むことも理論的には可能です(用途は限定的かもしれませんが)。

1.5 Gemini CLIの利用シーン

Gemini CLIは、以下のような様々なシーンで活躍します。

  • プロンプトエンジニアリングの実験: 様々なプロンプトやパラメータ(温度、最大トークン数など)の効果を比較検討する。
  • モデルの能力検証: 特定のタスクに対してGeminiモデルがどの程度性能を発揮するかを手軽に確認する。
  • 簡単なコンテンツ生成: 短いテキスト、アイデア、コードスニペットなどを素早く生成する。
  • データの前処理/後処理の一環: テキストデータの簡単な要約や分類などをスクリプトから実行する。
  • 学習目的: Gemini APIの基本的な使い方をコマンド操作を通して理解する。
  • マルチモーダル機能の確認: 画像をプロンプトに含めて、モデルがどのように応答するかを確認する。
  • 埋め込みベクトルの生成: テキストデータのベクトル表現を取得し、後続のベクトルデータベース検索などの準備を行う。

このように、Gemini CLIは、本格的なアプリケーション開発の強力な基盤となるSDKの機能を、より手軽に、よりインタラクティブに試すための入り口として、あるいは特定の用途に特化したツールとして、非常に価値のある存在です。

第2章:Gemini CLIのインストール準備

Gemini CLIをインストールして利用するためには、いくつかの前提条件を満たし、必要な準備を整える必要があります。この章では、それらの準備について詳しく解説します。

2.1 前提条件の確認

Gemini CLIを利用するために必要な基本的な前提条件は以下の通りです。

  • オペレーティングシステム (OS): Windows, macOS, Linuxなど、Pythonが動作する主要なOSであれば利用可能です。
  • Pythonのインストール: Gemini CLIはPythonパッケージとして提供されるため、Python実行環境が必要です。推奨バージョンはPython 3.9以上です。
  • インターネット接続: Gemini APIにアクセスするために、安定したインターネット接続が必要です。
  • Google Cloud プロジェクト(またはVertex AIプロジェクト): Gemini APIを利用するためには、Google Cloud Platform上にプロジェクトを作成または選択し、必要なAPIを有効化する必要があります。
  • APIキー(またはサービスアカウント認証情報): Gemini APIへのアクセスを認証するためのAPIキーまたはサービスアカウントの認証情報が必要です。本記事では、手軽さからAPIキーを利用する方法を中心に解説します。

2.2 Google Cloudプロジェクトの作成/選択とAPI有効化

Gemini APIは、Google Cloudのインフラストラクチャ上で提供されます。そのため、APIを利用するにはGoogle Cloudプロジェクトが必要です。

  1. Google Cloud コンソールにアクセス: ウェブブラウザで https://console.cloud.google.com/ にアクセスし、Googleアカウントでログインします。
  2. プロジェクトの選択または作成:
    • 既存のプロジェクトを利用する場合:コンソールの上部にあるプロジェクト選択プルダウンから、利用したいプロジェクトを選択します。
    • 新しいプロジェクトを作成する場合:プロジェクト選択プルダウンの「新しいプロジェクト」をクリックし、プロジェクト名を入力して作成します。プロジェクトIDは自動的に割り当てられますが、必要に応じて編集できます。
  3. Vertex AI APIの有効化: Gemini APIは、Google Cloudの Vertex AI という機械学習プラットフォームの一部として提供されています。(厳密には、Google AI StudioやMakerSuiteで生成したAPIキーはVertex AIとは直接関連しない場合もありますが、Google Cloudプロジェクトとの紐付けは推奨されます。将来的にはVertex AI APIに統合される可能性も考慮し、Vertex AI APIの有効化は良い習慣です。)
    • Google Cloudコンソールのナビゲーションメニュー(左上の三本線アイコン)を開きます。
    • 「Vertex AI」または「人工知能」の項目を探し、クリックします。
    • Vertex AIのページに初めてアクセスする場合、APIの有効化を求められることがあります。「APIを有効にする」ボタンをクリックして有効化します。すでに有効化されている場合は、この手順は不要です。
    • API有効化には数分かかる場合があります。

2.3 APIキーの取得

Gemini APIへのアクセスを認証するためにAPIキーが必要です。APIキーは、プロジェクトに関連付けられた一意の文字列で、APIリクエストに含めることで、誰がリクエストを行っているかを識別します。

APIキーを取得する最も簡単な方法は、Google AI Studio または MakerSuite を利用することです。これらのツールは、プロトタイピングに特化しており、APIキーの生成が非常に容易です。

  1. Google AI StudioまたはMakerSuiteにアクセス: ウェブブラウザで https://aistudio.google.com/ または https://makersuite.google.com/ にアクセスします。Googleアカウントでログインします。
  2. APIキーの取得画面へ移動: 左側のナビゲーションメニュー、またはページの目立つ場所に表示されている「APIキーを取得」または類似のリンクをクリックします。
  3. 新しいAPIキーの作成:
    • Google Cloudプロジェクトを選択するよう求められる場合があります。前の手順で作成または選択したプロジェクトを選択します。
    • 「APIキーを作成」ボタンをクリックします。
    • 新しいAPIキーが生成され、画面に表示されます。このAPIキーは非常に重要です。外部に漏洩しないよう、安全に保管してください。 画面に表示されたAPIキーをコピーしておきます。

注意: 生成されたAPIキーは、デフォルトではすべてのAPIへのアクセスを許可する広範な権限を持つ場合があります。本番環境でアプリケーションをデプロイする際には、APIキーよりもサービスアカウントとIAMロールを用いた、より安全で権限制御が可能な認証方法を検討することを強く推奨します。しかし、CLIを使って手軽に試す目的であれば、APIキーが最も簡単です。

2.4 Python環境の準備と仮想環境の利用

Gemini CLIはPythonパッケージであるため、適切なPython環境が必要です。また、システムのPython環境を汚染しないため、そしてプロジェクトごとに依存関係を管理するために、Pythonの仮想環境(Virtual Environment)を利用することを強く推奨します。

  1. Pythonのインストール確認:

    • ターミナル(コマンドプロンプト、PowerShell、Bashなど)を開きます。
    • 以下のコマンドを実行して、Pythonがインストールされているか、およびそのバージョンを確認します。

    “`bash
    python –version

    または

    python3 –version
    “`

    • Python 3.9以上のバージョンが表示されれば準備OKです。もしインストールされていない場合やバージョンが古い場合は、公式サイト (https://www.python.org/downloads/) からインストーラーをダウンロードしてインストールしてください。macOSやLinuxでは、システムにプリインストールされていることも多いですが、古いバージョンの場合があるので注意が必要です。Homebrew (macOS) やOSのパッケージマネージャー (Linux) を使うと、バージョンの管理がしやすいです。
  2. 仮想環境の作成:

    • プロジェクト用のディレクトリを作成し、そこに移動します。

    bash
    mkdir gemini-cli-project
    cd gemini-cli-project

    • 仮想環境を作成します。Python 3.3以降には標準で venv モジュールが含まれています。env という名前で仮想環境を作成する例です。

    “`bash
    python -m venv env

    または

    python3 -m venv env
    “`

    • これにより、gemini-cli-project ディレクトリ内に env という新しいディレクトリが作成され、その中に独立したPython実行環境とpipが用意されます。
  3. 仮想環境のアクティベート:

    • 作成した仮想環境を使用するために、アクティベートします。OSによってコマンドが異なります。

    • macOS / Linux:

      bash
      source env/bin/activate

    • Windows (Command Prompt):

      cmd
      env\Scripts\activate.bat

    • Windows (PowerShell):

      powershell
      .\env\Scripts\Activate.ps1

    • 仮想環境がアクティベートされると、ターミナルのプロンプトの先頭に仮想環境の名前(ここでは (env))が表示されるようになります。この状態で実行される pythonpip コマンドは、この仮想環境内のものになります。

    bash
    (env) user@hostname:~/gemini-cli-project$

これで、Gemini CLIをインストールするための準備が整いました。次の章では、実際にCLIのインストール手順を解説します。

第3章:Gemini CLIのインストール手順

前提条件を満たし、Pythonの仮想環境も準備できたら、いよいよGemini CLI本体をインストールします。Gemini CLIはPythonパッケージとして提供されるため、Pythonの標準パッケージインストーラである pip を使ってインストールできます。

3.1 pip を使用したインストール

仮想環境をアクティベートしたターミナルで、以下のコマンドを実行します。

bash
pip install google-generativeai

このコマンドは、Googleが提供する生成AIライブラリ google-generativeai をインストールします。Gemini CLIはこのライブラリに含まれています。

pip はインターネット上のPyPI(Python Package Index)からパッケージをダウンロードし、現在の仮想環境(アクティベートしている場合)にインストールします。インストールには数秒から数分かかることがあります。

インストールが完了すると、成功した旨のメッセージが表示されます。

3.2 インストール成功の確認

google-generativeai パッケージが正しくインストールされ、Gemini CLIが利用可能になったかを確認します。以下のコマンドを実行してください。

bash
genai --version

または、ヘルプコマンドを実行してみます。

bash
genai --help

これらのコマンドを実行して、バージョン情報が表示されたり、利用可能なコマンドのリストが表示されたりすれば、インストールは成功です。もし「command not found」のようなエラーが表示される場合は、仮想環境が正しくアクティベートされているか、あるいはインストールが失敗していないかを確認してください。仮想環境をアクティベートし忘れている場合、システムのPython環境にインストールしようとして権限エラーになったり、パスが通っていなかったりする可能性があります。

3.3 APIキーの設定方法

Gemini CLIがGemini APIと通信するためには、認証情報としてAPIキーが必要です。APIキーを設定する方法はいくつかありますが、ここでは代表的な方法を説明します。

セキュリティに関する注意: APIキーは機密情報です。コードや設定ファイルに直接書き込む場合、それらのファイルが意図せず公開されないように十分注意してください。特に、バージョン管理システム(Gitなど)に含める場合は、.gitignore ファイルで除外するなどの対策が必須です。最も安全な方法は、環境変数を使用することです。

方法1:環境変数 GOOGLE_API_KEY を使用する(推奨)

この方法は最も推奨されます。APIキーをシステムやユーザーの環境変数として設定することで、アプリケーションコードや設定ファイルから切り離すことができます。Gemini CLIを含む多くのGoogle Cloudクライアントライブラリは、デフォルトで GOOGLE_API_KEY という環境変数を参照します。

  • macOS / Linux (Bash, Zshなど):

    一時的に設定する場合(現在のターミナルセッションのみ有効):

    bash
    export GOOGLE_API_KEY="YOUR_API_KEY"

    恒久的に設定する場合(ターミナルを開くたびに有効):
    ユーザーのホームディレクトリにある .bashrc, .zshrc, .profile などのシェル設定ファイルを開き、末尾に上記 export コマンドを追記します。ファイルを編集した後、ターミナルを再起動するか、以下のコマンドで設定を再読み込みします。

    bash
    source ~/.bashrc # または ~/.zshrc, ~/.profile など

  • Windows (Command Prompt):

    一時的に設定する場合:

    cmd
    set GOOGLE_API_KEY=YOUR_API_KEY

    恒久的に設定する場合:
    システムの設定から環境変数を設定します。「システムのプロパティ」を開き、「詳細設定」タブの「環境変数」ボタンをクリックします。ユーザー環境変数またはシステム環境変数として GOOGLE_API_KEY という変数名で、値にAPIキーを設定します。設定後は新しいコマンドプロンプトを開く必要があります。

  • Windows (PowerShell):

    一時的に設定する場合:

    powershell
    $env:GOOGLE_API_KEY="YOUR_API_KEY"

    恒久的に設定する場合:
    PowerShellのプロファイルスクリプト ($PROFILE) に $env:GOOGLE_API_KEY="YOUR_API_KEY" を追記するか、Windowsのシステム設定から環境変数を設定します。

YOUR_API_KEY の部分は、取得した実際のAPIキーに置き換えてください。環境変数を設定したら、echo $GOOGLE_API_KEY (macOS/Linux) または echo %GOOGLE_API_KEY% (Windows CMD) または $env:GOOGLE_API_KEY (Windows PowerShell) で正しく設定されているか確認できます。

方法2:設定ファイル .config/genai/config.yaml を使用する

Gemini CLIは、ユーザーのホームディレクトリにある特定のパスに設定ファイルを配置することで、APIキーやその他の設定を読み込むことができます。

  1. ユーザーのホームディレクトリ (~) に .config ディレクトリがあるか確認します。なければ作成します。
    bash
    mkdir -p ~/.config/genai
  2. ~/.config/genai/config.yaml という名前で新しいファイルを作成し、以下の内容を記述します。

    yaml
    api_key: YOUR_API_KEY

    YOUR_API_KEY の部分は、取得した実際のAPIキーに置き換えてください。

この方法は、環境変数を設定するのが難しい場合や、CLI固有の設定もまとめて管理したい場合に便利です。ただし、APIキーがファイルとして保存されるため、ファイルのアクセス権限管理には注意が必要です。

方法3:コマンドライン引数で一時的に指定する

これは非推奨の方法ですが、特定のコマンド実行時のみ一時的にAPIキーを指定したい場合に利用できます。セキュリティ上のリスク(コマンド履歴に残るなど)があるため、機密性の高いAPIキーに対してはこの方法は避けるべきです。

bash
genai generate-text "Hello" --api-key YOUR_API_KEY

ほとんどのコマンドで --api-key オプションが利用可能ですが、環境変数または設定ファイルでの指定が推奨されます。

3.4 設定確認コマンド

APIキーが正しく設定されているか、Gemini CLIがどの設定を読み込んでいるかを確認するためのコマンドはありません(バージョン情報やヘルプはありますが、APIキー設定の確認専用コマンドは執筆時点では提供されていないようです)。APIキーが正しく設定されているかは、実際にAPIを呼び出すコマンド(例: genai generate-text "Test")を実行してみて、認証エラーが発生しないかで確認するのが最も確実です。

もしエラーが発生した場合、エラーメッセージを確認し、APIキーが正しく設定された環境変数または設定ファイルがCLIから参照できているか、スペルミスがないかなどを再度確認してください。特に仮想環境を使っている場合、仮想環境をアクティベートしたターミナルで環境変数を設定しているか、設定ファイルが正しいパスに置かれているかなどが重要です。

これで、Gemini CLIのインストールとAPIキーの設定が完了し、AI開発を始めるための準備が整いました。次の章では、Gemini CLIを使った基本的な操作方法を具体的に見ていきましょう。

第4章:Gemini CLIの基本的な使い方

Gemini CLIがインストールされ、APIキーも設定できたら、早速コマンドを使ってGeminiモデルと対話してみましょう。この章では、主要なコマンドとその使い方を詳しく解説します。

Gemini CLIのコマンドは、genai <command> [options] [arguments] という形式をとります。利用可能なコマンドやオプションは、genai --helpgenai <command> --help でいつでも確認できます。

4.1 CLIのヘルプコマンド

コマンドの使い方に迷ったら、まずはヘルプコマンドを活用しましょう。

  • 全体ヘルプ: 利用可能なコマンドの一覧と基本的な使い方が表示されます。

    bash
    genai --help

  • 特定コマンドのヘルプ: 特定のコマンド(例: generate-text)の詳細な使い方、利用可能なオプション、引数などが表示されます。

    bash
    genai generate-text --help

これらのヘルプ情報は、CLIの機能を理解する上で非常に役立ちます。

4.2 テキスト生成の基本 (generate-text)

最も基本的な機能は、プロンプトに対してテキストを生成することです。これは generate-text コマンドで行います。

  • 最も簡単な使い方: プロンプトを直接コマンドライン引数で指定します。

    bash
    genai generate-text "日本の首都はどこですか?"

    実行すると、Geminiモデルがプロンプトに応じたテキスト応答を返します。

  • モデルの指定 (--model): デフォルトでは適切なモデル(通常は最新の gemini-pro または同等のモデル)が使用されますが、特定のモデルを指定したい場合は --model オプションを使います。利用可能なモデルは genai list-models コマンドで確認できます。

    bash
    genai generate-text "りんごについて教えてください" --model gemini-pro

  • 生成パラメータの設定: 生成されるテキストの性質を制御するために、様々なパラメータを設定できます。

    • --temperature <value>: 応答のランダム性を制御します。値が低いほど決定論的で繰り返しになりやすく、高いほど多様で創造的な応答になります。通常0.0から1.0の範囲で指定します(デフォルトは通常0.9など)。
    • --top-p <value>: サンプリング時に考慮するトークンセットを制御します。値が低いほど、確率の高いトークンのみが考慮されます。
    • --top-k <value>: サンプリング時に考慮するトークンの数を制御します。top-p と組み合わせて使われることが多いです。
    • --max-output-tokens <value>: 生成される応答の最大トークン数(単語や句読点などの単位)を制限します。長い応答を避けたい場合に便利です。

    bash
    genai generate-text "面白い詩を書いてください" --temperature 1.0 --max-output-tokens 200

  • 複数のプロンプトを入力 (--prompt-file, パイプ): 長いプロンプトや複数のプロンプトを扱いたい場合は、ファイルから読み込むか、標準入力からパイプで渡すことができます。

    • ファイルから読み込む (--prompt-file):

      まず、プロンプトを記述したテキストファイル(例: prompt.txt)を作成します。

      “`text

      prompt.txt

      夏休みに行きたい場所を3つ提案してください。
      それぞれの場所について、簡単な説明も加えてください。
      “`

      次に、CLIコマンドでファイルを指定します。

      bash
      genai generate-text --prompt-file prompt.txt

    • パイプで渡す (標準入力から):
      シェルスクリプトなどで動的にプロンプトを生成し、それを genai generate-text にパイプで渡すことができます。

      bash
      echo "Pythonでフィボナッチ数列を計算する関数を書いてください。" | genai generate-text

  • 出力形式の制御 (--output, JSON出力): 生成された応答の表示形式を制御できます。

    • デフォルトではプレーンテキストで表示されます。
    • JSON形式で詳細な応答(生成されたテキスト、安全性評価など)を取得したい場合は、例えば --output json のようなオプションがあるか、またはコマンドのヘルプを確認してください。(執筆時点のCLIでは出力形式の詳細な制御オプションは限定的な可能性があります。APIレスポンスの生データが必要な場合はSDKの利用を検討してください)。

    通常はプレーンテキストで十分ですが、プログラムで結果をパースして利用する場合にはJSON出力が便利です。

4.3 チャット機能 (chat)

Geminiモデルは、会話の履歴を保持しながら対話を行う「チャット」機能をサポートしています。CLIでは chat コマンドを使ってこれを利用できます。

  • チャットセッションの開始:

    bash
    genai chat start

    このコマンドを実行すると、インタラクティブなチャットセッションが開始されます。プロンプトが表示され、メッセージを入力できるようになります。

    Starting new chat session. Type 'quit' or 'exit' to end.
    You:

  • メッセージの送信と応答: You: プロンプトに対してメッセージを入力し、Enterキーを押すと、そのメッセージがGeminiモデルに送信され、応答が返ってきます。会話の履歴は自動的に保持されます。

    “`
    You: こんにちは、Geminiさん。
    Model: こんにちは!何かお手伝いできることはありますか?

    You: 日本で一番高い山は何ですか?
    Model: 日本で一番高い山は富士山です。

    You: その山の標高は?
    Model: 富士山の標高は3,776メートルです。
    “`

    このように、前のターンでの話題(富士山)を踏まえた応答が得られます。

  • チャットセッションの終了: チャットセッションを終了するには、プロンプトに対して quit または exit と入力してEnterキーを押します。

    You: quit
    Ending chat session.

  • モデル指定とパラメータ: chat start コマンドの実行時に、generate-text と同様に --model や生成パラメータオプション(--temperature など)を指定できます。これらの設定はそのチャットセッション全体に適用されます。

    bash
    genai chat start --model gemini-pro --temperature 0.8

CLIのチャット機能は、Geminiモデルとの対話形式での検証や、簡単なチャットボットのような使い勝手を試すのに非常に便利です。ただし、セッションの保存やロードといった高度な機能は、CLIのバージョンによってはサポートされていない場合があります。継続的なチャット機能をアプリケーションに組み込む場合は、SDKの利用が必須となります。

4.4 マルチモーダル機能 (generate-text with --image-file)

Gemini Pro Visionモデルは、テキストと画像を組み合わせたプロンプトに対応しています。CLIでは、generate-text コマンドに --image-file オプションを使って画像ファイルを指定することで、マルチモーダルなプロンプトを送信できます。

  • 使い方: テキストプロンプトに加えて、画像ファイルのパスを --image-file オプションで指定します。複数の画像を指定することも可能です。

    “`bash

    image.jpg という画像ファイルがあるとして

    genai generate-text “この画像には何が写っていますか?” –image-file image.jpg –model gemini-pro-vision
    “`

    または、テキストプロンプトなしで画像の内容を説明させることもできます。

    bash
    genai generate-text --image-file image.jpg --model gemini-pro-vision

    複数の画像を同時に指定することも可能です(モデルがサポートしている場合)。

    bash
    genai generate-text "これらの画像に共通することは何ですか?" --image-file image1.png --image-file image2.jpeg --model gemini-pro-vision

  • モデルの指定: マルチモーダルな入力には、画像に対応したモデル(例: gemini-pro-vision)を指定する必要があります。genai list-models コマンドで画像に対応しているモデルを確認できます。通常、モデル名の説明に「Supports multi-modal requests (text and images)」のような記載があります。画像対応モデルを指定しない場合、エラーになるか、画像入力が無視されることがあります。

この機能を使うことで、画像の内容に関する質問応答、画像の説明生成、画像に含まれる要素の識別など、画像とテキストを組み合わせた様々なタスクをCLIから手軽に試すことができます。

4.5 埋め込み (Embeddings) 機能 (embed)

テキストの「埋め込み(Embeddings)」とは、単語や文章などのテキストデータを、その意味内容に基づいて数値ベクトル(ベクトルのリスト)として表現することです。意味的に似ているテキストは、ベクトル空間上で近い位置に配置されます。この埋め込みベクトルは、テキストの類似度検索、クラスタリング、分類などの機械学習タスクの前処理として広く利用されます。

Geminiモデルファミリーには、テキスト埋め込みに特化したモデルも提供されています。CLIでは embed コマンドを使って、指定したテキストの埋め込みベクトルを取得できます。

  • 基本的な使い方: 埋め込みたいテキストを引数で指定します。

    bash
    genai embed "これはテスト文章です。"

    実行すると、テキストの埋め込みベクトルがJSON形式で出力されます。

    json
    {
    "embedding": [
    0.012345,
    -0.067890,
    ... ( hundreds or thousands of values)
    0.098765
    ]
    }

    (実際の出力はJSON形式で、ベクトル値の数はモデルに依存します。)

  • 複数のテキストの埋め込み: 複数のテキストをまとめて処理したい場合は、複数の引数として指定するか、パイプで渡すことができます。

    bash
    genai embed "文章1" "文章2" "文章3"

    または、ファイルから読み込むか標準入力からパイプで渡すことも可能です。例えば、各行がテキストであるファイル texts.txt がある場合:

    bash
    cat texts.txt | genai embed

    または、コマンドのヘルプでファイル指定オプションがないか確認してください。通常は標準入力からのパイプが便利です。複数のテキストを処理する場合、それぞれのテキストに対応する埋め込みベクトルがリスト形式で出力されます。

  • モデルの指定: 埋め込みには、通常 embedding-001 のような埋め込み専用モデルを使用します。--model オプションで指定します。

    bash
    genai embed "これはテスト文章です。" --model embedding-001

    利用可能な埋め込みモデルも genai list-models で確認できます。

埋め込み機能は、検索システム(特にベクトル検索)や推薦システム、あるいはテキストデータの高度な分析を行う際に非常に重要です。CLIを使って手軽に埋め込みベクトルを取得できることは、これらの応用のプロトタイピングや学習において大きなメリットとなります。

4.6 モデル情報の取得 (list-models, get-model)

APIで利用可能なGeminiモデルには様々な種類があり、それぞれに対応する機能(テキストのみ、画像対応、埋め込み専用など)や制限(最大トークン数、レート制限など)が異なります。利用可能なモデルを把握し、その詳細を確認することは、適切なモデルを選択するために不可欠です。

  • 利用可能なモデルの一覧表示 (list-models):

    bash
    genai list-models

    このコマンドは、現在利用可能なモデルの一覧を表示します。各モデルの名前(name)、表示名(displayName)、説明(description)、対応する入力タイプ(supportedGenerationMethods、例: generateContent, embedContent)、最大入力トークン数(inputTokenLimit)、最大出力トークン数(outputTokenLimit)などがリスト形式で表示されます。

    “`
    name: models/gemini-pro
    displayName: Gemini Pro
    description: The best model for scaling across a wide range of tasks.
    inputTokenLimit: 30720
    outputTokenLimit: 2048
    supportedGenerationMethods:
    – generateContent
    – countTokens
    version: 001

    name: models/gemini-pro-vision
    displayName: Gemini Pro Vision
    description: The best vision model for scaling across a wide range of tasks.
    inputTokenLimit: 12288
    outputTokenLimit: 4096
    supportedGenerationMethods:
    – generateContent
    – countTokens
    version: 001

    name: models/embedding-001
    displayName: Embedding
    description: Obtain a distributed representation of a text.
    inputTokenLimit: 8192
    supportedGenerationMethods:
    – embedContent
    version: 001

    “`
    (出力形式は実際の出力と異なる場合がありますが、含まれる情報は概ね上記のようなものです。)

  • 特定のモデルの詳細情報 (get-model):

    特定のモデルについて、より詳細な情報(例えば利用可能なパラメータや安全性設定など)を確認したい場合は、モデル名を指定して get-model コマンドを実行します。

    bash
    genai get-model gemini-pro

    またはフルネームで指定します。
    bash
    genai get-model models/gemini-pro

    このコマンドは、指定したモデルに関する詳細な設定やcapabilitiesをJSON形式で表示します。モデルをプログラムから利用する際に、どのようなパラメータが指定できるかなどを確認するのに便利です。

これらのモデル情報コマンドは、Gemini APIを利用する上で、どのモデルが自分の目的に合っているか、どのような制限があるかを理解するために不可欠です。

第5章:Gemini CLIを活用したAI開発のステップ

Gemini CLIは単なるインストールガイドに従ってコマンドを打つだけでなく、AI開発の様々な段階で有効活用できます。この章では、CLIを使った開発のステップや、より高度な応用について解説します。

5.1 CLIを使った迅速なプロトタイピング

新しいAI機能をアプリケーションに組み込む際、最初から本格的なSDKを使ったコードを書くのは効率が悪い場合があります。CLIは、アイデアの検証やプロンプトの調整といったプロトタイピング段階でその威力を発揮します。

例えば、「ユーザーの入力に基づいて、商品レビューの要約を生成する機能」を考えたとします。

  1. CLIでプロンプトを試す: 最初に、CLIを使って様々なレビューテキストとプロンプトの組み合わせを試します。「以下のレビューをポジティブ、ネガティブ、中立の3つの評価と短い要約にまとめてください:[レビューテキスト]」といったプロンプトで genai generate-text コマンドを実行し、期待通りの出力が得られるかを確認します。
  2. パラメータ調整: 要約の長さや評価の表現を調整するために、--temperature--max-output-tokens などのパラメータを変えて複数回試行します。
  3. マルチモーダルなアイデア: もし商品画像も入力として考慮したいなら、--image-file オプションを使って gemini-pro-vision モデルで試してみます。「この商品画像の情報を踏まえて、レビューの要約を生成してください」といった具合です。
  4. 埋め込みの活用検討: レビューテキストの類似度を計算して関連レビューを提案したい場合は、genai embed コマンドでレビューテキストの埋め込みベクトルを取得し、その結果を確認します。

このように、CLIを使うことで、コーディングのサイクルを待つことなく、AIモデルの振る舞いを即座に確認し、最適なプロンプトやパラメータを見つけ出すことができます。

5.2 スクリプトからのCLI呼び出し

CLIコマンドはシェルスクリプトやPythonスクリプトなどから呼び出すことができます。これにより、簡単な自動化や既存のワークフローへの組み込みが可能になります。

例えば、特定のディレクトリにあるテキストファイル群をそれぞれ要約し、別のファイルに出力するバッチ処理を考えます。

Bashスクリプトの例:

“`bash

!/bin/bash

INPUT_DIR=”./reviews”
OUTPUT_DIR=”./summaries”
API_KEY=”YOUR_API_KEY” # 環境変数を使う方が安全

mkdir -p $OUTPUT_DIR

for file in $INPUT_DIR/*.txt
do
filename=$(basename “$file” .txt)
prompt=”以下のレビューを簡潔に要約してください。\n\n$(cat “$file”)”

# Gemini CLIを呼び出し、出力をキャプチャ
# 環境変数GOOGLE_API_KEYが設定されていれば –api-key は不要
summary=$(genai generate-text “$prompt” –max-output-tokens 100 –temperature 0.7 –api-key “$API_KEY”)

# 生成された要約をファイルに保存
echo “$summary” > “$OUTPUT_DIR/${filename}_summary.txt”

echo “Processed $file -> ${filename}_summary.txt”
sleep 1 # レート制限に配慮して少し待つ
done

echo “Batch processing complete.”
“`

このスクリプトは、reviews ディレクトリ内の各.txt ファイルを読み込み、その内容を含むプロンプトを作成して genai generate-text を呼び出します。生成された要約は summaries ディレクトリに保存されます。

Pythonスクリプトから subprocess を使って呼び出す例:

Pythonコードの中から外部コマンドとしてGemini CLIを呼び出すことも可能です。これは、Pythonのより複雑なロジックの中でCLIの機能を活用したい場合に便利です。

“`python
import subprocess
import os

def generate_summary(text):
“””
Gemini CLIを使ってテキストの要約を生成する関数
“””
# 環境変数 GOOGLE_API_KEY が設定されていることを前提とする
# 環境変数が設定されていない場合は api_key オプションを渡す
api_key = os.getenv(“GOOGLE_API_KEY”)
if not api_key:
print(“Error: GOOGLE_API_KEY environment variable not set.”)
return None

prompt = f"以下のテキストを簡潔に要約してください。\n\n{text}"

# subprocess.run を使ってCLIコマンドを実行
# capture_output=True で標準出力をキャプチャ
# text=True で出力をテキストとして扱う
# check=True でエラー時に例外を発生させる
try:
    result = subprocess.run(
        ["genai", "generate-text", prompt, "--max-output-tokens", "100", "--temperature", "0.7"],
        capture_output=True,
        text=True,
        check=True,
        env={"GOOGLE_API_KEY": api_key} # 環境変数を subprocess に渡す
    )
    # 標準出力に生成されたテキストが含まれる
    return result.stdout.strip()
except subprocess.CalledProcessError as e:
    print(f"Error calling genai CLI: {e}")
    print(f"Stderr: {e.stderr}")
    return None
except FileNotFoundError:
    print("Error: 'genai' command not found. Is Gemini CLI installed and in PATH?")
    return None

使用例

review_text = “””
この商品は期待外れでした。写真と実物がかなり違います。
特に素材感が安っぽく、縫製も雑でした。
すぐに返品手続きをしました。
二度とこのストアでは買いません。
“””

summary = generate_summary(review_text)

if summary:
print(“Generated Summary:”)
print(summary)
“`

このPythonスクリプトでは、subprocess.run を使って genai generate-text コマンドを実行し、その標準出力を取得しています。このように、Pythonの柔軟な制御フローの中でCLIの機能を組み込むことができます。ただし、CLI呼び出しは外部プロセスを起動するため、APIキーを頻繁に呼び出すようなパフォーマンスが求められる処理には向きません。その場合はSDKを直接利用する方が効率的です。

5.3 バッチ処理への応用

前述のスクリプトからの呼び出しは、まさにバッチ処理の例です。CLIは、大量のデータに対して一括で同じAI処理を行いたい場合に有効です。

例:
* 多数のドキュメントファイルからキーワードを抽出する。
* 画像データセットのキャプションを自動生成する。
* ブログ記事のタイトル案を複数生成する。
* 顧客からのフィードバックを一括で感情分析する(埋め込みベクトルを取得し、クラスタリングや分類モデルに入力するなど)。

大量のデータをCLIに渡す際は、シェルやPythonのパイプ処理、ファイルからの読み込み機能を活用します。ただし、APIのレート制限や費用には注意が必要です。大量のAPI呼び出しを行う場合は、エラーハンドリング(リトライ処理など)や呼び出し間隔の調整(sleep コマンドなど)をスクリプトに含めることが重要です。

5.4 データの前処理・後処理とCLIの連携

AIモデルによる処理は、データ分析パイプラインの一部として組み込まれることが多いです。CLIは、このようなパイプラインにおける前処理や後処理のステップとして利用できます。

例:
* 前処理:
* 入力テキストデータから、genai embed を使って埋め込みベクトルを生成し、それをベクトルデータベースに格納する準備をする。
* 長いテキストデータを、genai generate-text で要約したり、関連性の高い部分だけを抽出したりして、モデルに入力しやすい形に整形する。
* 後処理:
* モデルが生成したテキストから、CLIや他のコマンドラインツール(grep, sed, awkなど)を使って特定の情報を抽出したり、フォーマットを変換したりする。
* 生成された画像キャプションと元のファイル名を紐付けて、CSVファイルにまとめる。

CLIは他のコマンドラインツールとの連携が容易であるという特性を活かすことで、複雑なデータ処理パイプラインの一部分を担うことができます。

5.5 CLIからSDKへの移行の検討

CLIは手軽で便利ですが、本格的なアプリケーション開発には限界があります。より高度な機能(非同期処理、ストリーミング、厳密なエラーハンドリング、複数のモデル呼び出しのオーケストレーション、UI連携など)が必要になるにつれて、SDKの利用が不可欠になります。

CLIでプロトタイピングを行い、機能やプロンプトが固まったら、それを基にSDKを使ったコードに移行するのが効率的な開発ワークフローです。SDKを利用すれば、CLIでは難しい細やかな制御や、アプリケーション全体との密な連携が可能になります。

例えば、Webアプリケーションでユーザーからの入力に基づいて動的にGeminiを呼び出す場合、Webフレームワーク(Flask, Django, Reactなど)と連携しやすいSDK(Python SDK, Node.js SDKなど)を使うのが自然です。

CLIでの経験は、SDKを使った開発においても無駄にはなりません。CLIで得たプロンプトエンジニアリングの知識や、モデルの挙動に関する理解は、SDKを使ったコードを書く上でも大いに役立ちます。

5.6 CLIを学習ツールとして使う方法

最後に、CLIはGemini APIや生成AIそのものを学ぶ上でも非常に優れたツールです。

  • 各パラメータの効果を体感する: --temperature--top-p などのパラメータを様々に変更して、生成されるテキストがどのように変化するかを実際に試してみる。
  • 異なるモデルの比較: genai list-models で利用可能なモデルを確認し、--model オプションで異なるモデルを使って同じプロンプトを試すことで、それぞれのモデルの特性や得意なタスクを理解する。
  • エラーメッセージから学ぶ: APIキーの設定ミス、無効なパラメータ、レート制限など、CLI実行時に発生するエラーメッセージを理解することで、API利用時の注意点や認証の仕組みについて学ぶ。
  • 新しい機能の発見: genai --helpgenai <command> --help をこまめに参照することで、新しいコマンドやオプション、機能の追加に気づく。

ハンズオン形式でCLIを操作することは、生成AIの概念やAPIの仕組みを座学よりも深く理解するための効果的な方法です。

第6章:トラブルシューティングとよくある質問

Gemini CLIのインストールや使用中に遭遇する可能性のある一般的な問題とその解決策、およびよくある質問について説明します。

6.1 インストール関連のトラブルシューティング

  • command not found: genai

    • 原因: Gemini CLI(genai コマンド)がシステムのPATH環境変数に登録されていないか、インストールがそもそも成功していない可能性があります。
    • 解決策:
      • 仮想環境を使っている場合、仮想環境が正しくアクティベートされているか確認してください。アクティベートすると、仮想環境内のPythonスクリプト(genai コマンドを含む)へのパスが自動的に追加されます。
      • pip install google-generativeai コマンドがエラーなく完了したか確認してください。エラーが出ている場合は、そのエラーメッセージに従って問題を解決してください(例: ネットワークエラー、権限不足など)。
      • Pythonやpipのインストール場所によっては、手動でPATH環境変数にPythonスクリプトディレクトリを追加する必要があるかもしれません。
  • pip の実行時に権限エラーが発生する

    • 原因: システム全体のPython環境にパッケージをインストールしようとしており、管理者権限がないために発生することが多いです。
    • 解決策: Python仮想環境を使用することを強く推奨します。仮想環境内であれば、ユーザー権限で自由にパッケージをインストールできます。仮想環境をアクティベートした状態で再度 pip install google-generativeai を実行してください。

6.2 実行時のトラブルシューティング

  • 認証エラー(”Invalid API Key” や類似のエラー)

    • 原因: APIキーが正しく設定されていない、または無効なAPIキーを使用している。
    • 解決策:
      • 設定したAPIキー(環境変数 GOOGLE_API_KEY または設定ファイル ~/.config/genai/config.yaml の値)が、Google AI Studio または MakerSuite で取得した正しいキーと完全に一致しているか確認してください。コピー&ペーストの際に不要な空白が入っていないかなども注意が必要です。
      • 環境変数を使っている場合、CLIを実行しているターミナルセッションで環境変数が正しく読み込まれているか確認してください(echo $GOOGLE_API_KEY など)。設定ファイルを編集した場合も、ファイルパスやYAMLのフォーマットが正しいか確認してください。
      • 取得したAPIキーが、CLIからアクセスしようとしているAPI(例: generateContent, embedContent)へのアクセス権限を持っているか確認してください。
      • APIキーが期限切れになっていないか確認してください。
  • レート制限エラー(”Quota exceeded” や “Rate limit exceeded”)

    • 原因: 短時間に多数のAPIリクエストを送信しすぎたため、APIの利用制限を超過した。
    • 解決策:
      • しばらく待ってから(数秒~数分)再度試してみてください。
      • バッチ処理などを行う場合は、リクエスト間に適切な待機時間(sleep コマンドなど)を設けてください。
      • より高いレート制限が必要な場合は、Google Cloudコンソールでクォータの増加申請を検討してください(ただし、Gemini APIの無料枠や初期クォータには制限があります)。
  • モデル関連のエラー(”Model not found” や “This model does not support…”)

    • 原因: 指定したモデル名が間違っている、または指定したモデルが実行しようとしている操作(テキスト生成、マルチモーダル、埋め込みなど)に対応していない。
    • 解決策:
      • genai list-models コマンドを実行して、利用可能なモデルの正確な名前と、それぞれのモデルがサポートしている操作(supportedGenerationMethods)を確認してください。
      • 特にマルチモーダルな入力には gemini-pro-vision のような画像対応モデルが必要です。埋め込みには embedding-001 のような埋め込み専用モデルが必要です。
      • モデル名は、models/gemini-pro のようにフルネームで指定する方が確実です。
  • ネットワーク関連のエラー

    • 原因: インターネット接続の問題、ファイアウォール、プロキシ設定などにより、CLIがGemini APIエンドポイントにアクセスできない。
    • 解決策:
      • インターネット接続が正常か確認してください。
      • 企業ネットワークなどを使用している場合、ファイアウォールやプロキシがAPIアクセスを妨げていないかネットワーク管理者に確認してください。環境変数 HTTP_PROXY, HTTPS_PROXY を設定する必要があるかもしれません。
  • 大きなファイルを generate-text --image-file で扱う際にエラーになる

    • 原因: モデルが処理できる画像のサイズやピクセル数には制限があります。
    • 解決策: 画像をリサイズしたり、解像度を下げたりして、モデルが対応可能なサイズに調整してください。具体的な制限値はモデルのドキュメントを参照してください。

6.3 よくある質問 (FAQ)

  • Gemini CLIは無料ですか?
    • Gemini CLI自体は無料のツールです。しかし、CLIを通じて利用するGemini APIは有料サービスです。利用状況に応じた課金が発生します。料金体系や無料枠については、Google AIの料金ページやGoogle CloudのVertex AI料金ページを確認してください。新しいユーザーには無料トライアルや無料枠が提供されることが多いです。
  • Gemini CLIでローカルモデルは使えますか?
    • いいえ、Gemini CLIは基本的にGoogleのクラウド上でホストされているGeminiモデルにアクセスするためのツールです。ローカルで動作するAIモデルを操作するための機能は提供していません。
  • CLIはオフラインで使えますか?
    • いいえ、Gemini APIとの通信が必要なため、CLIはインターネット接続が必須です。
  • サービスアカウント認証情報は使えますか?
    • はい、google-generativeai ライブラリ(CLIの基盤)はサービスアカウントキーによる認証もサポートしています。通常、環境変数 GOOGLE_APPLICATION_CREDENTIALS にサービスアカウントキーファイルへのパスを設定することで利用できます。よりセキュアな方法であるため、自動化スクリプトや本番利用ではサービスアカウントの利用を検討してください。
  • プロンプトの文字数に制限はありますか?
    • はい、Geminiモデルには入力できる最大トークン数(inputTokenLimit)があります。genai list-modelsgenai get-model <model_name> で確認できます。長いテキストを扱う場合は、分割したり、要約したりするなどの工夫が必要です。
  • 生成される応答の文字数に制限はありますか?
    • はい、生成される応答にも最大トークン数(outputTokenLimit)があります。genai list-models で確認できます。長い応答が必要な場合は、この制限に注意し、必要に応じて--max-output-tokensオプションで調整するか、APIのストリーミング機能などをSDKで利用する必要があります(CLIのストリーミング対応は限定的かもしれません)。

これらのトラブルシューティングとFAQが、CLIの使用中に困ったときの助けになれば幸いです。

おわりに

本記事では、高性能な生成AIモデルGeminiをコマンドラインから手軽に操作できる「Gemini CLI」に焦点を当て、そのインストール方法から基本的な使い方、さらにAI開発における活用方法、そしてトラブルシューティングまで、詳細に解説してきました。

Gemini CLIは、AI開発の敷居を大きく下げるツールです。プログラミングの深い知識がなくても、ターミナルから数コマンド実行するだけで、最新の生成AIの力を直接体験し、その応答や振る舞いを観察できます。これは、AIが何を得意とし、どのような可能性を秘めているのかを肌で感じるための最良の方法の一つです。

CLIを使ったプロンプトの試行錯誤、モデルの振る舞いの確認は、AI開発の初期段階において非常に効率的です。また、簡単なスクリプトに組み込むことで、日々のタスクの一部を自動化したり、データ処理パイプラインにAI処理を組み込んだりすることも可能です。

もちろん、より複雑で本格的なアプリケーションを開発する際には、Pythonや他の言語のSDKを利用することが必要不可欠になります。しかし、CLIを通じて得た経験、特にプロンプトエンジニアリングのスキルやモデルの特性に関する理解は、SDKを使った開発においても必ず役に立ちます。CLIは、SDKを使った開発へのスムーズな移行をサポートする橋渡しのような存在とも言えるでしょう。

AI技術は今も進化を続けており、Geminiモデルも今後さらに機能や性能が向上していく可能性があります。Gemini CLIは、そのような最新のAIモデルを手軽に試し、学び続けるための強力なパートナーとなります。

AI開発の世界は広大で、学ぶべきことは尽きませんが、まずはこのGemini CLIを使って、生成AIの可能性を自分の手で探索してみてください。思いもよらない創造的なアイデアが生まれたり、解決が難しかった問題にAIでアプローチする方法が見つかったりするかもしれません。

さあ、あなたもGemini CLIをインストールして、AI開発の exciting な旅を始めましょう。Happy hacking!


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール