GroovyとGoogle App Engineでアプリ開発(後編)
~Googleのサービスを利用する方法
Groovy+GrailsでRailsなWeb開発 番外編 後編
今回は番外編として、Java上で動くスクリプト言語「Groovy」を使って、Google App Engineのアプリケーションを作成してみましょう。第2回の本記事では、「データストア」や「ユーザー」といったGoogleのサービスを利用する方法について、解説していきます。
はじめに
前回、GroovyでGAEを利用する基本について説明を行いましたが、正直、「GAEを利用する」という意味はあまり感じられなかったかもしれません。別にTomcatで動かしてもよかったんじゃ...と思った方もいることでしょう。
GAEを利用する最大の利点は、「Googleが提供する各種サービスをそのままアプリケーション内から利用できる」という点にあります。今回は、主なサービスの利用について説明していきます。
対象読者
- JSPを書くのは正直しんどい...と近頃感じる人
- Ruby on Railsスタイルの開発に興味があるという人
- MVCフレームワークをJavaで学びたいという人
- JavaによるGoogle App Engineプログラミングに興味がある人
BigTableとデータストア
Googleが提供するサービスの中で、最も重要なものと言えば「データストア」でしょう。これは、Googleがサイト内で利用しているデータベース「BigTable」をアプリケーションから利用するためのものです。
BigTableは、Googleの各種サービスの根幹を支える技術の1つです。GoogleマップやYouTubeなど、Googleのサービスの多くは、BigTableによってデータ管理されています。このBigTableは、一般に広く使われているSQLを使ったリレーショナルデータベースではありません。このため、普通にSQLのクエリーを送信してアクセス...といった方法ではなく、GAEに用意されているライブラリを使用してアクセスする必要があります。これが「データストア」と呼ばれるものです。
GAEのJava版では、データストアは「JDO(Java Data Objects)」というものを利用しています。JDOはオブジェクトの永続化のために用意された仕様ですが、これをそのままデータストアで利用します。データストアのデータベースは、SQLのようにテーブルを設計してそこにレコードを書き込んで...といったものではなく、「保存したいクラスのインスタンスを作ってほいほい放り込んでおく」ようなものなのです。データストアに保管されるのは、基本的に「オブジェクト」であり、必要に応じて「このクラスのオブジェクトを全部ちょうだい」と、オブジェクトを取り出して利用します。従って、オブジェクトの永続化のためのJDOは、データストアを利用するためにまさに格好のものというわけです。
PMFクラスの用意
データストアを利用するためには、いくつかのプログラムを用意する必要があります。「PersistenceManagerFactory」というものを準備するためのクラス、JDOを利用するための設定ファイル、実際にデータストアに保管するオブジェクトを定義したクラス、そして、実際にデータを保存したり取り出したりする処理を行うプログラム類です。
まず最初に用意するのが、PersistenceManagerFactoryを取得するためのクラスです。このPersistenceManagerFactoryは、JDOでオブジェクトを扱うための機能を提供するPersistenceManagerクラスを生成するためのものです。このPersistenceManagerFactoryインスタンスの作成には非常にコストがかかるため、アプリケーションごとに1つだけインスタンスを用意し、それを使いまわすようにします。
import javax.jdo.*
class PMF {
private static PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional")
static PersistenceManagerFactory get() {
return pmfInstance
}
}
ここでは、PMFクラスのgetメソッドで、PersistenceManagerFactoryを取得しています。PersistenceManagerFactoryを利用する場合は、常にこれを利用する形になります。
PersistenceManagerFactoryインスタンスは、JDOHelper.getPersistenceManagerFactoryメソッドを呼び出して取得しています。直接、PersistenceManagerFactoryのインスタンスを作成しないのは、そもそもPersistenceManagerFactoryはインターフェースであり、状況に応じて用意された実装クラスのインスタンスが得られるためです。
この記事は参考になりましたか?
- Groovy+GrailsでRailsなWeb開発連載記事一覧
-
- GroovyとGoogle App Engineでアプリ開発(番外編) ~GAEで利用でき...
- GroovyとGoogle App Engineでアプリ開発(後編) ~Googleのサー...
- GroovyとGoogle App Engineでアプリ開発(前編) ~GroovyでWe...
- この記事の著者
-
掌田 津耶乃(ショウダ ツヤノ)
三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
