この記事ではGCPトレーニングのCP100AとCPB100を受講してきたことを書きます。両方受講すると2日間かかります。
この研修に参加しようと思ったのは、面白そうだったからです。2016年11月に[CPB100]。2017年2月に[CP100A]を受講しました。ご興味がある方は、以下のホームページからお申し込みください「株式会社トップゲート:日本で唯一のGCPのトレーニングをしている会社らしい。(全世界では18社)」
※ちょっと情報が古いので、GCP概要メモととらえて読んでいただけると幸いです。
トレーニング内容
トレーニングの内容は、徐々に変わってしまうものなので、私が受けた時点2016年下旬〜2017年上旬の状態のものです。この受講した内容のうち、しっかり書き留められたことを書いていきます。
CP100Aの内容
- Introducing Google Cloud Platform
- Getting Started with Google Cloud Platform
- Google App Engine and Google Cloud Datastore
- Google Cloud Platform Storage Options
- Google Container Engine
- Google Compute Engine and Networking
- Big Data and Machine Learning ※CPB100と内容がかぶる
CPB100の内容
- GCPの概要とは? ※CP100Aと内容がかぶる
- Compute EngineとCloud Storageのデモとハンズオン ※CP100Aと内容がかぶる
- GCP Big Data productsとは?
- GCPのBig Dataについて
- BigQuery
- Cloud Pub/Sub
- CloudDataflow
- CloudDataproc
- CloudDatalab
- MachineLearningAPI(機械学習)について
- Cloud Speech API
- Cloud Natural Language API
- Cloud Vision API
- Translation API
- NeuralNetworkの基礎
- Cloud TensorFlow and Cloud MLについて
- コミュニティ
GCPとは?
GCPは、英語の資料が多めです。徐々に日本語化されつつあります。GCPトレーニングを一言でいうとGoogleCloudPlatformの主力クラウドサービスの概要をひたすら聞き続けるというものです。サービスは日々変わっていきますが、GCPのサービスの一覧は次の画像です。
各プロダクトの紹介は、こちらのリンクを参照してください。開発者用ドキュメントは、こちらをクリックしてください。
私がごちゃごちゃ書くより、次のページに良い動画がありましたので、こちらを御覧ください。(https://training.topgate.co.jp/)より
また、次の記事も参考になります。




※GCPの料金の見積もりができるサイト
GCPをはじめるためには?
必要なもの
- クレジットカード
- Googleアカウント
- GCPへの利用登録
開発する際に気にすること
GoogleCloudPlatformにアクセスする手段
- Google Cloud Console(web)
- Google Cloud SDKドキュメントとダウンロード
- RestBaseAPI
- JavaやPythonから、GCPの操作をしたい場合に使うもの
- Google API ExplorerでどんなAPIがあるか知れる
- 実際に開発するときは、「Google Cloud Client Libraries」「Google APIs Client Libraries」を導入して開発をする。
プロジェクトの構成
- GCPで開発をする場合は、複数のプロジェクトを作成するのが現在の主流
- 本番
- ステージング
- 開発_チーム用
- 開発_自分用
利用料の請求先
- GCPプロジェクトメンバーの追加は、「IAMと管理>メンバー追加」から実行できる。※1:Googleアカウントでの追加を想定。※2:「Billing」という「役割」がGCPのプロジェクトを作ったり、請求書の宛先となるメンバー。
コミュニティ
GCPに関するコミュニティは、以下です。
GoogleAppEngine
AppEngineの最大の特徴は、プログラムをデプロイするだけで、一般公開できる点です。
AppEngineは、「StandardEdition」と「FlexibleEdition」があります。StandardEditionを拡張したものがFlexibleEdition(但し、デプロイ時間、バージョンの切り替えが大変、サービスの立ち上げの時間等Standardより劣る部分もある)です。わたしは、Standardを使ったことすらないので、ここでは、「Standard Edition」特徴について箇条書きにします。
- AppEngineは、PaaSサービス。
- 毎日無料枠がある。(知名度のない個人がGoogleAppEngineにサービスを登録すると課金されることはほぼない。)
- インスタンスが立ち上がるのが早い。Go言語では、40ms程。
- スケーラビリティが高い。(日本GoogleをDos攻撃で潰すレベルの攻撃まで耐えられる)
- デプロイしたあと、任意の古いバージョンに切り替えることが簡単
- ローリングアップデートが自動でついている。(システムを止めることなく、新しいバージョンをたちあげることが可能)
- 使用できる言語は、Java,Python、PHP、Goを使用できる
- 会社のコーポレイトサイトをAppEngineで作成するのは、相性がよい。(例:トップゲート社のページ)
- ローカル環境での開発は、SDKをダウンロードすると簡単に作れる
- デメリット(いずれ改善される可能性もあり)
- ローカルのファイルシステムがない。(書き込み、読み込みができない)
- クラウドストレージを読むことは可能
- 苦手な処理を見ぬいて、実装をすることが大切
- Dailyの上限金額を設定できる。上限を超えると、アクセスしてもステータスコード502が返ってくる。
- AppEngineは、必ず、Publicへの公開。専用線を使いたい場合は、ComputeEngineを使用する
- 認証機能を付けたい場合は、アプリ内で解決すること。(Googleアカウントベースでのアクセス制御はアプリ外で可能)
- Google App Engine ドキュメントと字幕付きの動画
- Google Cloud EndPointsを併用すると便利
Google Cloud DataStore
Google Cloud DataStore 、次の分類で利用用途を決めてください。
- ファイルを登録するなら「CloudStrage」(GoogleDriveとGoogleCloudStrageの違いは、こちらを参照)
- RDBを使用したいなら「CloudSQL」※現時点では、ORACLEは利用不可
- NoSQLを使用したい場合は通常「Cloud DataStore」(ポケモンGOはこれを使っている)
- NoSQLを使用したい場合で、ポケモンGOよりレスポンスを必要とする場合は「CloudBigQuery」
Google Compute Engine
ComputeEngineは、IaaSサービスで、1からサーバを構築できます。ただしサーバを常時起動させると従量課金システムのGCPでは、お金がかなりかかってしまうため、CloudStrageと一緒に利用するのが一般的なようです。
Compute Engineの特徴
- GCPは基本、従量課金。
- 最初は10分、その後は1分単位で課金が発生する
- ComputeEngineに同じマシンタイプを使用した場合、GCPが勝手に按分して、割引を計算してくれる。(https://cloud.google.com/compute/pricing)
- プリエンプティブル VM (20時間以内に必ずシャットダウンされるサーバタイプの場合、70%OFF)。一時的な処理にComputeEngineを使用した場合は有効
プリエンプティブル VM 登場: 標準価格の 3 割で使える、まったく新しい VMGoogle Cloud Platform (Google App Engine, Compute Engine, BigQuery や Container Engine など)の情報の日本公式ブログ - ちょっと最新のOSを試したい場合は、時間単位で借りれる。
ComputeEngineの設定方法(超基本)
ここでは、ComputeEngine + CloudStrageの基本的な使い方について書きたいと思います。
ひとまず、ComputeEngineというものとCloudStrageを使ってみるとういうものです。ComputeEngineとは何かというとGoolgeのインフラ上にVM(OSは任意に選べる)を立ち上げることです。日本語のマニュアルはこのリンクです。具体的にどのようにするかというと次の手順です。
GCPコンソールにアクセスし、ComputeEngineを選択
すでにテスト用に2つインスタンスがあります。1つは研修で作ったもので、停止してます。もう一つは、無料期間をいいことにWordPress用のインスタンスを立ち上げてみました。中身は空っぽ。独自ドメインを取得していないので、IP直接入力でアクセスができました。IPはマスキングします)
上段の「インスタンスの作成」を選択すると、新しいインスタンスを作成する画面に行きます。
ComputeEngineインスタンスの作成
「名前」「ゾーン」「ブートディスク」は、AWSと似てますね。ゾーンの名前がわかりにくいですが、最近、東京がアジアリージョンに東京ゾーンができました。
「アクセス範囲」では必要なアクセス権限を付与します。デフォルトでは、CloudStrageに読み込み権限しか付与されていないので注意。
「 管理、ディスク、ネットワーキング、SSH 認証鍵」という青色の文字をクリックすると、上級者向けの小難しい設定が出てきます。この中で、以前の記事で紹介した「プリエンプティブル VM」(通常価格より70%減額)される設定は、次の図です。また、絵としては記載していませんが、VM上のディスクは、デフォルトで暗号化される設定になっています。
作成ボタンを押下すると、インスタンスを作成/起動されます。1分も待ちません。
作成ボタンの下にコマンドラインというリンクをクリックすると、GUI上で設定したものをコマンドラインから設定するためのコマンドを見れます。
参考)作成したサーバへのSSHアクセス
ComputeEngineの初期画面の右側のSSHを押下すると、コマンドラインからインスタンスを操作するための画面が開けます。ここのコマンドは、勉強中ですが、通常のDOS窓やLinuxのTerminalと同じですので、HELPコマンドで色々なコマンドを実行することができます。
Cloud Strageの設定
ComputeEngine(VM)と一緒に覚えておいたほうがいいと講師の方が熱く語ってくれたものが「CloudStrage」です。ComputeEngineは起動しているだけでお金が取られるので、処理が終わったらインスタンスの停止や削除をします。PCが停止された状態ですので、中のハードディスクのファイルを見ることができなくなります。そこで、GoogleDriveと同じ位置づけのようなCloudStrageを利用します。
CloudStrageはメニューから「Strage」を選択します。
Cloud Strageの設定
Cloud Strageバケットという単位で管理されている。
バケットの中身は、非公開のものと一般に公開するものとを選べます。
クラウドストレージには、ローカルPCからのデータ転送、AmazonS3からのデータ転送、一般公開されたURLのTSVから転送することができます。
いつかは、自前のサービスをヒットさせて、テラやペタ単位のデータを扱ってみたいものですね。
Google Container Engine
コンテナについて理解を深める必要があります。世界で有名なコンテナとしては、Dockerがあるので、それで概要を掴んでください。ちなみに、GCP上のコンテナは、「Docker」ではなく「Borg」というコンテナを利用しています。私はまだDocker使ったことがないのですが、Dockerを管理したり連携・コラボレーションさせるために作られたものが、「Kubernetes」というものです。「Kubernetes」をGCP上で簡単に操作できるようにしたものが、GoogleContainerEngineです。
まず、Dockerを勉強して、ComputeEngine と AppEngineで管理しきれなくなってきたら勉強しようかなと思いました。ちなみに、Google Container Engineに関する概要のリンクとチュートリアルリンクです。
[ComputeEngine][ContainerEngine][AppEngine]の比較は、次の図を参照してください。
GCPのネットワーク系の話
ネットワークについては、ちょっと知識が薄い部分なので、種類だけ提示します。
- GCPは基本的にインターネット網を使用しますが、専用線を使いたい場合
- Network>DirectPeering
- Googleのネットワーク(日本だと大阪と東京)まで専用線があると、Googleの専用線を使用できる
- Network>DirectPeering
ネットワーク以外にも説明がありましたが、概要のみの説明でしたので、公式ドキュメントをのリンクを配置します。
- Google Cloud CDNのドキュメント
- Google Cloud Stackdriverのドキュメント
- Google Cloud Deployment Managerのドキュメント
- Google Cloud Source Repositoriesのドキュメント
Big Query
まずはじめに「Big Query」について説明します。Big Queryは、大量データの分析にSQLとほぼ同等の構文を用いて検索するものです。Googleにしかできないサービスで、GCPのメイン機能です。サイトの構築はAWS上にしておいてデータ分析はGCPでやる人が多いそうです。私が、気になった特徴は次のもの。
- Big Queryは、必ずフルスキャンする(Googleの分散処理技術を使えばこその力技)
- 文字コードは、UTF-8のみ扱える。
- BigQueryは、SQLで操作できる。
- RDBより高速。
- embulkでRDBをごっそりIMPORTできる。
- AMAZON S3から クラウドストレージにIMPORTすることが可能
- 公式ドキュメントを見ると便利な関数がある(JSONを扱える関数等)みんながよく使うSQL集を作ると良いかも
- データ料金は、読み込んだデータ量、1Tbyteあたり、5円。(一定の読み込み料を超えた場合に発生、(SHELLで大量クエリーを投げるときは注意)※BigQueryは安いが、ストレージ代金はかかる。
- 3ヵ月以上前のデータになると半額になる。
- セブンイレブンの規模で月5万円程度らしい
- ログ解析に向く。
- 同じBigQueryに対して1日の削除、アップデーは48回まで。(一括IMPORTが基本的な使い方になる。RDBと違う部分。)
- 1日の上限金額を設定できる。
CloudDataflow
CloudDataflowですが、BigQueryの処理をプログラムで書くことができるものです。プログラムは2種類の実行方法があります。
- バッチモード
- ストリームモード:リアルタイムに受け取ったリクエスト(Cloud Pub/Subがリスナーとなる)を処理する。
プログラムは、現在のところ、JavaとPythonで書くことができます。
MachineLearningAPI(機械学習)
MachineLearningAPIとは、Googleが作り上げたものをDeveloper/利用者に提示するものです。(機械学習の知識は必要ない)具体的な例を次に示します。概要の説明はここをクリック。
- Cloud Speech API:しゃべっている音声を文字にしてくれるもの
Chrome BrowserGoogle Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier. - Cloud Natural Language API:口語(しゃべっている言葉)を文字で入力すると3つの処理をしてくれる。(https://cloud.google.com/natural-language/)
- Entitites・・・固有表現抽出。単語の分類をしてくれる
- Sentiment・・・Positive or Negativeの感情を判定してくれる。
- Syntax・・・形態素解析と分かち書きを表している。
- Cloud Vision API:不適切な画像を4つの観点「Adult、Spoof、Medical、Violence」で判定する
- Translation API:Google翻訳のこと
紹介して頂いたのは、一部ですが、面白いです。料金は、1000リクエストまではただ!その後はお金がかかります。「natural language API」は、私が学生時代に研究していたテーマに近くてびっくりです。あの頃にGCPのBig Queryを使えたら、もっと進んだ研究ができていただろうな(笑)私が書いた論文は、こちらです。懐かしいですね。
Machine Learning APIの欠点は、 カスタマイズができないところです。自分の目的と合わない場合は、使用できません。もしも自分の目的に合わせたい場合は、「Cloud TensorFlow」で自作します。
Cloud TensorFlow and Cloud ML
ThensorFlowとは次の特徴があります。
- Open-sourced in 2015
- C++ and Python API
- 分散処理をしやすい
- OSを選ばず動作する
- 簡単にNeuralNetworkの学習プロセスを記載できる
以下に参考になるURLを列挙します。
- 英語ですが、マニュアルは次のURL
- TensorFlowの論文
- ThensorFlowで作成されたデモ。面白いです。
- 自作した素晴らしい例
まとめ
GCPトレーニングを受講した際のメモをまとめました。GCPを使うには、そもそもの基礎力必要です。自分の弱点となる部分の補強が必要だと感じました。色々な技術を組み合わせて、利用していきたいです。
また、GCPトレーニングの内容やGCPが提供するサービス内容は日々変わっていきます。定期的に知識をリフレッシュしていきたいです。
コメント