2014年1月29日水曜日

【GAE】インスタンス時間2

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

只今、クラウド基盤「Google App Engine(以下、GAE)」の連載しています。

今回も前回に続いて、「インスタンス時間」について理解を含めていきたいと思います。

おさらい

まずは今までのおさらいから。

GAEは「従量課金制」ですので、消費するほどにお金が多く発生します。

①アクセスが増える。

②インスタンスが立ち上がる。

③インスタンス時間を消費する。

この3段ロジックです。

例えば、アクセス者が1人だった場合、インスタンスは1コしか立ち上がりません。

最初にリクエストが来て、この時にインスタンスが立ち上がると当時に、一定時間かけて処理を行います。
処理が終了した後、その瞬間にインスタンスが即死するわけではなくて、しばらくは「アイドル状態」で待機します。
以下みたいな状態のイメージです。
赤色の部分が処理中、白色の部分がアイドル中のイメージです。


アクセス数が少ないと「インスタンスはアイドル状態で立ち上がっている」という状況になりますので、アイドル時間中はインスタンスを無駄遣いしていることになりますね。
出来ればこの無駄は省きたい所ですが「アイドル状態で待ち構えているから、リクエストが来た時に高速に反応できる」という側面もあるのです。多少の無駄遣いは仕方がありません。
インスタンスが死んでいる時にアクセスが来ると、「スピンアップ」という重いインスタンス起動処理が走ります。アイドル状態からの起動と、死んでいる状態からの起動ではスピードが全然違います。
(「スピンアップ問題」はGAEの数ある制限の中でも頭を悩ませる超重要問題なのですが、それについては今後に記事にしたいと思います。)

とにかく、アクセスが同時に1人だった場合は、こんなイメージです。

次に、これが2人になると、以下のようになります。


ご覧のように、少し待って「1インスタンスで2人捌く」という結果になります。

「1人なら1インスタンス。2人なら2インスタンス。100人なら100インスタンスだ!!」

なんて効率の悪いことにはなりません。
少ない人数でしたら1インスタンスで捌いてくれます。

ただし、待ちが発生しますけどね。

同時にアクセスが来たら、片方にはもう一方の処理が終わるまで待って貰います。
その待ち時間を「Pending Latency」と言います。

  • 待ち時間が短いうちは1インスタンスで捌く。
  • 「待ち時間長過ぎ!! 遅えぇぇぇぇぇッ!!」となったら新規インスタンス起動

こういう関係なのですよ。
スーパーのレジに人が溜まってきたら、新しい人が別のレジに入って捌くのと似たようなものです。

アクセス殺到時のイメージが以下の図です。


最初のうちは1インスタンスで頑張ってくれていますが、アクセスが殺到したら、アクセス者を待たせないようにもう1コインスタンスを起動して、そっちにもアクセスを振り分けるという意味です。

まとめますと、

  • 1リクエストの処理速度
  • リクエスト数

GAEのインスタンス時間は、この2つの要素の直撃を受けます。
リクエスト数を減らすことは出来ませんので、「1リクエストの処理速度」を出来る限り高速化すること。
この辺りがGAEのコツです。

「動けば良い」などというゴミロジックは、GAEでは厳禁!!
インスタンス消費時間という形で、明白にお金という形で報復を受けます。
高速ロジックこそがGAEの正義です。

ロジックを組むプログラマーの腕前が会社の経営を左右するかもしれないのです。

塩梅をつける

と言っても、実は「設定」でこのインスタンス消費時間を下げることも可能なのです。

上記に「アイドル状態」「待ち時間」という二つのキーワードが登場していますが、これらを手動で塩梅をつけることでインスタンス消費時間を下げることが出来ます。

アイドルインスタンス調整

アイドルインスタンスとは「次のアクセスに備えて待機しているインスタンス」のことです。アイドル状態で多数のインスタンスを控えさせておけば、急にアクセスが来た時でもすぐに対処出来ます。
と言っても、アクセスが来ていない場合は単なる穀潰しです。
「多少時間がかかっても、アクセスが来てから新規インスタンスを立ち上げれば十分」というの論理がOKであれば、「最大アイドルインスタンス数を下げる」という設定を行うことで、穀潰しを抹殺することが出来ます。
但し、その分だけ「スピンアップ」というインスタンス起動処理の発生頻度が多くなりますのでご注意を。

待ち時間調整

上記には「アクセス者の待ち時間が長くなったらインスタンス起動」とありますが、「それって具体的にどれくらい待ち時間が長引いたらインスタンスが起動するの?」という話です。
0.1秒待っただけで新規インスタンスを起動するようでは、そりゃインスタンスは些細なことでポンポン立ち上がってコストを大量消費してしまいます。
「5秒や10秒くらい大人しく待ってろ」というの論理がOKであれば、「許容待ち時間を長くする」という設定を行うことで、過剰なインスタンス起動を回避することが出来ます。



これらの設定を行う個所が、アドミンコンソールの「Application Settings」です。



ここに「Max Idle Instances(最大アイドルインスタンス数)」「Min Pending Latency(最少待ち時間)」がありますね。
デフォルトではこれは「Auto」になっていますが、「Auto」というのは「最高パフォーマンス設定」のことで、この状態が一番速い代わりに高価です。Autoは本当に高速で、0.1秒待っただけでも次が上がってしまうような超高速モードらしいです。

これを最低設定の「Max Idle Instances:1」「Min Pending Latency:15s」まで手動で下げてしまえば、パフォーマンスが低下する代わりにインスタンスの起動が抑制され、結果コストが安く出来るのです。

「待ち時間15秒とか遅過ぎだろ!! でも3秒くらいなら許せるかな」みたいに、そのサービスの保証水準を鑑みて、各自調整するのが良いでしょう。

終わりに

以上が、インスタンス時間に関連する基礎知識でした。

しかし、これはあくまで「理論上の話」です。
次回は、いっちょ、自前でDoS攻撃を仕掛けて負荷テストを決行してみたいと思います。

一体、どれくらいのアクセスを捌くことが出来るのでしょうね。。。

2014年1月24日金曜日

【GAE】インスタンス時間1

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

只今、クラウド基盤「Google App Engine(以下、GAE)」の連載しています。

今回はGAEのお金関連の話でも中核中の中核、「インスタンス時間」についてご紹介しましょう。

基本

まずは以下URLがGAEの料金について説明したページです。


GAEの課金制度は、基本的には「従量課金制」です。
電気代や水道代と同じく、多く使った人程にお金を多く払うという公正公平、かつシビアな制度でございます。
この為、安い値段、突き詰めれば無料でGAEを使う為には、GAEを節約しながら使っていく必要があるのです。
この辺りも電気、ガス、水道と同じですね。

とは言っても、

・水道の消費量。⇒流した水の量で決まる。⇒水を無駄に流さない。
・電気の消費量。⇒消費した電力量で決まる。⇒使っていない電気を消す。

みたいに、電気や水道ならば節約する為に何をすれば良いのか分かり易いのに対して、
GAEの節約とは何をすればいいのかピンと来ないですよね。

今回はそのお話です。

クォータ(Quota)

さて、GAEというのは、インターネット上に接続されている複数のマシンをみんなで使い回すことによって資源を有効活用するシステムです。
この為、


  • 「一人で勝手に無駄遣いするなよ」
  • 「あんまり使う奴は金払って貰うからな」


という運用になるのは至極当然のこと。
ジャイアニズムという声もありますが、我々に文句は言えません。
この場合の「各サービス毎への割り当てリソース」のことを「クォータ(Quota)」と呼びます。

このサービス毎のクォータ量を超えてしまうと「課金発生」「システムダウン」「機能低下」など様々なデメリットを被ってしまうことになります。
(容赦無し)

そのクォータにつきましても色々な種類がありまして、

  • フロントエンドインスタンス時間
  • バックエンドインスタンス時間
  • データストア書き込み回数
  • メール送信数

書き切れないくらい沢山あります。
それらどのクォータがオーバーしてしまってもNG。シビアな世界です。

自分のサービスがどれくらいクォータを消費しているかについては、自分のダッシュボードのメニューに出ている「Quota Details」からご確認ください。以下のような画面です。


実に多岐に渡る項目があるのが良く分かるかと思います。
全部理解しろと言われても、これは苦しい……。
とは言え、実質的にこれら全項目をパンパンまで使うなんてシチュエーションは考えられず、
大抵はこの中の項目のうち、「良く消費する一部項目だけがネックになる」という運用になるでしょう。

要するに「自分が使う部分だけ分かっていればOK」なのです。


以上でお分かり頂けたかと思いますが、GAEの従量課金制は厳密にはこのクォータ消費量を理解して算出しなければなりません。

しかし、最初からそんな細かい数字に目くじらを立てても効率が悪いです。
最初は重要部分から押さえることをお勧めします。

実は、GAEの多岐に渡るクォータのうち、「中核」と言って良い代表的なクォータが存在します。
GAE初心者は最初にまずこのクォータ「フロントエンド・インスタンス時間」を押さえると良いでしょう。

フロントエンド・インスタンス時間(Frontend Instance Hours)

「フロントエンド・インスタンス時間(Frontend Instance Hours)」とは、簡単に言ってしまえば「サービスが動いている時間」です。

GAEというのは、「アクセスが来るとインスタンスが起動し、アクセスが来ないとインスタンスが寝る」という動きをします。
この「インスタンスが起動している時間」のことを「フロントエンド・インスタンス時間」と言います。
(以下、「インスタンス時間」と略称でご説明します。)

一応注意ですが、「インスタンスが起動している時間ということは、1日最大で24時間だな」という計算ではありませんのでお間違え無く。
我々SE界には「人日 or 人月」という単位で予算を組みますが、それと全く同じ。

「インスタンス時間=インスタンス起動時間×インスタンス数」

となります。
よって、2インスタンスが24時間フル稼働していたら48インスタンス時間消費というわけですね。

そして、GAEの無料枠は28インスタンス時間ですから、これではオーバーしてしまいます。

無料枠は28インスタンス時間。つまりこのままでは、

「無料ユーザーは1インスタンスしか使えないってことじゃないか!!」

という意味になってしまいますね。
しかし、そこはGAEの「自動スケールアップ機能」が活躍してくれます。

  • アクセス数の多い時間帯は多数インスタンスを起動する。
  • アクセス数の少ない時間帯は少数インスタンスで済ませる。
  • アクセスの無い時間帯はゼロインスタンス。

こういう機能がありますので、「全然使っていないのにインスタンス時間だけ垂れ流し」という事態は避けられます。
利用者のいない時間帯はインスタンス時間を消費しません。
代わりに、利用者が多い場合は、いつもより多めにインスタンス時間を消費します。
28インスタンス時間という限りある資源はちゃんと有効活用出来るのです。

終わりに

となってくると次に疑問に思うのは、

「そのアクセス数の多い少ないってどうやって判断してるの?」
「インスタンスの同時起動数はどうやって決定されているの?」

この辺でしょう。

その辺りにつきまして、もう少し掘り下げていこうと思います。

2014年1月20日月曜日

【GAE】スタート編4 Slim3導入

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

只今、クラウド基盤「Google App Engine(以下、GAE)」のスタート編を連載しています。

今回はMVCフレームワーク「slim3」を導入します。

slim3とは

slim3はseasarの開発者であるひがやすを氏が開発したMVCフレームワークです。

公式サイトにも紹介されているGAE3大フレームワークの一つです。


元からseasar支持者である私は迷わずこれを選択。

日本語の非公式サイトもあって非常に助かります。
https://sites.google.com/site/slim3documentja/

Google検索でも結構情報が出て来ますし、今の所はこのslim3を導入するのが最適だと思います。

ただし、非公式サイトも更新が滞っているのかリンク切れしている箇所が複数アリ。
内容もザッとした触り程度で詳しい所までは載っていないので、このブログなどでフォローしていきたい所です。

slim3導入

slim3はEclipseプラグインをインストールするだけで導入可能です。

インストール用のロケーションはこちら。
http://slim3.googlecode.com/svn/updates/

以下の手順でEclipseにインストールして下さい。

  1. Eclipseを起動する。
  2. メニュー→ヘルプ→新規ソフトウェアのインストール
  3. [追加]からロケーションを追加

インストールしたらEclipseを再起動して下さい。

長きに渡る環境構築関連の記事でしたが、これでようやくプロジェクト作成に入れます。

プロジェクト作成

では、いよいよプロジェクト作成に入ります。

Eclipseのプロジェクト新規作成により、Slim3プロジェクトを選択して作成して下さい。


途中にGWTという文字が眼に付きますが、こちらはGoogle Web Toolkitというフレームワークと併用する為のモードです。
今回はGoogle Web Toolkitは使いませんので、普通のslim3を選択します。


これでプロジェクト作成完了です。

ルートページ作成

細かいことはさておき、とにかくまずはインターネット上へ展開してみましょう。
今回はルートページ「index.html」を作成します。

war直下に適当にファイルを作って置いて下さい。


デプロイURLセット

次に、デプロイ先のURLをセットします。
遡ること第2回で作成したプロジェクト名を指定して下さい。

  1. プロジェクトを右クリック→プロパティ→Google→Appエンジン


デプロイ実行


いよいよデプロイします。

  1. プロジェクトを右クリック→Google→Appエンジンへデプロイ

GAEにログインしていない場合はログイン画面が出て来ますので、ログインして下さい。

これでデプロイが始まります。
これでようやくアプリを世界に向けて公開……出来ないんですよね~。(泣)

いくつかエラーハンドリングしてみましょう。

エラーハンドリング

Javaのバージョンが違う

java.lang.UnsupportedClassVersionError: com/google/appengine/tools/development/LocalJspC : Unsupported major.minor version 51.0

これが出て来たら、それはJavaのバージョンが違うんですよ。
自分のプロジェクトをよく見て下さい。VMにjava6が指定されていませんか?
GAE SDK1.8.8はjava7、それもJDK7でしか動きませんので、お間違え無く。

JREを使っている

java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE.

これはJDKではなく、JREを使っているという意味です。
GAEはJDKでなければ動きません。

遡ること第1回でダウンロードしたJDKを使います。
ポイントは「Eclipseプラグインが呼び出すJavaをJDKにする」ということです。
つまり、Eclipseの起動に使用するJavaの変更です。
プロジェクトが読み込んでいるJavaのことではありません。
プロジェクトを動かすJavaではなくて、デプロイコマンドをキックするJavaをJDKにしろ、という話ですので、お間違え無く。

インストールしたEclipse内にあるeclipse.iniを開きまして、一番最初に以下を追加します。

-vm Eclipse起動用Javaのパス


パスを指定したらEclipseを再起動します。

成功!!

これでもう一回デプロイを試みれば、そろそろ成功してくれたのではないでしょうか?
私の環境では表示出来ました。


自動的にブラウザが立ち上がるはずですが、立ち上がらなかった場合は以下コンソールのステータスが「Running」になっていますので、それをクリックして下さい。

https://appengine.google.com/

ようやくデプロイまで漕ぎ着けました。
ここまで来るのは大変でしたが、一回出来てしまえば、後はクリック数回でいつでも簡単にデプロイ出来るようになります。

一応、これでデプロイ成功なはずですが、この作業の過程で偶々出たエラーメッセージもついでに以下に記載しておきます。
このブログの手順通りにやれば出ませんが、一応掲載です。

EclipseのバージョンとSDKのバージョンが合っていない

java.io.IOException: Jar C:\Users\User\AppData\Local\Temp\appcfg7254171904073358945.tmp\WEB-INF\classes\appengine-api-1.0-sdk-1.8.0.jar is too large. Consider using --enable_jar_splitting.

これは文言からすると、デプロイオプション「--enable_jar_splitting」を指定しろという意味に受け取れます。
しかし、「そのオプションを指定すれば解決するはずだ」と考えるのは大間違い。
これが出ると言うことは、EclipseのバージョンとSDKのバージョンが合っていないのです。
バージョンが合っていないからオプションが効いていないというだけの話なのです。

Eclipseを最新にするか、SDKを切り戻すか、何らかの手段でバージョンを合わせて下さい。
以前の記事にも書きましたが、GAEは「Eclipseのバージョンに敏感な影響を受ける」という特徴があります。
「Eclipseなんて4.2でも4.3でも大して変わらんだろ」という考えは、普通の開発ならそうですけど、GAEではNG。
動きません。
キチッと合わせてください。

終わりに

ようやくデプロイまで到達しましたね。お疲れ様でした。。。

環境セットアップ周りはGAEに限らずシステム開発では詰まりやすい所でして、私もここまで漕ぎ着けるのに大変苦労しました。
しかし、一度手順を確立してしまいさえすれば、案外何てことは無いものだと分かるかと思います。

これでスタート編は終了です。

次回からは実装関連の検証を進めてみます。

2014年1月9日木曜日

【GAE】スタート編3 Googleプラグイン&SDK取得

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

只今、クラウド基盤「Google App Engine(以下、GAE)」のスタート編を連載しています。

今回は開発環境の構築です。

Javaバージョン


本連載では言語はJavaでお送りします。

  • Javaバージョン:JDK7

ここでとんでもない落とし穴があります。

まず、以下がJavaのインストールについて記述された日本語の公式サイトです。

https://developers.google.com/appengine/docs/java/overview?hl=ja

ここにJDK6を使えと書いてあります。


次に英語の公式サイトを見てみます。

https://developers.google.com/appengine/docs/java/gettingstarted/installing

Java6はサポートしない。Java7を使えと書いてあるんですよ。


つまり、日本語公式サイトは更新が遅れている!!

更新履歴を見ますと、英語サイトの更新が2013/10/24、日本語サイトは2013/6/10です。
4ヶ月遅れですね。
しかも、この最終更新日付はサイト全体での最終更新日付であって、ページによってはもっと長い間更新を忘れ去られている模様。

ようするに、日本語公式サイトの更新遅れは致命的だから信用するなということです。

私も最初は日本語サイトを参考に開発しようとしていたのですが、エラー連発で全然動かず。
しかし更新が大幅に遅れていることに気付いて英語サイトに切り替えたら、スッと動きました。

日本語サイトはあくまで参考。最終的には英語版で裏を取ることを心懸けなければいけません。。。

Eclipseダウンロード

次に、Eclipseをインストールします。
これも例によって、日本語サイトには大嘘が書いてありますので、英語版を参考にして下さい。

https://developers.google.com/appengine/docs/java/tools/eclipse

このJavaのバージョンやら、Eclipseのバージョンやらは、結構重要です。
普通の開発だと、Eclipseなんてどのバージョンを使っても大抵は動いてしまうものじゃないですか。
GAE開発はその辺がシビアで、ちゃんとその時点で公式サイトに掲示されているバージョンを使っていないとポンポン問題が起きます。

この記事を書いている現時点においてはEclipse 4.3 (Kepler) が対象バージョンですが、
今後に4.4に更新されることがありましたら、速やかに乗り換えて下さい。

さて、Eclipseですが、日本人である皆様はお馴染み、pleadesをダウンロードしてきます。

http://mergedoc.sourceforge.jp/

pleadesには「32bit版」と「64bit版」がありますが、
マシンが64bitならelipseも64bit、32bitなら32bitと合わせて下さい。

Eclipseプラグインダウンロード


最後に、Eclipseプラグインをインスト―ルします。
ダウンロードサイトはこちら。

https://developers.google.com/eclipse/docs/getting_started

このうち、私はEclipse4.3を使っていますので、以下URLをロケーションとして使用します。

https://dl.google.com/eclipse/plugin/4.3

インストール手順は以下です。


  1. Eclipseを起動する。
  2. メニュー→ヘルプ→新規ソフトウェアのインストール
  3. [追加]からロケーションを追加
  4. 「Google プラグイン Eclipse」とSDKをチェック。これでOKです。他はAndroid開発などで使用するツールですので、とりあえず今の所は必要ありません。



再起動すればインストール完了です。

結果確認


  1. メニュー→ウィンドウ→設定→Google→Appエンジン

上記にキチンとGoogle App Engine SDKにチェックが入っていればインストール成功です。


ダメな場合は以下に続く。。。

Google App Engine SDK ダウンロード

上記の手順の通りにやってもエラーが起きることがあります。

Eclipseのバージョンとの互換性がかなり敏感でして、バージョン違いが主な原因かと思います。
「Eclipse3.7ではSDK1.8は動かなかったけど、1.7なら動いた」というのはこの身を以て確認しております。

ちゃんと、最新バージョンのEclipseをゲットして下さい。
もしくは、SDKの方を新しくして下さい。

最新のSDKダウンロードサイトはこちら。

https://developers.google.com/appengine/downloads

最新では動かないという場合は、過去のバージョンをダウンロードして下さい。
Pleadesの更新が追いつかないなど、過去バージョンを使用せざるを得ないケースもあるかもしれませんからね。
ただし、SDKは可能な限り最新版が望ましいですので、このやり方は暫定回避と位置づけて下さい。

https://code.google.com/p/googleappengine/downloads/list

ここまで

長くなってきましたので、今回はここまでとします。

厄介だったのは、日本語サイトの嘘と、Eclipseバージョンとの互換性でした。

これだけ揃えばGAEアプリの開発は行えますが、今のこの状態は一番シンプルな状態です。
この連載では開発効率向上のため、MVCフレームワーク「slim3」を導入します。

次回はslim3インストールから始めます。

環境まとめ
  • OS:Windows7 HomeEdition 64bit
  • Java:JDK1.7.0_45
  • IDE:Eclipse 4.3 (Kepler)
  • SDK:Google App Engine SDK

2014年1月5日日曜日

【GAE】スタート編2 アプリケーション作成

あけましておめでとうございます。
株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

昨年末よりクラウド基盤「Google App Engine(以下、GAE)」のスタート編を連載しています。

前回でアカウントを作成するところまで進みましたので、今度はアプリケーション作成に入ります。
「アプリケーション作成」とは、要は「インターネット上にURLを確保する」という意味です。

後の連載で登場する「Eclipseのプロジェクト作成」とは別物ですので、お間違え無く。

プロジェクト作成の前に

さて、プロジェクトをするには「プロジェクト作成画面」に進まなければなりません。
それは「Google Developers」というサイトで行うのですが、どうやら普通のGoogleのリンクには出ていない模様です。
自分でURL指定や検索エンジンなどで飛んで下さい。

以下がそのURLです。
お気に入りに入れておいて下さい。

https://developers.google.com/?hl=ja

このサイトの下の方に「デベロッパー ツール」がありますので、ここからプロジェクト作成画面に進めます。



デベロッパーツールはメニューが5つ並んでいますね。
ざっと説明しますと、それぞれ以下のようなものです。
  • API Console:開発コンソールその1
  • App Engine Console:開発コンソールその2
  • OAuth 2.0 Playground:WebAPIの利用許可等の管理
  • Project Hosting:所謂Google Code。プロジェクト開発拠点の作成
  • Make the Web Faster:ガイダンスのようなもの

今回は「開発コンソールその1、その2」がテーマになります。

開発コンソール比較

上記の記述で、「開発コンソールその1、その2って何が違うんだ?」と疑問を持たれたかと思います。

結論から言いますと、『ほぼ、同じようなもの』です。
「新型」と「旧型」と言い換えても良いかもしれません。

まず右の「その2」からご説明します。


この飛行機みたいなアイコンが、Google App Engineのマークですね。
どこかしらで見たことある人も多いのではないでしょうか?

まだプロジェクト作成前なので以下画面は見えませんが、説明の為、ちょっとフライングで画面を公開します。


こんな感じです。
ここから先が開発者用管理画面でして、「インスタンス管理」「データベース管理」や、その他色々の管理はここから行います。

次に「その1」を見てみます。


箱のアイコンですね。

こちらも中身をフライングして見てみると、こちら。


両者、似てますよね?
というか、同じです。

どうも、「同じ機能の新型レイアウトと旧型レイアウト」という関係に見えますが、
完璧には同じではないです。

  • 全く同じ機能もある。
  • 新型にしか無い機能もある。
  • 旧型にしか無い機能もある。
  • 新型から旧型にショートカットが張られている。

「一体何なんだ?」と思う所ですが、要は「旧型から新型への移行途中」なんですよ。
新型のメニューをクリックして機能を使おうとすると、旧型へのショートカットになっているだけで、画面遷移してしまうことも結構アリ。

何とも中途半端な状態です。

これ、日本だったら「ユーザが混乱するから、新型は完成してから公開するべき!!」と大クレームになるシチュエーションだと思います。
しかしGoogleの場合、「新型は出来た所からさっさと順次公開。分からんヤツは大人しく旧型使っとけ」と言わんばかりのリリース状況です。

この辺り、やっぱりGoogleと日本企業では文化の違いを感じる所ですね。。。


ともかく、新型は日本語で表示可能だったり、画面も綺麗だったりするなどあり、私としては出来るだけ新型を使いたいのですが、移行が間に合っていない場合は旧型を使わなければなりません。
結果、新型と旧型を行ったり来たり、ということになってしまいます。

とりあえず、今の所は安定している「旧型」ベースで以下の記事を進めていこうと思います。

アプリケーション作成

さて、前置きが長くなりましたが、そろそろアプリケーションを作成しましょう。
旧型コンソールの方に入ると以下のような画面が表示されます。


最初はアプリがありませんので「Create Application」のボタンしかありません。
クリックすると、いよいよ作成画面に入ります。


後は情報を入力していけばOKです。

Application Identifier

作成するWebアプリのURLを決定します。
使用出来る文字は「半角英数字」と「ハイフン」のみです。
最小6文字、最大30文字になります。

なお、URLにはこのようなGoogleサブドメインではなく、自前の独自ドメインを設定することも出来るはずですが、
今の所はGoogleサブドメインで続行します。

Application Title

作成するアプリケーションのタイトルです。

こちらも使用出来る文字は「半角英数字」と「ハイフン」のみです。
最小6文字、最大30文字になります。

これはGAE上の管理名としてのタイトルです。
コンソールの一覧に表示されたり、認証画面で表示されたりします。

実際のWebアプリでユーザに表示されるタイトルはHTMLタグのTITLEタグで設定します。
普通に日本語も使用可能ですのでご安心下さい。

Authentication Options (Advanced)

そして最後。ここが重要。「認証オプション」です。

認証オプションは間違えても後から変更出来ません。くれぐれもご注意下さい。

上から順に、

  1. Open to all Google Accounts users (default):Google アカウントによる認証
  2. Restricted to the following Google Apps domain:Google Apps アカウントによる認証
  3. (Experimental) Open to all users with an OpenID Provider:OpenID による認証

です。

「①Google アカウントによる認証」がデフォルト選択されていますが、これが所謂普通のWebシステムです。
「Google アカウントによる認証」なので、すでに持っている「○○○○@gmail.com」などのドメインでログイン認証が出来ます。

GoogleアプリはGoogleアカウントで認証するのが一番合理的です。
地球上の全人類が全員Googleアカウントを持っているのが最も理想の世界です。
しかし、アプリによっては「Googleドメインを持っていない人でも使えるようにしたいし……」というケースもありますよね?
そういう場合は、この画面ではこの「①Google アカウントによる認証」を選んだ上で、単体ソースの方で認証をすっ飛ばせばOKです。

普通はこれを選んで下さい。
この連載でもこれを選びます。

「②Google Apps アカウントによる認証」は、タイトルからは①との違いが分かりにくいですが、
「Googleアカウント」と「Google Apps アカウント」は別物ですので、ご注意を。

ようするに、以下画面の右上。


自分の作ったサイトを、Google Appsアカウントで契約した人のメニューにリンクを出すというモードです。
独自ドメイン等を設定してGoogle Appsとして公開出来るようになります。

この連載では①を採用するので、こちら②については省略。

しかし、間違えないで下さい。

最初に①を選んでおいて、後から②に変更する。もしくはその逆。これは出来ません。

くれぐれもご注意を。

「③OpenID による認証」は、タイトルからしてOpenID認証関連だと思われますが、試験運用中なので割愛。
なお、①と③の間ならば後から変更可能とのこと。

作成実行


長くなりましたが、「①Google アカウントによる認証」を選んで「Create Appilication」をクリックすれば、作成完了です。


最後に、コンソール画面に入り直して下さい。
以下のように、アプリケーション一覧に作成したアプリのタイトルが出来ていれば作成完了です。


終わりに

以上でアプリケーションの作成は完了です。

予備知識として上記に長々と説明を記載しましたが、分かっていれば2分で作成可能です。
この辺りは実に効率的に出来ていますね。

以降も引き続きスタート編を連載します。