使い方

← 戻る
→ 進む
Enter 進む
↑ サムネイル

第2回
Open INTRA-MART
勉強会

2009-01-27

自己紹介

Open INTRA-MART コミッタ

株式会社イントラマートCSI: 榎本 潤

今日のお題

Open INTRA-MARTのご紹介

Open INTRA-MARTとは

「技術者が楽しく!」をモットーに、
わくわくする事の発見/共有を目的とした
コミュニティです!

「技術者が楽しく!」

楽しくって...?

覚える、経験する!

創る!

利用してもらう!

一緒に「技術者が楽しく!」
を共有しませんか?

情報発信源

http://oss.intra-mart.org

今日のお題

プロジェクト

im-tools: im-wtp-resin

これはなに?

Eclipse WTPからResinを利用する為のEclipse Pluginです!

Resinってなに?

Webアプリケーションサーバ
caucho社製
海外では結構有名らしい

Eclipse WTPってなに?

Web Tools Platformの略
Webアプリ開発に利用します。
EclipseからWebアプリケーションサーバを起動できたりと便利!!

http://www.eclipse.org/webtools/

だけど...

Resin用のサーバ設定が入ってない...

なので...

つくりました。

動かす為に必要なもの

http://oss.intra-mart.org/projects/im-tools/wiki/im-wtp-resin-plugin

デモ: 動かしてみる

是非ご利用下さい!

im-wtp-resin
おしまい。

プロジェクト

im-jssp: im-jssp-blank

これはなに?

im-jsspのアプリを作る為の
土台となるプロジェクトです!

im-jsspを触ってみたいけど...

何をしたら良いか解らない

なんて話は聞いた事が無いけれど

簡単にim-jsspの環境を作る為の
   プロジェクトです!

動かす為に必要なもの

m2eclipseとは

ライブラリの依存関係の解決を
Eclipse上で行ってくれるプラグインです!
Apache Mavenが利用されています。http://m2eclipse.sonatype.org/

subclipseとは

EclipseからSubversionを使う為のプラグインです。
http://subclipse.tigris.org/

Subversiveという同様のプラグインもあります。
http://www.polarion.org/index.php?page=overview&project=subversive

どちらでもok!

デモ: 動かしてみる

必要なステップは...

  1. im-jssp-blankのチェックアウト
  2. サーバにプロジェクトを登録
  3. 起動!

簡単!!

簡単に始められます!

im-jsspでなにかアプリを作ってみませんか?

im-jssp-blank
おしまい。

プロジェクト

sandboxプロジェクト

そもそもsandboxって何?

今のところ中身は...

敷居が高いんじゃ無いかと感じられている方、
まずはsandboxで一緒に遊びませんか!

sandbox: im-jssp-api-net

これはなに?

im-jsspで通信周りのAPIを提供する為のプロジェクトです!

含まれるAPI

SimpleHTTPClientとは?

なので...

つくりました。

こんな使い方です。

1. インスタンスを作る


var client = new SimpleHTTPClient("http://host/context");
			

オプションも指定可能です

2. 呼出す


var response = client.get("foo=foo&bar=bar");
// または
var response = client.get({
	"foo": "foo",
	"bar": "bar"
});
			

メソッド

デモ: 動かしてみる

Weather Hacks: お天気Webサービス

livedoor社の提供する気象データ提供サービスを呼出してみる
http://weather.livedoor.com/weather_hacks/webservice.html

将来的には...

im-jsspのRESTクライアントとして使いたい!
intra-martにも組み込みたいなぁ...

SimpleHTTPClientおしまい。

含まれるAPI

SimpleSOAPClientとは?

でも...

既にとっても便利なSOAPClientがあるのに...?
SOAPClientの手順は...

  1. インスタンスを作る(WSDLを指定)
  2. パラメータを設定する(サンプルコード付き)
  3. 呼出す!

SimpleSOAPClientの場合は...

  1. インスタンスを作る(endpointを指定)
  2. パラメータを設定する(サンプルコード無し)
  3. 呼出す!

簡単!!!

あれ...?

こんな時に使います

こんな使い方です!

1. インスタンスを作る


var client = new SimpleSOAPClient("http://world.wide.web");
			

オプションも指定可能です

2. 呼出す


var response = client.sendReceive(<xml>foo</xml>);
// または
client.sendRobust(<xml>foo</xml>);
			

メソッド

デモ: 動かしてみる

WebServiceを呼び出してみます!

将来的には...

SOAPClientの補助的なAPIにしたい!
でも結構いらない子な気がするのは内緒

SimpleSOAPClientおしまい。

ということで!

im-jssp-api-netに関するアイディア、ご意見等ありましたらお待ちしております!

im-jssp-api-netおしまい

プロジェクト

im-jssp-emptytag

これはなに?

im-jsspから派生(branch)しているプロジェクトです

これまでim-jssp(intra-mart)で作ってきたけれど...


<IMART type="string" value=bindValue></IMART>
			

ここがイラっとくること事が...

なので...!


<IMART type="string" value=bindValue />
			

こんな形に書けるようにしたい!

デモ: 動かしてみる

地味だけど...

コンパイル速度もup!

放置中、明日から本気出す。

プロジェクト

今日のお題

おさらい

開発環境は

これらを元に...

実際に開発する流れをご紹介!

本日の作成するもの

Memcached client API

memcachedとは?

memcachedの使いどころ

普段DBからデータを取得している部分を...

function getXXX(key){
  return DB.select("select * from my_table where key = ?", key);
}
function getXXX(key){
	var record = Cache.get(key);
	if(record == null){
		record = DB.select("select * from my_table where key = ?", key);
		Cache.set(key, record);
	}
	return record;
}

特徴

こんな所でつかわれてます

コマンド

デモ

  1. インストール
  2. telnetから使ってみる

API

JavaScript用のAPIが無い...

APIが無い...

無い...

つくりまーす

今回は...

Java用のMemcached Client
memcached client for Java(LGPL)を利用して作ります。

http://www.whalin.com/memcached/

ちなみに...

APIの作り方はここでも紹介されています

http://oss.intra-mart.org/projects/im-jssp/discussion/2/3

手順

  1. プロジェクトを作る
  2. API用のクラスを作る
  3. APIクラスの登録
  4. JavaScriptのコンストラクタを書く
  5. JavaScriptのメソッドを書く

1. プロジェクトを作る

mavenプロジェクトを作ります
コマンドから作る場合はこんな感じです

>mvn archetype:create -DgroupId=org.intra_mart.jssp
 -DartifactId=im-jssp-api-cache
>mvn eclipse:eclipse

1. プロジェクトを作る

プロジェクトが作成されたらpom.xmlにdependencyを追加します
今回はrhino:jsとMemcache APIのcom.danga:MemCachedを追加します

<dependency>
	<groupId>rhino</groupId>
	<artifactId>js</artifactId>
	<version>1.6R7</version>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>com.danga</groupId>
	<artifactId>MemCached</artifactId>
	<version>2.0.1</version>
	<scope>compile</scope>
</dependency>

2. API用のクラスを作る

ScriptableObjectを継承したクラスを作り
getClassNameメソッドを実装します!

3. API用クラスを登録する

jssp-config.xmlに作ったクラスを登録します!
(intra-martの場合は/conf/system-install-xxx.xml)

<api-class name="org.intra_mart.jssp.script.api.cache.CacheObject" />

4. JavaScriptのコンストラクタを書く

jsConstructorメソッドを定義!

public static Object jsConstructor(Context cx, Object[] args,
				Function ctorObj, boolean inNewExpr){
	// インスタンスを返す!
}

5. JavaScriptのメソッドを書く

jsFunction_xxxを定義

public Object jsFunction_hoge(Object arg1, Object arg2){
	// ここに処理を書く!
}

ここではmemcachedに対してset, getを行うメソッドを作ります

試してみる

完成!

最終的には

// これを
cache.set("foo", value);
var foo = cache.get("foo");
// こうしたい
cache.foo = value;
var foo = cache.foo;

ということで

簡単に作れたり、

JavaScriptの仕組みとかを覚えるのにちょうど良いです!

今日のお題

質疑応答とか

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

参考等.

感謝!!!