WebコンポーネントとGAEで本格データベース・アプリ (3/7)
作成:2013-07-20 10:43
更新:2013-07-20 10:43
更新:2013-07-20 10:43
■Google App Engineでサービスを作る
では、実際にサーバーアクセスを利用したアプリを作ってみましょう。わざわざサーバーにアクセスをするということは、つまり「ローカルな環境ではできないようなことをサーバーに行わせる」ということになります。App Inventorのコンポーネントでできることをわざわざサーバーにアクセスして行う必要はないですからね。
今回は、無料で誰でもWebサービスを作って公開できる「Google App Engine(GAE)」で簡単なデータベース利用のサービスを作り、それをApp Inventorから利用してみます。GAEは、Googleが提供するクラウドサービスで、Googleのアカウントによるログイン機能やGmailによるメール送受信、巨大データベース「データストア」によるデータ管理など、Googleの技術を活用したサービスが簡単に(でもないけど)作れます。
ここでは、GAEの基本や、JavaによるWebアプリケーション(サーブレット)の作成については特に説明をしません。GAEおよびサーブレットの詳細についてはGAEの入門記事を参照してください。
http://libro.tuyano.com/index2?id=855001
下のリスト欄に、2つのサーブレットのdoPostメソッドを挙げておきます。1つ目は、フォームなどから送られてきたデータをまとめてmydataというオブジェクトとしてデータストア(GAEのオブジェクトデータベース)に保存するものです。ここでは「y」「m」「d」「ymd」「msg」といったプロパティに、年月日、年月日をテキストにまとめたもの、そしてメッセージのテキストといったものを保管しています。
2つ目は、送信されてきた年月日の情報をもとに、その年月日のオブジェクトを検索し、そのメッセージを順に出力するというものです。これも「y」「m」「d」といった値が送られてきたものを取り出し検索をしています。
※開発環境と「Codenvy」について
GAEの開発は、通常はEclipseという開発ツールに専用のプラグインをインストールして作業するのですが、これは「ちょこちょこっとなにか作りたい」というようなときには少々大げさすぎるんですね。本格的にGAEを利用するわけでもなく、ちょっと簡単なプログラムをアップしておきたい、というような場合には、「Codenvy」が重宝します。
これは、Webで提供される開発ツールなのです。以下のアドレスで公開されています。
https://codenvy.com/
ここでアカウントを登録し、ログインすれば、ブラウザが開発ツールになります。Codenvyの大きな特徴は、各種のクラウドサービスに対応していることです。GAEにももちろん対応しており、プロジェクトを作って、GAEにログインし、メニューを選ぶだけでプロジェクトをGAEにデプロイ(アップロード)できてしまいます。「GAEでちょこっと開発したい」という人にはお勧めです。(ただし、Eclipseの本格環境に比べると低機能です)
※下図は、CodenbyのIDE。作ったプログラムをGAEにデプロイするのも簡単!
今回は、無料で誰でもWebサービスを作って公開できる「Google App Engine(GAE)」で簡単なデータベース利用のサービスを作り、それをApp Inventorから利用してみます。GAEは、Googleが提供するクラウドサービスで、Googleのアカウントによるログイン機能やGmailによるメール送受信、巨大データベース「データストア」によるデータ管理など、Googleの技術を活用したサービスが簡単に(でもないけど)作れます。
ここでは、GAEの基本や、JavaによるWebアプリケーション(サーブレット)の作成については特に説明をしません。GAEおよびサーブレットの詳細についてはGAEの入門記事を参照してください。
http://libro.tuyano.com/index2?id=855001
下のリスト欄に、2つのサーブレットのdoPostメソッドを挙げておきます。1つ目は、フォームなどから送られてきたデータをまとめてmydataというオブジェクトとしてデータストア(GAEのオブジェクトデータベース)に保存するものです。ここでは「y」「m」「d」「ymd」「msg」といったプロパティに、年月日、年月日をテキストにまとめたもの、そしてメッセージのテキストといったものを保管しています。
2つ目は、送信されてきた年月日の情報をもとに、その年月日のオブジェクトを検索し、そのメッセージを順に出力するというものです。これも「y」「m」「d」といった値が送られてきたものを取り出し検索をしています。
※開発環境と「Codenvy」について
GAEの開発は、通常はEclipseという開発ツールに専用のプラグインをインストールして作業するのですが、これは「ちょこちょこっとなにか作りたい」というようなときには少々大げさすぎるんですね。本格的にGAEを利用するわけでもなく、ちょっと簡単なプログラムをアップしておきたい、というような場合には、「Codenvy」が重宝します。
これは、Webで提供される開発ツールなのです。以下のアドレスで公開されています。
https://codenvy.com/
ここでアカウントを登録し、ログインすれば、ブラウザが開発ツールになります。Codenvyの大きな特徴は、各種のクラウドサービスに対応していることです。GAEにももちろん対応しており、プロジェクトを作って、GAEにログインし、メニューを選ぶだけでプロジェクトをGAEにデプロイ(アップロード)できてしまいます。「GAEでちょこっと開発したい」という人にはお勧めです。(ただし、Eclipseの本格環境に比べると低機能です)
※下図は、CodenbyのIDE。作ったプログラムをGAEにデプロイするのも簡単!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※サンプルのサーブレットのdoPostメソッド(データの保存) // import java.io.*; // import javax.servlet.http.*; // import com.google.appengine.api.datastore.*; public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/plain;charset=utf-8"); String msg = request.getParameter("msg"); String y = request.getParameter("y"); String m = request.getParameter("m"); String d = request.getParameter("d"); Entity entity = new Entity("mydata"); entity.setProperty("msg",msg); entity.setProperty("y",y); entity.setProperty("m",m); entity.setProperty("d",d); entity.setProperty("ymd",y + "-" + m + "-" + d); DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Key key = datastore.put(entity); PrintWriter out = response.getWriter(); out.println("entity id: " + key.getId()); } ※サンプルのサーブレットのdoPostメソッド(データの検索) // import java.io.*; // import javax.servlet.http.*; // import com.google.appengine.api.datastore.*; // import com.google.appengine.api.datastore.Query.*; public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/plain;charset=utf-8"); String y = request.getParameter("y"); String m = request.getParameter("m"); String d = request.getParameter("d"); String ymd = y + "-" + m + "-" + d; DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Query query = new Query("mydata"); FilterPredicate filter = new FilterPredicate("ymd", FilterOperator.EQUAL, ymd); query.setFilter(filter); PreparedQuery prepare = datastore.prepare(query); for(Entity entity : prepare.asIterable()){ response.getWriter().println(entity.getProperty("msg")); } }
※関連コンテンツ
「App InventorによるAndroid開発入門」に戻る