第3回 SQL4GでGAE+Railsを体験しよう
萩原 巧
リトルソフト株式会社
中越 智哉
株式会社ナレッジエックス
2010/2/23
Web アプリケーション開発者にとって、魅力的な環境に映るGoogle App Engineだが、データの永続化などで落とし穴が存在する。これまでの開発手法を変えずに使えないだろうか(編集部)
第2回「SQL4GでGAE+PHPを体験しよう」では、SQL4Gを使って、Google App Engine(GAE)環境上で、PHPアプリケーションを動作させるまでを解説しました。
今回は、GAE上でRailsを使用して、リレーショナルデータベースを活用するアプリケーションを構築するための環境を準備します。
大まかな手順は以下のとおりです。
- GAE+Rails+リレーショナルデータベースの開発環境の設定
- 簡単なスクリプトをRalisで作成し、動作確認
GAE+Rails環境のセットアップ
GAE+Rails+リレーショナルデータベース環境の設定手順を説明します。Railsでの環境設定は基本的にコマンドベースになります。
本稿では、GAE+Railsの環境設定をUbuntu 9.10で行いますが、WindowsでもCygwinなどを導入することにより、同様の環境を構築できるはずです。
まず、JRubyをインストールしますが、これはJava VM上で動作するため、Java SE 6が必要となります。事前にJava SE 6をインストールしてください。また、セットアップに必要な一部のスクリプトがJRubyで動作しないため、ノーマルのRuby環境もインストールします。
次に、JRubyのアーカイブ(jruby-bin-1.4.0.tar.gz)をダウンロードし、適当なディレクトリで展開します。
例えば、ユーザーのホームディレクトリ直下に展開する場合、
$ cd $ tar zxvf jruby-bin-1.4.0.tar.gz
と、コマンドを実行します。
JRubyの実行ファイルに対して、実行パスを設定しておきます。Ubuntuの場合、~/.bashrcに以下のような記述を追加します。
export PATH=$PATH:$HOME/jruby-1.4.0/bin
設定の反映は、以下のコマンドを実行します。
$ source ~/.bashrc
では、JRubyの起動を確認しましょう。
$ jruby -v
以下のように表示されれば起動は成功です。
jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_16) [i386-java]
続いて、今回の環境に必要な、以下のgemをインストールします。バージョンが変わると動作が変わってしまう可能性があるため、今回は「-v」オプションでバージョンを指定してインストールしています。
- Ruby on Rails (2.3.5)
- google-appengine (0.0.9)
- activerecord-jdbch2-adapter (0.9.2)
$ jruby -S gem install rails -v 2.3.5
$ sudo gem install google-appengine -v 0.0.9
google-appengineのインストールを行うコマンドのオプション指定に誤りがありました。お詫びして訂正いたします。
誤:$ jruby -S gem install google-appengine -v 0.0.9
正:$ sudo gem install google-appengine -v 0.0.9
$ jruby -S gem install activerecord-jdbch2-adapter -v 0.9.2
上記のコマンド例にあるように、JRubyでは基本的に各種コマンドの実行は「jruby -S」に続けて行います。こうすることで、CRuby(オリジナルのRuby実行環境)と区別して実行できます。
簡単なRailsスクリプトを作成しよう
簡単なサンプルアプリケーションを作成して、JRuby+SQL4Gの動作確認をしましょう。デプロイ用のGAEアカウントの取得方法はPHP編と同様です。
まず、通常のRailsアプリケーションと同様に、railsコマンドでアプリケーション用のディレクトリ構造を作成します。
$ jruby -S rails sql4gtest
続いて、動作確認用の簡単なModel/Controllerクラスを作成します。ここではno(社員番号)、name(氏名)、dept(部署)というカラムを持つemployeeテーブルに対するModelクラスと、それを操作するためのControllerクラスを作成します。
$ cd sql4gtest $ jruby script/generate controller Sample
$ jruby script/generate model Employee
生成されたファイルのうち、app/controllers/sample_controller.rbを、次のように編集します。このコントローラは、SQL4Gに対してテーブルとデータを設定します。
require 'java'
class CreateEmployees < ActiveRecord::Migration
    def self.up
        execute <<-"EOF"
create table employees (
    id integer not null default 0 auto_increment primary key,
    no integer,
    name varchar(255),
    dept varchar(255),
    created_at timestamp,
    updated_at timestamp
)
        EOF
    end
end
class SampleController < ApplicationController
    def index
        @employees = Employee.all
        respond_to do |format|
            format.html # index.html.erb
            format.xml  { render :xml => @employees }
        end
    end
    def up
        CreateEmployees.up
        Employee.create(:no=>1,:name=>"ながお",:dept=>"開発部")
        Employee.create(:no=>2,:name=>"はぎわら",:dept=>"技術部")
        Employee.create(:no=>3,:name=>"なかごし",:dept=>"教育部")
        redirect_to :action=>:index
      end
endさらに、app/views/sample/index.html.erbというファイルを作成します。
<html>
<body>
<h1>Listing employees</h1>
<table>
    <tr>
        <th>No</th>
        <th>Name</th>
        <th>Dept</th>
    </tr>
<% @employees.each do |employee| %>
    <tr>
        <td><%=h employee.no %></td>
        <td><%=h employee.name %></td>
        <td><%=h employee.dept %></td>
    </tr>
<% end %>
</table>
</body>
</html>| 1/3 |  | 
| Index | |
| SQL4GでGAE+Railsを体験しよう | |
|  | Page1 GAE+Rails環境のセットアップ 簡単なRailsスクリプトを作成しよう | 
| Page2 サンプルアプリケーションをGAE+SQL4Gに対応させよう environment.rbを書き換える database.ymlを書き換える Gemfileに設定を追加 SQL4G/データベースアクセス関連ライブラリの配置 jruby-rackライブラリのアップデート | |
| Page3 ローカル環境での動作確認 GAE上へのデプロイ | |
|  | 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の世界を体験してみよう | 
 フィード  2.0/1.0/0.91
フィード  2.0/1.0/0.91
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
 C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る
- エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
 C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る
- VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
 指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します
- さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
 日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|  | |
| 
 | |
|  | 

 








