• 検索結果がありません。

Teedaで始めるPage駆動開発

N/A
N/A
Protected

Academic year: 2021

シェア "Teedaで始めるPage駆動開発"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

Seasar Conference

Seasar Conference

2006 Autumn

2006 Autumn

Teeda

Teeda

で始める

で始める

Page

Page

駆動開発

駆動開発

Teedaプロジェクト/リーダー

電通国際情報サービス/Seasar2技術推進G

大谷 晋平

(2)

アジェンダ

アジェンダ

• Teedaとは

• Page駆動開発とは何か

• Teedaの特徴

– Demo

• Teedaを支えるEcilpseプラグイン「Dolteng」

• TeedaのRoadmap

• まとめ

(3)

自己紹介

自己紹介

• 名前 : 大谷 晋平(おおたに しんぺい)

• Blog :

http://d.hatena.ne.jp/shot6/

• 所属 : 株式会社電通国際情報サービス(

http://www.isid.co.jp

)

• コミッタ :

Teeda

、S2JSF、S2Struts、Seasar2

– プレゼンテーション層で主に開発しています

• メール : [email protected]

• 特徴 : めがね

(4)

Teeda

Teeda

とは

とは

• Teedaとは

– プレゼンテーション層の開発をよりシンプルに。

• Webアプリケーションフレームワーク

• Javaで

Page駆動開発

を実現

– Teedaとは沖縄の言葉で「

太陽

http://teeda.seasar.org/ja/

– Teeda 1.0 リリース (^∀^)/

• 11月11日11時11分無事リリース

(5)

Page

Page

駆動開発とは何か

駆動開発とは何か

• Page駆動開発とは

– HTMLをベースとした開発スタイル

– HTMLにJavaクラスをマッピングする

• 対応関係が明確なのでムリが少ない

– 1Page = 1HTML + 1POJO(単なるJavaクラス)

• TeedaではPOJOのことをPageクラスと呼びます

• マッピングの設定が必要なの?

– Teedaでは規約に従い、シンプルに名前をあわせるだけ。

» add.html → AddPage.java

» HTML名の頭を大文字+Page

(6)

Teeda

Teeda

の位置づけ

の位置づけ

View層

View制御層

Teeda

Mayaa

Struts

JSF

JSP

Velocity

Uuji

KuinaDao

S2Dao

(7)

Teeda

Teeda

の特徴

の特徴

• Webアプリケーションフレームワーク

– さくさくWeb開発できる

– Super Agile

Easy Enterprise

の両面サポート

• Super Agile

= 独自仕様で開発生産性を重視

• Easy Enterprise

= 標準仕様に基づき機能拡張

• 設定ファイルをほぼ書かない

• PRGパターンの実装

(8)

Web

Web

アプリケーション

アプリケーション

FW

FW

Teeda

Teeda

1

1

• Seasar2.4の機能を100%発揮できる

– さくさく感のあるリズムのよい開発が可能に。

• 最大のウリはHotDeploy

による段階的な開発

– 規約

によって開発を効率化

– フルスタック(WebからDB)で、まとめて一つのフ

レームワークとして提供される

• 本来必要の無い設定を色々なところでやる必要もない

• 一環したポリシーに基づいていて、違和感が少ない。

• FWのポリシーの差を、使う人が吸収するのは時代遅れ

(9)

Web

Web

アプリケーション

アプリケーション

FW

FW

Teeda

Teeda

2

2

• Super Agile

Easy Enterprise

の両面を支える

– きちんと定義されたライフサイクルを持つ

– プレゼンテーションの開発に必要な機能を持つ

• Validation、Converterなど

– 拡張性

– Teedaは以下の要素から成り立つ

• CoreはJSF仕様の実装部分

• Extensionは

拡張機能部分

(今回はここ)

• Ajaxな機能を実現する部分

(10)

設定ファイルを書かない

設定ファイルを書かない

(1)

(1)

• 設定ファイルをほぼ書かない

– XML地獄からの脱却

• 規約に基づき、必要なリソースに記述

– 開発のリズムを崩さないためにも重要

– 画面遷移の設定

• HTMLに簡単な規約に基づいて書くだけで遷移

– Pageクラス(Model)の登録

• Seasar2.4のSmartDeploy機能でほぼ必要なし

– 始めの一回で基点となるパッケージを指定するのみ

(11)

設定ファイルを書かない

設定ファイルを書かない

(2)

(2)

• 画面遷移は、HTMLに書くだけ

– 非常に直感的

– 開発に必要なリソース以外は修正しない

<

input type

=

"button"

value

=

"calculate"

id

=

goAddResult

"

/>

addResult.htmlに遷移する。

<

input type

=

"button"

value

=

"calculate"

id

=

"

doCalculate

"

/>

(12)

設定ファイルを書かない

設定ファイルを書かない

(3)

(3)

• Modelの登録

– Rootパッケージ名を入力するだけ。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"

"http://www.seasar.org/dtd/components24.dtd">

<components>

<component class=

"org.seasar.framework.convention.impl.NamingConventionImpl"

>

<initMethod name=

"addRootPackageName"

>

<arg>

ここにrootパッケージ名を入力

</arg>

</initMethod>

</component>

</components>

(13)

PRG

PRG

パターンの実装

パターンの実装

(1)

(1)

• PRGパターンとは何か?

– POST-REDIRECT-GET

の組み合わせで画面遷移

– 開発者を悩ませる4つの問題

• ブラウザのRELOAD問題

• ブラウザの戻るボタン問題

• URLがずれる

• この画面消せないんですか?というお客様の要望w

(14)

PRG

PRG

パターンの実装

パターンの実装

(2)

(2)

• 何が問題か

– Forwardでの問題はPOSTしたresponseをそのまま

使うため、reloadしたときも再度POSTされる。

– REDIRECTを挟み、GETを使えば対処できる。

• GETであれば、RELOADされてもModelが意図しない

状態で更新されない

• URLもずれない。

• PRGパターンは責務の分離

– Modelの状態変更と、画面の描画の分離

(15)

PRG

PRG

パターンの実装

パターンの実装

(

(

)

)

• Teedaでの実装は、

– Viewをハンドリングする部分(ViewHandler)で実装

• REDIRECTする直前にPageのプロパティをsave

• RESTOREされたときに、同一のプロパティ名があれば

restoreする。

• TAKE_OVERアノテーションで引き継ぐ・引き継がないを

細かく制御可能。

@TakeOver(type = TakeOverType.NEVER)

(16)

PRG

PRG

パターンイメージ図

パターンイメージ図

addInput.html

addResult.html

POST

GET

REDIRECT

View(Client)

Teeda(Server)

AddInputPage

AddResultPage

状態をsave

状態を

restore

(17)

Stateless

Stateless

• TeedaはStateless

– Teedaでは極力状態を保持しない

• Teedaでは明確な方針を出してます

– 状態はHTML側に埋め込むか、DBに格納する

– Teeda内部ではSessionを原則使わない

• 限定して利用

– PRGのPage間の遷移時に

– ダブルサブミット対策に

• Sessionに状態を中途半端に保持しない

• 通常のJSFでは、状態をひたすら保持

(18)

View

View

テクノロジの特徴

テクノロジの特徴

• ピュアなHTMLでViewを記述可能

– HTMLテンプレートと呼びます

– 設計の時に使ったHTMLのMockをそのまま実行環

境に持っていける

• Teedaではidを振るのみ。

これだけでコンポーネントとマッピングされる。

• マッピングの詳細規約などは最後に。

(19)

HTML

HTML

テンプレートの分類

テンプレートの分類

• HTMLテンプレートの分類

– ポイントはコンポーネントの定義をどこに記述するか

• どこにも書かない

– Teeda

(idベースの規約によって、自動設定する)

• View(HTMLなど)に直接記述する

– S2JSF

• Viewとは別のファイルに記述する(直接も書ける)

– Mayaa、Tapestry4

• Javaで記述する

– Wicket、Clickなど

(20)

足し算による

足し算による

Demo

Demo

• 足し算のサンプル

– 足し算をして、結果を次画面に表示

– 入力なし、または3桁未満ならValidationエラー

• まずはHTMLだけで動かしてみましょう。

addInput.html

addResult.html

足し算実行

再度足し算

or 次の足し算

(21)

足し算による

足し算による

Demo

Demo

(続き1)

(続き1)

• HTML(addInput.html)

<

html

>

(途中省略)

<

form

id

=

"addForm">

<

tr

>

<

td

></

td

><

td

><

input

type

=

"text"

id

=

"arg1"/></

td

><

td

><

span

id

=

"arg1Message"></

span

></

td

>

</

tr

>

<

tr

><

td

>

+

</

td

>

<

td

><

input

type

=

"text"

id

=

"arg2"/></

td

><

td

><

span

id

=

"arg2Message"></

span

></

td

>

</

tr

>

</

table

>

<

input

type

=

"button"

value

=

"calculate"

id

=

"doCalculate

onclick

=

"location.href='./addResult.html'"/>

</

form

>

</

body

>

idによって、Pageクラスと

マッピングする。

(22)

足し算による

足し算による

Demo

Demo

(続き

(続き

2

2

• Pageクラス(addInputPage.java)

public class

AddInputPage {

//各種使用するValidatorの設定(省略)

private

Integer

arg1

;

private

Integer

arg2

;

private

Integer

result

;

public

String doCalculate() {

result

= new

Integer(

arg1

.intValue() +

arg2

.intValue());

return

“addResult”

;//次の画面遷移はaddResult.html

}

//各種getter/setter省略

idによって、Pageクラスと

マッピングする。

ボタンが押されたら

呼ばれるメソッド

(23)

足し算による

足し算による

Demo

Demo

(続き

(続き

3

3

• では実際に動かしてみましょう。

– このDemoでは次のことがわかります

• HotDeployによるサーバNonStopさくさく開発

• Htmlテンプレートが実際に動く

• Validation

(24)

Ecilpse

Ecilpse

プラグイン「

プラグイン「

Dolteng

Dolteng

• Dolteng

– Teedaでの開発効率を促進

• より、さくさく感のある開発へ。

• HTMLとPageクラスのマッピング機能

– QuickJUnitのように、Ctrl+5でHTML←→Page間を遷移

• 正しくマッピングされている場合はマーカーを表示

– ではDemoをご覧ください

(25)

Teeda

Teeda

のロードマップ

のロードマップ

• Roadmap

– レイアウト機能(TilesやS2JSFのと同等)

– ClientSideのValidation機能

• サーバサイドでValidatorを設定すると、自動で出力

– Ajaxな機能の強化

– Flexとの連携(妄想^^;?)

• HTMLの限界を超える部分をFlexに委譲

2007年初頭(次のSeasarCon?)

(26)

まとめ

まとめ

• Teeda

– プレゼンテーション層の開発をシンプルにする

– Page駆動なWebアプリケーションフレームワーク

– PRGパターンの実装

– 設定いらず

• 設定ファイルを書く必要は無い

• 書く必要があるHTMLとPOJOを規約に沿って書く

– HTMLテンプレート

• 基本はidを書いて、Pageとマッピングするだけ。

(27)

告知&リソース一覧

告知&リソース一覧

• Super Agile Web Development with Seasar2

のセッションでもっと凄いDemoをやります。

• リソース

– Teedaを始めるには、、、

http://www.seasar.org/wiki/index.php?Teeda%2FgettingStarted

– Teedaで問題があったら、

• Seasar-userまでメールくださいm(_ _)m

• または、

http://d.hatena.ne.jp/shot6/

にコメントください

(28)

感謝

感謝

• 感謝

– 会場に来てくださった皆さんm(_ _)m

– Teedaを使ってくださっているUserの人達

– 一緒に議論し、創っているTeedaチームの皆さん

– S2、S2JSFというカッコイープロダクトを作った

ひがさん

– Seasarプロジェクトを支えている人達

– 各種オープンソースに関わっている人達

(29)

Thanks for ALL!!!

Thanks for ALL!!!

ご清聴

参照

関連したドキュメント

・Microsoft® SQL Server® 2019 Client Access License (10 User)ライセンス証書 オープン価格. オープン価格 Microsoft SQL

題が検出されると、トラブルシューティングを開始するために必要なシステム状態の情報が Dell に送 信されます。SupportAssist は、 Windows

◆  鹿島アントラーズ  http://www.so-net.ne.jp/antlers/news/detail/20091224̲16̲2463.html 

問題解決を図るため荷役作業の遠隔操作システムを開発する。これは荷役ポンプと荷役 弁を遠隔で操作しバラストポンプ・喫水計・液面計・積付計算機などを連動させ通常

北区で「子育てメッセ」を企画運営することが初めてで、誰も「完成

・圃場排水技術 等 平成 24 年度

・ RCIC 起動失敗,または機能喪失時に,RCIC 蒸気入口弁操作不能(開状態で停止)で HPAC 起動後も

SGTS の起動時刻と各シナリオの放出開始時刻に着目すると,DCH では SGTS 起動後に放出 が開始しているのに対して,大 LOCA(代替循環)では