couch

連載:使ってみました! Google Cloud SQL

第1回 駆け足で見るGoogle Cloud SQLでできること


クラスメソッド
中村修太(なかむら しゅうた)
2012/2/22

アプリケーション識別子を設定

 次は、Eclipseのウィンドウ左側に注目してください。MyGcsProjectというプロジェクト名を表示しているフォルダのアイコンが見えると思います。これを右クリックして→[Properties]→[Google]と選択し、[App Engine]をクリックしてください。図13のようなダイアログが現れます。ここでは、図10で指定したアプリケーション識別子をApplication ID欄に入力します。

図13 GAEのアプリケーション識別子を指定するダイアログ。クリックすると拡大

 次は、Google Cloud SQLにアプリケーション識別子を設定します。Google APIs Consoleの[Instance settings]ボタンをクリックしてください。図14のようなウィンドウが現れます。「Authorized applications」の欄に、先ほどと同じアプリケーション識別子を入力してから[Save changes]ボタンを押してください。

図14 Google Cloud SQLにGAEのアプリケーション識別子を指定するウィンドウ

いよいよプログラム作成!

 これで、あとはプログラムを作るだけです。実際にソースコードを記述していきましょう。作成したMyGcsprojectプロジェクトには、この後修正するweb.xmlMyGcsProjectServlet.javaがすでに存在しています。これに画面表示用のjspファイル追加してサンプルアプリケーションとします。

 まずはMyGcsproject/war/WEB-INFディレクトリにあるweb.xmlを下記のように修正してください。

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <servlet>
   	 <servlet-name>MyGcs</servlet-name>
   	 <servlet-class>jp.classmethod.mygcsproject.MyGcsProjectServlet</servlet-class>
    </servlet>
    <servlet-mapping>
   	 <servlet-name>MyGcs</servlet-name>
   	 <url-pattern>/mygcs</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
   	 <welcome-file>mygcs.jsp</welcome-file>
    </welcome-file-list>
</web-app>

 次は、MyGcsProject/src/jp.classmethod.mygcsprojectディレクトリにあるMyGcsProjectServlet.javaを修正します。Google Cloud SQLで作った、Userテーブルにデータを登録するdoPostメソッドを作ります。最初からMyGcsProjectServletに記述してあるdoGetメソッドを削除し、doPostメソッドを下記のとおりに実装してください。ソースコードの中身は、JDBCを利用したものとほとんど変わりありません。

package jp.classmethod.mygcsproject;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.http.*;

import com.google.appengine.api.rdbms.AppEngineDriver;

@SuppressWarnings("serial")
public class MyGcsProjectServlet extends HttpServlet {

    /**
     * データを登録する
     */
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         Connection c = null;
         try {
                 DriverManager.registerDriver(new AppEngineDriver());
                 c = DriverManager.getConnection("jdbc:google:rdbms://cloudsqlproject:gcstest/mygcsdb");
                 String name = req.getParameter("name");
                 String email = req.getParameter("email");
                 String statement = "INSERT INTO User (name,email) VALUES(?,?)";
                 PreparedStatement stmt = c.prepareStatement(statement);
                 stmt.setString(1, name);
                 stmt.setString(2, email);
                 stmt.executeUpdate();
         } catch (SQLException e) {
                 e.printStackTrace();
         } finally {
                 if (c != null)
                         try {
                                 c.close();
                         } catch (SQLException se) {
                                 se.printStackTrace();
                         }
         }

         resp.setHeader("Refresh", "3; url=/mygcs.jsp");

    }

}

 最後に、MyGcsProject/warディレクトリにmygcs.jspを追加し、下記の通りに記述します。MyGcsProject/warディレクトリを右クリックして[New]→[Other...]をクリックし、開いたダイアログで[Web]フォルダの中にある[JSP File]を選択して[Next]ボタンを押してください。

 ファイル名を指定するダイアログになります。mygcs.jspと入力してFinishボタンをクリックしてください。このjspファイルは、Webブラウザからのアクセスがあった時に、Userテーブルのデータを取得します。

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="java.util.List"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.google.appengine.api.rdbms.AppEngineDriver"%>

<html>
<body>
    <%
         //Userテーブルのデータを全件取得するSQLを実行
         Connection c = null;
         c = DriverManager
                         .getConnection("jdbc:google:rdbms://cloudsqlproject:gcstest/mygcsdb");
         ResultSet rs = c.createStatement().executeQuery(
                         "SELECT id, name,email FROM User");
    %>

    Userテーブルデータ
    <table style="border: 1">
         <tr bgcolor="#cccccc">
                 <th>ID</th>
                 <th>Name</th>
                 <th>Email</th>
         </tr>
         <%
                 while (rs.next()) {
                         int id = rs.getInt("id");
                         String name = rs.getString("name");
                         String email = rs.getString("email");
         %>

         <tr>
                 <td><%=id%></td>
                 <td><%=name%></td>
                 <td><%=email%></td>
         </tr>

         <%
                 }
                 c.close();
         %>
    </table>

    <br />

    <p>ユーザー登録</p>
    <form action="/mygcs" method="post">
         <div>
                 name: <input type="text" name="name"></input>
         </div>
         <div>
                 email: <input type="text" name="email"></input>
         </div>
         <div>
                 <input type="submit" value="Entry" />
         </div>
    </form>
</body>
</html>

 これでプログラムの準備ができました。

GAEへアプリケーションをアップロード

 プログラムができたので、GAEへアプリケーションをアップロードします。メニューバーのGoogleアイコンをクリックし、「Deploy to App Engine...」をクリックするとダイアログが表示されます(図15)。DeployボタンをクリックするとGAE上にアップロードしてくれます。なお、アップロードが成功するとそのままアプリケーションが起動します。コンソールに「Deployment completed successfully」というメッセージが現れたらアップロードと起動は完了です。

図15 完成したプログラムをGAEにアップロードするときに現れるダイアログ。クリックすると拡大

 GAEへアプリケーションのアップロードが完了したら、Webブラウザを開いてアドレスバーに「http://<アプリケーションID>.appspot.com」と入力してアクセスしてみてください。Userテーブルの内容が表示されるはずです(図16)。また、名前とメールアドレスを入力して、データを追加登録することもできます。

図16 今回作成したプログラムを実行した結果。Google Cloud SQL上に作った表にアクセスしてデータを取得している。クリックすると拡大

 今回はGAEとGoogle Cloud SQLのセットアップから始まり、GAEアプリケーションを作ってGoogle Cloud SQLのデータベースにアクセスするところまでを一通りご覧いただきました。かなりの急ぎ足でしたが、Google Cloud SQLをどのように利用すればよいのか、イメージはつかんでいただけたかと思います。次回からはGoogle Cloud SQLの詳細な解説に入ります。使用するときの設定についてより細かく解説し、Google Cloud SQLを利用したアプリケーションを実装する方法の詳細などについてご紹介する予定です。

  中村修太(なかむら しゅうた)

クラスメソッド勤務の新しもの好きプログラマーです。昨年、東京から山口県に引っ越し、現在はノマドワーカーとして働いています。好きなJazzを聴きながらプログラミングするのが大好きです。

前のページへ 3/3  

Index
連載:使ってみました! Google Cloud SQL
第1回 駆け足で見るGoogle Cloud SQLでできること

Page 1
GoogleがついにRDBMSサービスの提供を開始!
GAEでもRDBMSを利用可能に!
開発環境を準備
Google Cloud SQL限定プレビューの参加申し込み

Page 2
Google Cloud SQL初体験!
データベースとテーブルの作成と、GAEの準備
Eclipseを起動して、プロジェクト作成
→ Page 3
アプリケーション識別子を設定
いよいよプログラム作成!
GAEへアプリケーションをアップロード



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間