Project IDX と Gemini API を使って Go アプリケーションを開発する

12月 18, 2024
Suzy Mueller Software Engineer
Nooras Saba Engineering Manager

2024 年 6 月に公開された Project IDX は、クラウドでフルスタック アプリを開発できる AI 支援型ワークスペースです。さまざまなフレームワーク、言語、サービスがサポートされており、Google プロダクトと連携して開発ワークフローを効率化できます。

これを使って Go アプリケーションを開発する方法を、数分で説明しましょう。ここでは、Project IDX で Go 開発環境を設定し、最初のサーバー アプリケーションを作成します。さっそく IDX で Go 開発環境を設定し、簡単な Hello World サーバーを作ってみましょう。

IDX では、いくつかの方法でワークスペースを作成することができます。たとえば、GitHub リポジトリをインポートしたり、新しい空のワークスペースをゼロから作成したり、事前に設定されたテンプレートを使用したりできます。まずはゼロから始める方法を説明し、次にテンプレートを紹介します。


スタートガイド

このセクションでは、IDX で環境を設定する方法と、基本的な Hello World サーバーを作成する方法について説明します。

まず、idx.google.com/new/blank から、IDX に新しい空のプロジェクトを作ります。このプロジェクトには、README とデフォルトの dev.nix が含まれています。


環境のカスタマイズ

環境設定は、nix 環境設定でカスタマイズできます。IDX の Go ワークスペースの最小構成に、Go の nix パッケージを追加し、Go 拡張機能をインストールします。

.idx/dev.nix を更新し、Go の nix パッケージと Go 拡張機能を追加します。

{ pkgs, ... }: {
  packages = [
    pkgs.go
  ];
 
  idx = {
    extensions = [
      "golang.go"
    ];
  };
}

環境を再ビルドして、変更を反映します。


Go コードの記述

ワークスペースで Go コードを開発する設定ができたので、Go サーバーの記述に取りかかりましょう。

まず、Go コードを含めるモジュールを初期化します。これを行うには、コマンド パレットから Go 拡張機能が提供する > Go: Initialize go.mod を実行するか、コマンドラインから go mod init を実行します。

$ go mod init github.com/myorg/helloWorld

main.go で、「Hello, World!」を返すシンプルなサーバーを作成しましょう。

package main
 
import (
	"fmt"
	"log"
	"net/http"
	"os"
)
 
func main() {
	log.Print("starting server...")
	http.HandleFunc("/", handler)
 
	// Determine port for HTTP service.
	port := os.Getenv("PORT")
	if port == "" {
		port = "3000"
		log.Printf("defaulting to port %s", port)
	}
 
	// Start HTTP server.
	log.Printf("listening on port %s", port)
	if err := http.ListenAndServe(":"+port, nil); err != nil {
		log.Fatal(err)
	}
}
 
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "<!DOCTYPE html>\n")
	fmt.Fprint(w, "Hello, World!\n")
}

IDX でのプレビュー

リクエストをリッスンできるサーバーができたので、プレビューを作成してテストしてみます。

.idx/dev.nix に、ウェブ プレビュー構成を追加します。

idx = {
      previews = {
      enable = true;
      previews = {
          web = {
          command = ["go" "run" "main.go"];
          manager = "web";
          env = {
            # サーバーに設定する環境変数
            PORT = "$PORT";
          };
        };
      };
    };
  };

環境をもう一度再ビルドして、ウェブ プレビューを表示します。プレビューは、コマンド パレットで > Project IDX: Show Web Preview を使って開くこともできます。

Show Web Preview in Project IDX

IDX での Go テンプレートの利用

さっそく開発を始めたい方のために、すぐに使えるテンプレートを準備しています。テンプレートはあらかじめ構成された環境で、必要なすべてのツールとライブラリがそろっています。

いずれかの Go バックエンド サーバー テンプレートから始めるか、Go and Gemini テンプレート を使って LLM アプリケーションの開発を始めましょう。

Gemini with Go テンプレートには Gemini API が組み込まれており、AI の力が活用できるようになっています。Gemini API キーを設定してお使いください。

Code editor displays project files and a web page titled "Baking with Gemini"  with images of baked goods and a prompt to provide a recipe in IDX