Google App Engine + Go + glide on Mac インストール

# Google App Engine + Go + glide on Mac　インストールメモ（特殊ケース）

Google Cloud SDKとApp Engine SDK両方使いたいという特殊ケースです。
通常はどちらかをインストールすればOKなはず。

## ゴール

今回インストールするのは以下:

- Google Cloud SDK + app-engine-goコンポーネント
- App Engine SDK for Go　(goappツールのため)
- Go 1.6
- glide

## 前提条件

- Mac macOS Sierra 10.12
- Googleのアカウントを持っていること
- Python 2.7がインストールされていること


## インストール

### Cloud Platformでの準備

コンソール(Cloud Platform Console)からCloud PlatformのプロジェクトとApp Engine applicationを作成します。
[GO TO APP ENGINE](https://console.cloud.google.com/projectselector/appengine/create?lang=go&st=true&hl=ja&_ga=1.73467671.408996757.1496146216)

### SDKのダウンロードとインストール

ここではインストール先は$HOME/LocalLibraryとして進めます。

```bash
mkdir $HOME/LocalLibrary
```

#### Google Cloud SDKとapp-engine-goコンポーネント

```bash
cd $HOME/LocalLibrary
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-145.0.0-darwin-x86_64.tar.gz
tar xvfz google-cloud-sdk-145.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh
./google-cloud-sdk/bin/gcloud init
source ~/.bash_profile
gcloud components install app-engine-go
```

#### App Engine SDK for Go

```bash
cd $HOME/LocalLibrary
curl -O https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_darwin_amd64-1.9.54.zip
unzip go_appengine_sdk_darwin_amd64-1.9.54.zip		
echo 'export PATH=$PATH:$HOME/LocalLibrary/go_appengine/' >> ~/.bash_profile
source ~/.bash_profile
```

追記：最近のGo1.8対応されているものの場合、go_appengineの下にgorootに設定されるフォルダがないのでエラーになる場合があります。
以下のようにシンボリックリンクを作成することでエラーを回避できます。

```
cd ~/LocalLibrary/go_appengine
ln -s $HOME/LocalLibrary/go_appengine/goroot1.6 goroot
```

### Goのダウンロードとインストール

App EngineがサポートしているのがGo1.6なので、それに合わせます。

パッケージをダウンロードしてインストール。
- https://storage.googleapis.com/golang/go1.6.4.darwin-amd64.pkg

GOPATHとPATHを設定:

```bash
mkdir $HOME/go
echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile
exec $SHELL -l
```

### glideのダウンロードとインストール

[glide@Github](https://github.com/Masterminds/glide)

```bash
mkdir $GOPATH/bin
curl https://glide.sh/get | sh
```

---

インストールは以上です。


## SDKについて（Google Cloud SDK、App Engine SDK）

- Google Cloud SDK
	- スタンダード環境
	- フレキシブル環境
- App Engine SDK
	- App Engine SDK for Go


まず、SDK(Google Cloud SDK)をインストールしようとすると、環境が2つあって迷います。
「スタンダード環境」と「フレキシブル環境」の2つ。
フレキシブル環境はまだアルファ版なので、スタンダード環境を選びます。

- [App Engine スタンダード環境と App Engine フレキシブル環境](https://cloud.google.com/go/quickstarts?hl=ja)
- [環境の比較](https://cloud.google.com/appengine/docs/the-appengine-environments)

クイックスタートや今から開発環境を作る人はGoogle Cloud SDK + app-engine-goコンポーネントのみで良いです。
ややこしいことに、「App Engine SDK」が別に存在していて混乱します。

Google Cloud SDKはGoogle Cloud Platformのサービスにコマンドラインからアクセスできるツールです。
App Engineだけでなく、Google Compute Engine、Google Cloud Storage、Google BigQueryなど、他のサービスにも対応しています。
App Engine SDKに相当する機能がGoogle Cloud SDKのコンポーネントとしてインストールできます。

App Engine + Goの場合はGoogle Cloud SDKのapp-engine-goコンポーネントがApp Engine SDK for Goと同等の機能となります。

機能は同等なのですが、使い方やツールが違う場合があります。
具体例をあげますと、App Engine SDK for Goにだけ「goapp」というツールがあり、App Engine SDK for Goベースのプロジェクトのスクリプトなどに使われていたりする場合があるので、既存の環境に対応したい場合、Google Cloud SDKとApp Engine SDK for Goは両方入れておくと良いかと思います。

というわけで、goappコマンドを使いたいがためだけにGoogle Cloud SDKとApp Engine SDK for Goを両方使えるようにしました。

-----