Chapter 1: ライブリローディングの概要

ライブリローディングとは何ですか?

ライブリローディングとは、開発環境がコードの変更を監視し、自動的にアプリケーションを再読み込みする機能です。ファイルを保存すると、ライブリローディングツールは変更を検出し、アプリケーションを再構築して再起動します。これにより、サーバーを手動で停止し、アプリケーションを再構築し、変更後に再起動する手順が省略されます。

Go 開発におけるライブリローディングの利点

ライブリローディングは開発プロセスを大幅に加速させることができます。Go 開発者にとって、コードをコンパイルしてから実行することが一般的なため、ライブリローディングは即座のフィードバックを得られるような改善されたワークフローを意味します。その利点は以下の通りです:

  1. 生産性の向上: 開発者は手動で再構築を行う必要がないため、中断することなく作業に集中できます。
  2. 時間の節約: ライブリローディングにより、コードの変更が実行中のアプリケーションに反映されるまでのターンアラウンド時間が短縮されます。
  3. エラーの検出: 即座な再構築と再起動により、開発者はエラーをすばやく検出し修正できます。
  4. 効率的なワークフロー: 開発プロセスにシームレスに統合され、スムーズで効率的なものとなります。

Chapter 2: Air とは?

Air は、Go アプリケーション向けのライブリローディング機能を提供するコマンドラインユーティリティです。ソースコードの変更を監視し、Go アプリケーションを自動的に再構築および再起動します。これにより、機能の開発に集中でき、繰り返し作業を減らすことができます。

機能

Air は、近代的な Go 開発環境向けのさまざまな機能を提供しています:

  • 自動的な再構築: ファイルの変更を検出し、再構築をトリガーします。
  • カスタマイズ可能なビルドコマンド: プロジェクトのニーズに合わせてビルドコマンドをカスタマイズできます。
  • ディレクトリの除外: 監視から除外するディレクトリを指定できます。
  • 新しいディレクトリのサポート: Air の起動後に追加された新しいディレクトリを監視できます。
  • カラフルで読みやすいログ: カラーコーディングで出力ログの読みやすさを向上させます。
  • CLI 引数: コマンドライン引数を介して設定フィールドを直接指定し、迅速な調整が可能です。

すべての機能と機能については、開発者が提供するコンテキストを参照してください。

Chapter 3: air のインストール

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

Go ツールチェーンバージョン1.18以上を使用して Air をインストールするには:

go install github.com/cosmtrek/air@latest

これにより、airGOPATH/bin で利用可能になります。

3.2 install.sh スクリプトを使用する方法

提供されているインストールスクリプトを使用する別の方法は次のとおりです:

curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

インストール後は、次のコマンドで確認します:

air -v

3.3 特別なインストール方法(Docker/Podman およびカスタム PATH)

Docker や Podman を使用している場合は、Air を含めるための簡略化された方法があります:

docker run -it --rm \
    -w "/path/to/project" \
    -v $(pwd):/path/to/project \
    -p port:port \
    cosmtrek/air

/path/to/project をプロジェクトのパスに、port:port を希望するポートマッピングに置き換えてください。

または、特定の PATH にインストールする場合:

curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/custom/path sh

Chapter 4: Go プロジェクトのための air の設定

4.1 .air.toml 設定の理解

.air.toml は Air の設定ファイルで、ビルドプロセス、ディレクトリ監視、ログ出力に関連する設定を指定できます。以下は主要なセクションの概要です:

  • root: Air の作業ディレクトリを設定します。
  • build: ビルドに関連する設定を含み、ビルド前/後に実行するコマンドやメインビルドコマンドを指定します。
  • tmp_dir: 一時的なビルドファイルが保存されるディレクトリです。
  • log: ログファイルの設定を構成します。
  • color: ログ出力の各部分の色をカスタマイズします。

4.2 設定ファイルの生成と変更

.air.toml デフォルト設定ファイルを生成するには、次のコマンドを実行してください:

air init

これにより、現在のディレクトリにデフォルト設定で .air.toml ファイルが作成されます。その後、プロジェクトの要件に合わせて変更できます。参考のためには、提供された air_example.toml を参照してください。

4.3 CLI 引数での設定上書き

簡単なテストや細かい変更のためには、.air.toml の設定をCLI引数で上書きすることができます。例:

air --build.cmd "go build -o myapp" --build.bin "./myapp"

この柔軟性により、設定ファイルを変更せずに Air の動作を簡単にカスタマイズできます。

第5章: 開発環境での air の実行

5.1 プロジェクトでの air の起動

air をプロジェクトで利用するには、ターミナルでプロジェクトのルートディレクトリに移動し、air コマンドを実行してください。.air.toml 設定ファイルが存在する場合は、air は自動的にそれを使用します。それ以外の場合は、デフォルトの設定を使用します。

cd /path/to/your_project
air

ヒント: air 実行ファイルで権限の問題が発生した場合は、それが必要な実行権限を持っていることを確認してください (chmod +x $(go env GOPATH)/bin/air)。

5.2 air でのビルドおよび実行コマンドのカスタマイズ

air で使用されるビルドおよび実行コマンドを .air.toml 設定ファイルの [build] セクションを修正することでカスタマイズできます。例えば、ビルドコマンドを変更して別のバイナリファイルを指定する場合:

[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"

より複雑なビルド要件については、設定ファイル内の pre_cmd および post_cmd 配列を使用して、ビルドプロセスの前後にコマンドを実行できます。

ヒント: air 設定の完全な例

5.3 ディレクトリの除外および変更の監視

air では、再ビルドをトリガーする必要のないアセットや依存関係を含むディレクトリを監視から除外することができます。

これには、.air.tomlexclude_dir フィールドを更新してください:

[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]

include_dir を使用して追加のディレクトリを指定したり、include_ext を使用して特定のファイル拡張子を監視したりすることもできます。

第6章: 応用的な使用法

6.1 Docker コンテナでの air のセットアップ

Docker コンテナ内で air を使用することは、特にチームで作業する場合に開発環境を効率化できます。Docker 環境に air を含めるには、Dockerfile を更新して air をインストールし、.air.toml をコンテナにコピーしてください:

FROM golang:1.18-alpine AS builder

RUN go install github.com/cosmtrek/air@latest

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

CMD ["air", "-c", ".air.toml"]

6.3 Docker-compose 環境での air の使用

docker-compose で管理されるサービスに air を統合するには、docker-compose.yaml ファイルでサービスを定義してください:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "808:808"
    volumes:
      - .:/app
    command: ["air", "-c", ".air.toml"]

volumes ディレクティブがプロジェクトディレクトリをコンテナ内の作業ディレクトリに正しくマッピングしていることを確認してください。これにより、air がファイルの変更を検出できます。

第7章: 一般的なトラブルシューティングとFAQ

7.1 command not found: air の修正

command not found: air エラーが発生した場合、通常はシステムの PATHair バイナリがないことを意味します。これを解決するには、Go バイナリのパスを PATH 環境変数に追加してください:

export PATH=$PATH:$(go env GOPATH)/bin

7.2 WSL 環境での問題

Windows Subsystem for Linux(WSL)環境では、.air.toml で特殊文字をエスケープする必要があります。たとえば、ファイルパスのバックスラッシュをエスケープするには \\ を使用してください。

7.3 バイナリを実行せずにホットコンパイルするためのヒント

Go アプリケーションを実行せずに air にコンパイルさせたい場合は、.air.toml[build] セクションで cmd を no-operation コマンド(Unix ベースのシステムでは /bin/true など)に設定してください。

[build]
cmd = "/bin/true"

これにより、air はファイルの変更を監視し、ビルドプロセスをトリガーしますが、生成されたバイナリファイルを実行しようとはしません。