2011年10月11日

[Android] Google App Engine(GAE) と App Inventor によるDBサーバー連携

サーバークライアントのアプリを作りたいなぁと思って調べていたのですが、
1から作ろうとすると環境構築とか色々と手間がかかりそう……。
そんなとき、「GAE」と「App Inventor」を使えば簡単にできるらしい
ということを知り、やってみました。

情報もと↓
http://www.moemoekyun.org/bon/wiki/wiki.cgi?page=DB%A5%B5%A1%BC%A5%D0%CF%A2%B7%B8Android%A5%A2%A5%D7%A5%EA+%B4%C4%B6%AD%B9%BD%C3%DB

=============================================================
■注意
作業後に知ったのですが、
Androidアプリ開発ツール「App Inventor」はオープンソースソフトウエア化されるらしく、
2011年内でGoogleサイトでの提供は終了らしいです↓

http://www.itmedia.co.jp/news/articles/1108/10/news024.html
http://d.hatena.ne.jp/chamuchamu/20110816/1313463533

なので、この記事の内容が通用するもの今年いっぱい……かも。
=============================================================

Google App Engine のおおまかな仕様↓

・無料アカウントで利用できるストレージは 500 MB
・ページビューは月間 500 万まで
・1つのデベロッパー用アカウントで、最大10個のアプリケーションが登録可能
※上限を超えたい場合は料金を支払う必要がある


(1) Google App Engine アカウント登録
https://appengine.google.com/
から、デベロッパー用アカウントを登録します。
携帯電話の登録が必要です。
登録がうまくいなかったのですが、googleに問い合わせたら対応してくれました。


(2) Google App Engine のインストール
http://code.google.com/intl/ja/appengine/downloads.html
自分の環境に合ったインストールファイルをダウンロードします。
Windowsの場合は、GoogleAppEngine-1.5.4.msi

ダウンロードしたファイルを実行します。
途中、Pythonのインストールが求められます↓

20111011google_app_engine1.png

=============================================================
■はまったところ
注意書きにもありますが、Phthon 2.5.x のバージョンじゃないと動かないようです(汗
私の場合は、ActiveState Pythonの方をインストールしました。

・2.5.x以外をインストールした場合のローカルサーバー起動時エラー↓
NameError: global name 'execfile' is not defined
情報元 ( http://soft.candychip.net/?2009%C7%AF5%B7%EE%A1%C112%B7%EE%A4%CE%C6%FC%B5%AD )

さらに、ActiveState Pythonも、Windows 64bit を選択すると、opensslを含んでいなくて
後で実行するときにローカルサーバーが起動しません(汗
なので、32bit版をインストールしました。

・64bit版のactive pythonを入れてしまった場合のローカルサーバー起動時エラー↓
AttributeError: 'module' object has no attribute 'HTTPSHandler'
情報元 ( http://www.easy-weblife.net/2011/03/pythongae.html )
=============================================================

Google App Engine のセットアップが完了したら、ボタンが表示されるので
ランチャーを起動してみましょう↓

20111011google_app_engine2.png

まずはじめに環境設定します。

Editメニュー > Preferences... ↓

20111011google_app_engine3.png

Phthon Path、App Engine SDK が入っていればOKです。
ここで、一旦Google App Engine Launcherを終了します。


(3) カスタム TinyWebDB サービスの作成(ローカルサーバー)
https://sites.google.com/a/techdoctranslator.com/jp/appinventor/learn/reference/other/tinywebdb
↑にサンプルコード(zipファイル)があるのでダウンロードします

zipファイルを解凍したら、Google App Engine Launcherを起動します。
File > Add Existing Application...
と進み、
先ほど解凍したときに出来るディレクトリ「customtinywebdb」を指定します。
Google App Engine Launcher の画面にアプリケーションが追加されます。

アプリケーションを選択してから、画面上の「Run」ボタンを押下してローカルサーバーを起動します。
※ローカルサーバーが起動しない場合は、「Logs」ボタンを押下してエラーメッセージを確認します

ローカルサーバーが起動したら、「Browse」ボタンを押下するとブラウザが起動して
App Inoventorの画面になります。

20111011google_app_engine4.png

画面に2つのリンクが表示されます。

/storeavalue …… サーバーに値をセットする
/getvalue …… サーバーから値を取得する

/storeavalue の画面↓
20111011google_app_engine5.png

/getvalue の画面↓
20111011google_app_engine6.png

値がセットされると、App Inoventor に表が表示されます↓
20111011google_app_engine7.png

ここまで確認できたら、Google App Engine LauncherとApp Inoventorを終了します。


(4) Google App Engine(DBサーバー)との連携
(1)でアカウント登録した際に、アプリケーションを登録したと思います。

登録していない場合は、
https://appengine.google.com/
から、Create Application と進んで、アプリケーションを登録します。

アプリケーション名をメモしておきます。

先ほど登録したcustomtinywebdbディレクトリの中に、app.yamlというファイルがあります。
内容を変更します。

application: customtinywebdb
↓修正
application: [アプリケーション名]

Google App Engine Launcher を起動します。
アプリケーションを選択(ローカルサーバーは起動しない)してから、画面上の「Deploy」ボタンを押下します。

Logsの画面を確認します。
↓のような表示になれば成功です

Compilation starting.
Compilation completed.
Starting deployment.
Checking if deployment succeeded.
Will check again in 1 seconds.
Checking if deployment succeeded.
Will check again in 2 seconds.
Checking if deployment succeeded.
Will check again in 4 seconds.
Checking if deployment succeeded.
Deployment successful.
Checking if updated app version is serving.
Completed update of app: [アプリケーション名], version: 1
Uploading index definitions.
2011-10-11 16:45:00 (Process exited with code 0)

You can close this window now.

ブラウザで、以下のURLを開きます。

http://[アプリケーション名].appspot.com

ローカルサーバーと同じように、App Inoventorの画面が表示されれば成功です。
Google App Engine 上で、データのやりとりが可能となりました。


冒頭でも書きましたが、
Androidアプリ開発ツール「App Inventor」はオープンソースソフトウエア化されるらしく、
2011年内でGoogleサイトでの提供は終了らしいです。

ということは、App Inoventorを使わないでGoogle App Engineとデータのやりとりをするには
どうしたらいいんだろう……。
まだまだ調べることは多いようです。
posted by be-style at 22:23| Comment(0) | Android
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]