第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 ›...

35
第4回Open INTRA-MART勉強会 Google App EngineでServer Side JavaScript

Transcript of 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 ›...

Page 1: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

第4回Open INTRA-MART勉強会

Google App EngineでServer Side JavaScript

Page 2: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

じこしょうかい

名前

榎本

潤(えのもと

じゅん)

所属

Open INTRA-MART

株式会社イントラマートCSI

Page 3: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Open INTARA-MARTとは

Page 4: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Open INTRA-MARTとは

「技術者が楽しく」をモットーとしたコミュニティです!

http://oss.intra-mart.org/

irc: oss.intra-mart.org:6667 #imart

ml: [email protected]

Page 5: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Google App Engine

Page 6: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Google App Engine

Googleの提供するWebアプリケーション実行環境

Googleのインフラ上で自作のWebアプリが実行可能

負荷分散とかスケーリングとかはGoogleがやってくれる

ローカル開発環境も提供されてる

今のところPythonとJavaが使える

制限もあるファイルの保存が出来ない

Socketが開けない

スレッドが生成できない

JNIも利用できない

Page 7: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Server Side JavaScript

Page 8: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Server Side JavaScript

いろいろある。10gen, Acre, Apache Sling, AppJet, Aptana

Jaxer, ASP, Axiom Stack, Cocoon, Flowscript

CouchDB. DovetailDb, ESXX, Ejscript, EditMe, GLUEscript, Helma, Object Publisher, Jack

jsext, jslibs, JSSP, im-jssp, JuiceScript, Junction, Livelink, WCM, Presentation, Server, mod_jd, Myna, Javascript Application Server, NOTEX, OpenMocha, Persevere, Phobos, POW, Rhino in Sprint, Rhinola, Server Side Execution(SSX), Server Side JavaScript, Torino, Whitebeam, wxJavaScript, v8cgi

参考: http://en.wikipedia.org/wiki/Server-side_JavaScript

そういえば昔cauchoも持ってたよねcom.caucho.es.*

Page 9: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

im-jssp framework

Page 10: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

im-jssp frameworkとは

Server Side JavaScript Frameworkです

javaで出来てます

Application Server上で動きますResin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere…

シンプルなアーキテクチャ

html + js

Page 11: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

im-jsspの良い所

習得が早い!

サーバとクライアントで同じ言語が利用可能

実はServletコンテナさえあれば動く

winstone, SDLoader

Page 12: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

im-jsspのあれな所

サーバ側の処理Script言語で書いてなんか意味あんの?

おぶじぇくとしこうじゃないから!

自由に書け過ぎて可読性があれな事も

ルールがないと大人数で作れば作るほど…

他人のコードがわからん、まったくわからん

Javaで書いた方が早くない?

静的型付け言語の方が確実でない?

Page 13: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

こまけぇことたぁいいんだよ!

Page 14: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

うごかしまーす

Page 15: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

あると便利なもの

Eclipsehttp://www.eclipse.org/

Google Plugin

for Eclipsehttp://dl.google.com/eclipse/plugin/3.4

Page 16: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

無いと困るもの

Googleのアカウント

GAE/Jの申請

JavaScriptへの愛

Page 17: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

つくる

プロジェクトを作る

im-jssp on GAE/J用のライブラリを置く。

http://oss.intra-mart.org/hudson/

Page 18: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

はろう世界

var $message;

function init(request){

$message = “hello”

+ request.name;

}

Page 19: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

はろう世界

<html>

<head>

<title></title>

</head>

<body>

<imart type=“string”

value=$message />

</body>

</html>

Page 20: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

ろーかるで試す

Page 21: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Server Side <-> Client Side

function sayHello(name){

return ‘hello ‘

+ name;

}

<imart type=“jsspRpc”

name=“sample”

page=“sample”

/>

<input type=“button”

onclick=“alert(sample.sayHello(‘world’));”

/>

Page 22: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

GAEにでぷろい

Page 23: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

GAEにでぷろい

GAE上にアプリケーションつくる

appengine-web.xmlにデプロイ先を書く

Page 24: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Googleであそぶ

Page 25: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

ぐぅぐるが提供してるAPI

Google Accounts

Memcache

URL Fetch

Mail

Image

Datastore

Page 26: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

Datastore: JDO

JDOとはなんぞや

Java

Data Object

Javaのおぶじぇくとを永続化する為の仕様

これを使うと、こまけぇことはおいといて GoogleのBigTableってDBにデータを保存できる

Page 27: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

永続化するEntityはjavaで.

Enhancerを使ってenhanceしないと駄目。

ここだけjavaを書くんです…

.java .class .class

javac enhancer

Page 28: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

それでもjavascriptをあいしてる。

だからのこりはjavascriptでかく。

var emp

= JDO.select(“select

from foo.Employee”).getSingleResult();

JDO.select(“select

from foo.Employee”).eachRow(function(row, index){

doSomething(row);});

JDO.transaction(function(pm)){var emp

= new Packages.foo.Employee();

emp.name

= “enomoto

san desuyo.”;

pm.makePersistent(emp);

}

Page 29: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

javascriptとjavaはシームレスに繋がる

var calendar = java.util.Calendar.instance;

var emp

= new Packages.foo.Employee();

jsからjavaのAPIがそのままつかえる。

どうしてもjsじゃむりならjavaつかう。

全てJavaで書けばええやんという意見は 受け付けない。

Page 30: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

でも

JDOつかってとうろく、せんたく

Page 31: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

かんたん!

Page 32: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

こんなのがかんたんにつくれた。

Javascriptでうぃきをつくった。

全部で10じかんくらい

Page 33: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

うぃき

http://im-jssp-wiki.appspot.com

Page 34: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

うぃき

なまえぼしゅうちゅう

javascriptが好きならjsspやりませぬか。

こみったも募集中!

Page 35: 第4回Open INTRA-MART勉強会oss.intra-mart.org › study_meeting › 2009-05-19 › 2009-05-19...2009/05/19  · Resin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere… シンプルなアーキテクチャ

ご清聴有難う御座いました