次世代ウェブフレームワークの幕開け...
TRANSCRIPT
![Page 1: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/1.jpg)
次世代 ウェブフレームワーク
の幕開け~ステートフルはじめました
君が僕を望むなら僕は君を忘れない~
Yoshiori SHOJI
![Page 2: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/2.jpg)
自己紹介
![Page 4: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/4.jpg)
注意このプレゼンに登場する
ステートフルなフレームワークは現在流行中の RESTful と
競合したり、敵対するのもではありません誤った認識でみてしまうと
本質を見落としてしまいがちになりますのでご注意ください。
![Page 5: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/5.jpg)
ステートって何?
![Page 6: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/6.jpg)
ステート = 状態
http://rest.blueoxen.net/cgi-bin/wiki.pl?RestFaq#nid5EC
A: 電話番号教えて
B: あんた誰?
A: ちょw 古い友達のフランクだよ!!
B: あ、そか、俺の番号は…
stateful
A: 電話番号教えて
B: あんた誰?
A: 古い友達のフランクだけど電話番号教えて
B: 俺の番号は…
stateless
![Page 7: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/7.jpg)
HTTP プロトコル
![Page 8: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/8.jpg)
HTTP プロトコル•プロトコルレベルではステートレス
•クライアント側との連携で擬似的に接続状態の維持をしている
•誤解を恐れずに言えば「プロトコルレベルではステートレスだけど実質的にはステートフル」とも言える
![Page 9: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/9.jpg)
すごくシンプルな例
ブラウザの戻る,進む
![Page 10: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/10.jpg)
クライアント側(ブラウザに限らず)は様々な情報を使ってサーバと状態のやりとりをする
![Page 11: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/11.jpg)
•cookie• 値を直接 cookie に
• サーバ側との一意なキー(実際の値はサーバ側で持っている)
•GET パラメータ
•POST パラメータ
•ヘッダ
![Page 12: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/12.jpg)
アプリケーション
![Page 13: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/13.jpg)
アプリケーション•ステートレスな処理もあればステートフルな処理もある
•ステートレスだけで済ませられればそれにこしたことは無い
•しかしステートレスだけで処理しようとすると問題もある
![Page 14: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/14.jpg)
よくある例
入力画面 確認画面 完了画面
入力画面で入力されたものを
ここまで持っていなければいけない
![Page 15: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/15.jpg)
今までのフレームワーク
![Page 16: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/16.jpg)
今までのフレームワーク•基本的にはプロトコルに準拠
•プロトコルレベルを薄くラップしてステートフルを実現
• session に値を保存
•もしくは hidden や GET パラメータなど
![Page 17: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/17.jpg)
フレームワーク
HTTP プロトコル
ステートレス
アプリケーション
ステートフル
フレームワーク
![Page 18: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/18.jpg)
簡単にいうと
•HTTP プロトコルはステートレス
•Web アプリケーションはステートを持つ必要がある
• session への保持や破棄は本来のロジック記述には不必要な作業
![Page 19: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/19.jpg)
ん?どこかで聞いたことのあるような台詞?
メモリ管理や GC などで散々議論されてきた話題とにていませんか?
![Page 20: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/20.jpg)
セキュリティ
![Page 21: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/21.jpg)
•cookie• 値を直接 cookie に
• サーバ側との一意なキー(実際の値はサーバ側で持っている)
•GET パラメータ
•POST パラメータ
•ヘッダ
クライアントに値を返してる
![Page 22: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/22.jpg)
入力画面 確認画面 完了画面
validate必要 validate必要
クライアントに値を返すと
ちょっとでもミスをすると……
こんにちは!こんにちは! こんにちは!
こんにちは!こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
こんにちは!こんにちは!
表示画像と内容には一切関係はありません
![Page 23: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/23.jpg)
その他にも
![Page 24: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/24.jpg)
様々な問題の解決
•戻るボタン対策
•ダブルサブミット
•マルチウインドウ対策
• F5(更新)連打対策
![Page 25: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/25.jpg)
ステートフルなwebアプリケーションフレームワークは
開発者がビジネスロジックに
注力できる
![Page 26: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/26.jpg)
JBoss Seam
![Page 27: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/27.jpg)
JBoss Seam とは?•JBoss SeamはJBossによって開発された初めての Webアプリケーションフレームワークである
• JSR-299:WebBeans(2)
• Specification Lead Gavin King JBoss, Inc.
![Page 28: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/28.jpg)
![Page 29: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/29.jpg)
![Page 30: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/30.jpg)
Seam は Glue(糊)
•JSF - View と Controller
•EJB3 - Model
![Page 31: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/31.jpg)
@Stateful @Name("hello") @Scope(CONVERSATION) public class HelloAction implements Hello,Serializable{ @In private User user; @Begin public String imput() { // ... return "success"; } @End public String save() { // ... return "success"; }}
![Page 32: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/32.jpg)
Wicket
![Page 33: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/33.jpg)
Wicket とは?
•Swing ライクなコーディング
• View と Controller
• コンポーネント
• (X)HTML と Java だけで簡潔
![Page 34: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/34.jpg)
public class ExamplePage extends WebPage { private static final long serialVersionUID = 1L; private String labelText;
public ExamplePage() { Form form = new Form("form"); form.add( new TextField("field", new PropertyModel(this,"labelText"))); form.add(new Button("nextButton") { private static final long serialVersionUID = 1L; protected void onSubmit() { setResponsePage(new NextPage(ExamplePage.this)); } }); super.add(form); } // ... }
![Page 35: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/35.jpg)
コスト
![Page 36: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/36.jpg)
session使いまくっていいの?
![Page 37: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/37.jpg)
すぐに移行すべきか
![Page 38: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/38.jpg)
Struts Ruby on Rails枯れた技術の集合
![Page 39: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/39.jpg)
ステートフルなフレームワークを
抽象的に理解することこそが
大事
![Page 40: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/40.jpg)
最後に
![Page 41: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/41.jpg)
今年のデブサミのテーマ「コードで世界を変える」
![Page 42: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/42.jpg)
「誰か」という人は存在しない
![Page 43: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/43.jpg)
みんなで変えていこう!
![Page 44: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/44.jpg)
• blog とかで何でもいいから発信を!
•ただ文句を言うだけでなくどうしたいかを!
•どんどん発表しよう!!Java-ja1000Speakers
![Page 45: 次世代ウェブフレームワークの幕開け ~ステートフルはじめました/君が僕を望むなら僕は君を忘れない~](https://reader034.vdocuments.net/reader034/viewer/2022042607/5561557ad8b42aa20d8b52a0/html5/thumbnails/45.jpg)
ご静聴ありがとうございました