Go ライブラリの使用

App Engine フレキシブル環境で実行されているインスタンスでは、任意の linux / amd64 互換パッケージを使用できます。以下の手順は、go get コマンドを使用して GitHub、Bitbucket、LaunchPad などの対応リポジトリからパッケージを直接取得していることを前提としています。

依存関係の宣言と管理

Go アプリケーションは、ソースファイルのディレクトリ構造を反映するパッケージに編成されています。import ステートメントに指定されているパスは相対パスとして解釈されます。GOPATH にあるすべてのディレクトリの src サブディレクトリに関連する完全修飾パスが有効なインポートパスになります。

たとえば、GOPATH が次のように定義されているとします。

export GOPATH=/home/fred/go

サンプルアプリのディレクトリにある src1-1.go ファイルに、次の import ステートメントが含まれているとします。

import "foo/bar"

この場合、アプリを実行またはデプロイするときに、gcloud CLI は次の場所で foo/bar パッケージを探します。

/home/fred/go/src/foo/bar

GOPATH にパッケージ ソースを含める場合は、app.yaml ファイルがあるアプリのディレクトリ以下にソースコードを配置しないように注意してください。この位置に配置すると、パッケージが 2 回、つまりサービス ディレクトリの相対パスに対して 1 回、完全修飾パスに対して 1 回読み込まれ、問題が発生することがあります。問題を回避するため、gcloud CLI はアプリのディレクトリと GOPATH の両方をスキャンし、検出した競合をエラーとして報告します。

最良の結果を得るため、次のことをおすすめします。

  • アプリのディレクトリの下に、サービスごとに別々のディレクトリを作成します。
  • 各サービスのディレクトリには、サービスの app.yaml ファイルと 1 つ以上の .go ファイルを含めます。
  • サービス ディレクトリにサブディレクトリを作成してはなりません。
  • GOPATH には、アプリのディレクトリの外にあり、アプリがインポートするすべての依存関係が含まれているディレクトリを指定する必要があります。

必要なパッケージのダウンロード

パッケージをダウンロードするには、go get コマンドを使用します。たとえば、GitHub my_repo から packagename をダウンロードするには、次のコマンドを実行します。

go get github.com/my_repo/packagename

App Engine へのデプロイ

アプリケーションを App Engine にデプロイするには、アプリで必要とされるライブラリとアプリケーション コードを一緒にデプロイする必要があります。 詳細については、アプリケーションのデプロイをご覧ください。