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: 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/dev.nix に、ウェブ プレビュー構成を追加します。
idx = {
previews = {
enable = true;
previews = {
web = {
command = ["go" "run" "main.go"];
manager = "web";
env = {
# サーバーに設定する環境変数
PORT = "$PORT";
};
};
};
};
};
環境をもう一度再ビルドして、ウェブ プレビューを表示します。プレビューは、コマンド パレットで > Project IDX: Show Web Preview
を使って開くこともできます。
さっそく開発を始めたい方のために、すぐに使えるテンプレートを準備しています。テンプレートはあらかじめ構成された環境で、必要なすべてのツールとライブラリがそろっています。
いずれかの Go バックエンド サーバー テンプレートから始めるか、Go and Gemini テンプレート を使って LLM アプリケーションの開発を始めましょう。
Gemini with Go テンプレートには Gemini API が組み込まれており、AI の力が活用できるようになっています。Gemini API キーを設定してお使いください。