
第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で拓く新世界 バックナンバー
- 第1回 GAE上でLL+RDBアプリを作ろう
- 第2回 SQL4GでGAE+PHPを体験しよう
- 第3回 SQL4GでGAE+Railsを体験しよう
- 第4回 PHPで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や個人のエンジニアにこそ、チャンスが与えられたという気がします。
サーバマシンもごく普通の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 |
| Index | |
| Google App Engine上でLL+RDBアプリを作ろう | |
| Page1 GAE上でリレーショナルデータベース!? Google App Engineがすごい3つの理由 |
|
| Page2 これまでの手法が通用しないGAEの制限 それでも、GAE上でRDBを使いたい! |
|
| 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の世界を体験してみよう |
|
- PHPでGAE上に社員検索アプリを作る (2010/3/18)
GAEの制約により使うことができなかったテンプレートエンジン。PHP4GではSmartyが使えるようになった - 構造体の便利な用途、インターフェイス入門 (2010/3/10)
継承機能を排除したインターフェイス機能でダックタイピングが可能となった。サンプルで確かめてみよう - プライベートモードの履歴状態 (2010/3/1)
仕事に集中できるときと、なかなかできないとき、ありますよね。状態遷移図で考えてみよう - Goのswitch文で解くFizzBuzzと構造体のイントロ (2010/2/25)
Goではif文と同等の制御構造をswitch文で表現できる。試してみよう
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 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台以上! グループ内 サーバの「統合管理」によるメリットは? |






