Chapter 1: ライブリローディングの概要
ライブリローディングとは何ですか?
ライブリローディングとは、開発環境がコードの変更を監視し、自動的にアプリケーションを再読み込みする機能です。ファイルを保存すると、ライブリローディングツールは変更を検出し、アプリケーションを再構築して再起動します。これにより、サーバーを手動で停止し、アプリケーションを再構築し、変更後に再起動する手順が省略されます。
Go 開発におけるライブリローディングの利点
ライブリローディングは開発プロセスを大幅に加速させることができます。Go 開発者にとって、コードをコンパイルしてから実行することが一般的なため、ライブリローディングは即座のフィードバックを得られるような改善されたワークフローを意味します。その利点は以下の通りです:
- 生産性の向上: 開発者は手動で再構築を行う必要がないため、中断することなく作業に集中できます。
- 時間の節約: ライブリローディングにより、コードの変更が実行中のアプリケーションに反映されるまでのターンアラウンド時間が短縮されます。
- エラーの検出: 即座な再構築と再起動により、開発者はエラーをすばやく検出し修正できます。
- 効率的なワークフロー: 開発プロセスにシームレスに統合され、スムーズで効率的なものとなります。
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
これにより、air
が GOPATH/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.toml
の exclude_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
エラーが発生した場合、通常はシステムの PATH
に air
バイナリがないことを意味します。これを解決するには、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
はファイルの変更を監視し、ビルドプロセスをトリガーしますが、生成されたバイナリファイルを実行しようとはしません。