Gemini for Google Cloud アシスタンスを使用して Python アプリを開発する

このチュートリアルでは、Google Cloud の AI を活用したコラボレーターである Google Cloud の Gemini を使用して、サンプルの Python アプリを探索、作成、変更、テスト、デプロイする方法について説明します。

次の例では、あなたは、インベントリ アプリの開発チームのメンバーであるデベロッパーであるします。あなたは、インベントリ アプリの一部として使用するいくつかの API メソッドを含む基本サービスのプロトタイピングを担当しています。ローカルの VS Code 環境でアプリを開発してから、Google Cloud にデプロイしたいと思っています。しかし、どの Google Cloud サービスがユースケースに最適なかは不明です。

このチュートリアルでは、IDE として Visual Studio Code を Gemini とともに使用して、2 つの API メソッドを持つサンプル インベントリ アプリを作成します。

このチュートリアルは、アプリの構築に貢献したが、クラウド テクノロジーに詳しくない可能性がある経験レベルのデベロッパーを対象としています。IDE として VS Code を使用した経験があり、Python と Flask フレームワークに精通していることを前提としています。

目標

  • Gemini にコンテキスト ベースの質問をすることで、アプリをデプロイするために使用できるさまざまな Google サービスを探索します。

  • Cloud Run で基本的な Python アプリを開発するために使用できるテンプレートを提供するよう Gemini に指示します。

  • Gemini を使用してアプリを作成し、探索して、コードの説明と生成を行います。

  • アプリをローカルで実行してテストし、Gemini を使用して手順を生成して Google Cloud にデプロイします。

使用する Google Cloud プロダクト

このチュートリアルでは、課金対象である次の Google Cloud プロダクトを使用します。 料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

  • Cloud Run。Cloud Run は、Google のスケーラブルなインフラストラクチャ上でコンテナを直接実行できるマネージド コンピューティング プラットフォームです。コンテナ イメージをビルドできるものであれば、任意のプログラミング言語で記述されたコードを Cloud Run にデプロイできます。 料金について詳しくは、Cloud Run をご覧ください。

このチュートリアルでは、前述のプロダクトに加えて、次のプロダクトも使用します。

  • 選択できます Gemini は、Google Cloud の常時接続のコラボレーターで、デベロッパーやデータ サイエンティストなどの幅広いユーザーに、生成 AI を活用したアシスタンスを提供します。統合されたアシスタンスのエクスペリエンスを提供するために、Gemini は多くの Google Cloud プロダクトに組み込まれています。

  • Cloud Code for VS Code 拡張機能。この拡張機能は、Kubernetes アプリケーションと Cloud Run アプリケーションの開発サイクルをサポートする IDE プラグインです。Cloud Code 拡張機能の詳細については、Cloud Code for VS Code の機能をご覧ください。

準備

  1. VS Code のローカルコピーをインストールします(まだインストールしていない場合)。

  2. VS Code 用の Cloud Code 拡張機能をインストールします。

    インストール ガイドの手順に沿って、PythonGit、およびDocker クライアントをインストールします。 また、手順に沿って Google Cloud プロジェクトを作成します。

  3. Gemini が Google Cloud ユーザー アカウントとプロジェクト用に設定されていることを確認します。
  4. IDE で Gemini を有効にします。

    手順に沿って IDE で Google Cloud に接続し、Google Cloud 用に設定されたプロジェクトを選択します。

Google Cloud サービスを探索する

Google Cloud を初めて利用する場合は、アプリケーション アーキテクチャの要件を満たす Google Cloud サービスを選択するのに Gemini が役立ちます。

IDE で Gemini とチャットしてヘルプを受けることができます。[Gemini] ペインを使用してプロンプト(必要なヘルプを説明する質問やステートメント)を入力します。Gemini によってレスポンスが返されます。プロンプトには、より有用な、または完全なレスポンスを提供するために Google Cloud が分析する既存のコードからのコンテキストを含めることができます。 良い回答を生成するプロンプトの作成方法については、Gemini により適したプロンプトを作成するをご覧ください。

Google Cloud サービスに関して Gemini に指示するには、次の手順に従います。

  1. IDE のアクティビティ バーで、spark [Gemini] をクリックします。

    VS Code のアクティビティ バーを見つけるには、ユーザー インターフェースをご覧ください。

  2. [Gemini] ペインに、次のプロンプトを入力してから、[送信] をクリックします。

    I am new to Google Cloud and I want to use the Cloud Code extension.
    Give me some examples of Google services that I can use to build and deploy a
    sample app using containers.
    

    Gemini は、Google Cloud サービスと説明のリストを返します。

    この例では、Gemini がサンプルアプリの構築とデプロイに役立つ 2 つの Google Cloud サービスとして Cloud Run と Cloud Functions を提案しているものの、あなたは、これらのサービスに関する詳細情報が必要であるとします。

    Gemini がプロンプトやそのレスポンスをデータとして使用してモデルをトレーニングすることはありせん。詳細については、Google Cloud の Gemini がデータを使用する方法をご覧ください。

  3. 次のような追加の質問を入力します。

    What is the difference between Cloud Run and Cloud Functions? Explain to me
    in simple terms as I am new to Google Cloud.
    

    Gemini は、2 つの Google Cloud サービスの詳しい違いを返します。

  4. 省略可: チャットの履歴をリセットするには、[Gemini] ペインで delete [Chat をリセット] をクリックします。

Hello World Python アプリを作成する

あなたは、Cloud Run を使用して基本的な Python アプリを作成し、デプロイしたいと思っているとします。あなたは Cloud Run と Cloud Code を初めて使用するため、アプリの作成手順についてサポートが必要です。このセクションでは、Cloud Run で Hello World Python アプリを構築するのを支援するよう Gemini に指示します。

  1. IDE を起動します(まだ起動していない場合)。

  2. IDE のアクティビティ バーで、spark [Gemini] をクリックします。

  3. [Gemini] ペインに、次のプロンプトを入力してから、[送信] をクリックします。

    How to create a new Cloud Run app in Cloud Code using the command palette?
    What languages are supported?
    

    VS Code のコマンド パレットには、Cloud Code のコマンドを含むすべてのコマンドの一覧が表示されます。

    出力は次のようになります。

    To create a new Cloud Run app in Cloud Code using the command palette,
    follow these steps:
    1. Open the command palette (press Ctrl/Cmd+Shift+P or click View > Command Palette).
    2. Run the "Cloud Code: New Cloud Run App" command.
    ...
    

    Gemini は、Cloud Run アプリでサポートされている言語も表示します。

    この例では、Python ベースの Cloud Run テンプレートを使用してサンプルアプリを作成します。

  4. Cloud Run テンプレートから Python アプリを作成する方法を学習するために、次のプロンプトを入力します。

    How do I create a Python app from a Cloud Run template using the
    command palette? I am using Cloud Code.
    

    出力は次のようになります。

    To create a Python app from a Cloud Run template using the command palette,
    follow these steps:
    
    1. Open Cloud Code.
    
    2. Click the Command Palette
       (press Ctrl/Cmd+Shift+P or click View > Command Palette).
    
    3. Run the "Cloud Code: New Application" command.
    
    ...
    

    Gemini のレスポンスで示される手順を完了して、Cloud Run で基本的な Hello World Python アプリを作成します。 次のセクションを参照して、Hello World Python アプリを作成することもできます。

Hello World Python アプリを作成するための代替手順

  1. IDE を起動します(まだ起動していない場合)。

  2. コマンド パレットを開きます。Command+Shift+P(MacOS の場合)または Ctrl+Shift+P(Windows および Linux の場合)を押します。

  3. コマンド パレットのフィールドに「Cloud Code: New Application」と入力してから、結果をクリックします。

  4. 使用可能なサンプルのリストから、[Cloud Run アプリケーション] を選択します。

  5. 使用可能なテンプレートのリストから、[Python (Flask): Cloud Run] を選択します。

  6. 新しいアプリを任意の場所に保存します。

アプリが作成されたことを確認する通知が表示されます。 図 1 に示すように、選択したサービスの README ファイルのプレビューが IDE で開きます。

スクリーンショット
図 1 Cloud Run で作成された Hello World Python アプリに表示される README ファイル。

Hello World Python アプリを確認する

Cloud Run で Hello World アプリを作成したら、Gemini を使用して、IDE にデプロイされたファイルとコード スニペットについて説明させることができます。作成したサンプルアプリのコードを探索するには、次の手順を行います。

  1. IDE を起動します。

  2. エクスプローラを開きます。Command+Shift+E(MacOS の場合)または Ctrl+Shift+E(Windows および Linux の場合)を押します。

    サンプルアプリに関連するファイルが表示されます。

  3. ファイルリストで、Dockerfile をクリックして内容を表示します。

  4. 図 2 に示すように、Dockerfile の内容全体を選択し、電球アイコンをクリックしてから、[これを説明] をクリックします。

    Dockerfile のスクリーンショット
    図 2. コードを選択すると、コードの説明機能を使用できます。

    Gemini は、Dockerfile の内容と関数の説明を自然言語で生成します。回答の中のいくつかのポイントが不明な場合は、追加の質問をできます。

  5. Dockerfile で説明されている app.py ファイルの詳細を確認するには、[Gemini] ペインで次のプロンプトを入力します。

    What is the function of the app.py file in Dockerfile?
    

    Gemini は次のようなレスポンスを生成します。

    The app.py file is the entrypoint for the container. It is the file that
    will be executed when the container is launched. In this case, the app.py
    file will run the Python code that is contained within it.
    

    または、Dockerfile でテキスト app.py を選択し、電球アイコンをクリックしてから、[これを説明] をクリックします。

  6. エクスプローラを開きます。Command+Shift+E(MacOS の場合)または Ctrl+Shift+E(Windows および Linux の場合)を押します。

  7. app.py ファイルを開きます。K_SERVICEK_REVISION の 2 つの変数が表示されます。

  8. app.py ファイルの変数の詳細を確認するには、[Gemini] ペインで次のプロンプトを入力します。

    What is the function of `K_SERVICE` and `K_REVISION` in the `app.py` file?
    

    または、Dockerfile で次のテキストを選択し、電球アイコンをクリックしてから、[これを説明] をクリックします。

    service = os.environ.get('K_SERVICE', 'Unknown service')
    revision = os.environ.get('K_REVISION', 'Unknown revision')
    

    レスポンスは次の例のようになります。

    The code above is using the os.environ module to get the values of the
    K_SERVICE and K_REVISION environment variables. These variables are set by
    Cloud Run when it deploys the service, and they contain the name of the
    service and the revision number, respectively.
    ...
    

アプリのサンプルデータを生成する

Cloud Run で作成した基本的な Flask アプリがあります。インベントリ アプリを作成する機能を追加する前に、サンプル インベントリ アイテムのリストを含むファイルが必要です。Gemini を使用して関連するサンプルデータを生成するには、次の手順を行います。

  1. サンプルアプリに関連するファイルを表示するには、IDE で [エクスプローラ] アイコンをクリックします。

  2. [新しいファイル] アイコンをクリックし、inventory.py というファイルを作成します。

  3. Gemini がサンプルデータを生成できるようにするには、[Gemini] ペインで次のプロンプトを入力します。

    Create a variable called inventory which is a list of 3 JSON objects.
    Each JSON object has 2 attributes: productid and onhandqty.
    Both attributes are strings.
    

    Gemini は、3 つの JSON オブジェクトのサンプルコードを生成します。

  4. 図 3 に示すように、レスポンスで、add [現在のファイルに挿入] をクリックし、コードサンプルを inventory.py ファイルに挿入します。

    コードを挿入
    図 3. Gemini のレスポンスからコードを挿入できます。

    inventory.py ファイルは次のようになります。

    inventory = [
       {
          "productid": "12345",
          "onhandqty": "10"
       },
       {
          "productid": "23456",
          "onhandqty": "20"
       },
       {
          "productid": "34567",
          "onhandqty": "30"
       }
    ]
    

    在庫アイテムのリストを含む inventory.py ファイルが正常に作成されました。

Hello World Python アプリを変更する

inventory.py ファイルを作成した後、インベントリ データを操作できる app.py ファイルに API メソッドを導入ます。この目的を完了するために、Gemini のコード生成機能を使用できます。

  1. サンプルアプリに関連するファイルを表示するには、IDE で [エクスプローラ] アイコンをクリックします。

  2. コンテンツを表示するには、app.py ファイルをクリックします。

  3. app.py ファイルに inventory.py 関数が含まれるように、import ステートメントを編集します。

    import os
    from flask import Flask, render_template
    from inventory import inventory
    
  4. Gemini が最初の API メソッドのコードを生成できるようにするには、app.py ファイルに次のコメントを入力して、Control+Enter キーを押します。

     # Generate an app route to display a list of inventory
     # items in the JSON format from the
     # inventory.py file. Use the GET method.
    
    

    Gemini は、app.py ファイルにレスポンスを生成します。

    システム構成によっては、Gemini を使用してコードを生成するためのキーボード ショートカットは、このチュートリアルで使用する Control+Enter の組み合わせと異なる場合があります。

  5. レスポンスのいずれかの部分にポインタを置きます。

    Gemini ツールバーが表示されます。

    Gemini は複数のレスポンスを生成することがあります。ツールバーで < キーと < キーを使用して、レスポンスを切り替えることができます。次の例では、図 4 に示すように、Gemini は 1 つのレスポンスのみを生成します。

    コードを受け入れる
    図 4. Gemini のコード候補を受け入れることができます。
  6. 提案されたコードサンプルを受け入れるには、ツールバーで [受け入れる] をクリックします。

    出力は次のようになります。

    # Generate an App route to display a list of inventory
    # items in the JSON format from the
    # inventory.py file. Use the GET method.
    @app.route('/inventory', methods=['GET'])
    def get_inventory():
        """Return a list of inventory items."""
        return jsonify(inventory)
    
  7. 省略可: jsonify(inventory) 関数の詳細を確認するには、用語をハイライト表示し、コードを説明するよう Gemini に指示します。

  8. app.py ファイルに jsonify 関数が含まれるように、import ステートメントを編集します。

    import os
    from flask import Flask, render_template, jsonify
    from inventory import inventory
    
  9. 別の API メソッドを追加するには、app.py ファイルに次のプロンプトを入力してから、Control+Enter キーを押します。

    # Generate an App route to get an inventory item
    # given the productid. Use the GET method.
    # If there is an invalid productid,
    # display a 404 error.
    

    Gemini は、app.py ファイルにレスポンスを生成します。

  10. レスポンスのいずれかの部分にポインタを置きます。

    Gemini ツールバーが表示されます。

  11. 提案されたコードサンプルのいずれかを受け入れるには、ツールバーで [受け入れる] をクリックします。

    出力は次のようになります。

    # Generate an App route to get an inventory item
    # given the productid. Use the GET method.
    # If there is an invalid productid,
    # display a 404 error.
    @app.route('/inventory/<productid>', methods=['GET'])
    def get_inventory_item(productid):
        """Return an inventory item given the productid."""
        for item in inventory:
            if item["productid"] == productid:
               return jsonify(item)
        return jsonify({"error": "Item not found"}), 404
    

    インベントリ アプリを作成するための 2 つの API メソッドが正常に追加されました。

IDE からローカルでアプリを実行する

VS Code からローカルにアプリをデプロイする準備ができました。 アプリをデプロイするには、次の手順を行います。

  1. IDE を起動します(まだ起動していない場合)。

  2. IDE のアクティビティ バーで、spark [Gemini] をクリックします。

  3. [Gemini] ペインに、次のプロンプトを入力してから、[送信] をクリックします。

    How do I run a Cloud Run app locally within Cloud Code?
    Is there an emulator?
    

    Gemini のレスポンスの手順に沿って、VS Code からローカルでアプリを実行します。次のセクションを参照して、VS Code 内から Cloud Run のサンプルアプリをローカルにデプロイすることもできます。

IDE からローカルでアプリを実行する別の手順

前のセクションの Gemini レスポンスの手順を実施しなかった場合は、次の手順でサンプルアプリをデプロイできます。

  1. IDE を起動します。

  2. コマンド パレットを開きます。Command+Shift+P(MacOS の場合)または Ctrl+Shift+P(Windows および Linux の場合)を押します。

  3. コマンド パレットのフィールドに「Run on Cloud Run Emulator」と入力してから、結果をクリックします。

  4. Build 環境ファイルで、デフォルト値をそのまま使用して [実行] をクリックします。

    このチュートリアルでは、ビルダー オプションとして Docker を使用します。

    IDE の [出力] ペインで、ビルドの進捗状況を確認できます。 実際のデプロイ プロセスが完了するまでに時間がかかることがあります。

    Starting to run the app using configuration 'Cloud Run:
    Run/Debug Locally' from .vscode/launch.json...
    To view more detailed logs, go to Output channel : "Cloud Run: Run/Debug Locally - Detailed"
    Dependency check started
    Dependency check succeeded
    Starting minikube, this may take a while......
    ...
    

ライブアプリを表示するには、デプロイが完了したら、[出力] ペインで URL をクリックします。VS Code のローカルコピーの場合、localhost 8080 を指定した場合、サンプルアプリは URL http://localhost:8080 で公開されます。

2 つの API メソッドをテストする

サンプルアプリがライブの場合は、2 つのアプリルートが機能するかどうかを確認することもできます。 この例では、アプリの URL は http://localhost:8080 であると仮定しています。

  1. アプリのサンプル ランディング ページを表示するには、http://localhost:8080 にアクセスします。

  2. すべてのインベントリ アイテムのリストを取得するには、http://localhost:8080/inventory にアクセスします。

    app.py ファイルで、すべての在庫アイテムを一覧表示するには、@app.route('/inventory', methods=['GET']) 関数を使用します。

  3. productid 属性でフィルタされた特定のインベントリ アイテムを表示するには、http://localhost:8080/inventory/productid をクリックします。

    たとえば、http://localhost:8080/inventory/1、ここで productid は 1 となります。

    app.py ファイルで、productid 属性ごとに特定のインベントリ アイテムを表示するには、関数 @app.route('/inventory/<productid>', methods=['GET']) を使用します。

Cloud Run アプリを Google Cloud にデプロイする

これで、Cloud Run アプリを Google Cloud にデプロイできるようになりました。 手順を提供するよう Gemini に指示することも、次の手順を行うこともできます。

  1. コマンド パレットを開きます。Command+Shift+P(MacOS の場合)または Ctrl+Shift+P(Windows および Linux の場合)を押します。

  2. コマンド パレットのフィールドに「Cloud Code: Deploy to Cloud Run」と入力してから、結果をクリックします。

  3. [サービス] 設定ペインで、Google Cloud プロジェクトを設定します。

  4. 残りの設定はデフォルト値のままにして、[デプロイ] をクリックします。

  5. Cloud Code がイメージをビルドしてレジストリにプッシュし、サービスを Cloud Run にデプロイします。

  6. 実行中のサービスを表示するには、[Cloud Run へのデプロイ] ダイアログに表示されている URL を開きます。

    2 つの API メソッドをテストすると同じ手順を使用して、Google Cloud でサンプルアプリを表示することもできます。必要に応じて URL を調整してください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、このチュートリアルで作成した Google Cloud プロジェクトを削除します。 また、リソースを個別に削除することもできます。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ