【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
新世代の並列処理言語Google Goをひもとく

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

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

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

2010/2/3

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

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

- PR -

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

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

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

GAE+PHP/Rubyで拓く新世界 バックナンバー

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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?