思ってることってこんなもんだよ
Wicket

Wicketの日本ユーザグループを、「あの」世界の矢野が立ち上げた! 「ウェブ・アプリケーションの革命がここにある - Apache Wicketユーザーグループを始めます」 - 矢野勉のはてな日記 立ち上げ時の勢いに乗り遅れそうになって多少すねたが、とにかくWicket-JA、なんかすっごく嬉しい。まだサイトもないけど、早急にみんなの力を結集し、形にしたい。 Wicketは1.3.0も出たことだし、2.0へのスペックも見え始めている。JavaでWebならWicketでしょ、と普通に会話に...

11月11日に行われた「Seasar Conference 2007 Autumn」で、S2Wicketについてのセッションを行った。定員30人の部屋が満席になるほどの人々に来ていただき、Wicketの簡単な紹介とS2Wicketの機能や今後などについて語ることができた。 S2Wicketのセッションにいらしてくれた皆さん、心より感謝いたします。また、スタッフの皆さまにも、感謝いたします。ありがとうございました。 なお、事後アンケートを募集しているので、来場された方はぜひアンケートの回答を...

11月11日に行われるSeasar Conference 2007 Autumnで、「E3: S2Wicketの紹介」というセッションを行うことになった。 特にWicketは「存在は知ってるけど使ったことがない」という人がほとんどだと思うので、Wicketの簡単な紹介とWicket単体でのデモを行って、その後にS2Wicketの紹介をする予定である。なので、Wicketに関する予習をすることなくS2Wicketを把握することができるよう、敷居は低くするつもりだ。 Wicketに興味がある方...

先日の8月10日,java-ja主催の「第一回チキチキ そろそろ Wicket について一言いっとくか」,つまりWicket勉強会が開催された。 今回も,yoshioriさんの書道から始まった。 スピーカーは5人の予定だったのだが,仕事の都合で2名が時間までにかけつけることができず。一人は実務でWicketを使っている方だったので,非常に残念だった。 トップバッターはonkさん。Wicketの基本的な紹介とデモが主な内容だった。とはいえ,nekopさんやyone098さんからのするどい...

来る8月10日,java-ja主催で, 「第一回チキチキ そろそろ Wicket について一言いっとくか」 と銘打ったWicket勉強会を開催する予定である。 POHP+フルJavaなWebアプリケーションフレームワークであるWicketは,Apacheのトッププロジェクトに名を連ねるところまで来ている。しかし,Wicketを使っているという話は,残念ながらあまり聞かない。 今回のWicket勉強会では,Wicketの初級的紹介から,実際に利用したときの経験談,そしてWicketをより便利...

以前「動的プロキシが循環参照していた際のシリアライズ問題」エントリにおいて僕が解決に至らなかった問題を紹介したが,見事に問題をクリアしたお二方からトラックバックを頂いた。 「動的プロキシが循環参照していた際のシリアライズ問題」- 矢野勉のはてな日記 「循環参照問題のよりエレガントな解法」- 矢野勉のはてな日記 「次期 S2Wicket 仕様断念の原因となった動的オブジェクトの循環参照問題をおいらもみんなのために解いたった!?」- 【見覚え】koichikのひとりごと【あります】 素晴らしい...

何ヶ月ぶりかになるが,S2Wicketをバージョンアップした。数ヶ月苦しんだ機能追加ができあがったのではなく,いくつかのバグフィックスを施したのが今回の内容。S2Wicketを使ってくれているNAGASEYASUHiTOさんからのフィードバックを元に,不具合修正を行った。 [JIRA - S2Wicket] バージョン1.2.1のChangeLog 1人でOSSを作っていると,なかなかテストや動作確認を完璧に行うことは難しく,叩いてくれる利用者がいてこそ品質の向上が図れる(残念ながらこれが...

アノテーションによってコンポーネント構築を目論んだ次期S2Wicketだが,いくつかエントリした通り,芳しくない結果に終わってしまった。助けてエントリをしてみるも,とてもありがたい「頑張ってください」エールはいくつか頂けたものの,具体的な解決策を得るまでに至らなかった。 もっと別の何かを閃くことができれば,忘れることができるだろう。しかし,思いついたことといえば,TwitterclipseだったりSearchclipseだったり。S2Wicketについては,未解決で終わった問題領域を悶々と...

約2ヶ月間,Wicketをより使いやすくしようとチャレンジしてきたが,力及ばず断念することを判断した。 コンポーネントベース開発を採用しているWicketについて,コーディングの中心はコンポーネントの組み上げ処理であり,SwingやSWTなどのGUIアプリケーションと同じくらいの記述内容と記述量が求められる。コンポーネントの組み上げは「インスタンス生成」と「モデルとの関連付け」,そして「親コンポーネントへの登録」処理の連続であり,共通的に見える割には共通化が難しく,できあがったコードは非常...

前のエントリで,S2Wicketの今後の方向性として,以下のコードを示した。 public class HelloWorldPage extends WebPage { @WicketModel private LabelModel helloModel; @WicketComponent private Label hello; @WicketComponent private Link link; @SeasarComponent private HelloService hello...

前のエントリでちょっと触れたS2Wicketの方向性。現在,考えていることが実際に実現可能かどうかを検証している段階である。で,とりあえず次期S2Wicketを使うと,これがこーなります,というコードを掲載しよう。 例えば, public class HelloWorldPage extends WebPage { private LabelModel model; private Label hello; private Link link; @SeasarComponent priv...

Wicketは,WebアプリケーションをSwingなどに代表されるGUIアプリケーションと同じように開発することができるようにと考え出されたフレームワークである。機構自体は非常に複雑だが,その複雑さは表には一切出てこない。 コンポーネントベースという点ではJSFと同じだが,JSFは拡張性やVisualな開発ツールを意識するあまり,APIセットがプログラマに全くもって親しくない。そして,結局JSPをデフォルトとして採用しているため,相変わらず開発メンバーのロールをはっきりとすることができなく...

WicketとSeasar2を統合するS2Wicketだが,先ほどVersion 1.2.0をリリースした。 今回のリリースでは,パッケージ名とクラス名,そしてフィールド名について,正規表現でパターンを与え,それに一致するフィールドをインジェクション対象とするFieldNamePatternFieldFilterフィールドフィルタ実装クラスを新たに提供している。これを利用することによって,@SeasarComponentアノテーションすら書かなくても,規約に従ってインジェクションが施される...

Wicketの特徴として「Javaで何でも書くことにより,Javaプログラマが生き返る」ということがある。これは確かにそのとおり。特にJDK1.1の頃からJavaに携わっている開発者にとって,Wicketでアプリケーションをコーディングした結果は,あの頃のGUIアプリケーションに非常に近い。近年の多くのWebアプリケーションに比べて,自分の時代が戻ってきた!という感覚を開発者は持つだろう(Webアプリしか知らない人には体感できないかも)。 ただしこれは「アプリケーションの記述言語としてJa...

WicketからSeasar2を利用するためのS2Wicketのバージョン1.1.0を本日リリースした。 1.0.0では,@SeasarComponentアノテーションをフィールドに付与することによって,インジェクション対象としていた。1.1.0ではそれを進化させ,どのフィールドをインジェクション対象にするかを判断するロジック(フィールドフィルタ)を,アプリケーション開発者が自作して登録することができるようにした。つまり,インジェクション対象のフィールドをどれにするかという規約を定義するこ...

seasar.orgにて,S2Wicket 1.0.0をリリースした。 これは,wicket-seasarとして先日公開したライブラリを,Seasarブランドに仕立て直して再公開したものである。主な変更点は,プロダクト名の変更,パッケージ名の変更,それに伴うサイトの文面の変更があげられる。ソースコードに関しては,パッケージ名以外は変更していない。 とりあえずこれでwicket-springと表面的には肩を並べたわけだが,S2の冠を受けたからには,更なる機能追加をしていかなければならない。具...

「早!,もうかよ」と思うだろうが,先日公開したWicketとSeasar2の統合ライブラリは,S2Wicketとして公開し直すことにした。seasar.orgからの承認も得て,近日中にhttp://www.seasar.org/の中にサイトも移行する予定。wicket-seasarは,Seasarブランドの仲間入りをすることになる。移行後は,http://s2wicket.sandbox.seasar.org/ がS2WicketプロジェクトのサイトURLとなる。 それに伴う作業を現在行っ...

Wicketは,POHPソリューションの代表として今後広く普及するであろうフレームワークである。そして,WicketでDIコンテナの恩恵を受けるために,Spring Frameworkとの統合を行う拡張ライブラリ(wicket-spring)も提供されている。 最近,僕の回りではSpring Frameworkよりも,Seasar2をDIコンテナとして採用する事例がとても多い。さらに,以下のようなエントリを見つけてしまった。 「Webアプリ作成前に考えたこと」 - めそらぼ - mesol...

2007年1月14日時点での,Wicket1.2からWicket2.0への変更点について,以下のURLのページで発表されている。 Migrate-2.0 - Wicket wiki 要約すると,以下のような感じである。英語は苦手なので間違っている箇所があると思うが,構わずに掲載してしまおう。 JavaSE5以上が必須になる。 onAttach()の親実装を先に,onDetach()の親実装を最後に呼び出すように推奨される。 Generics/パラメータ化された型への対応 コンポーネントが...

WicketはPOHPのソリューションとして非常に素晴らしいが,やはりUIに対するライブラリであり,ビジネスロジックに関してはDIコンテナを採用してAOPなどの恩恵を受けることが今日の開発スタイルにマッチすると考えられる。 Wicketでは,DIコンテナであるSpringFrameworkと連携するための2つの方法を提供している。 ApplicationオブジェクトにDIコンテナ管理下のオブジェクトをセッターインジェクションして,各WebPageオブジェクトからgetして利用する。 各W...

携帯端末向けにアプリケーションを開発する場合,作成するコンテンツが小さいために,とにかく余計な記述なしにサクサク開発をしたいと考えるだろう。XHTMLでページを作成していけるソリューションを採用すれば,さらに開発効率は向上するはずだ。そう,Wicketの出番となる。 ただし,WicketはもちろんFirefoxやIEなどのWebブラウザを標準のターゲットにしているために,そのままでは不都合がいくつか存在する。 まず,Wicketの標準では,Webブラウザのマルチウィンドウ対応を行うために,...

POHPのソリューションの一つであるWicket。これの技術的な記事を「Wiclet Communication」というブログで行おうと思っていたが,別ブログだとどうも更新する気が起きない。 なので,このブログに統合することにしようと思う。Wicket Communicationの全エントリを,このブログに移行を開始する。 また最近Wicketを触りだした。携帯サイトを作ろうと思っているのだが,JSFの標準コンポーネントでは携帯サイトはほぼ無理で,かといってコンポーネントを作っている時間は...

前回のエントリで,複数のモデルの内容を表形式で表示するためのListViewコンポーネントを紹介した。ListViewによって手軽に表を作成することができるのだが,実際にはListViewでは物足りない状況も存在する。例えば,何らかの検索結果の一覧を表示したい場合,その件数が数百件とか数千件になってしまうと,1ページで全ての一覧を表示することはあり得ないだろう。その場合,一定件数で一覧の表示件数を絞って,複数ページで表示することになる。Wicketでは,このようなページングに対応したPag...

クリスマスイブの今日は,複数のモデルを表で表示するための方法を紹介する。Webアプリケーションのほとんどで必要となる情報の表示方式だ。 StrutsとJSPの組み合わせでWebアプリケーションを作る場合,複数のモデルを表形式で表示するには,タグなどを使って,JSPにループの構文を記述しなければならない。よって,JSPにどうしてもロジック的な要素が含まれるために, MVCを完全に行うことができなかった。 Wicketであれば,このような場合もPOHPで記述できる。まずは,POHPから見ていこ...

Webアプリケーションは,GUIアプリケーションと違って,ページ遷移が基本である。最近はAjaxが登場してきて状況が変わってきているが,基本的にはアプリケーションはページ全体の更新がかかる。つまり,Webアプリケーションはページの集合体だ。今回は,ページ遷移の方法について紹介する。 フォームのサブミット時に何らかの処理を行い,その後次のページに遷移するには,Componentクラスが持つsetResponsePageメソッドを使用する。FormコンポーネントのonSubmitメソッドや,B...

「フォームの扱い方」のエントリでは,フォームがサブミットされたときの処理の記述方法について紹介した。ただ,多くのWebアプリケーションでは,フォーム内に複数のボタンを配置して,それぞれ違った処理を行わせたいことがあると思う。今回は,そんな場合に使用するボタンコンポーネントについて取り上げる。 まずPOHPから考えよう。複数のボタンを同一フォームに配置するために,普通にサブミットボタンを複数記述すればよい。ただし,どのボタンかを特定できるようにwicket:id属性を付与しておくことがポイン...

Webアプリケーションに欠かせないHTMLのフォーム。Wicketでフォームを扱うための方法を今回は紹介する。 フォームは,inputタグなどのいくつかの入力要素から構成される。GUIアプリで言えば,フォームはコンポーネントが登録されるコンテナだ。Wicketでは,フォームを扱うために,Formクラスが提供されている,Formクラスは,Wicketコンポーネントのコンテナとして機能する。 HTMLのフォームは,formタグで表される。通常は,action属性によりサブミットがかけられたとき...

最近では,何らかのフレームワークにアプリケーションコードが依存しないように,POJO(Plain Old Java Object)なアプリケーションコードを開発することが当たり前になりつつある。Wicketにおいても,アプリケーションコードはPOJOで書かれることが想定された作りになっている。 具体的には,WicketのコンポーネントとPOJOとの連携を,IModelインタフェースを使って行う。IModelインタフェースの実装クラスがWicketではいくつか提供されているので,適切なものを...

「Labelを使った動的な文字列の表示」のエントリを書いていて,ふと気になった。wicket:id属性の値が同じタグが複数あった時,どういう動作をするのだろうか? 早速試してみる。 ここに名前が入る ここも名前が入る とPOHPを書いて,WebPageのサブクラス内で, add(new Label("name", "よういちろう")); としてみた。結果のHTMLは, よういちろう よういちろう となった。同一のIDのタグは,全て処理してくれるみたい。そりゃそうか。。。

Wicketが持つコンポーネントの中で,最もシンプルなのはLabelコンポーネントだろう。Labelコンポーネントは,HTMLにシンプルな文字列を動的に埋め込みたい時に使用する。 Labelコンポーネントは,実は既に「超基本構成」のエントリで使用している。ここでは,Labelコンポーネントに関するコードのみを取り上げてみよう。 まず,Labelコンポーネントに対応するPOHPの部分は,以下のような感じだ。 ここに名前が入る spanタグを使って,「ここに名前が入る」という文字列をタグ付...

さて,最初のWicketアプリケーションを作成してみる。最初なので,1ページのみの超基本構成のWebアプリケーションにしよう。表示のみの機能だが,動的な項目を一つ準備する。WTPでwicket-testプロジェクトをまだ作っていない方は,「開発の準備をしよう」を読んで作成して欲しい。 まずは,POHPなHTMLファイルを作成する。名前は「FirstPage.html」とし,作成先は「wicket-test/JavaSource/test」とする。つまり,testパッケージを作成して,その中...

今回は,Wicketを実際に試すための環境を構築してみる。いろんな方法があるが,ここでは,Tomcat5.0とWTP(eclipse Web Tools Platform)を使ってみる。ちなみに,Windows XPを対象とする。 まず,Tomcat5.0をインストールする。ダウンロードはJakartaのサイトから行える。ここでは,5.0.28を採用しよう。Tomcatのインストールについては,ここでは割愛する。exe版なら,実行するだけだし。 次に,WTPをインストールする。WTPは,E...

Wicketを試すには,Eclipse上で作業するのが手っ取り早いだろう。ここでは,EclipseでWicketのサンプルを動かすまでの手順を紹介する。 まず,「Wicketの基本パッケージ」で取り上げた3つのパッケージをそれぞれダウンロードして,任意の場所に展開する。 各パッケージには,Mavenのプロジェクトファイルが含まれている。これを利用して,Eclipseのプロジェクトファイルを生成することができる。以下のコマンドをそれぞれのパッケージで実行する。   > maven eclip...

最近のWebアプリケーション構築では,SpringFrameworkやSeasar2などのDIコンテナを利用する機会が増えてきている。Wicketについても,主要なコンポーネントとの連携のためのパッケージが提供されている。 Home - Wicket Stuff Wicket Stuffプロジェクトでは,以下の他コンポーネントとの連携機能を提供している。 Dojo Toolkit - AJAXコンポーネントとの統合 fValidate integration - JavaScriptでの...

一般にGUIアプリケーションのプロダクトは,どっちかっていうと付属されてくる例を見れば,「あ,こんなことできるんだぁ」って思うものである。Wicketについても,そんな素敵な題材がプロジェクトから提供されている。今回はWicketプロジェクトが提供している基本的なパッケージを紹介する。 まずは,Wicketの下記のダウンロードページに行ってみよう。 Download Page このページには,Wicketの超基本的なソフトウェアパッケージが公開されている。 wicket - コアAPI ...

Wicketは,SourceForge.netでプロジェクト管理されている。 プロジェクトホームページ - http://wicket.sourceforge.net/SourceForge.html SourceForgeサマリーページ - http://sourceforge.net/projects/wicket ダウンロードページ - http://sourceforge.net/projects/wicket Wiki - http://www.wicket-wiki.org....

Wicketとは,POHP(Plain Old HTML Page)のソリューションの一つだ。Wicketを使用することにより,ロジック的な要素が多く含まれがちなJSPではなく,全くシンプルなHTMLでViewを作成していくことができる。そして,ページの中で動的な部分を構築するためのJavaコードは,GUIアプリケーション,特にSwingを使ったことのある人なら「お,似てるな」と思ってしまうようなコードで記述できる。 例えば,POHPとして,   ここが入れ替わる とHTMLに記述する。w...