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開発入門」に戻る