CloudSDK環境構築【macOS】

# やりたいこと
BigQueryをローカルから操作する必要がありました。
BigQueryを操作するbqコマンド、CloudStorageを操作するgsutilコマンド、GCEやGKE等を操作するgcloudコマンドをローカルで使うにはGoogle Cloud SDKが必要です。


[こちらの記事](https://qiita.com/yyyyy__78/items/29634fdbecd84b9a59da)では、CloudSDKを動かすのに必要なPython3.7の環境構築を行いました。
こちらの記事では、いよいよCloudSDKの環境構築を行います。
とはいっても、Homebrewであっという間に構築できちゃうんですけどね。一応記録しておきます。


# そもそもCloudSDKとは

[公式ドキュメント](https://cloud.google.com/sdk/docs?hl=JA)より

```txt
Cloud SDK は、Google Cloud でホストされるリソースやアプリケーションの管理に使用できる一連のツールです。これらのツールには、gcloud、gsutil、bq コマンドライン ツールが含まれます
```

要は、GCPのサービスをコマンドで操作するためのツールということらしいです。

# CloudSDKインストール

## 環境
- Homebrew 3.3.9
- Homebrew/homebrew-core (git revision bf17255fe5d; last commit 2021-12-25)
- Homebrew/homebrew-cask (git revision 323530bc91; last commit 2021-12-25)

## Homebrewでインストール
Homebrewでインストールします。

余談ですが、caskコマンドの書き方が変わったそうです。

```bash
# 旧
$ brew cask install hogehoge
# 新
$ brew install hogehoge --cask
```

今回も、新しい書き方に則ってインストールしましょう。

```bash
$ brew install google-cloud-sdk --cask
```

私の環境では、インストールに5分ほどかかりました。

インストールの途中に、以下のようにありましたので、

```bash
==> Source [/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc] in your profile to enable shell command completion for gcloud.
==> Source [/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc] in your profile to add the Google Cloud SDK command line tools to your $PATH.
```

`.zshrc`に以下を追記します。

```txt:.zshrc
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc'
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc'
```

`.zshrc`に追記後は　`$ source ~/.zshrc` をお忘れなく。


ここまで完了したら、バージョンを確認してみましょう。

```bash
$ gcloud --version
Google Cloud SDK 367.0.0
bq 2.0.72
core 2021.12.10
gsutil 5.5
```

無事インストールできました！

# アカウントの登録（初期設定）
初回実行時は、GCPサービスアカウントの登録が必要になります。

アカウントが登録されていない状態でbqコマンドを実行すると、以下のエラーとなりました。

```bash
ERROR: (bq) You do not currently have an active account selected.
Please run:
  $ gcloud auth login
to obtain new credentials.
If you have already logged in with a different account:
    $ gcloud config set account ACCOUNT
to select an already authenticated account to use.
```

現在設定されている認証情報を確認することができます。

```bash
$ gcloud auth list
No credentialed accounts.
To login, run:
  $ gcloud auth login `ACCOUNT`
```

認証情報が登録されていないようですね。

認証には、CloudSDKの初期設定が必要なようでした。

```bash
$ gcloud init
```


```
Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
  gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).

You must log in to continue. Would you like to log in (Y/n)?
```

Yで続けると、ブラウザが起動します。
作成済みのGCPサービスアカウントでログインすると、[こちらのページ](https://cloud.google.com/sdk/auth_success)に飛びます。

ターミナルに戻ると、デフォルトで使用するプロジェクトを選ぶように言われております。

```bash
You are logged in as: [fuga@hoge].

Pick cloud project to use:
 [1] hoge-dev
 [2] hoge-staging
 [3] hoge-prd
 [4] Create a new project
Please enter numeric choice or text value (must exactly match list item):
```

使用するプロジェクトの番号を入力します。

これで初回の認証は完了です。





# 参考にさせていただいた記事
- [Google Cloud SDK(gcloud) を Homebrew 経由で Mac にインストールする方法
](https://zenn.dev/phi/articles/gcloud-setup-with-homebrew-on-mac)
- [HomebrewでGoogle Cloud SDK (gcloudコマンド) をインストールする](https://qiita.com/suin/items/07383b187a21629fef73)
- [いつの間にかbrew caskが使用できなくなっていた話
](https://www.mathkuro.com/mac/brew-cask-command-error/)