以前(2009年初旬)、アプリケーションをインターネット環境に構築するときに Google App Engine を有効に使えないかといろいろ探りましたが、まだまだ黎明期でその手順も複雑でした。今回、改めて調査と実施をしました。
開発手法の調査と選択
Google App Engine (GAE) は、PaaS なので、予め環境が整えられておりできあがったアプリケーションを直ぐにインターネットに公開メリットはあります。しかし、開発言語の制限や、その他様々なことを考慮に入れた開発が必要です。
Python、Java が動作します。特に Java のサポートがあるため Java 上で動作する Ruby、PHP 等も開発言語の対象となります。とはいえ闇雲にコードを書いても仕方がないので以下のことを念頭に良い手法を探しました。
- 開発言語は今までと変えない(コード、ノウハウの流用)
- デプロイの仕組みを提供しているフレームワークの準備
参考:【特集】Google App Engineで開発するためのフレームワーク × 16 + α | Cool Coding
当初は Java で開発することを念頭にフレームワークを探していたのですが、この記事で、appengine-jruby の存在を知りました。しかも軽量フレームワークの Sinatra が利用でき、これまでの資産が大きく生かせそうだという判断で選択しました。
サンプルプロジェクト開発開始
早速、手近にあったデモプロジェクトの移植開発に取りかかろうとしたのですが、以前 GAE 用にセットアップした開発環境が残っていません。そこで、今回は以下のサイトを参考に構築しました。
- 10分ではじめる GAE/JRuby (OAuth + Sinatraのサンプル)
- CommentsAdd Star | まちゅダイアリーappengine-jrubyで簡単GAE/JRuby開発 | しばそんノート
あまりの簡単さに驚嘆。以前より格段に良くなっています。
コマンドライン上で「サーバが起動でき作ったアプリがすぐに確認できる」「GAE へコードがデプロイできる」というのは開発する上で非常に便利。Ruby を利用しているので Capistarno あたりでコマンドをまとめてしまえばもっと手間が減りそうです。Ruby Sinatra でWebAPI を開発されている方には非常におすすめの手法です。
課題
今回のデモプロジェクトを作成してこんな課題も見えてきました。
-
データベース利用していない
アプリが簡単すぎた。ほかにも Memcashe の利用とかしてみないと。。。 -
初回アクセスのレスポンスが悪い
Jrubyの問題かとは思うけどノウハウはあるはずなので調査してみないと。。。 -
動作しない Gem がある
xml-simple が動作しなかった。再チャレンジ。