App Engine スタンダード環境

App Engine スタンダード環境は、Google のインフラで実行されるコンテナ インスタンスに基づいています。コンテナは、複数の利用可能なランタイムの 1 つ(Java 7、Python 2.7、Go、PHP)で事前設定されています。Each runtime also includes libraries that support App Engine Standard APIs. For many applications, the standard environment runtimes and libraries might be all you need.

App Engine スタンダード環境を使用すると、負荷が高く、大量のデータを操作している状態でも確実に実行するアプリケーションを簡単に構築し、デプロイできます。次の機能が含まれます。

  • クエリ、並べ替え、トランザクションを利用した永続ストレージ
  • 自動スケーリングと負荷分散
  • リクエストの範囲外の作業を行うための非同期タスクキュー
  • 指定された時間または一定間隔でイベントをトリガーするようにスケジュール設定されたタスク
  • 他の Google Cloud サービスと API との統合

アプリケーションは、セキュリティ保護されたサンドボックス環境で実行し、App Engine スタンダード環境は、複数のサーバー リクエストを分散でき、トラフィック需要に対応するようにスケーリングします。アプリケーションは、ハードウェア、オペレーティング システム、サーバーの物理的な場所に関係なく、独自のセキュリティ保護された、信頼性の高い環境で実行します。

スタンダード環境開発キット

App Engine 用ソフトウェア開発キット(SDK)は、すべてのサポートされる言語で利用できます。各 SDK に含まれるものは以下のとおりです。

  • App Engine で利用できるすべての API とライブラリ
  • すべてのApp Engine サービスをローカル コンピュータ上でエミュレートする、シミュレートされ、セキュリティ保護されたサンドボックス環境
  • アプリケーションのクラウドへのアップロードを可能にし、アプリケーションの異なるバージョンの管理を可能にするデプロイツール

SDK はアプリケーションをローカルで管理する一方で、Google Cloud Platform Console は本番環境のアプリケーションを管理します。Cloud Platform Console は、ウェブベースのインターフェースを使用し、新規アプリケーションを作成し、ドメイン名を設定し、稼働しているアプリケーションのバージョンを変更し、アクセスとエラーログを確認します。

インスタンス クラス

スタンダード環境で実行している各アプリケーションには、「インスタンス クラス」があり、コンピューティング リソースや料金を決定します。この表には、さまざまなインスタンス クラスのメモリ制限と CPU 制限をまとめています。お支払い情報については、料金ページをご覧ください。

インスタンス クラス  メモリ制限  CPU 制限 
B1  128 MB 600 MHz
B2  256 MB 1.2 GHz
B4  512 MB 2.4 GHz
B4_1G  1024 MB 2.4 GHz
B8  1024 MB 4.8 GHz
F1  128 MB 600 MHz
F2  256 MB 1.2 GHz
F4  512 MB 2.4 GHz
F4_1G  1024 MB 2.4 GHz

割り当て量と制限

App Engine スタンダード環境は、1 GB のデータ ストレージとトラフィックを無料で提供し、有料アプリケーションを有効にすることによって、増やすことができます。ただし、一部の機能には、割り当てに関係なく、システムの安定性を保護するために、制限が課されます。ニーズに合わせて変更する方法を含む割り当てに関する詳細は、割り当てページをご覧ください。

機能

機能は、すべてのランタイム言語また言語のサブセットのみで利用できます。機能の機能性は、通常、利用可能なすべてのランタイムで同じですが、一部の例外もあります。

すべての App Engine 機能は、ステータスと可用性に従って分類されます。

  • 一般提供(GA)機能は、一般公開され、App Engine の SLA および非推奨ポリシーの対象となります。GA 機能の実装は安定しています。変更の際には下位互換性が提供されます。特に明記されない限り、このページに記載された App Engine の機能はすべて GA にあります。
  • ベータ版機能は一般公開されています。App Engine の今後のリリースで GA 機能になることも、そうならないこともあり、実装は下位互換で変わることがあります。
  • アルファ版機能は、App Engine の今後のリリースで ベータ版または GA 機能になることも、そうならないこともあり、実装は下位非互換で変わることがあります。一般公開されていアルファ版機能もあれば、アクセスをリクエストして使用する必要があるものもあります。

ここで記載された機能は、サードパーティ ベンダーによって提供されているものもあれば、オープンソース プロジェクトもあります。これらの機能は、サードパーティまたはオープンソースとしてマークされます。

このページの機能説明は、提供される一般機能に従って、グループ化されています。

  1. 言語とランタイム
  2. データ ストレージ、取得、検索
  3. コミュニケーション
  4. プロセス管理
  5. コンピューティング
  6. アプリの設定と管理

機能のインデックス

App Identityアプリケーションの ID にアクセスすることが可能になり、OAuth を使用してこの ID を表明する能力を提供するフレームワーク。
Blobstoreデータストア サービス内のストレージには大きすぎる動画や画像ファイルなどの大きいデータ オブジェクトをアプリケーションで提供できます。
Capabilities特定のサービスの停止および定期メンテナンスを検出し、アプリケーションがそれを回避したり、ユーザーに通知できるようにします。
データストア スキーマレスのオブジェクト データストアです。スケーラブルなストレージを備え、高機能なデータ モデリング API と SQL に似たクエリ言語を使用できます。
データストアのバックアップ / 復元 Google Cloud Platform Console を使用してアプリケーションのデータストアからデータをエクスポートまたはインポートできます。
専用の Memcache アプリケーションに対して固定キャッシュ容量が独占的に割り当てられます。
Go ランタイム Go プログラミング言語でアプリケーションを作成できます。
Google Cloud Endpoints Android、iOS、ウェブ クライアント用 API を生成し、アプリ用のウェブ バックエンドの作成が簡単になります。
Google Cloud SQL フルマネージドのウェブサービスです。Google のクラウド内でリレーショナル データベースを構築、設定、使用することができます。 
Google Cloud Storage クライアント ライブラリ 内部エラー処理や再試行ロジックで Google Cloud Storage に読み書きできます。
画像 画像を操作、結合、補正できます。画像形式を変換したり、高さや色の周波数などの画像メタデータにアクセスしたりできます。
Java ランタイム Java プログラミング言語でアプリケーションを作成できます。
ログ アプリケーション内からアプリケーション ログやリクエストログに自動的にアクセスします。
メール 管理者や Google アカウントを持つユーザーの代わりにメール メッセージを送信し、さまざまなアドレスでメールを受信できます。
MapReduce 大規模なデータセットに対して効率的な分散コンピューティングを行うための MapReduce コンピューティング モデルの最適化されたバージョンです。
Memcache 分散型のメモリ内データ キャッシュです。アプリケーションのパフォーマンスを大幅に改善できます。 
サービス アプリケーションを、ステートフルなサービスを共有し、安全な方法で通信できる論理コンポーネントに分解できます。
マルチテナンシー データを簡単に区分けすることができ、アプリケーションの単一のインスタンスから多くのクライアント組織にサービスを提供できるようになります。
OAuth OAuth プロトコルを使用し、認証情報(ユーザー名やパスワード)を求めることなく、アクセスを要求するユーザーを認証する方法をアプリに提供します。
PHP ランタイム PHP プログラミング言語でアプリケーションを作成できます。
Python ランタイムPython プログラミング言語でアプリケーションを作成できます。
リモート いずれのアプリケーションからも App Engine サービスににアクセスできます。たとえば、ローカルマシンで実行しているアプリケーションから本番環境のデータストアにアクセスすることが可能です。
タスクのスケジュール 定義された時刻または一定間隔で実行するタスクを設定できます。
検索 プレーン テキスト、HTML、Atom、数値、日付、位置情報などの構造化データに対して、Google 検索のような検索を実行できます。 
SendGrid SendGrid ライブラリを使用して、アプリからメールを送信し、オープン、クリック、登録解除、スパムレポートなどに関する統計情報を確認できます。
ソケット 言語固有の組み込みライブラリを使用して、アウトバウンド ソケットををサポートします。
SSL のカスタム ドメイン対応 appspot.com アドレスではなく、カスタム ドメインから HTTPS と HTTP を経由して、アプリケーションを提供します。
タスクキュー アプリはユーザー リクエストの外部でも作業を行えます。これらの作業は、小さな独立したタスクとして後で実行されます。
タスクキュー REST API REST を介して、App Engine のタスクキューの使用を可能にします。
タスクキューのタグ付け 同一のタグを持つタスクを、指定した数を上限として、キューから一定期間リースします。
トラフィック分割 受信したリクエストを別のバージョンのアプリに転送し、A/B テストを実行して、新しい機能の段階的な公開を行えるようにします。
Twilio アプリケーションで通話を発信、受信したり、テキスト メッセージの送受信を行ったり、いずれの電話、タブレット、ブラウザからも IP 電話を発信できます。
URL フェッチ Google のネットワーク インフラストラクチャを使用し、ウェブ上の URL に HTTP と HTTPS リクエストを効率的に発行します。
ユーザー Google アカウントでアプリケーションにログインできます。ユーザーには一意の ID が割り当てられます。 

スタンダード環境の言語とランタイム

Java ランタイム 

App Engine は、Java 6 JVM を使用して、安全なサンドボックス環境で Java ウェブ アプリケーションを実行します。App Engine は、アプリケーションのサーブレット クラスを呼び出して、この環境でリクエストの処理とレスポンスの準備を行います。 

App Engine は、ウェブ アプリケーションに Java サーブレット標準を使用します。アプリケーションのサーブレット クラス、JavaServer Pages(JSP)、静的ファイル、データファイルと共に、配備記述子(web.xml ファイル)や他の設定ファイルを、標準 WAR ディレクトリ構造で用意します。App Engine は、配備記述子に従ってサーブレットを呼び出すことでリクエストを処理します。 

セキュリティ保護されたサンドボックス環境は、サービスとセキュリティのためにアプリケーションを切り離します。サンドボックス環境では、アプリケーションは、他のアプリのパフォーマンスとスケーラビリティに影響しない処理しか実行できなくなります。たとえば、スレッドを生成したり、ローカル ファイル システムにデータを書き込んだり、任意にネットワークに接続したりすることはできません。また、JNI などのネイティブ コードを使用することもできません。JVM は、サンドボックス制限内で動作するすべての Java バイトコードを実行できます。 

Google Plugin for Eclipse を導入すると、App Engine プロジェクト用の Eclipse IDE に新規プロジェクト ウィザードとデバッグ設定が追加されます。Java 用 App Engine を使用すると、Google Web Toolkit (GWT)を使用して、容易に世界クラスのウェブ アプリケーションを開発、デプロイできます。Eclipse プラグインは、App Engine SDK と GWT SDK にバンドルされています。NetBeans や IntelliJ にサードパーティのプラグインを利用できます。

Java デベロッパー ガイド

Python ランタイム

App Engine スタンダード環境では、あらかじめ用意されている Python インタープリタを使用して、Python アプリケーション コードを安全なサンドボックス環境で実行します。アプリケーションは、この環境と通信することで、ウェブ リクエストの受信、作業の実行、レスポンスの送信を行います。

Python ウェブ アプリケーションは、WSGI プロトコルを使用して App Engine ウェブサーバーと情報を交換します。そのため、アプリケーションは、WSGI 互換のさまざまなウェブ アプリケーション フレームワークを利用できます。App Engine には、webapp2 というシンプルなウェブ アプリケーション フレームワークが含まれているため、簡単に開発を開始できます。大規模なアプリケーションの場合には、Django など、実績のあるサードパーティ製フレームワークを App Engine と連携させることができます。

Python インタープリタは、作成したアプリケーションに含めた Python モジュールや、Python 標準ライブラリなど、あらゆる Python コードを実行できます。ただし、インタープリタは「ピュア」な Python 環境であるため、C コードで作成された Python サービスを読み込むことはできません。

セキュリティ保護されたサンドボックス環境は、サービスとセキュリティのためにアプリケーションを切り離します。サンドボックス環境では、アプリケーションは、他のアプリのパフォーマンスとスケーラビリティに影響しない処理しか実行できなくなります。たとえば、ローカル ファイル システムにデータを書き込んだり、任意にネットワークに接続したりすることはできません。代わりに、App Engine が提供するスケーラブルなサービスを利用して、データの保存やインターネット経由の通信を行います。サンドボックス制限内では動作しないサービスを標準ライブラリからインポートしようとすると、Python インタープリタは例外を生成します。

Python デベロッパー ガイド

PHP ランタイム 

PHP ランタイムは、サンドボックス PHP 5.4 環境でアプリケーション コードを実行します。アプリケーションは、この環境と通信することで、ウェブ リクエストの受信、作業の実行、レスポンスの送信を行います。ランタイムは、標準PHP 拡張機能の多くをサポートします。C に書き込まれた拡張機能はアップロードできません。

App Engine スタンダード環境は、独自のウェブサーバーを実行します。コードでアップロードされる app.yaml ファイルを使用して、設定できます。このファイルはアプリケーションへの着信 HTTP リクエストを PHP スクリプトに転送させる方法を指定します。

サンドボックスは、信頼性、スケーラビリティ、セキュリティ上の理由から、作成したアプリケーションを切り離します。このため、少数の PHP 関数は App Engine で使用できず、他は、間違って使用されると、例外を生じさせます。たとえば、アプリケーションは、ローカル ファイル システムにデータを書き込むことができません。代わりに、Google が提供するスケーラブルなサービスを利用して、データの保存やインターネット経由の通信を行います。 

PHP ランタイムは、組み込み Google Cloud Storage stream wrapper を提供しています。これを使用すると、標準 PHP ファイルシステム機能の多くを使用して Google Cloud Storage にアクセスできます。

PHP デベロッパー ガイド

Go ランタイム 

App Engine スタンダード環境は Go バージョン 1.6 を実行します。SDK には、標準 Go http パッケージに類似したインターフェースが用意されています。Go の App Engine アプリの書き込みは、スタンドアロンの Go の ウェブサーバーの書き込みに似ています。

SDK には、Go コンパイラや標準ライブラリが含まれます。追加の依存関係はありません。Go ランタイムは、サンドボックス環境で実行するため、標準ライブラリ関数の一部はエラーを返すので、使用ししないでください。たとえば、アプリがローカル ファイル システムに書き込んだり、任意にネットワークに接続しようとしたりすると、os.ErrPermission が発生します。App Engine のスケーラブルなサービスを利用して、データの保存やインターネット経由の通信を行う必要があります。

ユーザーが Go コンパイラを起動する必要はありません。アプリは、新しいコードをアップロードしたときにいつでもサーバー側で自動的に再構築されます。ローカルの開発サーバーを実行している場合、SDK は変更時に実行中のソースを自動的に再コンパイルします。

App Engine の Go ランタイム環境は、goroutines をサポートしますが、シングル スレッドでスケジュールさます。goroutines は同時に実行できますが、並行してはできません。アプリケーション インスタンス は、複数のリクエストを処理できます。たとえば、1 つのリクエストが Datastore API の呼び出しを待っている場合、そのインスタンスはその間に別のリクエストを処理することができます。

Go デベロッパー ガイド

データ ストレージ、取得、検索

データストア

App Engine Datastore は、ウェブ アプリケーションを保管するための堅牢かつスケーラブルなストレージを提供するスキーマレスな NoSQL データストアで、次のような機能を備えています。

  • 計画的ダウンタイムがない
  • アトミック トランザクション
  • 可用性の高い読み取り / 書き込み処理
  • 読み取りと祖先クエリに対する強い整合性
  • 他のすべてのクエリに対する結果整合性

データストアは、エンティティと呼ばれるデータ オブジェクトを格納します。エンティティには 1 つ以上のプロパティがあります。プロパティとは、複数のサポートされたデータタイプの 1 つの名前付きの値です。つまり、文字列、整数、別のエンティティへの参照です。各エンティティはその種類で識別されます。種類とは、クエリのためにエンティティを分類するカテゴリのことで、種類の中で独自にエンティティが識別されるキーとなるものでもあります。データストアは、1 回のトランザクションで複数のオペレーションを実行できます。定義上では、トランザクションは、そのオペレーションのどれもが成功しない限り、成功しません。1 つでもオペレーションが失敗すれば、トランザクションは自動的にロールバックされます。特にこれは複数のユーザーが同時に同じデータにアクセスし、操作することを可能にするため、分散ウェブ アプリケーションにとって有益です。

Python | Java | Go で利用できます。

データストア バックアップ / 復元 ベータ版

Cloud Platform Console の Datastore Admin タブを使用すると、選択された種類のエンティティをバックアップしたり、バックアップからエンティティを復元することができます。Blobstore または Google Cloud Storage のいずれかを使用してバックアップできます。

Python | Java | Go で利用できます。

Google Cloud SQL

Google Cloud SQL は Google クラウド上で運用される MySQL データベースです。MySQL のほぼすべての機能を備えていますが、多少の相違点(追加の機能とサポートされていない機能)について、以下で説明します。 Google Cloud SQL は簡単に利用でき、ソフトウェアをインストールする必要はありません。メンテナンスも不要で、小中規模のアプリケーションに最適です。

Google Cloud SQL は次の機能を提供しています。

  • クラウドで MySQL データベースをホストできます。 
  • 優れた可用性と耐久性のため、すべてのデータは複数の場所で複製されます。
  • 料金プランの選択: 
    • 従量制オプションでは、データにアクセスした時間分だけ課金されます。
    • パッケージ オプションでは、より頻繁なアクセスに対してコストを制御できます。
  • Google Cloud SQL インスタンスは、最大で 16GB の RAM と 500GB のデータ ストレージを使用できます。
  • インスタンスの作成と管理は、Google Cloud Platform Console で行います。
  • データは EU または米国のデータセンターに保存されます。
  • Cloud SQL ユーザーのデータは、Google の内部ネットワーク上にあるときも、データベース テーブルと一時ファイルに保存されるときも暗号化されます。
  • 同期または非同期の地理的レプリケーション
  • mysqldump を使用したデータベースのインポート / エクスポート
  • Java および Python との互換性
  • MySQL ワイヤ プロトコルと MySQL コネクタに対するサポート
  • Secure Sockets Layer(SSL)プロトコルで外部接続をサポート

Python | Java | PHP | Go で利用できます。

Blobstore

Blobstore API を使用すると、blob と呼ばれるデータ オブジェクトをアプリケーションで処理できるようになります。blob は、データストア サービスのオブジェクトに許可されているサイズよりはるかに大きいサイズのオブジェクトです。blob は動画や画像ファイルなどの大きいファイルの処理に便利であり、ユーザーは大きいデータファイルをアップロードできます。blob は HTTP リクエストでファイルをアップロードすることによって作成されます。通常、アプリケーションでこの処理を行うには、ファイル アップロード用のフィールドを含むフォームをユーザーに提示します。フォームが送信されると、ブロブストアによってファイルの内容から blob が作成され、blob への不完全な参照(blob キー)が返されます。このキーは後で blob を処理するときに使用できます。アプリケーションは、ユーザー リクエストに応じて完全な blob 値を処理でき、あるいはファイルに似たストリーミング インターフェースを使用して、値を直接読み取ることができます。

Python | Java | Go で利用できます。

Google Cloud Storage クライアント ライブラリ

Google Cloud Storage は大きいファイルの保存と提供に便利です。また、Cloud Storage は、アクセス制御リスト(ACL)の使用、アップロード オペレーションを再開する機能、その他多くの機能を提供します。Google Cloud Storage クライアント ライブラリは、アプリに自動的にこの再開する機能を利用し、データを Google Cloud Storage にストリーミングする強固な方法を提供します。

Google Cloud Storage クライアント ライブラリでは、アプリケーションは Google Cloud Storage のバケットからファイルを読み取り、バケットにファイルを書き込むことができます。 このライブラリは、内部エラー処理や再試行で Google Cloud Storage への大量のデータの読み書きをサポートします。従って、これを行うために独自のコードを書き込む必要はありません。さらに、プリフェッチを行うことによって読み取りバッファリングを提供するため、アプリの効率が高まります。

Python | Java | PHP | Go で利用できます。

Search API は、テキスト、HTML 文字列、アトム、日付、geopoint、数値などの構造化データを含むドキュメントのインデックス作成のモデルを提供します。ドキュメントとインデックスは、オペレーションに対して最適化された別の永続ストアに保存されます。インデックスを検索し、検索結果を整理して表示できます。API は文字列フィールドのテキストの部分一致をサポートします。Search API は、任意の数のドキュメントのインデックスを作成できますが、1 回の検索で 10,000 未満の一致するドキュメントを返します。App Engine Datastore は、非常に大きな結果セットを取得する必要があるアプリケーションにより適しています。

Python | Java | Go で利用できます。

Memcache

App Engine スタンダード環境は、2 つのクラスの memcache サービスをサポートします。

  • 共有 memcache は、App Engine アプリケーションの無料のデフォルトです。ベスト エフォート方式でキャッシュ容量を提供し、App Engine が提供するすべてのアプリケーションの総需要の対象となります。
  • 専用の memcache を使用することで、アプリケーションに対して固定キャッシュ容量が独占的に割り当てられます。キャッシュ サイズの GB/時間に応じて課金されます。キャッシュ サイズをコントロールすることは、アプリが予想通りに実行できることであり、コストがかかる耐久性のあるストレージへのアクセスが少なくなることです。

共有、専用を問わず、memcache は耐久性のあるストレージではありません。キャッシュがいっぱいになったとき、キャッシュの LRU ポリシーに従って、キーを削除できます。キャッシュの設定またはデータセンターのメンテナンスの変更時にもキャッシュの一部またはすべてがフラッシュされる可能性があります。

Python | Java | PHP | Go で利用できます。

専用の Memcache

専用の memcache を使用することで、アプリケーションに対して固定キャッシュ容量が独占的に割り当てられます。キャッシュ サイズの GB/時間に応じて課金されます。キャッシュ サイズをコントロールすることは、アプリが予想通りに実行できることであり、コストがかかる耐久性のあるストレージへのアクセスが少なくなることです。

Python | Java | PHP | Go で利用できます。

ログ

App Engine スタンダード環境は 2 種類のログを保持します。

  • アプリケーション ログには、タイムスタンプやログレベルが付いた任意のメッセージが含まれます。
  • リクエスト ログには、アプリによって処理される各リクエストのエントリが含まれ、アプリ ID、HTTP バージョンなどの情報が記載されています。各リクエストログには、そのリクエストに関連付けられているアプリケーション ログのリストが含まれます。

Logs API では、アプリケーションのログにアクセスすることができます。Cloud Platform Console からもログにアクセスすることができます。

Python | Java | PHP | Go で利用できます。

コミュニケーション


Google Cloud Endpoints

App Engine の Google Cloud Endpoints は、他のアプリケーションからデータへのクライアント アクセスを簡素化するために、API バックエンドと呼ばれる App Engine アプリケーションから API とクライアント ライブラリを生成することができるツール、ライブラリ、機能で構成されています。Endpoints は、Android や Apple の iOS などのウェブ クライアントやモバイル クライアント向けのウェブ バックエンドを簡単に作成することができます。

モバイル デベロッパーに対し、Endpoints は、共有バックエンドを開発する簡単な方法を提供し、また、OAuth 2.0 認証などの重要なインフラストラクチャも提供し、さもなければ必要であったはずの多くの作業を不要にします。さらに、API のバックエンドは App Engine スタンダード環境のアプリであるため、モバイル デベロッパーは、App Engine スタンダード環境で利用可能なサービスや機能のすべて(データストア、Google Cloud Storage、メール、URL フェッチ、タスクキューなど)を使用することができます。そして最後には、バックエンドに App Engine スタンダード環境を使用することで、デベロッパーはシステム管理操作、負荷分散、スケーリング、サーバー メンテナンスから解放されます。

Endpoints なしで App Engine スタンダード環境のバックエンド用のモバイル クライアントを作成することが可能です。しかし、Endpoints を使用することで、App Engine との通信処理をするためにラッパーを書く必要がなくなり、この処理が簡単になります。Endpoints によって生成されたクライアント ライブラリを使用すると、簡単に直接 API 呼び出しを行うことができます。 

Python | Java で利用できます

メール

App Engine スタンダード環境のアプリケーションは、アプリケーションの管理者と、Google アカウントを持つユーザーに代わってメール メッセージを送信できます。また、さまざまなアドレスでメールを受信できます。メッセージの送信にはメールサービスを使用します。メッセージの受信は、App Engine で HTTP リクエストを開始し、そのリクエストをアプリケーションに送信する形式で行われます。 

Python | Java | PHP | Go で利用できます。

SendGrid サードパーティ

SendGrid を使用して、Google App Engine スタンダード環境でメールを作動できます。SendGrid を使用すると、到達性が向上し、アプリによって送信されたメールが実際にどうなったかについて透明性を提供します。SendGrid インターフェースまたは API を介して、オープン、クリック、登録解除、スパムレポートなどに関する統計情報を確認できます。

Python | Java | PHP で利用できます。

ソケット ベータ版

App Engine スタンダード環境は、App Engine の特別なライブラリをインポートしたり、App Engine の特別なコードを追加する必要がなく、あらゆるランタイムで正規アウトバウンド ソケットをサポートします。ただし、ソケットを使用する場合に知っておくべき特定の制限と動作があります。詳細はランタイムによって異なります。詳細については、ランタイムのドキュメントをご覧ください。

Python | Java | PHP | Go で利用できます。

Twilio サードパーティ

Twilio Voice を使用すると、アプリケーションで通話を発着信できます。Twilio SMS を使用すると、アプリケーションでテキスト メッセージの送受信を行うことができます。Twilio Client を使用すると、いずれの電話、タブレット、ブラウザからも IP 電話を発信でき、WebRTC をサポートします。

Python | Java | PHP で利用できます。

URL フェッチ

App Engine スタンダード環境のアプリケーションは、他のアプリケーションと通信したり、URL を取得してウェブ上の他のリソースにアクセスできます。アプリは、URL フェッチ サービスを利用して、HTTP と HTTPS リクエストを発行し、レスポンスを受け取れます。URL フェッチ サービスは、効率とスケーリングのために、Google のネットワーク インフラストラクチャを使用します。

Python | Java | PHP | Go で利用できます。

プロセス管理

タスクキュー

Task Queue API を使用し、アプリケーションは、ユーザーのリクエストによって開始したジョブを、ユーザー リクエストの外部で実行できます。アプリが一部のバックグラウンド処理を実行する必要がある場合は、Task Queue API を使用して、タスクという小さな独立した単位で作業を管理できます。アプリは、タスクを後で実行されるタスクキューに追加します。

App Engine スタンダード環境は、2 つの異なるキュー設定を提供します。

  • push キューは、キュー定義で設定された処理速度に基づき、タスクを処理します。App Engine スタンダード環境は、キュー設定や処理量に合わせて処理容量を自動的にスケーリングし、処理後はタスクの削除も行います。push キューはデフォルトです。
  • pull キューにより、タスク コンシューマー(アプリケーションまたはアプリケーション外部のコード)は、一定の期間内の特定の時間に処理のためタスクをリースすることができます。pull キューでは、タスクがいつ処理されるか管理できるようになり、また、タスク キュー REST API を使用して、アプリケーションを App Engine 以外のコードと統合することも可能になります。pull キューを使用する場合、アプリケーションは、処理量に基づきインスタンスのスケーリングを処理する必要があり、また、処理後タスクを削除する必要もあります。

Python | Java | PHP | Go で利用できます。

タスクキュー REST API アルファ版

REST インターフェースを提供するため、いずれのウェブ クライアント アプリもアプリケーションのタスクキューおよびその中のタスクを管理することができます。

Python | Java | PHP で利用でき、Go は Python に定義されているとおり、API の実装も行います。

タスクキューのタグ付け ベータ版

タグ付け API では、pull キュー コンシューマーは、pull キューから指定された数の同じタグが付いたタスクをリースできます。

Python | Java | Go で利用できます。

タスクのスケジュール

App Engine スタンダード環境の Cron サービスを使用すると、定義された時刻または一定間隔で動作する定期的にスケジュールしたタスクを設定できます。これらのタスクは、一般的に cron ジョブと呼ばれています。cron ジョブは App Engine Cron サービスによって自動的にトリガーされます。たとえば、これを使用して、毎日レポートメールを送信したり、10 分ごとに一部のキャッシュされたデータを更新したり、1 時間に 1 回概要情報を更新することができます。

cron ジョブは、HTTP GET リクエストを使用して、1 日のうちの決められた時刻に URL を呼び出します。cron によって呼び出された HTTP リクエストは、最大 10 分間実行できますが、他の HTTP リクエストと同じ制限が適用されます。

無料 アプリケーションの場合、最大 20 個のタスクのスケジュールを設定できます。有料アプリケーションの場合、最大 100 個のタスクのスケジュールを設定できます。

Python | Java | PHP | Go で利用できます。

コンピューティング

画像

Images API では、画像データを記述し、操作できます。APIは形式、幅、高さ、カラー値のヒストグラムなどの画像に関する情報を提供します。画像のサイズ変更、回転、反転、切り抜きができます。複数の画像を 1 枚の画像に合成することも、自動での画像補正や、複数の形式間での画像の変換も可能です。

画像サービスは、アプリから直接画像データを受け入れることも、Blobstore や Google Cloud Storage から取得したデータを使用することもできます。

Python | Java | Go で利用できます。

MapReduce オープンソース

App Engine MapReduce は、データストアやタスクキューなどの App Engine services の上に構築されたオープンソース ライブラリです。アプリケーションにはライブラリを追加する必要があります。これにより、以下が提供されます。

  • 大規模分散データ処理のプログラミング モデル
  • 既存のコードベース内の自動並列化と分散
  • Google のスケールデータ ストレージへのアクセス
  • I/O スケジュール
  • フォールト トレランス、例外処理
  • スピードとコストを最適化するためのユーザーによる調整設定
  • ステータス モニタリング ツール

JavaPython 用 Github で利用できます。

アプリの設定と管理

App Identity

Application Identity サービス を使用すると、アプリケーションは、アプリ ID または URL のホスト名の部分を取得してそのアプリ自体を識別できます。アプリの ID は、URL またはメールアドレスを生成したり、ランタイムを決定する場合に使用できます。

多くの Google API は、リクエストのソースを識別するために、OAuth 2.0 のアサーションをサポートします。App Identity API は、リクエストのソースがアプリケーション自体であることを表明するために 使用できるトークンを作成します。このトークンを呼び出しの HTTP ヘッダーに設定して、呼び出し元アプリケーションを特定することができます。OAuth トークンは、Google システムに対してのみ動作します。ただし、基盤となる署名テクノロジーを使用してアプリケーションの ID をその他のサービスに表明できます。

Python | Java | PHP | Go で利用できます。

OAuth アルファ版

App Engine スタンダード環境の OAuth API は OAuth プロトコルを使用し、認証情報(ユーザー名やパスワード)を求めることなく、アクセスを要求するユーザーを認証する方法をアプリに提供します。

Python | Java | Go で利用できます。

Capabilities

Capabilities API を使用すると、サービスの可用性(画像サービスなど)やサービスの可能な操作(データストアの読み書き)を検出できます。使用する前に、可能な操作の可用性をテストすることで、アプリケーションのダウンタイムを削減できます。この API をサポートするサービスは、使用しているランタイムによって変わります。

Python | Java | Go で利用できます。

サービス

大きなアプリケーションを論理コンポーネントに分解するには、サービスを使用します。論理コンポーネントは、ステートフルなサービスを共有し、安全な方法で通信できます。顧客のリクエストを処理するアプリには、他のタスクを処理するための別のサービスが含まれる場合があります。

  • モバイル端末からの API リクエスト
  • 内部、管理系のリクエスト
  • 課金パイプラインやデータ分析などのバックエンド処理

サービスには異なるバージョン、パフォーマンス レベル、承認がある場合があります。実行中、特定のサービスには 1 つ以上のインスタンスがあります。インスタンスは静的または動的に管理できます。受信リクエストは、適切なサービスの既存または新規のインスタンスに転送されます。

スケーリング タイプは、インスタンスの作成を管理します。スケーリング タイプは 3 つあります。各タイプは、さまざまなインスタンス クラス、さまざまな量の CPU とメモリを提供します。

  • 手動スケーリングが設定されているサービスは、継続的に実行され、複雑な初期化を実行したり、時間経過に伴うメモリの状態に依存したりすることができます。
  • 基本スケーリングが設定されているサービスでは、アプリケーションがリクエストを受信したときにインスタンスを作成します。アプリがアイドル状態になると、そのインスタンスは拒否されます。基本スケーリングは、断続的な処理やユーザーのアクティビティに応じて動作する処理に適しています。 
  • 自動スケーリングは、App Engine の提供開始以来、使用されているスケーリング ポリシーです。これは、リクエスト率、レスポンス レイテンシ、その他のアプリケーション指標に基づいています。以前はユーザーが、Cloud Platform Console を使用して、アプリケーションのフロントエンド バージョンに対してのみ、自動スケーリング パラメータ(インスタンス クラス、アイドル インスタンス、保留中の待ち時間)を設定できました。現在では、この設定は、自動スケーリングがあるすべてのサービスの全バージョンに適用されます。

Python | Java | PHP | Go で利用できます。

マルチテナンシー

マルチテナンシーは、ソフトウェア アーキテクチャであり、そこでは、リモート サーバーで実行しているアプリケーションの 1 つのインスタンスは、多くのクライアント組織「テナント」にサービスを提供します。

Google App Engine スタンダード環境は、名前空間マネージャを含む Namespaces API を提供します。Namespaces API は、名前空間を有効にしている他の API にも組み込まれます。名前空間マネージャで名前空間を設定すると、名前空間を有効にしているすべての API はデフォルトでその名前空間を使用します。これにより、各テナントに一意の名前空間を指定して、テナント間でデータを分割できます。たとえば、Datastore API で名前空間を使用すると、すべてのユーザーが同じデータスキーマを共有できますが、異なるユーザーはそれぞれ異なるコンテンツを閲覧します。

Namespaces API は、Google Apps と統合され、Google Apps のドメインを現在の名前空間として使用できます。Google Apps により、所有しているどのドメインにもアプリをデプロイできるため、Google Apps アカウントにリンクされているすべてのドメインに一意の名前空間を簡単に設定できます。

Python | Java | Go で利用できます。

リモート

外部アプリケーションは、App Engine スタンダード環境のサービスに透過的にアクセスできます。たとえば、Remote API を使用して、ローカルマシンで実行しているアプリケーションから本番環境のデータストアにアクセスすることが可能です。

Python | Java | Go で利用できます。

SSL のカスタム ドメイン対応 

appspot.com アドレスの代わりに、カスタム ドメインから HTTPS と HTTP の両方を経由してアプリケーションを提供できます。

Python | Java | PHP | Go で利用できます。

トラフィック分割

アプリの機能を時間をかけて段階的に展開することができ、A/B テストを行うこともできます。トラフィック分割は、アプリの異なるバージョンに受信リクエストを分割して振り分けて行います。 

Python | Java | PHP | Go で利用できます。

ユーザー

App Engine スタンダード環境のアプリケーションは、Google アカウントや独自の Google Apps ドメインのアカウントを使用しているユーザーを認証できます。アプリケーションは、現在のユーザーがログイン済みかどうかを判断し、ログインまたはアプリが Google Accounts 認証を使用している場合、アカウントを新規作成するログインページにユーザーをリダイレクトすることができます。ユーザーがアプリケーションにログインしている間は、アプリはユーザーのメールアドレスにアクセスすることができます。アプリケーションは現在のユーザーが管理者かどうかを判断することもできるので、アプリケーションの管理者専用ページを簡単に実装できます。

Python | Java | PHP | Go で利用できます。

フィードバックを送信...