TinyWebDBでサーバー通信を行おう (2/5)
作成:2010-11-14 19:02
更新:2010-11-14 19:02
更新:2010-11-14 19:02
■サーバーの用意
さて、まずはサーバーにプログラムを用意しておく必要があります。といっても、「全然、プログラミングはわからないよ!」という人もいるでしょう(そういう人のためのApp Inventorですから)。そうした人は、Googleが用意しているテスト用サーバーをそのまま利用することができます。
http://appinvtinywebdb.appspot.com/
これが、そのアドレスです。通常、TinyWebDBを作成すると、デフォルトでこのアドレスがアクセス先に設定されます。
が、「テスト用」のサーバーは、あくまでテスト用ですので、永久にデータが保管されるわけではありませんし、さまざまな人が利用しますからデータが上書きされたり削除される可能性もあります。可能であれば、独自にサーバーのプログラムを用意しておくべきでしょう。
ここでは、Googleが提供するサーバー環境「Google App Engine(GAE)」を利用したプログラムのサンプルをあげておきましょう。GAEは、Googleに無料でWebアプリケーションを作成し利用できるサービスです。これは、http://appengine.google.com/からアカウントをとり、アプリケーションを配置できます。
GAEでは、Pythonというスクリプト言語を使ってプログラムを作成します。以下に、App InventorからTinyWebDBを利用するための簡単なプログラム例をあげておきます。これをGAEで実行するスクリプトとして記述し、デプロイ(アプリケーションを公開する)してください(GAEのプログラミングについては、別途http://libro99.appspot.com/index2?id=50に入門講座を用意しているので、そちらで勉強してください)。
http://appinvtinywebdb.appspot.com/
これが、そのアドレスです。通常、TinyWebDBを作成すると、デフォルトでこのアドレスがアクセス先に設定されます。
が、「テスト用」のサーバーは、あくまでテスト用ですので、永久にデータが保管されるわけではありませんし、さまざまな人が利用しますからデータが上書きされたり削除される可能性もあります。可能であれば、独自にサーバーのプログラムを用意しておくべきでしょう。
ここでは、Googleが提供するサーバー環境「Google App Engine(GAE)」を利用したプログラムのサンプルをあげておきましょう。GAEは、Googleに無料でWebアプリケーションを作成し利用できるサービスです。これは、http://appengine.google.com/からアカウントをとり、アプリケーションを配置できます。
GAEでは、Pythonというスクリプト言語を使ってプログラムを作成します。以下に、App InventorからTinyWebDBを利用するための簡単なプログラム例をあげておきます。これをGAEで実行するスクリプトとして記述し、デプロイ(アプリケーションを公開する)してください(GAEのプログラミングについては、別途http://libro99.appspot.com/index2?id=50に入門講座を用意しているので、そちらで勉強してください)。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
#!/usr/bin/env python from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext import db from django.utils import simplejson as json class StoredData(db.Model): tag = db.StringProperty() value = db.StringProperty(multiline=True) date = db.DateTimeProperty(required=True, auto_now=True) class StoreAValue(webapp.RequestHandler): def post(self): tag = self.request.get('tag') value = self.request.get('value') entry = db.GqlQuery("SELECT * FROM StoredData where tag = :1", tag).get() if entry: entry.value = value else: entry = StoredData(tag = tag, value = value) entry.put() result = ["STORED", tag, value] WritePhone(self, lambda : json.dump(result, self.response.out)) class GetValue(webapp.RequestHandler): def post(self): tag = self.request.get('tag') entry = db.GqlQuery("SELECT * FROM StoredData where tag = :1", tag).get() if entry: value = entry.value else: value = "" WritePhone(self, lambda : json.dump(["VALUE", tag, value], self.response.out)) def WritePhone(handler, writer): handler.response.headers['Content-Type'] = 'application/jsonrequest' writer() application = webapp.WSGIApplication( [('/storeavalue', StoreAValue), ('/getvalue', GetValue)], debug=True) def main(): run_wsgi_app(application) if __name__ == '__main__': main()
※関連コンテンツ
「App InventorによるAndroid開発入門」に戻る