2008年10月16日木曜日

JSFが気になっていた(4)一旦終了

一旦まとめます。

【評価】

JSFやっぱりイケてます。リリースポリシーが改悪されたSpring MVCに取って代わるんじゃないかと思います。
今後普及するであろうと考えられる理由は主に二つ。

1)イベントドリブンという発想
「イベントドリブン」のフレームワークというのは別に新しい発想ではありません。というかむしろ古いと言ってもいい。また、Ajaxを用いなければVBよりも貧弱な機能しかありません。にもかかわらずイベントドリブンを目指すことがなぜ評価できるか。

ServletといえばMVC。MVCはよいデザインである。そう言われてきました。しかし以前にも書いた通りMVCの発想で画面を作りこむとそこかしこにムリが出てくるのです(ま、当然ですよね)。
チェックボックスやラジオボタンをクリックした時にちょっと表示を変えたいという(Ajax未満の)要件は必ずある。JSFはそれに答えてくれます。一般的なイントラのWebアプリケーションであれば、JSFを使うことで画面表示周りの実装で相当楽ができるはずです。

2)SUNの公式の仕様であること
以下のメリットがあります

○WebコンテナベンダーとしてはJSFのサポート/非サポートを公式に謳わなければならない
StrutsやHibernateなどのいわば勝手フレームワークについて「公式にはサポートしない、自己責任で使って欲しい」と言うことができます。しかし公式の仕様であれば「対応していない」「対応している」を明確に言わざるを得ません。これはつまりJSFの仕様に則ったコードがJSFをサポートしたと主張するWebコンテナで動かなければ、Webコンテナのバグとして修正されることを意味します。

つまりベンダーとしてはある程度JSFにコミットせざるを得なくなるということです。ベンダーが提供するコンテナ-と密着した開発ツールや、サポートが期待できるでしょう。

○自由度が低い
Strutsのように、どんどん技術が発展して広がって行くことはないと思われます。また仕様の改善のスピードも遅いでしょう。それってデメリットじゃないかって?いえいえ。そうとも言えません。自由度が低く、改善スピードが遅いということは、ベンダーにとってはその技術をサポートし続けることが容易であることを意味します。また開発者にとっては学習体力が少なくて済む、というメリットがあります。

○「お墨付き」ネームバリュー
EJBなどは公式の仕様でなければ生き残れなかったと思いませんか?

以上
.

JSFが気になっていた(3)

チュートリアル+αの実装をしてみたので報告です。微々たるものですが、ラジオボタンにイベントを設定してみました。

JSFがほとんど思った通りに動いてくれるので、公開する意味は薄いと思ってます(つまり、この実装を参考にするまでもなく出来てしまう)まあ、一応ってことで。
あ、一つだけ注意があります。私はEclipse3.4を使っているのですが、JSPをリフレッシュするためにはTomcatの一時作業ディレクトリを毎回クリアする必要がありました(サーバviewで対象サーバを右クリック、"Clean Tomcat Work Directory..."を選択、再起動)。

■JSP
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<f:view>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-31j">
<title>Radioボタンテスト</title>
</head>
<body bgcolor="<h:outputText value="#{evTest.bgColor}"/>">
<h:form>
<h:selectOneRadio value="#{evTest.bgColor}"
valueChangeListener="#{evTest.changeBgColor}"
onclick="submit()"
immediate="true">
<f:selectItems value="#{evTest.availableColors}" />
</h:selectOneRadio>
</h:form>
</body>
</html>
</f:view>

■Java Bean。
package at;

import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

public class EvTest {
private String bgColor = "WHITE";
private SelectItem[] availableColors = { new SelectItem("BLACK"),
new SelectItem("WHITE"), new SelectItem("SILVER"),
new SelectItem("RED"), new SelectItem("GREEN"),
new SelectItem("BLUE") };

public String getBgColor() {
return bgColor;
}
public void setBgColor(String bgColor) {
this.bgColor = bgColor;
}
public SelectItem[] getAvailableColors() {
return availableColors;
}
public void changeBgColor(ValueChangeEvent event) {
String color = event.getNewValue().toString();
setBgColor(color);
}

}

■faces-config.xml。Nothing specialです。
 <managed-bean>
<managed-bean-name>evTest</managed-bean-name>
<managed-bean-class>at.EvTest</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

以上
.

ちゃちなバッシング

悪いことは悪いというスタンスにケチをつもりはありませんが、ちゃちなバッシングが最近目に付いてあまり気分のいいものではありません。例えば前田議員へのマルチ業界からの献金。一昔前の自民党のトップに集まったのと比べると金額小さいねー。あっちで数十万、こっちで数十万。トータルで「少なくとも1156万円」とのこと(ソースはasahi.com)。ま、われわれサラリーマンにとっては安い金額ではないけれど、一人一年雇ったら一千万というレベルで考えれば何もできない金額と言ってもよいでしょう。政治家さんに集まるカネってこんなものなのか。じゃ他の人は一体どこからカネが入ってるんだろう。金額も数千万ってレベルじゃないと思うな。

政治にはカネがかかるってのは間違いなく政治家のホンネでしょう。いろんな団体が政治家に献金したり意見言ったりしてますが、これも要するにホンネはカネでしょう。私腹を肥やすか世のために使うか、程度の違いはあるかもしれませんが。カネがなきゃ人は集まらないでしょうし、カネがなくなれば人は去って行くでしょう。

話を変えて公務員バッシング。もう公務員ってのが気楽な家業じゃないってことは分かって来たんじゃないですかね。エリート官僚も勤め先によっては相当ブラックだって聞きますし。そりゃ楽している人は民間、公務員に関わらずどこかにいるでしょう(私の親戚・友人に公務員がいるわけではない)。だって17:30になったら帰宅ラッシュ始まってるよ。あまり信じられないけれどちゃんと定時に帰ってる人はいるんだね。それが楽なのかどうかは別問題でしょうけど。

それから、これはちょっと乱暴なロジックかもしれませんが、大麻栽培して新聞に名前書かれた人。誰かに迷惑掛けたんですかね。自分で勝手に吸ってるならいいんじゃないの。一般人の人生狂わすほど報道する必要があるのかね(まあ芸能人なら騒がれるのもしょうがない気がするけど)。タバコより健康に良いし、ニコチンほどの習慣性もないんでしょう。オランダだったら合法なわけだし。暴力団の資金源とか言うならいっそのことJTで扱っちゃえ。(一部中島らもの受け売り)

タテマエと世論の雰囲気だけで「善悪」という図式を作り上げてしまう。瑣末事大主義と杓子定規な無思考がその裏にあると思います。

瑣末事大主義が成果を上げるエリアもあるとは思いますが(ここで私はなぜか高木浩光という名を思い浮かべる)、そこはアカデミックな領域ではないでしょうか。細かい議論が本質的な問題を覆い隠してしまう可能性は常に念頭に置くべきでしょう。

以上。
.

2008年10月15日水曜日

JSFが気になっていた(2)

チュートリアルの1/3くらいまで来ました。

このチュートリアルの出来がまた素晴らしいですよ。ポイントは押さえられているし間違いもない。この通りやればできる。テキストを読めば理解も深まる。つまり、チュートリアルを補足する必要などないわけで、実は私のこのお勉強ページの存在意義も薄いことになる。

それはともかくやっぱりJSF相当イケてると思いますよ?今の所欠点が見当たりませんが?何でブレークしないんだろう?

あまり不思議に思ったので軽くググって調べてみました。十分な調査はしてません(するつもりもありません)が、まだ商用アプリケーションサーバ/開発ツールのサポートが薄いのが理由かもしれませんね。
他に苦戦する理由があるとすれば、斬新さがあまりない(イベントドリブンって特徴も地味ですし、ELのサポートも今となっては・・・)のと、StrutsやSpringから見ると後発になってしまっているってことでしょうか。

しかし、無責任に予測しますがJSFはこれからも生き延びるテクノロジーだと思います。だってシンプルでよく出来ている。

お勉強は続きます。
.

2008年10月14日火曜日

JSFが気になっていた(1)

実は前からJSFが気になっていました。
いまいちブレークはしていませんが、どうやらJSP単体よりもマシらしい。イベントドリブン的な発想も入っているらしい。

ちょっと腰を据えて検証してみました。

対象はapache myFaces。ApacheのJSF実装プロジェクトです。

チュートリアルはJSF Tutorial

いわゆるWebのチュートリアルとは違って、Sectionごとにテキスト(PDF)と解答(ソース.zip)が付いている形です。最初は「なんじゃこりゃ」と思うかもしれませんが、テキストを読みながら解答通りに進めて行けばよいです。やり方さえ分かってしまえば非常によく出来たのチュートリアルです。テキストの出来もよい。JSFの何が嬉しいのか、ちゃんとポイントを押さえています。

まだ半分ほどしか進んでいないのですが、本日の感想。結構JSFイケてるのでは?しかしコアな発想はStrutsとかSpringに既に取り込まれている可能性もあるので、もう少し検証する必要がありそう。「イベント」をどう扱っているのか楽しみです。

以上。
.

ピクルス

今日は料理の話です。かなりマイナーな上に脈絡もなくてすみません。

夏の終わりからピクルスを仕込んでは食べています。
ベースのレシピは きゅうりのピクルス by 韓流マイブーム です。

このレシピをテキトーにアレンジしています。砂糖の量を減らしたり、ハーブを入れたり。ハーブはオレガノ、ディル、バジルあたりが無難なようです。ただし白ワインは外せない。日本酒では香りが出ません。リンゴ酢も試しましたが、米酢とそんなには違わない感じでした。
カレー粉を入れると恐らくはご想像の通り完全に間違いなくカレーピクルスになります。いつもだとしんどいけどたまにはOK?
私だけかもしれませんが、野菜の詰め方が甘いのかこのレシピだと液が足りません。2倍の液を作ってちょうどという感じです。

野菜はきゅうり、にんじん、たまねぎが基本です。最近はきゅうりが高いので大根が多め。ショリショリと美味いです。パプリカも美味いけど高いのでいつも漬ける訳には行きません。若干芋っぽい食感になりますがレンコンも気分が変ってOKです。ひょっとして生ジャガイモ(手順で一瞬火を通しますが)もイケるのかな?

要するに洋風甘酢漬けです。夢中でバリバリ食べるほど美味いわけじゃないですが、普段冷蔵庫に漬かってると何気に嬉しい保存食です。肉料理の付け合せとしてはベスト。妻は喜んでます。やはり他人が作る料理は嬉しいらしい。

実は市販のピクルスと比べても割安感はありません。でも自分で買ってきた野菜で漬けるピクルスはやはり美味い。「野菜!」という感じがします。

それからピクルス液はポテトサラダの隠し味に有効。ちょっとオサレな味になりますよ。

まあ、気が向いたら奥さんに作って上げたらいかがでしょう。体験上1週間は軽く保存できます。

(2008/11/12追記)
最近わが家では3週間以上漬けたほうがおいしいという結論になってます。

以上。
.