GAE+PHP/Rubyで拓く新世界

第1回 Google App Engine上でLL+RDBアプリを作ろう

萩原 巧
リトルソフト株式会社

中越 智哉
株式会社ナレッジエックス

2010/2/3

Web アプリケーション開発者にとって、魅力的な環境に映るGoogle App Engineだが、データの永続化などで落とし穴が存在する。これまでの開発手法を変えずに使えないだろうか(編集部)

GAE上でリレーショナルデータベース!?

 この連載では、Google App Engine(GAE)上でPHP/Rubyという2つのLL言語(Lightweight Language)によって書かれたWebアプリケーションを、できる限りいままでと同じスタイル(データの永続化にリレーショナルデータベースを用いる)で動作させる方法について解説していきます。

 GAEについて少しご存じの方は、「おっ?」と思われるかもしれません。GAEになじみのない方は、「それが何か?」と感じられるかもしれません。

 そこで、そもそもGAEとはどんな仕組みのサービスで、何ができ、何ができないのかを説明したいと思います。

Google App Engineがすごい3つの理由

 GAEとは、Googleが提供するサービスの1つであり、ユーザーが構築したWebアプリケーションをGoogleが提供するインフラストラクチャ上で実行できる環境を提供するものです。

 Webアプリケーション構築用の言語として、PythonとJavaがサポートされています。JavaをサポートするGAEのことを、特に区別するときにはGAE/Jと呼ぶことがあります(当初、Pythonのみをサポートしており、Javaが後から追加されたためです)。

 GAEは、資源・情報・サービスを、ローカルではなくクラウド上に持たせることができるという意味で、クラウドコンピューティングのソリューションの1つと考えられます。

 このように書くと、それほどすごさが感じられないかもしれません。しかし、どうしてGAEはこんなにも注目され、話題になっているのでしょうか。そのすごさを3つ挙げてみます。

  • 準備不要でGoogleのインフラが使える
  • 基本的に無償で使える
  • JavaでWebアプリケーションが作れる

 GAEの登場までは、開発したWebアプリケーションをインターネット上で公開するために、自分たちでアプリケーションやデータベースを稼働させるためのハードウェアとインターネットへの接続環境、そして公開サーバへユーザーをアクセスさせるための独自ドメインを準備する必要がありました。

 もしくは、レンタルサーバやホスティングサービスを利用する方法もありましたが、どちらのやり方にせよ、アクセス負荷の大きさに合わせて環境をスケールさせる必要があります。また、ハードウェアの購入費用やレンタルサービスの利用料が必要となります。

 一方、GAEでは、ハードウェア資源とネットワーク資源はGoogleから提供され、料金は基本的に無料です。「基本的に」というのは、無料で利用できる容量などに上限があり、これを越える場合には有償となるからなのですが、無償で利用できる範囲でもかなりの容量が提供されます。

 そして、これらのインフラは、検索やメール、そのほか膨大なサービスを日々提供するGoogleのテクノロジをベースとしたものです。信頼性やスケーラビリティがGoogleのテクノロジによって支えられており、そういった面での心配をユーザーはする必要がありません。

 また、JavaでWebアプリケーションが作れるということも非常に大きな意味を持ちます。もちろん、自分でインフラを準備する場合や、レンタルサーバ・VPS(Virtual Private Server)を利用するのであれば、実行環境構築をユーザーがある程度自由に行えるので、それほど障害とはなりません。

 しかし、比較的安価なホスティングサービスや共有サーバの場合は、アプリケーションで利用できる言語や環境・バージョンに制限があることが多く、特にJavaをサポートしているのは、ごく少数でした。

 GAEであれば、これまでそれなりのコストが必要だったJavaでのWebアプリケーションの公開が、無償でスタートできるのです。

 クラウドコンピューティングというとスケールメリットの面がクローズアップされがちのGAEですが、そのモデルは決して大企業だけのものではありません。むしろ、ちょっとしたサービスを、ほぼゼロの初期投資で、スモールスタートできるため、中小企業やベンチャー、あるいはSOHOや個人のエンジニアにこそ、チャンスが与えられたという気がします。

これは余談となりますが、筆者は以前、草野球チームの試合日程、出欠管理をするWebアプリケーションをJavaで構築しました。レンタルサーバで運用したかったのですが、それだけのために月数万円ものコストを投じられず、仕方なく自宅でサーバを立てて、ダイナミックDNSで運用していたことがありました。

サーバマシンもごく普通のPCなので、連続稼働を前提としていませんから、しばらく動かしていると止まってしまったり、1年も経つと冷却ファンが壊れてしまったりして、そのたびに一定期間サービスが停止する(再起動するだけならまだ良いのですが、新しい冷却ファンを準備するには時間がかかります)という貧弱なものでした。あの当時、GAEがあったらさぞかし楽だったのに……と思い出しています。

 また、Javaが使えることのもう1つの意義は、Javaがアプリケーション・プラットフォームとしての面を有していることです。いまやJava VM上で動作する言語はJavaだけではありません。

 例えば、JRubyはJava VM上でRubyのプログラムを動かせ、さらにRubyとJavaのコードを透過的に実行できます。また、Quercusというエンジンを利用すれば、Java VM上でPHPのコードを実行できます。

 このほかにも、Java VM上で稼働するプログラミング言語は多く、これらがGAE上で動作すれば、より多くの開発者がGAEのメリットを享受できます。

 
1/2
next

Index
Google App Engine上でLL+RDBアプリを作ろう
  Page1
GAE上でリレーショナルデータベース!?
Google App Engineがすごい3つの理由
  Page2
これまでの手法が通用しないGAEの制限
それでも、GAE上でRDBを使いたい!

index GAE+PHP/Rubyで拓く新世界

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


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

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間