Archive for the 'Wicket' Category

第2回Wicket勉強会とWicket本

更新遅れました。

3/7に行われた第2回Wicket勉強会に参加してまいりました。
総勢80人オーバー。
懇親会は会社の忘年会かと見紛うような宴会場。

1フレームワークに対する勉強会で、これほどの人数が集まるというのはちょっとあまりないことだと思います。
それだけWicketに対する期待が高まっている証でしょう。

Wicket-jaとしても、もっと精力的に活動したほうがいいのかしらん。
とりあえず、公開してもいいコンポーネントもってる人は、Wicket-jaのsourceforgeのリポジトリにコミットしちゃったりできるようにしたいなーって思ってたり。
Wicket-stuffみたいな感じでWicket-jaがコンポーネント提供の場にもなれたらいいなーとか(一人で)妄想してます。

で、そんなこんなで矢野さんのWicket本も発売になりました!
WicketによるWebアプリケーション開発―オープンソース徹底活用
僕の名前もバッチリレビュアーとして載ってるはず!

会社でもWicket勉強会開催できたし、WicketがもっとSIerの業務として使われるようになればいいなぁ。

第2回Wicket勉強会

Wicket-ja主催による第2回Wicket勉強会の開催概要が決定しました。
http://www.javelindev.jp/wicketkaigi/registerから申し込みいただけます。
今回はMAX80人までOKとのことなので、皆さんガンガン参加してください。

と、矢野さんが告知する前に抜け駆けで告知してみる。
なんか手伝えることあったらなんでも言ってくださいね。>やんやん
確定申告もあることでしょうし、負荷は分散していきましょう。

Wicket in Action

ようやく、Wicket in ActionがAmazonから届きましたー。
PDF本も買ってたけど、やっぱり紙の本の方が使いやすいなー。

とりあえず最新のWicket1.4系を使って写経していく予定。

Wicket-jaの第1回Wicket勉強会に行ってきました。

Wicket-jaとしては初のオフラインイベント。
会場をご提供くださいましたXarts株式会社様、ありがとうございました。

詳しい内容は、のエントリを参照してもらうとして、反省から。

まず、全部矢野さん任せになっちゃってたこと。発案から募集と人数調整や会場確保、懇親会の店予約や当日の準備・進行と全部矢野さんがやられてました。
これじゃだめだ、せめて何か手伝わないとって思ってUst係をやりましたが、Ust結構難しいなぁ。ちゃんとやるにはちゃんと機材がほしいね。cojiさんに教わるべきか。
まあ、第2回以降も開催されるはずなので、そのときはもうちょっとみんなで(僕も含めて)役割分担して矢野さんの負荷を分散させないと、Wicket本がいつまでたっても上梓されないことになりそうなので、みんなで手伝いましょう。

あとは、LTはもっとちゃんとLTっぽくするべきかなぁって思った。タイムキーパーちゃんとつけて時間着たら終了!続きは懇親会でって感じのほうがLTっぽい。
そういう意味で@yamashiroの「続きは懇親会で!」の声掛けはGJだったと思う。

内容に関しての感想としては、発表内容が割とバラけてたのがよかったなーって思った。
Wicketよく知ってる人もいれば、当日処理系インストールした人もいるぐらいだったので、参加者それぞれが勉強会に求めるものが違っていた。
Wicketって名前は知ってるけど実際に使うとどういう感じなんだろ?って知りたい人もいれば、Wicketの仕組みの深い部分を知りたい人もいれば、Wicketの採用/運用実績ってどうなの?って人もいた。
そういう多様な参加者に応えうるだけの発表がそろっていたんじゃないでしょうか。

僕の個人的な感想では、ComponentResolver関連の話をもっと深めてみたかったかな。
あんな仕組みあるって知らなかったし、あそこに拡張ポイントが用意されてるってことは、オレオレフレームワークを作るための土台として使うことも想定されてるんだろうなぁ、僕ならどういじるかなぁとか色々妄想が膨らんだ。
あと、運用実績の話も、意外と知らないところで使われてるもんだなーって思った。

第2回も2ヶ月以内を目標ぐらいに開催する予定なので、今回参加した方もできなかった方も、是非ご参加ください。

はてブやLDCのコメントにトラックバックを打てるサービスを公開しました。

ネット実名論争やらはてブのネガティブコメント論争やらが起こったり沈静化したりする今日この頃ですが皆さまいかがお過ごしでしょうか。

さて、めそらぼでは、表題の通り、はてブやlivedoor Clipのコメントにトラックバックを打てるサービス「ぶっこめ!」を公開しました。
これによって、反論を受けないところから安全に暴言を吐いてくるからソーシャルブックマークサービスなんて嫌いだ!という池田信夫先生のような方々も反論をすることができるようになります。精神衛生上よろしいのではないかと思いますので、是非使ってみてください。

例えば、拙作サービスのランチオフったーへのブックマークコメントのページは
http://server.mesolabs.com/bukkome/url/http://server.mesolabs.com/lunchofftter/
になります。
また、このエントリ自身が、執筆時点での最新コメントである
http://server.mesolabs.com/bukkome/url/http://server.mesolabs.com/lunchofftter/#1203802507000
へトラックバックを打っています。どのように表示されているかご確認いただけると思います。

なお、まだまだ全くブラシュアップ出来てない状態での公開ですので、不具合/バグ等は沢山あると思います。実装されてない機能等もございます。
どうか、生暖かく見守ってやってください。

さて、今回もJavaのみで作成しました。Web層のフレームワークはもちろんApache Wicketを使いました。
また、ソーシャルブックマークサービスとの連携のクライアントとして、またトラックバックを受け付ける処理の窓口としてRestletも使ってみました。
さらに、今回はデータベースとして、オブジェクトデータベースであるNeoDatis ODBを使ってみました。
その辺の技術的な話に関してはまた改めてエントリを書きたいと思います。

なお、このサービスによって生じたいかなる不具合や不利益に関して一切の責は負いかねます。自己責任でお使いください。
また、問答無用で予告なくサービスを終了させたり、データベースを初期化したりすることもございます。ご了承ください。
不具合や要望等ありましたら、このエントリへのコメントやTwitter@mesoへお願いします。

(追記:3/17 10:10 現在、上記ランチオフったーへのブックマークコメントのページはエラーが表示されています。原因究明中…)
(追記:3/17 10:50 とりあえずエラー原因のデータを削除して復活させました。)
(追記:3/17 11:20 トラックバックURLにブラウザでアクセスする(GETでアクセスする)と発生する不具合だと判明。修正しました。)

Wicketプロジェクトはたった一行のコマンドで始められる

Wicketいいよ、Wicket」と周りの人間に勧めても、「めんどくさい」というセリフで一蹴されることがあります。
で、そんな人がRuby on Railsを勉強していたりします。

そういう人は、Javaのフレームワークっていちいちjarファイルをダウンロードして、依存関係にあるライブラリもダウンロードして、それらをクラスパスに通して、とかそういうことを未だにしなきゃいけないと思ってるみたい。

実はWicketのほうが、Ruby on Railsよりもプロジェクトを開始するまでに必要なコマンドの数が少ないんです!

以下、Wicketのプロジェクトを開始する方法を、Ruby on Railsと対比しながら記述します。
多分、WindowsでもMacでもLinuxでも大丈夫だと思う。

1. JDK 5.0 or 6.0及びMaven 2はインストール済みのものとします。
(最新のRuby及びRubyGemsはインストール済みのものとします)

2. コマンドプロンプトなりターミナルエミュレータなりを開いてプロジェクトを作成したい場所に移動し、
> mvn archetype:create -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.0-rc1 -DgroupId=foo.bar -DartifactId=hogehoge
と入力します(一行です)。foo.barはパッケージ名、hogehogeはプロジェクト名に置き換えてください。
(2.1 コマンドプロンプトなりターミナルエミュレータなりを開いて
> gem install rails -y
2.2 プロジェクトを作成したい場所に移動し
> rails hogehoge)

これでプロジェクトの雛形が作成されました。
ほらほら、このステップでRuby on Railsは2行必要なのにWicketは1行でいい!
長い?長いけど、どうせコピペするからそんなの関係ねぇ!

作成されたプロジェクトの雛形は以下のようなディレクトリ構成になっています(Wicketのページからパクリ)。

    .hogehoge
    |   pom.xml
    |
    ---src
        +---main
        |   +---java
        |   |   ---foo
        |   |       ---bar
        |   |               HomePage.html
        |   |               HomePage.java
        |   |               WicketApplication.java
        |   |
        |   +---resources
        |   |       log4j.properties
        |   |
        |   ---webapp
        |       ---WEB-INF
        |               web.xml
        |
        ---test
            ---java
                ---foo
                    ---bar
                            Start.java

Maven 2のデフォルト構成のまんまですね。

3. サーバ(Jetty)を起動してみるには、作成したhogehogeディレクトリに移動し、
> mvn jetty:run
( サーバ(WEBrick)を起動してみるには、作成したhogehogeディレクトリに移動し、
> ruby script/server)

起動完了したら、http://localhost:8080/hogehogeにアクセスして、
「Wicket Quickstart Archetype Homepage

If you see this message wicket is properly configured and running」
って表示されたらOK!

4. NetBeansを使うときは、作成されたpom.xmlを開くだけ。Eclipseを使うときは、
> mvn eclipse:eclipse -DdownloadSources=true
で、EclipseからインポートすればOK。
(RadRailsとかNetBeansとか使いたければ多分インポートとか普通に出来るんでしょ。よくわかんないけど。)

まあ、そんな感じ!

みんなもっとWicket使ったらいいと思うよ!

Maven 2について勉強したい人は、Java-jaの勉強会着たらいいと思うよ!

そういえば、lunchofftterソースCodeReposにコミットすることにしたよ!
Wicket-1.3.0-rc1対応とかActiveObjects0.6.1対応して、リファクタリングして綺麗なソースにしてからコミットするつもりだったけど、仕事忙しくて時間ないから、汚いソースそのまんまコミットするね。好きなだけdisればいいさ!

コミット権もらえたらコミットするので、そしたらまた周知します。

追記(11/19):
http://svn.coderepos.org/share/lang/java/lunchofftter/
にコミットしました。ライセンスはNYSL(煮るなり焼くなり好きにしろライセンス)です。

WicketとGuiceとActiveObjectsで作ったTwitterを使ったMashUpアプリを公開するよ

Twitterをコミュニケーションインフラとして使うMashUpを、Wicket-Guice-ActiveObjectsで作りました。

ランチオフったー
http://server.mesolabs.com/lunchofftter/

プロトタイプとして作った上、使ってるライブラリも安定版じゃなくテストも不十分なので、まったく安定してないと思いますが、ぜひ使ってみてくださいな。

Twitterをコミュニケーションインフラとして使うことで、こちらとしては個人情報を預かるというリスクを避けることができ、ユーザも個人情報を預けるというリスクを避けることができます。
また、結果をオープンに知らせることで、さらにランチオフの輪を広げることができるんじゃないかなとも思ってTwitterを使うことに決めました。

ソースコードはオープンにする予定ですが、ちょっと人様に見せられるように修正するまでお待ちください。

感想・意見・疑問・苦情・要望・非難等は、このブログかTwitterにお願いします。

Wicket in Action予約開始!

Wicket in ActionがAmazonで予約開始です。Java-jaのWicket勉強会らしきものに参加した人はみんな買う方向で!

ついでに、マスタリングJavaEE5 (CD-ROM付) (Programmer’sSELECTION)とかも見つけちゃったので買ってみた。

java-jaのWicket勉強会みたいなもの

第一回チキチキ そろそろ Wicket について一言いっとくか」に参加してきました。

実はこういう勉強会とかイベントとかに参加するのって初めて。

人数が多い上に面子がまた凄くて圧倒されました。

詳細はyone098さんのエントリとかeveresさんのエントリとかIsoparametricさんのエントリとかnekopさんのエントリとかrokujyouhitomaさんのエントリとか見てください。

残念だったのは矢野さん急なトラブルで参加できなかったことと、Yoshioriさんよういちろうさんとあまり絡めなかったことかなー。
サイボウズラボやGoogleより敷居が高くて絶望しちゃう会社Abbyの名刺欲しかった。

っていうか、今回の勉強会に参加する決め手になったのは、よういちろうさんがこのエントリで周知をされて、それを僕がブックマークしてコメントで「仕事あるから無理かもなー。飲み会だけでもいいなら」って書いたら、そのコメント見てくださってエントリに追記してくださったことなんです。
さらにonkさんにも「いつもブックマークが被るから絶対一度会ってみたかったんだ」と言われ、ブログ自体はそんなに更新頻度も高くないし知名度もないのに、ブックマークだけで認知される時代になったんだなーってのがちょっと感慨深かった。

またこういったイベントあったら積極的に参加してみたいなって思いました。

おわり。

Wicket-Guiceに合うORMは?

Wicket-Guiceが出来ましたね。

まあ、詳しくは矢野さんの記事読んでください。

ここのまとめでも書かれているように、GuiceはWicketのようにJavaの利点を最大限に活用したDIコンテナなので、Wicketとの相性はとてもいいはずです。

ってことで、標準ガチガチ準拠のWebアプリを作成しなければいけない場合以外は、もう、Wicket-Guiceで僕の中では確定です。
言語がJavaである場合は、ですが(笑)

で、こうなると、パーシステンス層をどうしましょ?ってことになりますよね。

S2Wicket-Seasar2ならばS2Daoで確定でいいし、Wicket-SpringならSpringとの連携がしやすいもの(例えばHibernate)でいいでしょうし、Wicket-javaeeならJPA準拠のORMならなんでもいいでしょう。

しかし、せっかくWicketとGuiceというXMLがまったく要らない構成できたんだから、パーシステンス層もXMLなしのものにしたくないですか?

というわけでいくつか選択肢を。

これらは、全てXMLによる設定ファイルが必要ありません。
っていうか、BeanKeeper、pBeansに至ってはDB設計すら必要ありませんし、NeoDatis ODBはRDBではなくOODB(オブジェクトデータベース)なので、DB設計という概念すらありません。

4つともに言えることが、使い方がとても簡単であること。

ただし、簡単であるが故に犠牲にしている部分もあって、BeanKeeperとかpBeansは自動で生成されたテーブルにこちらが意図しないORMが内部的に使うカラムが作成されちゃって見苦しいし、恐らくパフォーマンス的にも他のORMに比べて見劣りするのではないかと想像します(パフォーマンスを売り文句にしてないので)。
NeoDatis ODBは培ってきたRDBの知識が活かせません。ってか導入するよう上司(or顧客)を説得できるとは思えません・・・。

そこでMr.Persisterですよ。
こいつは知名度はいまいちですが、更新系でHibernateよりも圧倒的に優れたパフォーマンスをはじき出しています。DB設計をしなくてはいけないというのは、逆に言うとテーブルやカラムの構成を自分の思うとおりにできるということだし、なんといっても検索系をチューニングしたいときに、素のSQLが使えます。HibernateのHQLに腹を立てる毎日とはもうおさらばです。

というわけで僕的には、Mr.Persisterが一押しです。
現在、次の安定版である4.0.0の前の最後のβ版である3.9.9が出てる状態です。

WicketもApache Incubatorを卒業することが決定したのでWicket1.3が出るのももうすぐでしょう。

というわけで、Mr.Persister4.0.0とWicket1.3が出たら、Wicket-Guice-Mr.PersisterというXMLを(web.xml以外)一切使わない構成でまた何か作ってみようと思います。

次のページ »