im-JSPackman - OPEN INTRA-MART

Download Report

Transcript im-JSPackman - OPEN INTRA-MART

第3回
OPEN INTRA-MART 勉強会
2009-03-02
アジェンダ

im-UISupplementsプロジェクト紹介 (江本)


intra-mart をリッチにしよう♪
すべては開発基盤? im-jspackmanとは?

実践!Im-JSPackmanでクラスを作ってみよう♪ (江本)

im-UISupplementsプロジェクト今後の計画 (江本)

LT

七島→榎本→下村→武藤→篠宮→本間 (敬称略)
Copyright© 2009 OPEN INTRA-MART
1
自己紹介

名前
 江本 守 ⇒ Emoto Mamoru ⇒ emooru (えもーる)

IM入社 4年目(28歳…)
 「え、ほんと?」とよく疑われますが事実です.. (泣)

im-UISupplements プロジェクト コミッタ since 2007年X月
 いつからかは忘れました。。
 初コミットは、2007/12/25 クリスマス♪

私がコミッタになったきっかけ!?
 UI開発楽しいなぁー
 世の中の技術をもっと触れてみたいなぁー
 スクリプト開発(im-jssp)と組み合わせてリッチなWebアプリを
さくさくっと作りたいなぁー
 ということで、私の夢は、みんなで intra-mart の UI をリッチにしたいなぁー
Copyright© 2009 OPEN INTRA-MART
2
アジェンダ

im-UISupplementsプロジェクト紹介
 intra-mart をリッチしよう♪
 すべては開発基盤? im-jspackmanとは?

実践!Im-JSPackmanでクラスを作ってみよう♪

im-UISupplementsプロジェクト今後の計画
Copyright© 2009 OPEN INTRA-MART
3
アジェンダ

im-UISupplementsプロジェクト紹介
 intra-mart をリッチしよう♪
 すべては開発基盤? im-jspackmanとは?

実践!Im-JSPackmanでクラスを作ってみよう♪

im-UISupplementsプロジェクト今後の計画
Copyright© 2009 OPEN INTRA-MART
4
im-UISupplementsって何?
Copyright© 2009 OPEN INTRA-MART
5
im-UISuplements プロジェクト


UIの便利なかっこいい部品やAPIを開発・提供
im-Jssp Framework や im-JavaEE Framework と連動♪
im.ui (im-UISupplements)
〜 UI部品s 〜
im.util
im.text
im.jsunit
im.net
im.log
im.lang (im-JSPackman[core])
Native JavaScript
Copyright© 2009 OPEN INTRA-MART
6
たとえば
im-Jssp Framework
と連動すると!?
Copyright© 2009 OPEN INTRA-MART
7
JavaScript+HTML ⇒ Webアプリさくさく開発♪

im-Jssp Framework?
 JavaScriptとHTMLを使ったテンプレートエンジン

+
request
プレゼンテーションページ (HTML)
 画面を担当
 IMART タグでバインド変数を表示

+
CSJS
 ビジネスロジックを担当
 バインド変数の設定

HTML
ファンクションコンテナ (Server-Side JavaScript)
優れたポイント☆ by 私的評価
JS
response
HTML
Client-Side
+
CSJS
Server-Side
 開発生産性の高さ

インタラクティブ
 ステップbyステップですぐ試して確認しなから開発できる♪

簡易なプログラミング言語の利用
 開発者育成コストの軽減
 JavaScript + HTML
サーバサイドもクライアントサイドも
JavaScriptで開発できる♪
クライアントサイドは im-UISupplements♪
Copyright© 2009 OPEN INTRA-MART
8
ここまで。。
Copyright© 2009 OPEN INTRA-MART
9
言いたいことを言ってきましたが、
私(江本)の夢はなんとなくわかった..
Copyright© 2009 OPEN INTRA-MART
10
im-UISupplements って
いまどこまでできているの?
Copyright© 2009 OPEN INTRA-MART
11
現状。。
im.ui (im-UISupplements)
〜 UI部品s 〜
im.util
im.text
im.jsunit
im.net
開発中
im.log
im.lang (im-JSPackman[core])
ほぼ
完成
Native JavaScript
少しずつですが、進んでます♪ (苦笑)
⇒ 皆さんと一緒に開発したいなぁー
Copyright© 2009 OPEN INTRA-MART
12
そのためにもまずは
im-JSPackman
をご覧いただきたい♪
あ、名前が似てるけど
関係ないよ。
正しくは「Pacman」
Copyright© 2009 OPEN INTRA-MART
13
im-JSPackman 誕生秘話。

私はISPでUIライブラリを作った!
 フローティングウィンドウ
 入力支援
 簡易HTMLエディタ etc

しかし。。
 CSJSはライブラリ化しづらい

名前の衝突の考慮、APIリスト
 必要なJSファイルをScriptタグで指定するのは面倒

依存関係を考慮
JavaScriptのライブラリ開発基盤
を作ってみよう!
Copyright© 2009 OPEN INTRA-MART
14
im-JSPackman
〜 intra-mart Client-Side JavaScript Package Management 〜

JavaScript ライブラリを開発・管理・提供するには?
⇒ Java から学んでみよう!

再利用性・メンテナンス性
向上をねらう
JavaScript でクラス開発の方法を提案!
 クラス単位での開発
1JSファイル1クラス定義
 継承

 パッケージ化

機能をクラス・パッケージで分類・管理・提供
 その他
instanceof による型判別
 例外クラス、例外処理の導入
 JSDoc(http://jsdoc.sourceforge.net/)によるAPIリスト化 等

Copyright© 2009 OPEN INTRA-MART
15
[利用者] 利用イメージ
外部JSファイルを指定する script タグは1つだけ!
<html>
⇒ html ファイルのメンテナンスも楽!
<head>
<script type=“text/javascript” src=“../csjs/im/lang/jspackman.js” />
<script type=“text/javascript”>
動的にJSファイルを読込み、クラスをロード!
Import(“im.sample.SampleMain”);
⇒ 依存関係を気にする必要なし!
使用するクラスだけをインポート指定!
Import(“im.util.List”);
Main.invoke(“im.sample.SampleMain”);
function sample () {
var list = new im.util.List();
初期処理用に、Mainクラスを指定!
※onloadイベントの代わり
}
</script>
</head>
[注意]
<body> … </body>
インポートしたクラスは、Main クラスの main メソッドが
実行されるタイミング以降に利用できる!
</html>
Copyright© 2009 OPEN INTRA-MART
16
アジェンダ

im-UISupplementsプロジェクト紹介
 intra-mart をリッチしよう♪
 すべては開発基盤? im-jspackmanとは?

実践!Im-JSPackmanでクラスを作ってみよう♪

im-UISupplementsプロジェクト今後の計画
Copyright© 2009 OPEN INTRA-MART
17
申し訳ないです。
作ったクラスを参考に紹介します!
「Pacman」を作る
時間はあったんだけど
ねぇ。。。
Copyright© 2009 OPEN INTRA-MART
18
im.util.List クラスを見てみましょう♪
リンク
Copyright© 2009 OPEN INTRA-MART
19
クラス開発ポイント

クラス定義
 ルール
1ファイルに1クラスを定義
 すべてクラスのスーパークラスは im.lang.PackmanObject

 本当は Native の Object です。。

新規クラスや既存クラスを継承して機能拡張
 ネイティブクラスの拡張可!
 手順
パッケージ宣言
 インポート宣言
 クラス定義

 インスタンス変数、インスタンスメソッドの定義

クラス変数、クラスメソッドの定義
 制約

オーバーライドした親メソッドは実行できない Ex: super.xxxx()
Copyright© 2009 OPEN INTRA-MART
20
[参考] クラス開発 -- パッケージ宣言 --
Copyright© 2009 OPEN INTRA-MART
21
[参考] クラス開発 -- インポート宣言 --
Copyright© 2009 OPEN INTRA-MART
22
[参考] クラス開発 -- クラス定義 --
Copyright© 2009 OPEN INTRA-MART
23
[参考] クラス開発 -- 拡張クラス --
Copyright© 2009 OPEN INTRA-MART
24
[参考] クラス開発 -- クラス変数、クラスメソッド定義 --
Copyright© 2009 OPEN INTRA-MART
25
アジェンダ

im-UISupplementsプロジェクト紹介
 intra-mart をリッチしよう♪
 すべては開発基盤? im-jspackmanとは?

実践!Im-JSPackmanでクラスを作ってみよう♪

im-UISupplementsプロジェクト今後の計画
Copyright© 2009 OPEN INTRA-MART
26
今後の計画
im.ui (im-UISupplements)
〜 UI部品s 〜
im.util
im.text
im.jsunit
im.net
そろそろ
開発しよ!
im.log
im.lang (im-JSPackman[core])
Native JavaScript
下位層は、im.ui パッケージを開発しながら充実していきます♪
Copyright© 2009 OPEN INTRA-MART
27
具体的には

UI 部品
 フローティングウィンドウ、ツリー etc…


デモ:フローティングウィンドウの可能性の広さ
バリデータ
 サーバサイドと連動まで検討


「スーパープログラマ榎本さん」が作ったライブラリに感動!
intra-mart タブ化
 アプリケーションをintra-mart画面内のタブで表示


Yahoo! Mail β版のイメージ!
im-Jsspと連動したサンプルアプリケーション
 検討中♪API開発 -- インポート宣言 --
ご興味を持たれた方は是非
一緒に楽しく開発しましょう♪
Copyright© 2009 OPEN INTRA-MART
28