サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

App Engine の機能概要

このページでは App Engineの機能をまとめています。機能は全てのプログラム言語上もしくはプログラム言語のサブセット上で動作します。 機能の挙動は通常使用できる全てのランライムで全て同じですが、例外もあります。

全てのApp Engine の機能はステータスや可用性に従って以下のように分類されます。:

  • General Availability (GA) 機能は公に使用でき、App EngineのSLAとdeprecation policyの適用を受けます。 GA で実装された機能は安定版になります;この機能に対する変更は全て後方互換性があります。 特に断りがない限り、このページで説明されているApp Engine の機能は全て GAのものです。
  • Beta 機能は一般的に使用できるものです。 これらは今後のApp Engine のリリースでGA機能になる可能性もならない可能性もあり、この機能の実装が変更された場合に後方互換性はありません。
  • Alpha 機能は今後のApp Engine のリリースでBeta や GA機能になる可能性もならない可能性もあり、 この機能の実装が変更された場合に後方互換性はありません。 いくつかの Alpha 機能は一般に使用できまずが、それ以外については使用するためにアクセスを申請する必要があります。

ここで説明されている機能のいくつかはサードパティベンダーによって提供されており、それ以外はオープンソースプロジェクトです。 これらは third-partyOpen Sourceとマークされています。

このページでの機能説明は、それらが提供する一般機能にしたがって分類されています:

  1. プログラム言語とランタイム
  2. データストア, retrieval, 検索
  3. コミュニケーション
  4. プロセス管理
  5. Computation
  6. App 設定と管理


機能の目次

App Identity アプリケーションの識別子にアクセスし、OAuthを使ってその識別子を提示することができるのフレームワーク。
Blobstore 大きすぎてデータストアサービスに格納できない動画や画像ファイルのような大きいデータオブジェクトを、あなたのアプリケーションで扱えるようにします。
Capabilities 特定のサービスの停止時間や定期メンテナンスを検出し、それらを避けたりユーザーに通知したりできます。
Channel あなたのアプリケーションとJavaScript クライアントの間で永続的な接続を作成し、ポーリングをしなくてもリアルタイムでメッセージを送信することができます。
Datastore スケーラブルなデータストア、豊富なデータモデリングAPI、SQLに似たクエリ言語を持った、スキーマレスオブジェクトのデータストア。
Datastore Backup/Restore 管理コンソールを使って、あなたのアプリケーションのデータストアへデータをエクスポートしたり、逆にインポートしたりできます。
Dedicated Memcache あなたのアプリケーションに対して、排他的に割り当てられる固定キャッシュ要領を与えます。
Go Runtime Go プログラミング言語であなたのアプリケーションをビルドします。
Google Cloud Endpoints APIs for Androidや iOSやWebクライアント用のAPIを生成し、あなたのアプリのWebバックエンドの作成を簡単できます。
Google Cloud SQL Googleクラウド上で動作するリレーショナルデータベースを作成、設定、使用することができるフルマネージドウェブサービス。
Google Cloud Storage Client Library Google クラウドストレージに対して読み込みや書き込みを行い、内部エラー制御とリトライロジックを実装しています。
HRD Migration Tool Blobstore や 非推奨の マスタ/スレイブ データストア に保存されているデータを、 GA のHigh Replication Datastoreへ移行します。
Images 画像を操作、合成、修正します。画像形式を変換し、高さや色の周波数のような画像メタデータにアクセスします。
Java Runtime Java プログラミング言語であなたのアプリケーションをビルドします。
Logs プログラム上からアプリケーションにアクセスし、あなたのアプリケーションのログを要求します。
Mail 管理者およびGoogleアカウントのユーザーとしてEメールメッセージを送信し、様々なアドレスでメールを受信します。
MapReduce An optimized adaptation of the MapReduce computing model for efficient distributed computing over large data sets.
Memcache アプリケーションのパフォーマンスを向上させることができる、分散型インメモリデータキャッシュ。
Modules アプリケーションを、ステートフルなサービスを共有できて安全な方法で通信できる論理コンポーネントに分割します。
Multitenancy アプリケーションの一つのインスタンスから、簡単にデータを区分けして、多くのクライアント組織にサービスを提供します。
OAuth Google アカウントとOAuth APIを使い、任意のApp EngineアプリケーションをOAuth サービスプロバイダにすることができます。
OpenID 様々なウェブサービスにまたがってユーザーを認証するために使われるオープンテクノロジー。
Prospective Search アプリケーションで、リアルタイムデータストリームに対しての合致検索クエリを行えるようにするクエリサービス。
PHP Runtime PHPプログラミング言語でアプリケーションをビルドする。
Python Runtime Python プログラミング言語でアプリケーションをビルドする。
Remote 任意のアプリケーションからApp Engineサービスにアクセスする。 例えば、あなたのローカルマシン上で動作しているアプリからデータストア製品にアクセスする。
Scheduled Tasks 決められた時間、もしくは一定間隔で実行されるタスクを設定する。
Search プレーンテキスト、HTML、atom、数値、日付、地理的位置情報のような、構造化されたデータ上でGoogleのような検索を実行します。
SendGrid SendGridのライブラリを使用してあなたのアプリからメールを送信し、開封・クリック・退会・スパム報告・その他を見ることができます。
Sockets プログラム言語固有の内臓ライブラリを使用して、送信パケットをサポートします。
SSL for Custom Domains appspot.comのアドレスではなく、カスタムドメインからHTTPS とHTTP でアプリケーションを提供します。
Task Queue 時間を置いて実行される小さな独立タスクを使用して、アプリケーションがユーザーのリクエスト外の作業をできるようにします。
Task Queue REST API RESTを使ったApp Engineタスクキューの使用を有効にします。
Task Queue Tagging Leases up to a specified number of tasks with the same tag from the queue for a specified period of time.
Traffic Splitting 届いたリクエストを別バージョンのアプリに振り分け、A/Bテストを行って新しい機能を段階的にロールアウトできます。
Twilio あなたのアプリケーションで、電話の発着信、テキストメッセージの送受信、電話やタブレットやブラウザからのVoIP 通話が行えるようにします。
URL Fetch Uses Googleのネットワークインフラを使い、ウェブ上のURLに対してHTTPやHTTPSリクエストを効果的に発行します。
Users アプリケーションが、ユーザーのGoogle アカウントや OpenIDにログインして、そのユーザーに対してユニーク識別子を使って対処をできるようにします。
XMPP アプリケーションで、XMPP互換のチャットメッセージサービスとのメッセージ送受信をできるようにします。


プログラム言語とランタイム

Java ランタイム

App Engine は安全なサンドボックス環境でJava 7 JVMを使ってJava ウェブアプリケーションを実行します。 この環境では、 App Engine はあなたのアプリのサーブレットを呼び出してリクエストの制御と応答の準備を行います。

App Engine ではウェブアプリケーションに標準の Java サーブレットを使用します。 あなたのアプリのサーブレットクラス、JavaServer ページ(JSP)、静的ファイル、データファイルに、 デプロイメントディスクリプタ(web.xml ファイル) とその他設定ファイルを付けて、標準の WARディレクトリ構造で配置してください。 App Engine はデプロイメントディスクリプタにしたがってサーブレットを呼び出してリクエストを作成します。

安全なサンドボックス環境では、サービスとセキュリティのためにあなたのアプリケーションは隔離されます。 アプリは、他のアプリのパフォーマンスやスケーラビリティに影響しない動作のみを実行できるようにしてください。 例えば、アプリはローカルファイルシステムへのデータの書き込みやネットワーク接続の作成といったいくつかの場合において、スレッドを作成することができません。 また、アプリは JNI やその他ネイティブコードを使うことができません。 JVM は、サンドボックスの制限の範囲内で動作するJavaバイトコードは実行することができます。

Eclipse 用のGoogle プラグインを使うと、新たなプロジェクトウィザードとApp EngineプロジェクトのIDE デバッグ設定が追加されます。 Java用の App Engine では、Google ウェブツールキット (GWT)を使って特に簡単にワールドクラスのウェブアプリケーションを開発、配置できます。 Eclipse プラグインには、 App Engine と GWTのSDKが付属しています。 NetBeans やIntelliJ用のサードパーティ製プラグインが使用できます。

Java 開発者ガイド   [トップへ戻る]

Python ランタイム

App Engine は安全なサンドボックス環境でpre-loaded Python インタプリタを使って Python アプリケーションコードを実行します。 あなたのアプリはこの環境とやり取りすることによって、ウェブリクエストを受信し、処理を実行し、応答を送信します。

Python ウェブアプリはWSGIプロトコルを使って App Engine ウェブサーバとやり取りするので、アプリはWSGI互換のウェブプリケーションフレームワークを使用することができます。 App Engine にはwebapp2と呼ばれるシンプルなウェブアプリケーションフレームワークが含まれており、簡単に始められます。 大規模アプリケーションの場合、Djangoのように安定したサードパーティ製フレームワークを使用するのが良いでしょう。

このPython インタプリタは、Python 標準ライブラリと同様に、アプリケーションにインクルードしたPython モジュールを含むPythonコードを実行することができます。 このインタプリタはCコードを含むPythonモジュールを読み込むことができません; "純正の" Python環境です。

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

Python 開発者ガイド  [トップへ戻る]

PHP ランタイム ベータ

PHP ランタイムはサンドボックスのPHP 5.4環境であなたのアプリケーションを実行します。 あなたのアプリはこの環境とやり取りすることによって、ウェブリクエストを受信し、処理を実行し、応答を送信します。 このランタイムは多くの標準PHP エクステンションをサポートしています。 Cで書かれたエクステンションはアップロードできません。

App Engine は独自のウェブサーバを実行します。このウェブサーバはコードを記載したapp.yamlファイルをアップロードして設定することができます。 このファイルは、あなたのアプリケーション届いたリクエストがどのようにPHPスクリプトに振り分けられるかを指定します。

安全なサンドボックス環境では、信頼性と拡張性とセキュリティのためにあなたのアプリケーションは隔離されます。 そのため、少数のPHPファンクションはApp Engineでは使用できず、それ以外のファンクションは間違った使い方をすると例外が発生します。 例えば、アプリはローカルファイルシステムへのデータの書き込みができません。 その代わり、アプリはGoogle によって提供されるスケーラブルサービスを使用してデータの保存・処理とインターネット経由の通信ができます。

PHP ランタイムでは、ビルドインの Google Cloud Storage stream wrapperが使用でき、 多くの標準PHP ファイルシステムファンクションを使ってGoogleクラウドストレージにアクセスできます。

PHP 開発者ガイド  [トップへ戻る]

Go ランタイムベータ

App Engine では Go バージョン1.4が動作しています。 このSDK では標準のGo httpパッケージに似たインタフェースが使用できます。; Go でApp Engine アプリを記述するのは、スタンドアローンのGo ウェブサーバを記述するのと似ています。

このSDK には Go コンパイラと標準ライブラリが含まれています。; 依存関係が加わることはありません。 Go ランタイムはサンドボックス環境で実行されるので、標準ライブラリのファンクションのいくつかはエラーを返して使用できません。 例えば、アプリがローカルファイルシステムに書き込もうとしたり、ネットワーク接続の作成使用とした場合は os.ErrPermission が発生します。 データの保存やインタネット経由の通信をするには、App Engineのスケーラブルサービスを使わなければなりません。

あなたが自分でGo コンパイラを呼び出す必要はありません。 あなたのアプリは新しくコードをアップロードするとサーバ側で自動的にリビルドされます。 ローカル開発サーバを実行している場合は、ソースを変更した時にSDK が自動的にリコンパイルしますon-the-fly。

App Engineの Go ランタイム環境は goroutineをサポートしていますが、 それらはシングルスレッドでスケジュールされています。 Goroutineは平行してではなく同時に実行できます。アプリケーションのインスタンスは複数のリクエストを制御できます。 例えば、一つのリクエストがデータストアAPIの呼び出しを待っている場合、インスタンスはその間に別のリクエストを処理することができます。

Go 開発者ガイド  [トップへ戻る]

管理VM ベータ

管理VNホスティング管理 では、App Engineアプリケーションを設定の変更が可能なCompute Engine 仮想マシン(VMs)上で実行することができます。 この VMベースのホスティング環境は柔軟性がより高く、CPUとメモリのオプションがより多く使用できます。 管理VMs上で動作するアプリケーションはJavaやPythonのランタイムの制限を受けず、全てのthe Compute Engine machine typesにアクセスできます。 サードパーティ製のライブラリやフレームワークを自分のアプリに追加することもできます。

管理 VMの概要   [トップへ戻る]



データストア, retrieval, 検索

データストア

App Engine のデータストアは、アプリケーションに堅牢で拡張可能なストレージを提供する、スキーマレスな NoSQL データストアです。以下の機能を備えています。:

  • 計画停止期間はありません
  • アトミックトランザクション
  • 読み込みと書き込みの高可用性
  • 読み込みクエリと ancestor クエリの強い一貫性
  • その他全てのクエリの結果一貫性

データストアはエンティティと呼ばれるデータオブジェクトを保持しています。 エンティティは一つ以上のプロパティを持ち、プロパティにはサポートされているデータ型(文字列、数値、他エンティティへの参照、のうちいずれか)の値が名前を付けて設定されています。 各エンティティは種類とキーによって識別されます。種類とはエンティティをクエリの目的ごとに分類分けするもので、キーとはその種類内でエンティティを一意に識別するためのものです。 データストアは、一つのトランザクションで複数の処理を実行できます。 定義により、全ての処理が成功しない限りトランザクションは成功しません; 処理のいずれかが失敗した場合トランザクションは自動的にロールバックします。 これは複数のユーザーが同一のデータに大して同時にアクセスや操作を行う分散型ウェブアプリケーションの場合に特に有効です。

Python | Java | Goで使用可能   [トップへ戻る]

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

管理コンソールのデータストア管理タブを使って選択したエンティティをバックアップしたり、バックアップからエンティティを復元したりできます。 バックアップにはBlobstore かGoogle クラウドストレージを使用できます。

Python | Java | Goで使用可能   [トップへ戻る]

HRD 移行ツール

管理コンソールのアプリケーション設定タブにあるこの移行ツールを使って、あなたのアプリケーションのデータを非推奨のマスタ/スレイブ データストアから 高レプリケーションデータストア(HRD)へ移行して下さい。 必ずアプリケーションを複製した上で、データを移行するようにしてください。 最適化された移行のためには、アプリケーションにいくつか修正をする必要があるかもしれません。

Python | Java | Goで使用可能。   [トップへ戻る]

Google クラウド SQL

Google クラウド SQL はGoogleのクラウド上で動作する MySQL データベースです。 これはMySQLの全ての特性と機能を備えており、以下の通りいくつか追加された機能とサポートしていない機能があります。 Google クラウドSQL は簡単に使用でき、ソフトウェアのインストールや管理を必要とせず、小規模から中規模のアプリケーションに最適です。

Google クラウドSQL は以下の機能を備えています:

  • クラウド上であなたの MySQL データベースをホストする機能
  • 高い可用性と耐久性のために、全てのデータを複数の場所に複製
  • 課金オプションを選択可能:
  • 使用毎オプションでは、あなたがデータにアクセスした時間だけ支払いが発生
  • 頻繁にアクセスする場合は、パッケージオプションでコストを抑制できます
  • Google クラウドSQL インスタンスは最大で 16GB の RAM と 500GB のデータストレージを保持可能
  • Google 開発者コンソール上でインスタンスの作成と管理を行う
  • データはEUかUSのデータセンターに保存されます。
  • Cloud SQLの顧客データは、Googleの内部ネットワーク上に入った時とデータベーステーブルと一時ファイルに保存された時に暗号化されます。(バックアップの暗号化については近日実装予定)
  • 同期もしくは非同期のジオレプリケーション
  • mysqldumpを使ったデータベースのインポートやエクスポート
  • Java およびPython との互換性
  • MySQL のワイヤプロトコルと MySQL のコネクタをサポート
  • セキュアソケットレイヤ (SSL) プロトコルでの接続をサポート

Python | Java | PHP | Goで使用可能   [トップへ戻る]

Blobstore

Blobstore API を使うと、アプリケーションは blobsと呼ばれるデータオブジェクトを扱うことができます。 これはデータストアサービスで使用できるオブジェクトよりも大きなサイズです。 Blobs は、動画や画像ファイルのような大きなファイルを扱う場合や、ユーザーに大きなデータファイルをアップロードさせる場合に便利です。 Blobs はHTTPリクエストでファイルをアップロードすることによって作成されます。 通常あなたのアプリケーションでは、ファイルアップロードフィールドが付いたフォームをユーザーに提示することでこれを行います。 このフォームが送信された時、 Blobstore はファイルコンテンツから blob を作成し、 blob キーと呼ばれるblobへの opaque referenceを返します。このblob キーは後でblobの提供に使用できます。 アプリケーションはユーザーのリクエストに対する応答内で完全なblob 値を提供することができ、 それはストリーミングファイルのようなインタフェースを使用することで直接読み取ることができます。

Python | Java | Goで使用可能   [トップへ戻る]

Google クラウドストレージクライアントライブラリ

Google クラウドストレージは、大きなファイルを保存したり処理したりする場合に便利です。 さらに、 Cloud ストレージではアクセスコントロールリスト(ACLs)の使用、アップロードが中断した場合にそれを再開させる機能、他にも多くの機能があります。 (Google クラウドストレージクライアントライブラリはこの自動再開機能を使い、あなたが確実にデータをGoogle クラウドストレージへ送信できるようにします。)

Google クラウドストレージライブラリを使用することで、あなたのアプリケーションはGoogle クラウドストレージのbuckets からファイルを読み込んだり、ファイルを書き込んだりできます。 このライブラリは Google クラウドストレージに対しての読み込みや書き込みサポートしており、内部エラー制御とリトライロジックを実装しています。 そのため、そのためのコードをわざわざ記述する必要がありません。 さらに事前読み込み機能の付いた読み込みバッファも提供しており、あなたのアプリがさらに効果的に動作します。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

Search APIは構造化されたデータ(テキストやHTML文字、atoms、日付、位置情報、数値)を含むドキュメントをインデックス化するためのモデルを提供します。 ドキュメントとインデックスは、検索処理用に最適化された永続保存領域に分けて保存されます。 あなたはインデックスを検索し、検索結果を整理して提示することができます。 このAPIは文字列フィールドのテキスト部分一致をサポートとしています。 検索APIでは任意の数のドキュメントをインデックス化できますが、一度の検索で取得できるのは10000個の合致ドキュメントまでです。 非常に多くの結果を取得する必要があるアプリケーションには、 App エンジンデータストアが適してきるかもしれません。

Python | Java | Goで使用可能   [トップへ戻る]

Prospective Search アルファ

Prospective search は、あなたのアプリケーションでリアルタイムデータストリームに対して検索クエリを実行できるようにするクエリサービスです。 For every document presented, prospective search returns the ID of every registered query that matches the document.

Prospective search allows you to register a large set of queries and simultaneously match the queries against a single document. これは、ストリーミングデータ処理するアプリケーションの場合に特に有効です。 例えば:

ソーシャルネットワーキングサービス上の全ての更新やチャットルームで高頻度に書き込めるコメントに対して検索を行うアプリケーションなど。 通知、監視、フィルタリングサービスを提供するデータソースを処理するアプリケーション。 prospective searchを理解するには,従来の検索モデルと比較してみると良いでしょう。 Google検索のような従来型の検索アプリケーションにおいては、検索されたデータのインデックスを構築したりアクセスしたりしなければなりません。 各クエリは潜在的に大きなインデックスに大して分けて実行されなければならないため、 データを事前にインデックス化する必要があることで、リアルタイムのアプリケーションを作成するのが難しく高コストになっています。

Google Alertsのような prospective 検索のアプリケーションにおいては、 検索クエリを登録して、新しいドキュメントに対してリアルタイムにそれを合致判定します as the documents are inserted into your application。 これを使いライブデータの発生を効果的に監視できるアプリケーションを作成できます。 作成済みのインデックス化されたデータを使うことに限定されません。

アプリケーションでは、両方を組み合わせてベストな結果を得るために、しばしば従来型の検索とprospective 検索を両方使用します。 例えば、アプリケーションは従来型検索を使って過去にインデックス化されたドキュメントの合致を調べながら、prospective 検索を使って届いてすぐのドキュメントの合致を調べることができます。

Python | Javaで使用可能   [トップへ戻る]

メモリキャッシュ

App Engine ではメモリキャッシュサービスのクラスを二つサポートしています:

  • 共有メモリキャッシュは無料で、App Engine アプリケーションの既定です。共有メモリキャッシュはベストエフォートでキャッシュ容量を提供し、容量はApp Engineで動作している全てのアプリケーションの使用量に依存します。
  • 専用メモリキャッシュは、あなたのアプリケーションに排他的に割り当てられた固定容量が提供されます。これはキャッシュサイズの一時間あたりのGBで料金が決まります。 Having control over cache size means your app can perform more predictably and with fewer accesses to more costly durable storage. (専用メモリキャッシュはHRDアプリでのみ使用可能なので注意してください。)

共有、専用いずれの場合も、メモリキャッシュは永続的なストレージではありません。キャッシュのLRU ポリシーに従い、キャッシュが一杯になるとキーが解放される可能性があります。 キャッシュ設定の変更やデータセンターのメンテナンス作業によって、キャッシュの一部または全部が消えることがあります。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

専用メモリキャッシュ

専用メモリキャッシュは、あなたのアプリケーションに排他的に割り当てられた固定容量が提供されます。これはキャッシュサイズの一時間あたりのGBで料金が決まります。 キャッシュサイズを制御できるということは、アプリをより見積もり通りに実行でき、コストのかかるストレージへのアクセスを減らせるということです。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

ログ

App Engine では二種類のログを保持しています。:

  • アプリケーションログは、タイムスタンプとログレベルの付いた任意のメッセージを保持しています。
  • リクエストログは、あなたのアプリで処理した各リクエストのエントリにアプリID、HTTPバージョン、などの情報を付けて保持しています。 各リクエストログには、このリクエストに関連するアプリケーションログの一覧が含まれています。

Logs API を使ってあなたのアプリケーションのログにアクセスすることができます。また管理コンソールからログにアクセスすることもできます。

Python | Java | PHP | Goで使用可能   [トップへ戻る]



通信

Channel

Channel APIはアプリケーションとあなたとの間で永続的な接続を作成し、ポーリングをしなくてもリアルタイムでメッセージを送信することができます。

このAPIを使用するには、あなたのウェブページに JavaScript クライアントを追加しなければなりません。そのクライアントは以下のタスクを実行します:

  • サーバからチャンネルの専用トークンを取得した後、そのチャンネルに接続します。
  • チャンネル上で他クライアントの更新通知を待ち受け、正しいデータを使用します (例えば、インタフェースを更新するなど。)
  • 他のクライアントに渡すため、サーバへ更新メッセージを送信する

サーバとして動作するアプリケーションは、以下を守る必要があります:

  • 個々のJavaScript クライアントごとに専用のチャンネルを作成する
  • 各JavaScript クライアントに専用のトークンを作成して送信し、クライアントでチャンネルへの接続と受信待ちをできるようにする
  • HTTP リクエストを通してクライアントから更新メッセージを受け取る
  • クライアントのチャンネルを通してクライアントへ更新メッセージを送信する
  • 必要に応じて、クライアントの接続状態を管理する。

Python | Java | Goで使用可能   [トップへ戻る]

Google クラウドエンドポイント

Google Cloud Endpoints consists of tools, libraries and capabilities that allow you to generate APIs and client libraries from an App Engine application, referred to as an API backend, to simplify client access to data from other applications. エンドポイントによって、ウェブクライアントとAndroidやAppleのiOSのようなモバイルクライアント向けのウェブバックエンドを簡単に作成できます。

モバイル開発者にとっては、エンドポイントを使うことで簡単には共有ウェブバックエンドを開発でき、またOAuth 2.0認証のような重要なインフラを使用できます。 これにより本来必要だった多くの作業を省くことができます。 さらに、API バックエンドは App Engine appなので、モバイル開発者はデータストアや Google クラウドストレージやメールや URL Fetchや Task キューやその他諸々といった、 App Engine上で使用できる全てのサービスと機能を使用することができます。そして最後に、バックエンドに App Engine を使用することで、開発者はシステム管理作業や負荷分散やスケーリングやサーバメンテナンスから解放されます。

エンドポイントを使わずにApp Engineバックエンド向けのモバイルクライアントを作成することは不可能です。 しかし、 App Engineとの通信を制御するラッパーを記述する必要がなくなるので、エンドポイントを使えばこの過程がが簡単になります。 エンドポイントから生成されたクライアントライブラリを使用することで、簡単に直接API呼び出しを行えます。

Python | Javaで使用可能   [トップへ戻る]

メール

App Engine アプリケーションはアプリの管理者およびGoogle アカウントユーザーとしてEメールを送信することができます。 アプリは様々なアドレスでEメールを受信できます。 アプリはメールサービスを使ってメッセージを送信し、App Engineによって初期化されてアプリに送られたHTTPリクエスト形式のメッセージを受信します。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

SendGrid サードパーティ

SendGrid を使って Google App EngineのEメールを強化できます。 SendGrid を使うことでメール配信能力が向上し、あなたのアプリが送信するメールで起こっていることを可視化できます。 SendGridのインタフェースかAPIを通して、開封・クリック・退会・スパム報告・その他の統計を見ることができます。

Python | Java | PHPで使用可能   [トップへ戻る]

Sockets ベータ

App Engine では、特別なApp Engineライブラリのインポートや特別な App Engine コードの追加をしなくても、全てのランタイムで通常の送信ソケットをサポートしています。 しかし、 ソケットを使用する時には、いくつかの制限と注意すべき動作があります。詳細はランタイムごとに異なります。詳細情報についてはランタイムのドキュメントを参照してください。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

Twilio サードパーティ

Twilio はビジネスコミュニケーション機能を強化し、開発者が音声・VoIP・メッセージ処理をアプリケーションへ埋め込めるようにします。 Twilio では必要な全てのインフラをクラウドベースのグローバル環境で仮想化し、Twilio コミュニケーションプラットフォームAPIを通じてそれを提供します。 アプリケーションは簡単に構築や拡張できます。使った分だけ支払う柔軟性とクラウドの信頼性によってもたらされる利便性を満喫してしてください。

Twilio Voice を使えば、あなたのアプリケーションは電話の発信や着信ができるようになります。 Twilio SMS を使えば、あなたのアプリケーションはテキストメッセージの送受信ができるようになります。 Twilio Client は電話やタブレットやブラウザからVoIP通話を行え、WebRTCをサポートしています。

Python | Java | PHPで使用可能   [トップへ戻る]

URL Fetch

App Engine アプリケーションをURLを取得することで他のアプリケーションと通信したり、ウェブ上の他のリソースにアクセスすることができます。 アプリは URL Fetch サービスを使って HTTPリクエストと HTTPS リクエストを発行し、応答を受け取ることができます。 この URL Fetch サービスは、効率とスケーリングのために Googleのネットワークインフラを使用しています。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

XMPP

App Engine アプリケーションは、Google トークのようなXMPP互換のチャットメッセージサービスとのメッセージ送受信ができます。 アプリでは、チャットメッセージの送受信、チャット招待の送信、ユーザーのチャット出席状況の要求、チャット状態の提示を行うことができます。 届いた XMPP メッセージは、ウェブリクエストと同様にリクエストハンラで処理されます。

考えられるチャットメッセージ使用方法として、チャット参加の自動化 ("チャットボット")、チャット通知、サービスへのチャットインタフェース追加があります。 XMPP サーバ (Google トークのような)と接続しているリッチクライアントでは、 XMPP を使って App Engine アプリケーションとリアルタイムにやり取りすることができます。このappによって初期化されたメッセージの受信もできます。 (Google トークを使っているクライアントではXMPP 接続をするためにユーザーのパスワードを使わなければならず、 Google アカウントクッキーは使用できないので注意してください。)

現在、アプリはグループチャットに参加することができません。アプリは"chat" と"normal"のタイプのメッセージのみ受信できます。アプリはRFC 3921で定義されたタイプのメッセージを送信できます。

Python | Java | Goで使用可能   [トップへ戻る]



プロセス管理

タスクキュー

タスクキュー APIを使用することで、アプリケーションはユーザーからの要求で開始されたユーザーリクエスト以外の作業を実行できます。 アプリでバックグラウンドでの作業を行う必要がある場合、タスクキュー API を使って作業をタスクと呼ばれる小さくまとめたユニットごとにまとめることができます。 アプリはタスクを後で実行するためにタスクキューに追加します。

App Engineでは二つの異なるキュー設定が使用できます:

  • プッシュキューは、キュー定義に設定された処理速度に基づいてタスクを処理します。 App Engineではキュー設定や処理量に合わせて自動的に処理能力を増減させ、処理後にタスクを削除します。プッシュキューが既定となっています。
  • Pull queues allow a task consumer (either your application or code external to your application) to lease tasks at a specific time for processing within a specific timeframe. Pull キューではタスクが処理される時により詳細な制御を行うことができ、またタスクキューREST APIを使ってApp-Engine以外のコードをアプリケーションに組み込むこともできます。 プルキューを使う場合は、アプリケーションで処理量に基づいてインスタンスの増減を制御し、処理後にはタスクを削除する必要があります。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

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

REST インタフェースが使用でき、ウェブクライアントアプリからアプリケーションのタスクキューとタスクを管理できます。

Available in Python | Java | PHP and Go also implement the API as defined for Python   [トップへ戻る]

Task Queue Tagging Beta

The tagging API lets pull queue consumers lease a specified number of tasks with the same tag from a pull queue.

Available in Python | Java | Go   [Back to top]

スケジュールタスク

App Engine Cron サービスを使うことで、決められた時間、もしくは一定間隔で実行されるスケジュールタスクを設定できます。 これらのタスクは、一般的にはcron ジョブとして知られています。これらの cron ジョブはApp Engine Cron サービスによって自動的に実行されます。 例えば、これを使って毎日報告メールを送信し、10分ごとにキャッシュデータを更新し、1時間ごとにサマリーデータを更新することができます。

cron ジョブは指定された時間に HTTP GET リクエストを使ってURLを呼び出します。cronに呼び出された HTTP リクエストは最大で10分間実行できますが、他のHTTPリクエストと同様に制限を受けます。

無料アプリケーションは最大20個のスケジュールタスクを持つことができます。有料アプリケーションは最大100個のスケジュールタスクを持つことができます。

Python | Java | PHP | Goで使用可能   [トップへ戻る]



Computation

Images

このImages API では画像データの表示や操作が行えます。 このAPIでは、画像フォーマット、横幅、高さ、カラー値のヒストグラムといった画像に関する情報が取得できます。 画像のサイズ変更、回転、反転、切り抜きができます。また、複数の画像を一つに合成したり、画質を自動的に上げたり、ファーマット間の変換を行う機能も持っています。

このImages サービスではアプリから画像データを直接受けることも、 Blobstore や Google クラウドストレージから受け取ったデータを使用することもできます。

Python | Java | Goで使用可能   [トップへ戻る]

MapReduce Open Source

App Engine MapReduce は 、データストアとタスクキューを含むApp Engine サービス上に構築されたオープンソースライブラリです。 使用にはアプリケーションにライブラリをインクルードする必要があり、以下の機能を提供します。:

  • 大規模分散データ処理用のプログラミングモデル
  • Automatic parallelization and distribution within your existing codebase
  • Google-スケールデータストレージへのアクセス
  • I/O スケジューリング
  • フォールトトレランス、例外処理
  • 速度とコストを最適化するために、ユーザーで設定を調整可能
  • 状態監視用ツール

Java 用と Python用のGithubで使用可能   [トップへ戻る]



アプリの設定と管理

App Identity

アプリケーション識別サービスを使用することで、 アプリIDやURLのホスト部分を受け取ることでアプリケーションはそれが自分自身かを識別することができます。 アプリケーション識別を使ってURLやEメールアドレスを生成したり、 some run-time decisionを作成したりできます。

多くのGoogle APIはリクエスト元を識別するために OAuth assertions をサポートしています。 アプリ識別 API は、リクエスト元がアプリケーション自体であることを提示するために使用されるトークンを作成できます。 このトークンは、呼び出し元アプリケーションを識別するために呼び出しのHTTPヘッダに含めることができます。 この OAuth トークンは Google の提供するシステムでのみ動作します。 しかし、このAPIの基礎部分の署名技術を使って他のシステムに対してアプリケーションの身元を提示することができます。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

OAuth アルファ
: Google アカウントと OAuth APIを使用して、 App Engine アプリケーションをOAuth サービスプロバイダにできます。 Google アカウントが OAuth プロトコルの詳細を制御します。この app は、サービスがリクエストされている間にOAuth APIを使ってユーザーの認証情報にアクセスします, just as it would with the Users API if the user were accessing the app directly.

Available in Python | Java | PHP | Go   [Back to top]

OpenID アルファ

OpenID は様々なウェブサービスにまたがってユーザーを認証するために使われるオープンテクノロジーです。 ユーザーはOpenID providerとして活動するサービス上でアカウントを作成します。 providerにログインした時、ユーザーは他サービスへのログインに使用できるOpenID identifierを取得します。 この他サービスはOpenID relying partiesと呼ばれます。

App Engine アプリをOpenID relying partyとして設定し、ログインに OpenIDを使えるようにすることができます。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

Capabilities

Capabilities API を使って、サービス(Images サービスなど)もしくはサービスの特定の機能(データストアの書き込みや読み込みなど)の可用性を調べます。 機能を使用する前にその可用性をテストすることで、アプリケーションの停止時間を減らすことができます。 このAPIをサポートしているサービスは、あなたが使用しているランタイムごとに異なります。

Python | Java | Goで使用可能   [トップに戻る]

Modules

モジュールは、大規模なアプリケーションを、ステートフルなサービスの共有と安全な方法での通信が可能なロジカルコンポーネントに分割するために使用されます。 ユーザーのリクエストを制御するアプリは、以下のような他のタスクを制御する独立モジュールが含まれていることがあります:

  • モバイル端末からのAPI リクエスト
  • 内部で使われる管理用リクエスト
  • billing pipelines やデータ分析のようなバックエンド処理

モジュールは異なるバージョン、パフォーマンスレベル、承認を持つことができます。 実行中に、特定のモジュールは一つ上のインスタンスを持ち、インスタンスは静的もしくは動的に管理されます。 届いたリクエストは、適切なモジュールの既存もしくは新規インスタンスに振り分けられます。

スケーリングの種類によって、インスタンス作成の挙動が変わります。 スケーリングタイプは三つあります。 各タイプごとに様々なインスタンスクラスが使用でき、CPUやメモリの性能が異なります:

  • 手動スケーリングのモジュールは runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
  • ベーシックスケーリングのモジュールはアプリケーションがリクエストを受けた時にインスタンスを作成します。 アプリがアイドル状態になった時にインスタンスは停止します。ベーシックスケーリングは、断続的に動作するアプリやユーザーの操作で動作するアプリに最適です。
  • 自動スケーリングは、App Engine の開始当初から使われてきたスケーリング設定です。これはリクエスト速度と応答待ち時間とその他アプリケーションメトリックに基づいています。 これまで、ユーザーは管理コンソールを使って、アプリケーションのフロントエンドバージョンにのみ自動スケーリングパラメータ (インスタンスクラス、アイドルインタンス、保留待ち時間)を設定できました。現在これらの設定は自動スケーリングを持つ全てのモジュールの全てのバージョンに適用できます。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

Multitenancy

Multitenancy is a software architecture in which one instance of an application, running on a remote server, serves many client organizations, or tenants.

Google App Engine ではネームスペースマネージャーを持つネームスペースAPIを使用できます。 また、ネームスペースAPI は他のネームスペース対応APIに組み込まれています。 ネームスペースマネージャー内にネームスペースを設定した時、既定では全てのネームスペース対応APIはそのネームスペースを使用します。 これにより、各tenantごとに専用のネームスペースを設定することでtenants 間のデータを分割することができます。 例えば、データストアAPIでネームスペースを使用すると、全てのユーザーは同じデータスキームを共有できますが、ユーザーごとに表示されるコンテンツは異なります。

ネームスペース API は Google Appsに組み込まれており、あなたのGoogle Apps ドメインをカレントネームスペースとして使用できます。 Google Appsではあなたのアプリを独自ドメインに配置できるので、 Google Apps アカウントにリンクされた全てのドメインに専用のネームスペースを簡単に設定できます。

Python | Java | Goで使用可能   [トップへ戻る]

Remote

外部アプリケーションが、App Engineサービス対して透過的にアクセスできるようになります。 例えばRemote APIを使用して、あなたのローカルマシンで実行しているアプリからデータストア製品にアクセスすることができます。

Python | Java | Goで使用可能   [トップへ戻る]

カスタムドメイン用SSL

アプリケーションをappspot.comアドレスではなくカスタムドメインで、HTTPS のHTTPの両方でサービス提供できるようにします。

Python | Java | PHP | Goで使用可能   [トップへ戻る]

トラフィック分割

長い時間をかけてゆっくりとアプリの機能をロールアウトし、A/B テストをできるようにします。 トラフィック分割は、届いたリクエストをあなたのアプリの異なるバージョンに分割することで動作します。

Python | Java | PHP | Go で使用可能  [トップへ戻る]

Users

App Engine アプリケーションでは、三つの方法のうちから一つを選んでユーザーを認証することができます: Google アカウント、もしくはあなたが所有するGoogle Apps ドメインのアカウント、もしくは OpenID 識別子。 (OpenIDのサポートはまたベータ版なので注意してください。) アプリケーションは現在のユーザーが既にログインしているかを判別したり、ユーザーをログインさせるために適切なページへリダイレクトすることができます。 あなたのアプリがGoogle アカウント認証を使用している場合は、ユーザーに新しいアカウントを作成させるためにリダイレクトすることもできます。 ユーザーがアプリケーションにログインしている間は、アプリはユーザーのEメールアドレス(もしくは、あなたのアプリでOpenIDを使用している場合はOpenID識別子)にアクセスできます。 またアプリは現在のユーザーが管理者かどうかも判別でき、アプリに管理専用エリアを簡単に実装できます。

Python | Java | PHP | Goで使用可能   [トップへ戻る]