Twitterもどきを作りながらGoogle App Engineの肝データストアを理解する
今回はTwitter(もどき)を作りながらGoogle App Engineを利用する最大の目的ともいえる「データストア」について説明しよう。
モデルオブジェクト
今回の説明のために用意したサンプルは、複数人でメッセージをポストし、共有できるだけのアプリだ。まあ「Twitterもどき」といえなくもない(Twitterに失礼だが)。
メッセージが一覧表示されている部分を見ると、このアプリが保存する必要のあるデータは「投稿した人」「メッセージ本文」「投稿日時」の3つだとわかる。
RDBであれば、これらのデータを格納するためのテーブルを作成するところだ。App Engineのデータストアでは、どのようにしてデータのスキーマを表現するのか?
App Engineのデータストアでは、「モデルオブジェクト」もしくは「エンティティ」と呼ばれるPythonクラスによってスキーマが表される。エンティティは、単にdb.Modelクラスを継承し、プロパティ(リレーショナルモデルでいうところの「カラム」)を定義しただけのクラスだ。上のデータを格納するためのエンティティ「Message」の定義を以下に示す。
class Message(db.Model):
author = db.UserProperty()
content = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
author、content、dateと言ったプロパティが定義されていることに注目。その値は「db.XXXProperty」となっている。これらが、エンティティで保持されるデータの実体となる。
「db.XXXProperty」は、プロパティのデータ型を表すものだ。UserPropertyは「google.appengine.api.User」クラスのインスタンスを格納するための型、StringPropertyは文字列、DateTimePropertyはdatetime.datetime型にそれぞれ対応している。
プロパティの型には他にも、BooleanやIntegerなどの基本型、複数データを格納できるListProperty、他のエンティティを格納するためのReferencePropertyなど、様々なものを利用できる。完全なリファレンスはこちらを参照していただきたい。
エンティティのput()メソッドを呼び出せば、エンティティをデータストアに保存することができる。メッセージの保存を行っているコードを見てみよう。
# リクエストからメッセージ本文を取得
content = self.request.get("content")
# エンティティのインスタンスを作成
message = Message(author=user, content=content)
# データストアに保存
message.put()
あっけないほど簡単に、データストアに対してデータの保存を行えてしまった。すばらしい開発効率だ。
エンティティには、他にも様々なメソッドが定義されている。以下に挙げるのはその一部だ。完全なリストはリファレンスを参照していただきたい。
- put()・・・モデルの保存
- delete()・・・モデルの削除
- to_xml()・・・XML形式(Atom/GDataに準拠)の文字列を返す。
開発用コンソールを用いたデータの確認
データストアに保存されたデータは、開発用コンソールから確認することができる。開発用コンソールのURLは「http://localhost:8080/_ah/admin/」(ポート番号はデフォルト)だ。アクセスすると、「Datastore Viewer」と言うメニューがあるので、エンティティの種別(クラス名)を入力すればデータの一覧を取得できる。
- 特集: Google App Engine詳解 (3件)
- ホワイトペーパー
- 企画特集
そのストレージで仮想化に対応できますか?
インターネット上の悪意を未然に防ぐには?
仮想環境を実現するソリューション特集
【徹底対談】運用管理ツールの賢い使い方
SOA、BPM、SaaS −今、企業に必要なこと
ロリポップ!がリニューアル
中小企業のセキュリティリスクとは?
今注目の「サジェスト検索」−デモ掲載中
◆エン・ジャパン厳選求人☆毎週更新◆
ESBでIT投資の無駄を劇的に解消する
セキュリティ&ユーザ事例【SIer Club】
集積度も性能も、業界最高水準のブレードPC
パンデミック対策特集
ストレージメディア特設サイト開設
御社のログ活用しませんか!?
- エンタープライズにおけるSUSEの強み
- ■ストレージ容量50%削減保証■
- サーバー監視・運用のコストを削減するには
- サービス・ドリヴン・データセンター
- 話題のタグ
Windows 7はLinuxへの切替が簡単:注目の仮想ディスクフォーマット「VHD」
iPhone OS 3.0で変わった「絵文字」
OSSのクラウド基盤「Eucalyptus」を使う(4)--インストール〜ノード構築
俳優経験者が指南する「人前で上手く話すためのティップス10選」
「うるまでるびペイント」登場:絵は上手下手ではなく制作過程に楽しみが
待てば回路の日和あり--「iPhone 3GS」発売、しかし――