とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

Dev ContainersでGo言語の開発環境を作ってみよう

久々にGo言語を使う機会がありそうなので、Dev Containersで開発環境を作ってみました。

事前準備

任意のディレクトリに移動して、プロジェクト用のディレクトリを作成します。

mkdir golang-tutorial
cd golang-tutorial

.devcontainerディレクトリの作成

メニューから表示 > コマンドパレットを実行します。

ダイアログが表示されたらAdd Dev Containerと検索して表示された、コマンドを実行します。

コマンドが実行されたらいくつか質問されますので、今回は以下のように回答しています。

構成ファイルの作成場所

ユーザーディレクトリかプロジェクトディレクトリのどちらかを選択します。今回はプロジェクトディレクトリを選択しました。

コンテナの種類

今回はGo言語の開発環境を作成するので、Goを選択します。

バージョン

Go言語のバージョンを選択します。執筆時点で公式サイトの最新バージョンを確認したところ1.22.xが最新でしたので、今回は1.22を選択しました。

機能の選択

Dev Containersでは開発環境で使用する機能を環境構築時にインストールすることができます。1からツールをインストールするのは手間がかかるため、この機能を有効に使うことで開発環境を簡単に構築することができます。

この機能は後から必要になった際にも追加や削除ができるため、初回は何も選択せずにスキップしています。

コマンドの実行が完了したら、.devcontainer/devcontainer.jsonファイルが作成されます。

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/go
{
    "name": "Go",
    // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
    "image": "mcr.microsoft.com/devcontainers/go:1-1.22-bookworm"

    // Features to add to the dev container. More info: https://containers.dev/features.
    // "features": {},

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],

    // Use 'postCreateCommand' to run commands after the container is created.
    // "postCreateCommand": "go version",

    // Configure tool-specific properties.
    // "customizations": {},

    // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
    // "remoteUser": "root"
}

このファイルが作成した時点ではまた、コンテナ上で開発環境が実行されていません。右下にある通知をクリックしてからコンテナーで再度開くを選択すると、コンテナが起動します。

起動したら、右下の表示が開発コンテナー: Goに変わっていることを確認します。

ターミナル(ターミナル > 新しいターミナル)を開いて、Go言語のバージョンを確認します。

go version

今回は、1.22.xのバージョンがインストールされていることを確認しました。

Go言語のプロジェクトを作成する

go version go1.22.3 linux/arm64
go mod init example/hello

go.modというGo言語のモジュール管理ファイルが作成されます。

.
├── go.mod
└── README.md

go.modファイルには以下のようにモジュール名が記述されています。

module example/hello

go 1.22.3

Hello Worldを出力してみる

main.goというファイルを作成して、以下のように記述します。

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

main.goファイルを作成したら、ターミナルで以下のコマンドを実行して、プログラムを実行します。

go run main.go

以下のようにHello, World!と出力されれば成功です。

Hello, World!

おわりに

ちょっとした検証をするときなどにDev Containersで開発環境を作るのは手軽で便利ですね。 これからしばらくGo言語を触ることになりそうなので、もっと仲良くなりたいですね。