スマホ開発者のためのクラウドプラット
フォーム開発基礎講座
リリース
1
akihiro.kobayashi
目次
第1章 はじめに 1 1.1 本書について . . . 1 1.2 対象読者 . . . 1 1.3 開発環境 . . . 1 1.4 付属DVDについて . . . 2 第2章 Webアプリケーション概要 5 2.1 Webアプリケーション . . . 5 2.2 Webサーバとクラアント . . . 5 2.3 リクエストとレスポンス . . . 7 2.4 WebAPI . . . 8 2.5 WebAPI実習 . . . 11 第3章 クラウドサービス 15 3.1 クラウドサービス . . . 15 3.2 クラウドサービスの種類 . . . 16 3.3 レンタルサーバとクラウドサービスの違い. . . 18第4章 Google Cloud Platform 19 4.1 Google Cloud Platformとは. . . 19
4.2 Google Cloud Platform. . . 20
第5章 Google App Engine 23 5.1 Google App Engineとは. . . 23
5.2 スケーラビリティとリライアビリティ(信頼性) . . . 25 5.3 GAEの目指すところ . . . 27 5.4 GAEのスケーリングを理解する . . . 28 5.5 App Engineのアーキテクチャ . . . 29 第6章 開発環境の構築 33 6.1 GAEアプリケーションの開発環境を準備する . . . 33
目次
第1章 はじめに 1 1.1 本書について. . . 1 1.2 対象読者 . . . 1 1.3 開発環境 . . . 1 1.4 付属DVDについて . . . 2 第2章 Webアプリケーション概要 5 2.1 Webアプリケーション . . . 5 2.2 Webサーバとクラアント . . . 5 2.3 リクエストとレスポンス . . . 7 2.4 WebAPI . . . 8 2.5 WebAPI実習 . . . 11 第3章 クラウドサービス 15 3.1 クラウドサービス . . . 15 3.2 クラウドサービスの種類 . . . 16 3.3 レンタルサーバとクラウドサービスの違い. . . 18第4章 Google Cloud Platform 19 4.1 Google Cloud Platformとは. . . 19
4.2 Google Cloud Platform. . . 20
第5章 Google App Engine 23 5.1 Google App Engineとは. . . 23
5.2 スケーラビリティとリライアビリティ(信頼性) . . . 25 5.3 GAEの目指すところ . . . 27 5.4 GAEのスケーリングを理解する . . . 28 5.5 App Engineのアーキテクチャ . . . 29 第6章 開発環境の構築 33 6.1 GAEアプリケーションの開発環境を準備する . . . 33
7.1 最初のGAEアプリケーションを作成する . . . 39 7.2 アプリケーションの構成 . . . 42 第8章 GCPプロジェクトを作成する 45 8.1 プロジェクトを作成する . . . 45 第9章 アプリケーションのデプロイ 49 9.1 デプロイとは. . . 49 9.2 デプロイの仕方 . . . 49 第10章 Webページの追加 53 10.1 webapp2フレームワーク . . . 53 10.2 Webページを追加する . . . 54 10.3 エラーページのカスタマイズ . . . 57 第11章 ログ 61 11.1 ログの確認 . . . 61 11.2 ログを出力する . . . 62 11.3 実習 ログ出力 . . . 64 第12章 Userサービスを使う 67 12.1 アプリケーションにログインする. . . 67 12.2 User Servieを使う . . . 67 12.3 実習User Service . . . 71 第13章 フォームの作成 73 13.1 Webページからデータを送信する . . . 73 13.2 実習 フォームの作成. . . 76 第14章 データストアを使う 77 14.1 データストアとは . . . 77 14.2 データストアにデータ保存する . . . 78 14.3 実習 データの保存 . . . 80 14.4 データストアからデータを取得する . . . 85 14.5 実習 データの取得 . . . 89 第15章 フォームの作成2 91 15.1 テンプレートの利用 . . . 91 15.2 実習 テンプレートを使う . . . 93 第16章 スタティックファイルを使う 99 ii 16.2 実習 スタティックファイル . . . 102 第17章 WebAPI対応 103 17.1 WebAPIを使った外部連携 . . . 103 17.2 実習WebAPI対応 . . . 111 第18章 Androidで動かす 113 18.1 Androidアプリケーションからの利用 . . . 113 索引 119 iii
7.1 最初のGAEアプリケーションを作成する . . . 39 7.2 アプリケーションの構成 . . . 42 第8章 GCPプロジェクトを作成する 45 8.1 プロジェクトを作成する . . . 45 第9章 アプリケーションのデプロイ 49 9.1 デプロイとは. . . 49 9.2 デプロイの仕方 . . . 49 第10章 Webページの追加 53 10.1 webapp2フレームワーク . . . 53 10.2 Webページを追加する . . . 54 10.3 エラーページのカスタマイズ . . . 57 第11章 ログ 61 11.1 ログの確認 . . . 61 11.2 ログを出力する . . . 62 11.3 実習 ログ出力 . . . 64 第12章 Userサービスを使う 67 12.1 アプリケーションにログインする. . . 67 12.2 User Servieを使う . . . 67 12.3 実習User Service . . . 71 第13章 フォームの作成 73 13.1 Webページからデータを送信する . . . 73 13.2 実習 フォームの作成. . . 76 第14章 データストアを使う 77 14.1 データストアとは . . . 77 14.2 データストアにデータ保存する . . . 78 14.3 実習 データの保存 . . . 80 14.4 データストアからデータを取得する . . . 85 14.5 実習 データの取得 . . . 89 第15章 フォームの作成2 91 15.1 テンプレートの利用 . . . 91 15.2 実習 テンプレートを使う . . . 93 第16章 スタティックファイルを使う 99 ii 16.2 実習 スタティックファイル . . . 102 第17章 WebAPI対応 103 17.1 WebAPIを使った外部連携 . . . 103 17.2 実習WebAPI対応 . . . 111 第18章 Androidで動かす 113 18.1 Androidアプリケーションからの利用 . . . 113 索引 119 iii
iv
第
1
章
はじめに
1.1
本書について
本書は、スマホ開発者のためのクラウドプラットフォーム開発に必要なプログラミング知識を身につけることを 目的としています。クラウドサービスを使ったWebアプリケーション開発の基本的な知識と開発のノウハウを習 得し、1章からステップアップしながら、1つのアプリケーションを完成させます。1.2
対象読者
このドキュメントは以下の対象読者を想定して記述しています。本書の対象としている読者は、プログラミング 言語Pythonの基礎知識があり、その上でWebアプリケーション開発について学びたいという方です。そのため、 本書を学ぶ上で以下のスキルを所有していることが望ましいです。 • プログラミング言語Pythonの基礎知識 • Webアプリケーション開発経験1.3
開発環境
本書で使用している開発環境は次のとおりです。 表1.1 開発環境 開発用PC Mac OS X 10.9.5 Python Version 2.7iv
第
1
章
はじめに
1.1
本書について
本書は、スマホ開発者のためのクラウドプラットフォーム開発に必要なプログラミング知識を身につけることを 目的としています。クラウドサービスを使ったWebアプリケーション開発の基本的な知識と開発のノウハウを習 得し、1章からステップアップしながら、1つのアプリケーションを完成させます。1.2
対象読者
このドキュメントは以下の対象読者を想定して記述しています。本書の対象としている読者は、プログラミング 言語Pythonの基礎知識があり、その上でWebアプリケーション開発について学びたいという方です。そのため、 本書を学ぶ上で以下のスキルを所有していることが望ましいです。 • プログラミング言語Pythonの基礎知識 • Webアプリケーション開発経験1.3
開発環境
本書で使用している開発環境は次のとおりです。 表1.1 開発環境 開発用PC Mac OS X 10.9.5 Python Version 2.7上記にあげた以外の環境では、スクリーンショットやディレクトリのパス等が影響を受ける事がありますが Windows 7、Windows 8、Linuxなどでも開発は可能です。
後述するDVDにインストールツールは含まれていますが、Webから最新版をダウンロードして使用することを 推奨します。
1.4
付属
DVD
について
演習に必要な全てのツールは、本書付属のDVDで提供済です。 DVDの中に「cloud-and-mobile.zip」というファイルが1つ用意されています。 zipファイルを解凍すると次のようなファイル及びフォルダが作成されます。表1.2 android_trainig_tabletフォルダの内容 (いずれもWindows版とMac版を提供)
フォルダ名またはファイル名 説明
GoogleAppEngineLauncher-1.9.30.dmg Google App Engine SDK for Python
answer_docs 解答ドキュメント、実習用プロジェクト(スケルトン、完成版) 注釈: インストールについて インストール方法については、本テキストの「開発環境の構築」を参照してください。
1.4.1
解答ドキュメントの開き方
実習の解答は別ドキュメントとして用意されています。次の手順で回答ドキュメントを開きます。 手順 2 第1章 はじめに 1. 付属DVD cloud-and-mobile.zipを解凍する 2. 生成されたフォルダcloud-and-mobileを開きanswer_docsフォルダ内のhtmlに移動する 3. index.htmlを開く 4. ブラウザが起動し、解答ドキュメントのページが表示される1.4.2
実習用プロジェクトのダウンロード
実習用プロジェクトは解答ドキュメントから取得できます。 各章ごとに完成プロジェクトと実習に必要なスケルトンプロジェクトを含んだプロジェクトファイルがzip形式で 用意しています。 手順 1. answer_docs/html/index.htmlを開く 2. 取得対象の「GAEプロジェクトのダウンロード」リンクをクリックすると、対象ファイルのダウンロード が開始される 1.4. 付属DVDについて 3上記にあげた以外の環境では、スクリーンショットやディレクトリのパス等が影響を受ける事がありますが Windows 7、Windows 8、Linuxなどでも開発は可能です。
後述するDVDにインストールツールは含まれていますが、Webから最新版をダウンロードして使用することを 推奨します。
1.4
付属
DVD
について
演習に必要な全てのツールは、本書付属のDVDで提供済です。 DVDの中に「cloud-and-mobile.zip」というファイルが1つ用意されています。 zipファイルを解凍すると次のようなファイル及びフォルダが作成されます。表1.2 android_trainig_tabletフォルダの内容 (いずれもWindows版とMac版を提供)
フォルダ名またはファイル名 説明
GoogleAppEngineLauncher-1.9.30.dmg Google App Engine SDK for Python
answer_docs 解答ドキュメント、実習用プロジェクト(スケルトン、完成版) 注釈: インストールについて インストール方法については、本テキストの「開発環境の構築」を参照してください。
1.4.1
解答ドキュメントの開き方
実習の解答は別ドキュメントとして用意されています。次の手順で回答ドキュメントを開きます。 手順 2 第1章 はじめに 1. 付属DVD cloud-and-mobile.zipを解凍する 2. 生成されたフォルダcloud-and-mobileを開きanswer_docsフォルダ内のhtmlに移動する 3. index.htmlを開く 4. ブラウザが起動し、解答ドキュメントのページが表示される1.4.2
実習用プロジェクトのダウンロード
実習用プロジェクトは解答ドキュメントから取得できます。 各章ごとに完成プロジェクトと実習に必要なスケルトンプロジェクトを含んだプロジェクトファイルがzip形式で 用意しています。 手順 1. answer_docs/html/index.htmlを開く 2. 取得対象の「GAEプロジェクトのダウンロード」リンクをクリックすると、対象ファイルのダウンロード が開始される 1.4. 付属DVDについて 34 第1章 はじめに
第
2
章
Web
アプリケーション概要
2.1 Web
アプリケーション
Webプリケーションは、ショッピングサイトや掲示板などインターネット(もしくはイントラネット)などのネッ トワークを介して使用するアプリケーションソフトウェアのことです。多くの場合、これらのアプリケーション は、Webブラウザ上で動作するプログラミング言語(たとえばJavaScript)によるプログラムとWebサーバ側の プログラム(たとえばPython)が協調することによって動作し、ユーザはそれをWebブラウザ上で使用します。 代表的なサービスに、Google検索、Amazonショッピングなどがあります。2.2 Web
サーバとクラアント
Webアプリケーションは、サービスを提供する側と利用する側に分けることができます。前者をサーバと呼び、 後者をクライントと呼びます。2.2.1
サーバ
サービスを提供する側です。4 第1章 はじめに
第
2
章
Web
アプリケーション概要
2.1 Web
アプリケーション
Webプリケーションは、ショッピングサイトや掲示板などインターネット(もしくはイントラネット)などのネッ トワークを介して使用するアプリケーションソフトウェアのことです。多くの場合、これらのアプリケーション は、Webブラウザ上で動作するプログラミング言語(たとえばJavaScript)によるプログラムとWebサーバ側の プログラム(たとえばPython)が協調することによって動作し、ユーザはそれをWebブラウザ上で使用します。 代表的なサービスに、Google検索、Amazonショッピングなどがあります。2.2 Web
サーバとクラアント
Webアプリケーションは、サービスを提供する側と利用する側に分けることができます。前者をサーバと呼び、 後者をクライントと呼びます。2.2.1
サーバ
サービスを提供する側です。ネットワーク上で、情報やサービスを他のコンピュータに提供するコンピュータのことをサーバと呼びます。 サーバには、データベースサーバ、Webサーバ、メールサーバ、ファイルサーバなどがあり、提供するサービスが 異なります。
2.2.2
クライアント
サービスを利用する側です。 サーバから提供された情報やサービスを利用するコンピュータをクライアントと呼びます。 クライアントには、提供されたサービスに合わせて、そのコンテンツを利用するデータベースクライアント、Web クライアント、メールクライアントなどがあります。 クライアントの例 • Webブラウザ • メーラ • 特定のWebサービスに特化したアプリケーション – Evernote, DropBoxなど2.2.3 Web
サーバ
サーバの中で、Webアプリケーションを提供するサーバのことをWebサーバ と呼びます。Webサーバは、HTML(Hyper Text Markup Language)で記述されたコンテンツをHTTP(Hyper Text Transfer Protocol)というプロトコル(通信規約)を通してクライアントに提供します。
利用者は一般的にChromeやFirefoxなどのブラウザを使ってHTMLで記述されたWebサイトを閲覧します。
6 第2章Webアプリケーション概要
2.3
リクエストとレスポンス
HTTP通信は、リクエスト(要求)とレスポンス(応答)があり、Webページを表示するときはブラウザ(Web クライアント)はWebサーバに対して、リクエストを発行します。サーバは受けとったリクエストに対しレスポ ンスを返します。Webブラウザは、Webサーバから返されたレスポンスから、コンテンツ情報を取り出し、Web ページを表示します。
2.3.1 Web
アプリケーションフロー
「Webサービスにログインする」というユースケースを例に、Webアプリケーションの流れについて見ていきます。
1. Webブラウザを起動し、URLを入力してWebサーバ上に配置されたログインページへアクセスする 2. Webブラウザに、ログインページが表示される 3. Webブラウザ上に表示された、IDとパスワードに必要項目を入力し、「ログイン」ボタンをクリックする 4. WebブラウザがWebサーバにログインのリクエストを発行する 5. WebサーバはIDとパスワードを受け取りデータベースにIDとパスワードを照会し、結果をブラウザに 返す 6. Webブラウザは結果を表示する 2.3. リクエストとレスポンス 7
ネットワーク上で、情報やサービスを他のコンピュータに提供するコンピュータのことをサーバと呼びます。 サーバには、データベースサーバ、Webサーバ、メールサーバ、ファイルサーバなどがあり、提供するサービスが 異なります。
2.2.2
クライアント
サービスを利用する側です。 サーバから提供された情報やサービスを利用するコンピュータをクライアントと呼びます。 クライアントには、提供されたサービスに合わせて、そのコンテンツを利用するデータベースクライアント、Web クライアント、メールクライアントなどがあります。 クライアントの例 • Webブラウザ • メーラ • 特定のWebサービスに特化したアプリケーション – Evernote, DropBoxなど2.2.3 Web
サーバ
サーバの中で、Webアプリケーションを提供するサーバのことをWebサーバ と呼びます。Webサーバは、HTML(Hyper Text Markup Language)で記述されたコンテンツをHTTP(Hyper Text Transfer Protocol)というプロトコル(通信規約)を通してクライアントに提供します。
利用者は一般的にChromeやFirefoxなどのブラウザを使ってHTMLで記述されたWebサイトを閲覧します。
6 第2章Webアプリケーション概要
2.3
リクエストとレスポンス
HTTP通信は、リクエスト(要求)とレスポンス(応答)があり、Webページを表示するときはブラウザ(Web クライアント)はWebサーバに対して、リクエストを発行します。サーバは受けとったリクエストに対しレスポ ンスを返します。Webブラウザは、Webサーバから返されたレスポンスから、コンテンツ情報を取り出し、Web ページを表示します。
2.3.1 Web
アプリケーションフロー
「Webサービスにログインする」というユースケースを例に、Webアプリケーションの流れについて見ていきます。
1. Webブラウザを起動し、URLを入力してWebサーバ上に配置されたログインページへアクセスする 2. Webブラウザに、ログインページが表示される 3. Webブラウザ上に表示された、IDとパスワードに必要項目を入力し、「ログイン」ボタンをクリックする 4. WebブラウザがWebサーバにログインのリクエストを発行する 5. WebサーバはIDとパスワードを受け取りデータベースにIDとパスワードを照会し、結果をブラウザに 返す 6. Webブラウザは結果を表示する 2.3. リクエストとレスポンス 7
2.4 WebAPI
WebAPIとは、Web上に公開されているアプリケーションプログラムインターフェイスのことです。基本的には
URLにリクエストパラメータを付与して、XMLやJSONなどのデータでやりとりを行います。代表的な物とし て、Google API、Yahoo API、Twitter APIなどがあります。
2.4.1 REST
REST(REpresentational State Transfer)とは、リソースに対応づけられるURLをつかって、リクエストを送信し、 XMLやJSONなどの形式で受け取るという技術のことです。リソース( Web上のコンテンツ)を一意なURLで 表します。URL(各リソース)に対してGET,POST,PUT,DELETEなどのHTTPのメソッドでリクエストを送信し レスポンスをXMLやjsonなどで受け取ります。
2.4.2 WebAPI
パラメータ
多くのWebAPIでは、情報を取得するためのAPIはHTTP GETリクエストを用い、取得したい情報のパラメー タをキー・バリューのペアで指定します。HTTP GETパラメータで指定する場合はkey=valueの構成で、リクエ スURLの末尾に? で接続します。(例: ?title=android)
8 第2章Webアプリケーション概要
2.4.3 JSON
JSONとは、JavaScript Object Notationの略語で、軽量のデータ交換用のフォーマットです。JavaScriptをベース に作られていますが、データの表現が容易なため、JavaScript以外のさまざまなところで利用されています。近年 では、Webアプリケーションとクライアント間のデータ交換に多く利用されています。
2.4.4 JSON
の特徴
• 軽量で人間にとっても、コンピュータにとっても読み書きが簡単 • XMLと比較して高速に処理可能 • データ構造を名前と値(キー・バリュー)の集まりとして定義2.4.5 JSON
の構造
JSONは名前と値のペアの集合です。例えば、以下の様なデータがあったとします。 • 名前(name):クラウド 太郎 • 年齢(age): 20 • メールアドレス(email) – cloud@example.com – gcp@example.com 2.4. WebAPI 92.4 WebAPI
WebAPIとは、Web上に公開されているアプリケーションプログラムインターフェイスのことです。基本的には
URLにリクエストパラメータを付与して、XMLやJSONなどのデータでやりとりを行います。代表的な物とし て、Google API、Yahoo API、Twitter APIなどがあります。
2.4.1 REST
REST(REpresentational State Transfer)とは、リソースに対応づけられるURLをつかって、リクエストを送信し、 XMLやJSONなどの形式で受け取るという技術のことです。リソース( Web上のコンテンツ)を一意なURLで 表します。URL(各リソース)に対してGET,POST,PUT,DELETEなどのHTTPのメソッドでリクエストを送信し レスポンスをXMLやjsonなどで受け取ります。
2.4.2 WebAPI
パラメータ
多くのWebAPIでは、情報を取得するためのAPIはHTTP GETリクエストを用い、取得したい情報のパラメー タをキー・バリューのペアで指定します。HTTP GETパラメータで指定する場合はkey=valueの構成で、リクエ スURLの末尾に?で接続します。(例: ?title=android)
8 第2章Webアプリケーション概要
2.4.3 JSON
JSONとは、JavaScript Object Notationの略語で、軽量のデータ交換用のフォーマットです。JavaScriptをベース に作られていますが、データの表現が容易なため、JavaScript以外のさまざまなところで利用されています。近年 では、Webアプリケーションとクライアント間のデータ交換に多く利用されています。
2.4.4 JSON
の特徴
• 軽量で人間にとっても、コンピュータにとっても読み書きが簡単 • XMLと比較して高速に処理可能 • データ構造を名前と値(キー・バリュー)の集まりとして定義2.4.5 JSON
の構造
JSONは名前と値のペアの集合です。例えば、以下の様なデータがあったとします。 • 名前(name):クラウド 太郎 • 年齢(age): 20 • メールアドレス(email) – cloud@example.com – gcp@example.com 2.4. WebAPI 9このデータは以下のように表現します。: { "name": "クラウド 太郎", # 文字列 "age": 20, # 数値 "email": [ # 配列 "cloud@example.com", "gcp@example.com" ], } {から}までがJSONオブジェクトです。オブジェクト内に名前と値のペアを記述します。
2.4.6 JSON
の書式
JSONフォーマットは次のように記述します。 { "key": value, "key": value, ... } • オブジェクト: JSONのオブジェクトは{で始まり}で終わります。名前と値のペアは、名前の後ろに:を つけ、ペアを,で区切ります。値は、文字列、数値、真偽値、null、オブジェクト、そして配列です。名前 は二重引用符で囲みます。 • 文字列:名前同様に二重引用符で囲みます。“name”: “クラウド 太郎”のように指定します。 • 数値: 10進数の整数、浮動小数点を指定します。“age”: 20のように指定します。• 真偽値: trueもしくはfalseで指定します。“is_student”: trueのように指定します。
• 配列: [値1,値2, ...]のように要素を,で区切って指定します。配列は次のように記述します。 "alphabet": ["ABC", "DEF", "GHI"],
"number": [10, 20, 30], "cloud_platform": [
{"name": "google cloud platform", "provider": "google"}, {"name": "AWS", "provider": "amazon"},
{"name": "Azure", "provider": "Microsoft"} ]
10 第2章Webアプリケーション概要
2.5 WebAPI
実習
天気情報サービスのAPIを使って、天気データをJSON形式で取得しましょう。
2.5.1 Weather Hacks
Weather Hacksという、天気情報をAPIで提供しているWebサービスがあります。都市名を地域コードで指定し、 天気情報を取得することができます。 • Weather Hacks – http://weather.livedoor.com/weather_hacks/ • リクエストURL – http://weather.livedoor.com/forecast/webservice/json/v1 • WebAPIパラメータ – city=地域ID • 地域ID – http://weather.livedoor.com/forecast/rss/primary_area.xml 2.5. WebAPI実習 11
このデータは以下のように表現します。: { "name": "クラウド 太郎", # 文字列 "age": 20, # 数値 "email": [ # 配列 "cloud@example.com", "gcp@example.com" ], } {から}までがJSONオブジェクトです。オブジェクト内に名前と値のペアを記述します。
2.4.6 JSON
の書式
JSONフォーマットは次のように記述します。 { "key": value, "key": value, ... } • オブジェクト: JSONのオブジェクトは{で始まり}で終わります。名前と値のペアは、名前の後ろに:を つけ、ペアを,で区切ります。値は、文字列、数値、真偽値、null、オブジェクト、そして配列です。名前 は二重引用符で囲みます。 • 文字列:名前同様に二重引用符で囲みます。“name”: “クラウド 太郎”のように指定します。 • 数値: 10進数の整数、浮動小数点を指定します。“age”: 20のように指定します。• 真偽値: trueもしくはfalseで指定します。“is_student”: trueのように指定します。
• 配列: [値1,値2, ...]のように要素を,で区切って指定します。配列は次のように記述します。 "alphabet": ["ABC", "DEF", "GHI"],
"number": [10, 20, 30], "cloud_platform": [
{"name": "google cloud platform", "provider": "google"}, {"name": "AWS", "provider": "amazon"},
{"name": "Azure", "provider": "Microsoft"} ]
10 第2章Webアプリケーション概要
2.5 WebAPI
実習
天気情報サービスのAPIを使って、天気データをJSON形式で取得しましょう。
2.5.1 Weather Hacks
Weather Hacksという、天気情報をAPIで提供しているWebサービスがあります。都市名を地域コードで指定し、 天気情報を取得することができます。 • Weather Hacks – http://weather.livedoor.com/weather_hacks/ • リクエストURL – http://weather.livedoor.com/forecast/webservice/json/v1 • WebAPIパラメータ – city=地域ID • 地域ID – http://weather.livedoor.com/forecast/rss/primary_area.xml 2.5. WebAPI実習 11
例)「福岡県・久留米の天気」を取得する場合 http://weather.livedoor.com/forecast/webservice/json/v1?city=400040
2.5.2
地域
ID
を確認する
ブラウザを起動し、地域IDを確認します。地域IDは「全国の地点定義表(RSS)」で確認します。 • 全国の地点定義表(RSS) – http://weather.livedoor.com/forecast/rss/primary_area.xml2.5.3
リクエストを送信する
パラメータを付与して、リクエストを送信します。 12 第2章Webアプリケーション概要 注釈: JSONを見やすくする ブラウザの拡張ツールを使って見やすくすることができます。 例)Chromeのextention「JSONView」を使った場合例)「福岡県・久留米の天気」を取得する場合 http://weather.livedoor.com/forecast/webservice/json/v1?city=400040
2.5.2
地域
ID
を確認する
ブラウザを起動し、地域IDを確認します。地域IDは「全国の地点定義表(RSS)」で確認します。 • 全国の地点定義表(RSS) – http://weather.livedoor.com/forecast/rss/primary_area.xml2.5.3
リクエストを送信する
パラメータを付与して、リクエストを送信します。 12 第2章Webアプリケーション概要 注釈: JSONを見やすくする ブラウザの拡張ツールを使って見やすくすることができます。 例)Chromeのextention「JSONView」を使った場合第
3
章
クラウドサービス
3.1
クラウドサービス
クラウドサービスとは、ユーザが自分のパソコン上で利用していたデータやソフトウェアを、ネットワーク経由 で、サービスとして利用者に提供するものです。クラウドサービスを利用することで、これまで機材の購入やシス テムの構築、管理などにかかるとされていたさまざまな手間や時間の削減をはじめとして、業務の効率化やコスト ダウンを図れるというメリットがあります。また、データは手元のコンピュータではなく、クラウドサービス側で 保存されているため、場所を変えてもパソコンやスマートフォンからいつでもアクセスすることができます。 Webメールなどのように、特定のWebサイトにログインしてメールの送受信ができるサービスや、オンラインス トレージなどは、ユーザが気軽に利用できる代表的なクラウドサービスです。また、ショッピングサービスのよう なWebアプリケーションを提供するような企業では、サーバ、ルータ、ハブなどのハードウェアやインフラ設備 を用意する必要がありましたが、それらを提供するための技術基盤(サーバなど)やネットワーク環境も提供して くれるクラウドサービスもあります。Google Cloud Platformや、Amazon Web Serviceなどは代表的なクラウ ドサービスです。ECサイトの多くは、このようなクラウドサービスを利用しているケースが殆んどです。第
3
章
クラウドサービス
3.1
クラウドサービス
クラウドサービスとは、ユーザが自分のパソコン上で利用していたデータやソフトウェアを、ネットワーク経由 で、サービスとして利用者に提供するものです。クラウドサービスを利用することで、これまで機材の購入やシス テムの構築、管理などにかかるとされていたさまざまな手間や時間の削減をはじめとして、業務の効率化やコスト ダウンを図れるというメリットがあります。また、データは手元のコンピュータではなく、クラウドサービス側で 保存されているため、場所を変えてもパソコンやスマートフォンからいつでもアクセスすることができます。 Webメールなどのように、特定のWebサイトにログインしてメールの送受信ができるサービスや、オンラインス トレージなどは、ユーザが気軽に利用できる代表的なクラウドサービスです。また、ショッピングサービスのよう なWebアプリケーションを提供するような企業では、サーバ、ルータ、ハブなどのハードウェアやインフラ設備 を用意する必要がありましたが、それらを提供するための技術基盤(サーバなど)やネットワーク環境も提供して くれるクラウドサービスもあります。Google Cloud Platformや、Amazon Web Serviceなどは代表的なクラウ ドサービスです。ECサイトの多くは、このようなクラウドサービスを利用しているケースが殆んどです。3.2
クラウドサービスの種類
Webメールを使いたい人、オンラインストレージを使いたい人など使う側の人がいれば、そのサービスを提供す る人もいます。Webメールサービスを提供する人、オンラインストレージサービスを提供する人、また、サービ スの提供は不要だけど、インフラ設備だけ利用したい。社内に物理サーバを置きたくない人やデータセンターか らサーバをレンタルしたくないひとなど、使用用途は様々です。そのため、クラウドサービスの形態も利用者に合 わせて複数あり、それらは主にSaas、Paas、Iaasの3つに分類されています。
16 第3章 クラウドサービス
3.2.1 SaaS
(サース、サーズ:
Software as a Service
)
ユーザーがネットワーク経由でサービスとしてソフトウェアを利用するというアプリケーション利用スタイルで す。ユーザは自分のPCにアプリケーションをインストールしたり、ライセンス料を支払う必要はありません。 代表的なサービスとして、Webメール、オンラインストレージ、グループウェアなどがあります。
3.2.2 PaaS
(パース:
Platform as a Service
)
アプリケーションの実行環境を提供するサービスです。アプリケーション自体は利用者が作成します。Webアプ リケーションは必ず何かの物理サーバ上で動いています。 そのため、Webアプリケーションを作成するためには、物理サーバを用意し、OSやミドルウェアをインストール し、さらにネットワーク環境も用意しないといけません。 これらのプラットフォーム基盤がすでに用意されているものがPaasです。Paasでは、すでにある実行環境を使う ため、プログラム言語やDBの種類、その他環境に依存する様々なものに制限がつきますが、実行環境を用意する 手間を省くことができます。
代表的なPaasに、Google App Engineや、Helokuなどがあります。
3.2
クラウドサービスの種類
Webメールを使いたい人、オンラインストレージを使いたい人など使う側の人がいれば、そのサービスを提供す る人もいます。Webメールサービスを提供する人、オンラインストレージサービスを提供する人、また、サービ スの提供は不要だけど、インフラ設備だけ利用したい。社内に物理サーバを置きたくない人やデータセンターか らサーバをレンタルしたくないひとなど、使用用途は様々です。そのため、クラウドサービスの形態も利用者に合 わせて複数あり、それらは主にSaas、Paas、Iaasの3つに分類されています。
16 第3章 クラウドサービス
3.2.1 SaaS
(サース、サーズ:
Software as a Service
)
ユーザーがネットワーク経由でサービスとしてソフトウェアを利用するというアプリケーション利用スタイルで す。ユーザは自分のPCにアプリケーションをインストールしたり、ライセンス料を支払う必要はありません。 代表的なサービスとして、Webメール、オンラインストレージ、グループウェアなどがあります。
3.2.2 PaaS
(パース:
Platform as a Service
)
アプリケーションの実行環境を提供するサービスです。アプリケーション自体は利用者が作成します。Webアプ リケーションは必ず何かの物理サーバ上で動いています。 そのため、Webアプリケーションを作成するためには、物理サーバを用意し、OSやミドルウェアをインストール し、さらにネットワーク環境も用意しないといけません。 これらのプラットフォーム基盤がすでに用意されているものがPaasです。Paasでは、すでにある実行環境を使う ため、プログラム言語やDBの種類、その他環境に依存する様々なものに制限がつきますが、実行環境を用意する 手間を省くことができます。
代表的なPaasに、Google App Engineや、Helokuなどがあります。
3.2.3 IaaS
(アイアース、イアース:
Infrastructure as a Service
)
Iaasは、サーバー・記憶装置・ネットワーク・OSなどのインフラを提供するサービスです。Iaasは仮想サーバー の選定、OSの選択と設定、プログラム言語のインストールや設定、データベースの構築などの各種作業を全て ユーザーが行う必要があるため非常に面倒です。Iaasサービスの例として、アマゾンのAWSやGoogleのGCE 等のサービスがあります。Iaasは、カスタマイズしやすい半面、システムの運用と保守が非常に難しいというデメ リットがあります。
3.3
レンタルサーバとクラウドサービスの違い
「レンタルサーバ」サービスは、主にホームページやBlog作成などを目的として利用されています。
レンタルサーバーでは、Webページ作成以外にも、WordPressなどのBlog管理や、CGIの実行やMySQLの連 携、ファイル転送などに対応しており、Webアプリケーションの実行環境とデータベース、ファイルサーバなど が提供されております。 比較的に自由度も高いのですが、それでも限られた環境での利用となり、サーバのスペックの変更や、スケール アップ・スケールアウトなどはできません。基本的に実行環境が決まっているため、アクセスが増加してもそれを さばく手段は提供されていません。 クラウドサービスでは、サーバのスケールアップ/スケールアウトが容易にできます(Iaasではスケールアウトに対 応したサービスは少ない)。そのため、はじめはスモールスタート、人気が出てきたらスケールアップ/スケールア ウトをしてシステム全体を強化することもできます。 18 第3章 クラウドサービス
第
4
章
Google Cloud Platform
4.1 Google Cloud Platform
とは
Google Cloud Platform(以降、GCPと略称)とは、Googleのインフラ上で利用できるクラウドサービスです。 GCPには、信頼性の高く高スケーラブルな環境でWebアプリケーションを実行することができるサービスや、高 い可用性と、永続性をそなえたオブジェクトストレージサービス、高パフォーマンスなBigData解析サービなど が含まれており、それらのサービスを容易に利用するためのツールやSDK、APIなどが提供されています。 Webサービス、モバイルサービスやバックエンドなソリューションにコンピューティングサービス、ストレージ サービス、アプリケーションサービスを選択することができます。 また、いくつかのサービスは課金が必要となっており、クレジットカードが必要です必要です。有料のサービスで も一定範囲内の使用料であれば無料枠に収めることができ、有料設定をするだけで無料で使える範囲が大幅に増 えます。
4.1.1 GCP
が注目される理由
GCPが注目される理由として次のようなものが挙げられ、これらを連携することでより強力なシステムを構築す ることができます。 • 信頼性の高く、高スケーラブルな環境でWebアプリケーションを実行することができるサービス • 高い可用性と、永続性をそなえたオブジェクトストレージサービス • 高パフォーマンスなBigData解析サービなどが含まれており • 各種サービスを容易に利用するためのツールやSDK、APIなどの提供 • 安価でわかりやすい課金システム • 高いセキュリティ3.2.3 IaaS
(アイアース、イアース:
Infrastructure as a Service
)
Iaasは、サーバー・記憶装置・ネットワーク・OSなどのインフラを提供するサービスです。Iaasは仮想サーバー の選定、OSの選択と設定、プログラム言語のインストールや設定、データベースの構築などの各種作業を全て ユーザーが行う必要があるため非常に面倒です。Iaasサービスの例として、アマゾンのAWSやGoogleのGCE 等のサービスがあります。Iaasは、カスタマイズしやすい半面、システムの運用と保守が非常に難しいというデメ リットがあります。
3.3
レンタルサーバとクラウドサービスの違い
「レンタルサーバ」サービスは、主にホームページやBlog作成などを目的として利用されています。
レンタルサーバーでは、Webページ作成以外にも、WordPressなどのBlog管理や、CGIの実行やMySQLの連 携、ファイル転送などに対応しており、Webアプリケーションの実行環境とデータベース、ファイルサーバなど が提供されております。 比較的に自由度も高いのですが、それでも限られた環境での利用となり、サーバのスペックの変更や、スケール アップ・スケールアウトなどはできません。基本的に実行環境が決まっているため、アクセスが増加してもそれを さばく手段は提供されていません。 クラウドサービスでは、サーバのスケールアップ/スケールアウトが容易にできます(Iaasではスケールアウトに対 応したサービスは少ない)。そのため、はじめはスモールスタート、人気が出てきたらスケールアップ/スケールア ウトをしてシステム全体を強化することもできます。 18 第3章 クラウドサービス
第
4
章
Google Cloud Platform
4.1 Google Cloud Platform
とは
Google Cloud Platform(以降、GCPと略称)とは、Googleのインフラ上で利用できるクラウドサービスです。 GCPには、信頼性の高く高スケーラブルな環境でWebアプリケーションを実行することができるサービスや、高 い可用性と、永続性をそなえたオブジェクトストレージサービス、高パフォーマンスなBigData解析サービなど が含まれており、それらのサービスを容易に利用するためのツールやSDK、APIなどが提供されています。 Webサービス、モバイルサービスやバックエンドなソリューションにコンピューティングサービス、ストレージ サービス、アプリケーションサービスを選択することができます。 また、いくつかのサービスは課金が必要となっており、クレジットカードが必要です必要です。有料のサービスで も一定範囲内の使用料であれば無料枠に収めることができ、有料設定をするだけで無料で使える範囲が大幅に増 えます。
4.1.1 GCP
が注目される理由
GCPが注目される理由として次のようなものが挙げられ、これらを連携することでより強力なシステムを構築す ることができます。 • 信頼性の高く、高スケーラブルな環境でWebアプリケーションを実行することができるサービス • 高い可用性と、永続性をそなえたオブジェクトストレージサービス • 高パフォーマンスなBigData解析サービなどが含まれており • 各種サービスを容易に利用するためのツールやSDK、APIなどの提供 • 安価でわかりやすい課金システム • 高いセキュリティ• 安定したネットワーク
• Web上で簡単に管理できるデベロッパーコンソール
• JSON、XMLのAPIや、ClientLibiraryが提供されている
4.1.2 Google
のネットワークインフラストラクチャ
GCPの特徴は、Googleのインフラをそのまま使うことができることです。Googleのインフラは世界各国にある データセンターを独自のファイバーネットワークを使ってつないでいます。ファイバーネットワークに入るため の入り口であるエッジポイントを世界各国においてあり、日本にも用意されています日本にはデータセンターが ないので、アジア、USなど外国のデータセンターを使うことになります。そのため、データセンターにアクセす る場合は日本から出ることになりますが、その際インターネットを使わずにGoogle独自のファイバーネットワー クを使うことができます。そのため、高速にデータのアクセスが可能になります。 さらに、このファイバーネットワークの入り口にエッジキャッシュサーバというのがあり、一度取得したデータを エッジキャッシュサーバに乗せておけば、海外のデータセンターを使っていても日本だけで通信が完結します。例 えば日本に、アクセスする場合はこのエッジキャッシュサーバに乗せておくと日本だけで通信が完結します。こ のようなインフラの強さがGCPの特徴のひとつです。4.1.3
リージョンとゾーン
リージョンとゾーンはリソースがどこにあるかを表すものです。リージョンの下にゾーンがある構造になってお り、リージョンの中には必ず複数のゾーンがあります。 2015年10月現在、リージョンとして存在するのはasia-east1,europe-west1,us-central1,us-central2の4つです。 リージョンは、データセンターが存在する地域を表します。ゾーンはリージョンの下にあり、データセンターと同 義です。 リージョンには必ず複数のゾーンが存在します。Compute Engineのリソースのほとんどがリージョンかゾーンに 属します。リージョンに属しているものは、複数のゾーンにまたがって利用でき、ゾーンに障害が発生した場合な どは、別のゾーンに自動的に移動します。ゾーンに属しているものは、そのゾーンに障害があった場合、動作しな くなってしまうため、バックアップ系を別ゾーンに自分で用意しておく必要があります。4.2 Google Cloud Platform
GCPには、IaasのGoogle Compute Engine(以降、GCEと略称)、PaasのGoogle App Engine(以降、GAEと略 称)があり、そしてSaasに該当する、Gmailやドライブ、カレンダーなどのGoogle Appsがあります。
AppsはGCPには含まれていませんが、Googleのクラウドサービスを見ると全体的にこのようになります。
20 第4章Google Cloud Platform
GAEは、非常に古くからあるサービスで、GCPという総称ができるまえから存在しています。
GAEができて、GAEのできない部分を補うIaasでGCEができ、そして、その他のクラウドサービをまとた総称 としてGCPができました。
では、いくつかの代表的なサービスをみていきましょう。
4.2.1 Google App Engine
GAEとは、ランタイム環境を全てGoogleのプラットフォーム側で提供されているWebアプリケーション用の サービスになります。OSを選ぶこともできないですし、ミドルウェアを入れることなどはできないです。そのか わり、Webサービスを作るための必要なほとんどのサービスがプラットフォームに乗っています。監視とかなど もプラットフォームがやってくれるので、開発者は、開発に専念できます。しかし、いくつかの制限があり、ロー カルファイルに書き込みできないとかWebソケットなどのソケット通信が受け取ることができません。 • 特徴 – ランタイム環境を全てGoogle側で提供されている、Webアプリケーション用のサービス – OSを選ぶことやミドルウェアを入れることなどはできない – そのかわり、Webサービスを作るためのほとんどのものが、最初からプラットフォーム側に用意され ている。 – 監視などの管理はすべてプラットフォームがやってくれるので開発者は開発に専念できる – ローカルファイルに書き込みできない、Webソケットが使えない
4.2.2 Google Conpute Engine
GCEとは、Googleのインフラ上で動く仮想マシンです。仮想マシンを簡単に調達することができます。 そのた め、Webアプリケーションのランタイム環境も用意することができるのでGAEのような制限がありません。OS を選択することができ、SSHで接続しソフトウェアをインストールすることができます。インフラエンジニアが 自由に環境構築できる場所で、ハードウェアの管理や強力なネットワーの提供などがGoogle側がやってくれます。 • 雑に言うと、Googleのプラットフォーム上(Googleのデータセンター上)にVMをたてることができる • インフラエンジニアが自由に環境を構築することが出来る • OSを選択することができ、SSHで接続しソフトウェアをインストールすることが出来る • ハードウェアの管理はGoogleがやってくれる、強力なネットワークも提供されている
• 安定したネットワーク
• Web上で簡単に管理できるデベロッパーコンソール
• JSON、XMLのAPIや、ClientLibiraryが提供されている
4.1.2 Google
のネットワークインフラストラクチャ
GCPの特徴は、Googleのインフラをそのまま使うことができることです。Googleのインフラは世界各国にある データセンターを独自のファイバーネットワークを使ってつないでいます。ファイバーネットワークに入るため の入り口であるエッジポイントを世界各国においてあり、日本にも用意されています日本にはデータセンターが ないので、アジア、USなど外国のデータセンターを使うことになります。そのため、データセンターにアクセす る場合は日本から出ることになりますが、その際インターネットを使わずにGoogle独自のファイバーネットワー クを使うことができます。そのため、高速にデータのアクセスが可能になります。 さらに、このファイバーネットワークの入り口にエッジキャッシュサーバというのがあり、一度取得したデータを エッジキャッシュサーバに乗せておけば、海外のデータセンターを使っていても日本だけで通信が完結します。例 えば日本に、アクセスする場合はこのエッジキャッシュサーバに乗せておくと日本だけで通信が完結します。こ のようなインフラの強さがGCPの特徴のひとつです。4.1.3
リージョンとゾーン
リージョンとゾーンはリソースがどこにあるかを表すものです。リージョンの下にゾーンがある構造になってお り、リージョンの中には必ず複数のゾーンがあります。 2015年10月現在、リージョンとして存在するのはasia-east1,europe-west1,us-central1,us-central2の4つです。 リージョンは、データセンターが存在する地域を表します。ゾーンはリージョンの下にあり、データセンターと同 義です。 リージョンには必ず複数のゾーンが存在します。Compute Engineのリソースのほとんどがリージョンかゾーンに 属します。リージョンに属しているものは、複数のゾーンにまたがって利用でき、ゾーンに障害が発生した場合な どは、別のゾーンに自動的に移動します。ゾーンに属しているものは、そのゾーンに障害があった場合、動作しな くなってしまうため、バックアップ系を別ゾーンに自分で用意しておく必要があります。4.2 Google Cloud Platform
GCPには、IaasのGoogle Compute Engine(以降、GCEと略称)、PaasのGoogle App Engine(以降、GAEと略 称)があり、そしてSaasに該当する、Gmailやドライブ、カレンダーなどのGoogle Appsがあります。
AppsはGCPには含まれていませんが、Googleのクラウドサービスを見ると全体的にこのようになります。
20 第4章Google Cloud Platform
GAEは、非常に古くからあるサービスで、GCPという総称ができるまえから存在しています。
GAEができて、GAEのできない部分を補うIaasでGCEができ、そして、その他のクラウドサービをまとた総称 としてGCPができました。
では、いくつかの代表的なサービスをみていきましょう。
4.2.1 Google App Engine
GAEとは、ランタイム環境を全てGoogleのプラットフォーム側で提供されているWebアプリケーション用の サービスになります。OSを選ぶこともできないですし、ミドルウェアを入れることなどはできないです。そのか わり、Webサービスを作るための必要なほとんどのサービスがプラットフォームに乗っています。監視とかなど もプラットフォームがやってくれるので、開発者は、開発に専念できます。しかし、いくつかの制限があり、ロー カルファイルに書き込みできないとかWebソケットなどのソケット通信が受け取ることができません。 • 特徴 – ランタイム環境を全てGoogle側で提供されている、Webアプリケーション用のサービス – OSを選ぶことやミドルウェアを入れることなどはできない – そのかわり、Webサービスを作るためのほとんどのものが、最初からプラットフォーム側に用意され ている。 – 監視などの管理はすべてプラットフォームがやってくれるので開発者は開発に専念できる – ローカルファイルに書き込みできない、Webソケットが使えない
4.2.2 Google Conpute Engine
GCEとは、Googleのインフラ上で動く仮想マシンです。仮想マシンを簡単に調達することができます。 そのた め、Webアプリケーションのランタイム環境も用意することができるのでGAEのような制限がありません。OS を選択することができ、SSHで接続しソフトウェアをインストールすることができます。インフラエンジニアが 自由に環境構築できる場所で、ハードウェアの管理や強力なネットワーの提供などがGoogle側がやってくれます。 • 雑に言うと、Googleのプラットフォーム上(Googleのデータセンター上)にVMをたてることができる • インフラエンジニアが自由に環境を構築することが出来る • OSを選択することができ、SSHで接続しソフトウェアをインストールすることが出来る • ハードウェアの管理はGoogleがやってくれる、強力なネットワークも提供されている
4.2.3 Google Cloud Strage
Google Cloud Strage(以降、GCSと略称)は、耐久性と可用性の高いオブジェクトストレージサービスです。エッ ジキャッシュを使えば、どこからでもアプリのデータへの高速なアクセスをユーザーに提供できます。GCSとは、 業界全体のトレンドとして、クラウドにかけていく支出は毎年27%ほど上昇し、2014年には515億円に達し、そ の中でもストレージの部分はもっとも需要が高く2014年に70億円に達しました。既存のインフラを維持するた めに、IT予算の72%使われています。Webサービスなどを提供していると、データは溜まっていきます。その ためストレージはとても重要な要素です。GCSはオブジェクトストレージなので、バイナリデータを保存します。 GCSに保存したデータは不変なもので、そのデータを更新したりすることはできません。同じデータを保存した 時は上書きされます。また、ファイルシステムではありませんので、物理または仮想マシン上にGCSをディスク としてマウントしたりすることはできませんGoogleのインフラで動いていますので、非常にハイパフォーマンス でスケーラブルな環境です。GCSにアクセスするためには、API、 コマンドラインツール、Webコンソールなど のような方法があります。
4.2.4 BigQuery
BigQuery、Googleが作っているBigDataを解析するためのサービスになります。アプリケーションではなくクラ ウド上で動いているサービスなので、サーバやローカルPCにアプリケーションをインストールして使うという ことはできません。最大の特徴として、スケーラビリティがありまして、テラバイト級のデータ(行数でいうと 120億行というデータ件数になります)それにたいして、インタラクティブでアドホックなクエリを求めてきま す。また、TB級のデータでも数秒で返ってきますので、リアルタイムな解析に向いてます。BigQueryのいいと こはサービスとして提供されているので、Google側で全てデータの管理やインフラの管理をしてくれます。、フル マネージドサービスで提供されています。BigDataを扱ったことのある方は、それの大変さとかご存知かと思いま す。HadoopとかMapReduseとかを使ってTB単位のデータをストレージしたりシャーディングしたりして分析 していくと思いますが、それの管理やバックアップ、パフォーマンスチューニングなどで苦労することは多かった と思いますが、BigQueryではそういった高度な技術はほとんど必要なく、データを入れておけばセキュアに保存 されるし、パフォーマンスチューニングもGoogleが勝手にやってくれます。
4.2.5 CludSQL
Cloud SQLは、クラウド上で運用されるMySQLです。MySQLの多くの機能をサポートしており、mysqlクライ アントツールをインストールすれば、コマンドラインからの操作も可能です。Cloud SQLはGCP上で動いている ため、簡単にインスタンスを作成でき、レプリケーションやバックアップなどの管理はプラットフォーム側が行っ てくれます。また、Cloud SQLのインスタンスはオンデマンドで動いており、要求がないときはサスペンドのよ うな状態になります。
22 第4章Google Cloud Platform
第
5
章
Google App Engine
5.1 Google App Engine
とは
GAEはPaasに分類されるサービスです。Java、Python、Go、PHPなどのプログラム言語を使って、Googeのイン フラ上で実行するWebアプリケーションを開発することができます。データベース管理、サーバー設定、シャー ディング、負荷分散はGoogleが管理しています。そのため、開発者はコーディングに集中することができます。 Datastore、Cloud Strage、Cloud SQLなどのストレージサービスと連携してデータを保存することができます。
5.1.1 Google App Engine
の特徴
GAEには次のような特徴があります • 基本料金無料
– アプリケーションの課金を有効にすることで、無料で使える範囲が引き上げられる • 選べる開発言語
– Java、python、Go、phpのSDKが用意されていて、GAEをシミュレーションする完全機能を装備し たローカル開発が可能 • スケジューリングタスク – リクエストを実行するための非同期タスクキュー – 指定した時間や一定の間隔でイベントをトリガするためのスケジューリングタスク • データストレージ – Datastoreというキーバリューストア(KVS)のデータベースを採用している
4.2.3 Google Cloud Strage
Google Cloud Strage(以降、GCSと略称)は、耐久性と可用性の高いオブジェクトストレージサービスです。エッ ジキャッシュを使えば、どこからでもアプリのデータへの高速なアクセスをユーザーに提供できます。GCSとは、 業界全体のトレンドとして、クラウドにかけていく支出は毎年27%ほど上昇し、2014年には515億円に達し、そ の中でもストレージの部分はもっとも需要が高く2014年に70億円に達しました。既存のインフラを維持するた めに、IT予算の72%使われています。Webサービスなどを提供していると、データは溜まっていきます。その ためストレージはとても重要な要素です。GCSはオブジェクトストレージなので、バイナリデータを保存します。 GCSに保存したデータは不変なもので、そのデータを更新したりすることはできません。同じデータを保存した 時は上書きされます。また、ファイルシステムではありませんので、物理または仮想マシン上にGCSをディスク としてマウントしたりすることはできませんGoogleのインフラで動いていますので、非常にハイパフォーマンス でスケーラブルな環境です。GCSにアクセスするためには、API、 コマンドラインツール、Webコンソールなど のような方法があります。
4.2.4 BigQuery
BigQuery、Googleが作っているBigDataを解析するためのサービスになります。アプリケーションではなくクラ ウド上で動いているサービスなので、サーバやローカルPCにアプリケーションをインストールして使うという ことはできません。最大の特徴として、スケーラビリティがありまして、テラバイト級のデータ(行数でいうと 120億行というデータ件数になります)それにたいして、インタラクティブでアドホックなクエリを求めてきま す。また、TB級のデータでも数秒で返ってきますので、リアルタイムな解析に向いてます。BigQueryのいいと こはサービスとして提供されているので、Google側で全てデータの管理やインフラの管理をしてくれます。、フル マネージドサービスで提供されています。BigDataを扱ったことのある方は、それの大変さとかご存知かと思いま す。HadoopとかMapReduseとかを使ってTB単位のデータをストレージしたりシャーディングしたりして分析 していくと思いますが、それの管理やバックアップ、パフォーマンスチューニングなどで苦労することは多かった と思いますが、BigQueryではそういった高度な技術はほとんど必要なく、データを入れておけばセキュアに保存 されるし、パフォーマンスチューニングもGoogleが勝手にやってくれます。
4.2.5 CludSQL
Cloud SQLは、クラウド上で運用されるMySQLです。MySQLの多くの機能をサポートしており、mysqlクライ アントツールをインストールすれば、コマンドラインからの操作も可能です。Cloud SQLはGCP上で動いている ため、簡単にインスタンスを作成でき、レプリケーションやバックアップなどの管理はプラットフォーム側が行っ てくれます。また、Cloud SQLのインスタンスはオンデマンドで動いており、要求がないときはサスペンドのよ うな状態になります。
22 第4章Google Cloud Platform
第
5
章
Google App Engine
5.1 Google App Engine
とは
GAEはPaasに分類されるサービスです。Java、Python、Go、PHPなどのプログラム言語を使って、Googeのイン フラ上で実行するWebアプリケーションを開発することができます。データベース管理、サーバー設定、シャー ディング、負荷分散はGoogleが管理しています。そのため、開発者はコーディングに集中することができます。 Datastore、Cloud Strage、Cloud SQLなどのストレージサービスと連携してデータを保存することができます。
5.1.1 Google App Engine
の特徴
GAEには次のような特徴があります • 基本料金無料
– アプリケーションの課金を有効にすることで、無料で使える範囲が引き上げられる • 選べる開発言語
– Java、python、Go、phpのSDKが用意されていて、GAEをシミュレーションする完全機能を装備し たローカル開発が可能 • スケジューリングタスク – リクエストを実行するための非同期タスクキュー – 指定した時間や一定の間隔でイベントをトリガするためのスケジューリングタスク • データストレージ – Datastoreというキーバリューストア(KVS)のデータベースを採用している