クラウド初心者がある程度GoogleCloudPlatformを使えるようになるまで

# 前書き
2年ぐらい前からGoogleCloudPlatform : GCPを使うようになりました。もともとインフラと言うより開発エンジニア(PHPがメイン)で、環境はインフラエンジニアが用意してくれるしクラウド使ってみたいけど機会がなかなかないなーって感じでした。

ちょうど2年前あたりから、クラウド周りを見ることになり、東京リージョンも出るしってことでGCPを使い始めました。

そんなわけでスキルレベルとしては、そんなに無かったのですが2年ぐらいGCPを触ってきてクラウド初心者がGCPをある程度使える様になるまでやったことを書いていこうと思います。

## 使っているサービス
プロダクションで運用していたり、検証で使った事があるサービスは以下のとおりです。
上に書いてあるものほど、使ったことがある・本番で運用したことがあるサービスです。

- Google Kubernetes Engine(GKE, 使い始めた頃はGoogle Container Engineだった)
- Google Compute Engine (GCE)
- Google Container Registry(GCR)
- Cloud Load Balancing
- Stackdriver Monitoring
- Stackdriver Logging
- Cloud Shell
- Cloud SQL
- Cloud CDN
- Google Cloud Storage(GCS)
- Google Container Builder
- BigQuery
- Dataflow 
- Cloud IAM

------この辺まで本番利用したことがある------

- Google Data Studio
- Cloud Datastore
- Cloud Vision API
- Cloud Translation API
- Google Cloud Functions
- AppEngine

GCP上のプロダクトとサービスが https://cloud.google.com/products/?hl=ja なので
ビッグデータ系以外はほとんど触った感じでしょうか。

Cloud SpannerやBigtableは要件的に使う機会がなかったです。
また、AppEngineはそんなに使っておらず検証だけでした。

そんなわけで、ある程度GCPを使える用になるまで参考になったサイト等をまとめておきます。

# 公式ドキュメント
[Google Compute Engineのドキュメント](https://cloud.google.com/compute/docs/?hl=ja)の用にまずは公式のドキュメントを読むことから始めましょう。

※ただし、日本語のドキュメントだと翻訳が間に合っていない部分もあり英語のドキュメントも合わせて読むと良いでしょう。
私はChrome自体の言語設定を英語にしてしまっています。

# Google Cloud Platform Japan Blog
[Google Cloud Platform Japan Blog](https://cloudplatform-jp.googleblog.com/)

日本での導入事例や、以下のGCP Blogの翻訳記事などがあり参考になります。
翻訳までのタイムラグがあるので、本当に最新の情報を仕入れたい場合は英語のブログを読むといいでしょう。

[Google Cloud Platform Blog](https://cloudplatform.googleblog.com/)

# 書籍

## クラウド開発徹底攻略
[WEB+DB PRESS plusシリーズ クラウド開発徹底攻略](http://gihyo.jp/book/2016/978-4-7741-8095-3)

基本的なGCP周りを抑えるのであれば上記書籍がおすすめです。
GCE/GLB/GAE/GCSに関して一通り抑えることができます。 (が発行が2016年なので若干古いかもしれないです)

また、GCPだけでなくAWSやDocker,Herokuなど幅広くクラウド周りを抑えることが出来るのでおすすめです

## プログラマのためのGoogle Cloud Platform入門

[プログラマのためのGoogle Cloud Platform入門](http://www.shoeisha.co.jp/book/detail/9784798137148)

こちらは全てGCPに関しての本です。発行も2017年6月なので今でもいけると思います。
※この本を読む頃には大体GCPは分かってたのでそこまで深くは読んでいないです。

# コミュニティ
[GCPUG](https://gcpug.jp/)

> Google Cloud Platform の User Group、略してGCPUGのGroupsです。
https://gcpug.jp/about

の通りGCPを利用しているUserが集まるコミュニティグループです。
月1ぐらいで勉強会が開かれている感じがします。
また、Slackもおすすめです。
分かる人がいい感じに答えてくれるかもしれないです。

https://gcpug.jp/join

結構情報感度が高い人が多く、alphaで知らない機能の情報が出てたりするのでかなり参考になります。

# Google Next

https://cloudnext.withgoogle.com/tokyo/

簡単に言うとAWS Summitのようなもの。
導入事例に関してとGCPの各サービスのイントロ的なセッションが6:4ぐらいであります。
Youtubeで2017年に開催されたGoogle Nextのセッション動画もあるのでそちらも見ておくといいでしょう。

個人的には以下のセッションが参考になりました。

[Google Container Engine入門：ヒントとベスト・プラクティス](https://www.youtube.com/watch?v=Vjb2CLB7TAQ&list=PLmoHjhhs3ySFRWcYi3JgN940OuBMNO1LT&index=9&t=0s)

[「どこでコードを走らせるべきか？」Compute Engine/Container Engine / App Engine / etc](https://www.youtube.com/watch?v=GnDpv3HT-LU&list=PLmoHjhhs3ySFRWcYi3JgN940OuBMNO1LT&index=13&t=0s)

[サイバーエージェント メディア事業（AbemaTV）を支える技術 : アプリケーション基盤・データ分析基盤としての Google Cloud Platform](https://www.youtube.com/watch?v=kr9L2d2TV6M&list=PLmoHjhhs3ySFRWcYi3JgN940OuBMNO1LT&index=55&t=0s)

# 勉強会
主にGCPUG主催の勉強会に参加したことが多かったです。
https://gcpug-tokyo.connpass.com/

あとはGDG主催のものとか
https://gdg-tokyo.connpass.com/
毎年秋頃に devfestをやっていたので2016/17は参加してました。
https://tokyo.gdgjapan.org/

GCPからは少しずれるのですがKubernetesの情報を仕入れるということで
kubernetes meetupもほぼ毎回参加して1回LTで発表させていただきました。

https://k8sjp.connpass.com/

その他  GKE周りの情報無いかなーと [Abema TV DEVELOPER CONFERENCE 2017](http://developer.abema.io/)
に行ったり、[デブサミ](https://event.shoeisha.jp/devsumi/20170216/)に行ったりしました。 2018年はいけず...

# スライド
スライドに関しては以下のスライドが参考になりました。

[DevFest 2017 クラウドってなんだろ？クラウドを活かすアプリケーションの設計とは？](https://docs.google.com/presentation/d/1WOnNqXKVDSWkgMnct66ml9wpW2ooAi2CMwVMRWTC2ck/edit#slide=id.g27bf031bb0_0_352)

[Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説](https://www.slideshare.net/HammoudiSamir/google-container-engine-gke-kubernetes)

[スケーラブル GCP アーキテクチャ](http://www.slideshare.net/furuyamayuuki/gcp-72165187)

[http://www.slideshare.net/hagino_3000/cloud-datalabbigquery](http://www.slideshare.net/hagino_3000/cloud-datalabbigquery)


[No-Ops で大量データ処理を簡単に実現する - BigQuery と Cloud Dataflow で実現する次世代データ処理基盤](https://www.slideshare.net/GoogleCloudPlatformJP/noops-72345806)

[1周年を迎えたAbemaTVの動画配信の裏側](https://speakerdeck.com/miyukki/the-background-of-video-distribution-in-abematv-during-one-year)

# その他

あまり触っていなかったり参加できてなかったりするものですが情報源として優良なので紹介します。

## Google Cloud INSIDE Games & Apps
アプリやゲーム業界で働いているエンジニア向けのセミナー。
Googleが主催。
自分は1回目に参加。
実際にプロダクションレベルで使用している会社の事例が結構深いレベルで聞けるので、
GCPでの運用ができてきて、テーマが合うならば申し込んでみるといい。

## Cloud OnAir
https://cloudplatformonline.com/onair-japan.html

Google Cloud 生放送 / 毎回テーマが変わって各サービスについてわかりやすく説明してくれる

## Google Codelabs
https://codelabs.developers.google.com/
GCPの各サービスのハンズオンガイド。
資料を見たりしただけではわからないのでやっぱり一度触ってみるといいです。

## トレーニング
いまトレーニングコースは変わってしまったのですが、 TOPGATEさんが運営しているトレーニングコースにも幾つか参加したりしました。
https://training.topgate.co.jp/course.html

## Google Cloudのトレーニング
この記事を書く時に調べてでてきたもの。

https://cloud.google.com/training/?hl=ja

これも良さそうなので触ってみようかなと思いました。

##  Google Cloud Certified 
いわゆる認定試験。
受験料は$200
ただ有効期間は2年間なので財布や会社と相談...

模擬試験は無料でネット上で受験可能なのでどんな感じなのか1回受けてみるのも良いかなと思います。


# まとめ
クラウドでもオンプレでも基礎知識は必要なので疎かにせずに使うであろう技術は抑えておくと良いです。
(apache/nginx/mysql/redis..)

マネジメントサービスを使うにしろインスタンスで構築するにしろ知っていて損はないです。

またこれからはコンテナ技術はますます使われていくだろうと思うので、Docker / Kubernetesあたりは押さえておくと良いかなと思います。
(個人的に先行している+googleってことでKubernetesを使うならばGKEがベストかなーと思ってます)

クラウドを使えるようになってくると監視や自動化なども気になってきて更にやる範囲は広がってきますが、楽しくやっていくのが一番だと思います。