Hatena::ブログ(Diary)

ねじろぐ @drillbits このページをアンテナに追加 RSSフィード

2010/12/18

Google App Engine でサーバーサイドJavaScript

f:id:drillbits:20101218230424g:image

すみません!



この記事はJavaScript Advent Calendar 2010の記事です



サーバーサイドJS盛り上がってますね(ぼくの観測範囲で)
まあ主に node.js とか node.js とか node.js とか

たしかにサーバーサイドJSなら、これまでHTML+CSS+JavaScriptクライアント側を書いてた人も、新しい言語の構文とか覚えずにサーバーサイドが書けちゃいますよ

でも、まだ実行環境を整えるのはちょっとたいへん…
こんなときPHPなら、適当なレンタルサーバー借りても大抵動かせちゃうのに!よしPHPをやろう!


はい、JavaScript Advent Calendar の記事です


気軽にサーバーサイドJSを試してみたい?


それ、appengineでできるよ


というわけで、Google App EngineサーバーサイドJSをやってみます
なんでも、appengine 上でRhinoが動くので、RhinoベースのサーバーサイドJSライブラリが動くらしい
「らしいです」というのは、ぼくもこの記事書くためにはじめてやってみるので、まあ探り探りやっていく感じです
とりあえず試してみましょう

今回はRingoJsを使います*1

こんな動画があったのでこれを参考に

http://ringojs.org/downloads から Source 最新版のソースをダウンロード
ぼくはWindowsなので"RingoJS v0.6.0 zip source archive"を落として解凍

そしたらコマンドプロンプトを開いて、解凍したディレクトリに移動しておきます

で、動画では bin/ringo-admin とかやってますが、Windowsだとできないので

>cd bin
>ringo-admin.cmd create -a [作成するディレクトリのフルパス]

としました*2

これで土台がサクっと作られるので、次は動画にならって開発サーバを起動…



動画だと dev_server.sh とか使ってますが、今までEclipse+Pluginの世界で appengine/J をやってきたので入ってないんだった…

なのでこれから普通のSDK入れるのもめんどくさいのでとりあえずEclipseで起動します
ringo-adminでできたフォルダの中にWEB-INFフォルダがあるので、その中身でEclipseで作成したappengineプロジェクトのWEB-INFの中身を上書きします!
あとは普段どおり開発サーバを立ち上げるだけで普通に動きますね!そのままデプロイもOK!

とはいえ、せっかくJSサーバーサイドもやるんだからEclipseとか使わないほうがいいかね…

ちなみにこの先はRailsちっくな感じで作りこんでくっぽいです

とりあえずページを増やすだけならこんな感じに WEB-INF/app/actions.js に追記

var {Response} = require('ringo/webapp/response');

exports.index = function (req) {
    return Response.skin(module.resolve('skins/index.html'), {
        title: "It's working!"
    });
};

// ここから追記
exports.hello = function (req) {
    return Response.skin(module.resolve('skins/index.html'), {
        title: "Hello, ringojs"
    });
};
// ここまで追記

http://localhost:8888/hello にアクセスすると、http://localhost:8888/ のタイトル部分だけ変更されたページがでます
skins 以下がviewな感じでしょうかねー


以上おしまい

*1:他にもacreとかがあります

*2:ringo-admin.cmd create -a してからアプリ名を入力でもできるのですが、それだとbinディレクトリの中に作られてしまいます

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/drillbits/20101218/serverside_javascript_on_appengine