第1回Wicket勉強会に参加しました

少し遅くなってしまいましたが、感想等を書いてみようと思います。


Wicketは本がでるまで自重・・・していましたが、勉強会と聞いて参加しました。
ちゅうことで、本物のWicket初心者です><
なので、矢野さんの説明でとてもよく理解できました。


こういった勉強会に参加したのは初めてで少し緊張しておりましたが、
id:akrさんやshin1さんのお顔を見て安心して参加できたかと思います。


参加者は、30人以上いらっしゃったのか、後から社員の方が、
後に席を追加されておられました。


開催の場所を提供して頂いたXarts株式会社http://www.xarts.jp/
有り難う御座いました。
※快適な椅子があり、ちゃっかりと座らせていただきました^^


それにしてもラップトップとはいえ、ノートをひざの上において
メモとるのは・・・暑かった><


スピーカーされた方々、参加された方々お疲れ様でした。
勉強会も懇親会もとても楽しかったですw


id:t_yanoさん、第2回の開催を楽しみにしております。



・スピーカーの方々のリンク
http://d.hatena.ne.jp/t_yano/20080804/1217823773
http://cappuccino.jp/keisuken/logbook/20080802.html
第一回wicket-ja勉強会に参加&LTしました - u1tnkの日記



・参加された方々のリンク
http://mesolabs.com/2008/08/04/wicket-ja-1/
404 shin1のつぶやき ないわー Not Found: 第1回Wicket-ja勉強会
Wicket勉強会に行ってきましたよ。 - ( ꒪⌓꒪) ゆるよろ日記
http://www.everes.net/2008/aug/02/wicket_study_01/


※また見つけたら更新しマッスルw



以下、自分用の議事メモなので超長文となっております。
読まれる際には、頑張ってください^^;


矢野さんのところは超詳細ですが、ライトニングトークの部分は
いきおいにおされてちょっと薄いです。すみません。スミマセン。


・世界のやんやんことt_yanoさん
 ※WicketAjax −みんな大好きなサービスを150行でつくるぞ
 
 ・ステートフルなお話
  ・ぽにょオブジェクトがかわいかった
  ・GUIアプリではオブジェクトが状態を保持し、それを複数保持している
  ・Webアプリでは、通常オブジェクトは、リクエスト毎に破棄される
  ・Wicketは、GUIアプリのようにオブジェクトを保持するWebアプリのF/W
  ・どうやって保持しているの?
   ・ヒープで持っている
  ・Webの場合、セッション
   ・セッションは、入れ物
  ・Wicketの場合、セッション=ヒープ
   ・Wicketが状態を維持する
  
  ・状態を持てると
   ・オブジェクトのバージョン管理ができる
   ・リクエストの旅にオブジェクトが生成され、違うものがえきる
   ・バックボタン=UNDOできる
    ・ページの状態を管理しているから
    ページの状態を管理しているから
   ・ページを更新するたびにメモリをもってしまうのか? 
    ・メモリ大丈夫?
     ・解決策!!
      ・セカンドレベルキャッシュ=ワークフォルダにおちる
      ・セッションには現在のページで過去のページは、セカンドレベルセッションへ
      ・バックボタンを押した場合、キャッシュから過去のオブジェクトをひきだしてくる

 ・ステートフルの説明終了   

 ・QA   
  ・セカンドレベルキャッシュの消えるタイミング  
   ・設定があり、ページオブジェクトをどこまでもてるのかバージョンが指定できる 
   ・デフォルトではバージョン5まで 
   ・バージョン管理とは、ページ遷移とはちがう 
   ・あくまでページオブジェクトのバージョン管理 
  ・新しいページとふるいページの関係  
   ・それぞれでバージョン管理 
  ・使ってじかんがたったら?  
   ・セッションに入っているものはセッションタイムアウトまで
   ・確認していないがキャッシュも消えるはず
   ※バージョンが戻るのはバックボタンを押したとき
  ・保存している形 
   ・Wicketで使っているModelとかすべてはSirializable
   ・すべて書き出せる
   ・そうじゃないとエラーとなる
  ・クラスタリングは? 
   ・Wicketを作っている人たちは、こだわって考慮している
   ・セッション同期をしっかりしておけば、各サーバーに伝播するはずだったg、、、
   ・セカンドキャッシュが・・・
   ・セッションが同期している間は、セカンドキャッシュも同期される
   ・セッション同期が動いた瞬間にセカンドキャッシュも一致させる
   ・サーバーがおちちゃうとあわせられない・・・
   ・Wicketが同期する部分ではないとコミッター界隈ではいっている

 ・Ajaxのお話
  ・Wicketは既に持っている
  ・JavaScriptを書かなくても動的に切り替えることができる
  ・DOMエレメント=コンポーネント
  ・コンポーネントの更新=DOMエレメントの更新
  ・このあとで実際のコーディングで確認できるポイント!

 ・ビヘイビア(ふるまい)
  ・あらゆるコンポーネントにあとからふるまいだけを追加できる
  ・テキストフィールドはもともとAjaxとなりえないが、ビヘイビアを追加することで
  ・可能となる
  ・Ajaxの為にあるわけではないが、Ajaxとしてゆこうな機能が多い

 ・課題
  ・MLでは課題となっていない

  ・コンポーネントの差し替えが基本
   ・存在するコンポーネントを変更することは得意
  ・エレメントの追加が苦手 
   ・それが苦手
   ・追加されたものだけではなくすべてを送りなおす

  ・DOMのIDと相性が悪い 
   ・改善したはずだがなおっていない
   ・Qicket側からIDをいじらないが、Ajaxではいじってしまうので
   ・相性がとても悪い
   ・ついているものを変えない様になっていたはずだが、
   ・Wikcketの基本を直すこととなるので現在はあきらめたとなっている
   ※既存のBugで

 ・まとめ
  ・オブジェクト指向
   ・オブジェクトの状態を維持できることが違う
  ・バージョン管理
   ・バックボタンの対応
  ・DOM=コンポーネント
   ・追加するのが苦手

 ・ライブコーディング
  ※Wicket1.4_M3
  ・IDENetBeans
  ・web.xmlは作成済み
   ・Wicketフィルターの設定
   ・TwiterのHTMLをテンプレートとする
   ・ログイン⇒TwitterのHTML
   ・認証は似非

   ・HTMLをクラスパス上に置く

   ・Javaクラス作成
    ・WebPageのサブクラス
    ・コンストラクタをつけて:雛形完成

   ・HMLのFORMタグにwiketidを追加

   ※基本的にはHTMLをそのまま表示できる

   ・HTMLにDIVタグ追加:エラーメッセージ用

   ・InputボタンにID付与

   ・コンストラクタにて'Javaクラスに追加したIDを関連付ける
    ・各コンポーネントのIDをもたせてインスタンス

    ・Form
    ・TextFiled
     ・リクエスト受け取り用フィールドと追加したコンポーネントを結びつけるのがModel
      ・PropertyModel
       ・これをインスタンスする時にインスタンス化して引き渡すと
       ・自動で値が入り込むようようになる
      ※Required
    ・PasswordTextFiled
     ・同様にModelをセット

    ・タグの階層をJavaにも関連付ける
     ・Formの中にTextとPasswordはあるので追加する
     ・FormはPageにあるので自身に追加する

    ・Button
     ・同様にFormに追加
     ・無名クラスのメソッドを追加

    ・認証をはしよる為、固定文字として宣言しておく

    ・入力チェックは、Validatorをインスタンスし、Passwordに追加することで機能する
     ・メソッドを同様にインスタンス化し追加
     ※追加されたValidatorはすべてが通らないとつぎへいかない

     ・エラーメッセージもコンポーネントでキー渡し
     ・リソースから取り出して表示してくれる

    ・ボタンの処理には、各Validatorを通ってからくるので画面せんいしてもいい

   ・次のページを作成
    ・前のページにsetResponsPageでクラス指定

   ※変数宣言にfinalの意味は?
    ・匿名クラスとかで使うことがあるのでクセでついてしまう・・・
    ・今回は必要ない

   ・HTML内で必要ない部分は
    ・wiket:removeタグを利用
    ・Wicket上では認識されない
     ・けせばいいじゃね?
      ・ブラウザで開くことができるのでサンプルとして残すHTMLを想定

   ・アプリケーションメインのクラスをWebApplicationを継承
    ・getHomePageメソッドを実装
    ・ログインページを帰すでことでデフォルト遷移

    ・init()を実装
     ・mountBookmarkablePageを指定することで各クラスのURLを指定することで
      キレイなURLでアクセスできる 

   ・ListView=要素の繰り返し
    ・今回はTRに関連付けるとTRの1つがitemの1つとなる
    ・itemに各コンポーネントを追加すると画面ができあがる
     ・ログイン画面で設定したものと同じ

  ・ActionFormのつめかえではなく
   コンポーネントをModeで関連付けることで画面に表示できる

  ・AjaxSelfUpdateingTimerBehaiviarを利用すると一定間隔でAjaxがTableタグを読み込んだりする

  ・Wicketのアプリをデバックモードで起動すると
   ・WICKETAJAXDEBUGというボタンが出る
   ・押下するとダイアログがでる
   ・Ajaxが書き換わるログがでてくる

 ・QA
  ・JavaScriptのライブラリと組み合わせて使うことは?
   ・気持ち悪い?
    ・実際にWicket+XXのサンプルはでている
    ・WicketStaffのサイトではいろいろとある
  ・チェックボックスをチェックしたりの・・・
   ・チェックするとサーバーへイベントが届く
   ・それをイベントにして画面を切り替えることも可能
  ・Ajaxもセカンドキャッシュ?
   ・サブミットするとモデルがかわったことが分かるが、
    あるオブジェクトのプロパティを変えても反映しない
   ・それのイベントを発生させるメソッドがある
  ・GUIの概念を持って作られたといわれるが
   ・リスナーがない
   ・AWTのリスナーがなかったころに似ている
   ・内部的にはリスナーだらけ
   ・公開されていないソースには存在する
  ・リスナーを作っても・・
   ・公開されているものについては、おk
   ・公開されていないと自己責任
  ・冗長性
   ・リスナーとイベント駆動どちら?
    ・イベントをキャッチして処理をするようなことがすき
    ・リスナーをNetBeansがつくっちゃうので
    ・イベント処理部分だけの実装でいい
    ・リスナーをあえていれないといけなくない

・ライトニングトーク
 ・たけうちさん
  ※Wicket as Meta-Framework −メタフレームワークとしてのWicket

  ・自己紹介
   ・流しのプログラマー
   ・アセブラからアスペクト思考まで

  ・Wicketへの想い
   ・拡張性の高いフレームワーク

   ・拡張ポイントが多い
    ・公開されていないリスナー
    ・ビヘイビア

  ・アウトライン  
   ・ComponentResolver 
     HTMLタグからコンポーネントインスタンスの自動生成

   ・WicketwithDIContainer 
     Seasarとのつなぎこみ

   ・LondonWicketUser'sGroupからTipes 

  ・MarkupContainer:add 
   ・基本となるメソッド
   ・コンポーネントが多いとめんどくさい
   ・つくりにくい、ほしゅしづらい

   ・コンポネントを自動解決 
    ・wicket:idがHTMLがあるが、Javaのほうにない場合エラーとなるが
     このインターエースを利用すると勝手に実装されます

    ・コンポーネントも自動で解決する

   ・IComponentResolverインターフェース 
   ・resolveメソッドを実装 

   ・呼び出されるタイミング 
    ・HTMLのパース時にidが見つからなかった時

   ・タグの情報は? 
    ・種類も分かる
    ・ConponentTag

   ・タグ内のテキストを取得するのは面倒 

   ・CompoundPropertyModel 
    ・名前で関連付けられる
    ・wicket:idとクラス内の変数

   ☆宗教論争w 

  ・wicket-ioc 

  ・時間がないということで割愛 

 ・きしさん
  ※Wicketはこうなる
  http://kouna.ru 
  
  ・作成されたサイトの紹介と苦労した点とかを説明された

 ・ぎしさん
  ※Wicketによる学内用システム開発

  ・ページ遷移・構成にxmlを使わない 
  ・データモデルを扱いやすい 
  ・コンポーネント用 

  ・デメリット   
   ・ドキュメントが英語
    ・基本的なもを使う分にはなんとかなる
  ・教育コストは
   ・Cの経験4年の人で、1ヶ月
    ・敷居が低い
  ・運用実績
   ・メモリ8G ヒープ2G 1000名のグループウェア、同時利用人数164名
    ・Tmcat5.5 PostgreSQL8.3
    ・同居
   ※パフォーマンスの問題はなし

  ・こまったこと
   ModalWindowコンポーネントのバグ
   Loadb;eDetachableModelのつかいどころ

 ・けいすけんさん
  ※Scala on Wicket
  
  ・ScalaからWicketを実行するとどうなるかといった内容だったかと思うが
   途中からScalaの宣伝に・・・
    ・Scalaもほとんど知らない私には超お勉強になりましたw

 ・たなかさん
  ※Wicket業務アプリ事例
  
  ・Wicketで作られた業務アプリの紹介
  
  ・いきおいで決めたF/Wだが、開発できて、運用も回っている