AppEngineを始めたけど悩んでいる方向け

質問を受けたので、まとめてみます。

2016/3/16

FreeGufoのHPには、問合せフォームを用意しています。GAEで自作した問い合わせフォームです。

色々なことを細々とやっているので、せっかくの問合せフォームも使われることは殆どないのですが、この度技術サポートのご依頼をいただきました。
ご依頼と言っても、Google App Engineを触り始めたけど、良くわからない!という質問です。もちろん、Google App Engineを触りたい、教えて欲しいと言われて、無下には出来ませんよね。

たまたま、Macを開いていたタイミングだったのと、問合せフォームからGAEの質問を受けるなんて考えてもいなかったので早速返信してみました。
とりあえず、ある程度問題は解決したようです。

折角なので、やり取りした中で初心者がぶつかりそうな内容をまとめてみました。

GCPとGAEについて

そもそも、Google Cloud Pratform(GCP)とGoogle App Engine(GAE)の違いがわからないとのことでした。

GCPは、プラットフォーム全体の総称

GCPは、Googleが提供しているクラウドサービスの総称になります。
AWSを知っている人は多いと思いますが、AWSのGoogle版といったところでしょうか。
詳細は、公式サイトを参照して下さい。

cloud.google.com/

GAEは、GCPの中の1サービス

GAEは、このGCPの中の1サービスになります。

GAEは、Googleがクラウドサービスを提供し始めた最初のサービスになっており、GCPが出来る前から存在していました。そのためか、多少情報が混乱することがあるような気がします。

GCPの代表的なサービスを挙げると

無理に3文字にするのも厳しいですよね。しかも基本的には Google で始まるので、実質2文字。。一応代表的なものを挙げるとこんな感じです。

GAEGoogle App EnginePaaS
GCEGoogle Compute EngineIaaS
GCSGoogle Cloud StorageStorage

Googleらしいサービスとして、BigQueryが話題になることが多くなりましたがこちらは、BigQueryと呼んでいます。流石に、最近出てきているサービスは3文字にはしなくなってきた気がします。

GCP、GAEに関する用語について

出てくる用語でも混乱していたようです。

「Project ID」 と 「Aplication ID」について

プロジェクト名、プロジェクトID、アプリケーション名、アプリケーションIDなどの用語が出てきます。

これらの違いがわからないようでした。

GAEとGCPの成り立ちから、言い方が混在しているのが大きな問題でしょう。基本的には、

プロジェクト名=アプリケーション名
プロジェクトID=アプリケーションID

と考えていいと思います。

GCPが出来る前のGAEだけが提供されていた頃は、 アプリケーション名、アプリケーションIDと呼んでいました。
GCPになって、他サービスでも同一のIDを使用していることから、プロジェクトIDという言い方になっています。

プロジェクト名とプロジェクトIDの関係は、少し気をつける必要があります。

プロジェクト名:自分のプロジェクト内での識別名
プロジェクトID:他のユーザも含めたGCP全体で一意となるID

となります。

このため、プロジェクト名とIDは、同じものにすることもできますが、他のユーザがプロジェクトIDを使っている場合には使用できません。

GAEのapp.yaml等で指定する、「application」には、このGCPのプロジェクトIDを指定します。

以下、 app.yaml のサンプルですが、最初に記載する application には、プロジェクトIDを入力する必要があるということになります。

application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: true

AppEngine SDK と Cloud SDKについて

GCPは、開発マシンからコマンドラインで操作できるようにするための「Google Cloud SDK」というものが用意されています。

これ一つで、GCPのほとんどのサービスを(奥の方まで)操作することが出来ます。

ただ、なぜか App Engine に関しては、別になっています。(一時期は、含まれていたのですが2015年夏に分離されました。)

「Google App Engine SDK」は、こちらです。Python、Java、PHP、Golangそれぞれ様に分かれています。

Mac OSXのPython、PHPだけは「Google App Engine Launcher」というGUIのアプリケーションになっています。

ちなみに、AppEngineの中で、_Managed_VM_ というサービスがありますが、そちらに関しては「Google Cloud SDK」を使うことになります。

この辺りは、かなりややこしい感じになっていますね。

開発サーバーについて

App Engineは、PaaSのサービスで、一般にレンタルサーバーやIaaSのサービスとは違ったインフラが提供されています。

このため、ローカル開発にはプロダクト環境を再現した専用のサービスが必要になります。

「Google App Engine SDK」には、これを開発マシンで再現してくれるサーバーが含まれています。

Pythonのlauncherを使う場合は、こちらのボタンを押すだけです。

コマンドラインだと以下のコマンドで実行します。

Python: dev_appserver.py
Golang: goapp serve

各パラメータ等は、コマンドのヘルプなどでご確認下さい。とても良く出来ていて、App Engineを使う場合は必ずお世話になると思います。

Javaは、使っていた時期はあるのですが最近は全く触っていないので、良く分かりませんw

Deployについて

Deployも「Google App Engine SDK」に含まれているコマンドを使います。

基本的には、app.yamlに記載されているapplicationにdeployすることになります。

Pythonのlauncherを使う場合は、こちらのボタンを押すだけです。

コマンドラインだと以下のコマンドで実行します。

Python: appcfg.py update
Golang: goapp serve

こちらも、パラメータ等は、コマンドのヘルプなどでご確認下さい。

最後に

今回、質問を受けたことを中心に書いてみました。

Cloud Repository、Cloud Shellについても質問が及んだのですが、そちらは整理が出来たらということで。

何かありましたら、こちらのお問合せフォームからお気軽にどうぞ。

By nuki_pon

Related articles

--- AD ---