« 2007年01月 | メイン | 2007年04月 »

2007年03月 アーカイブ

2007年03月05日

Gwt in Action

年が明けてからインターネットと隔絶されたところでの仕事だったので、BLOGも更新してませんでした。
GWTも全く追いかけていませんでしたが、“Gwt in Action”が5月に出るみたいですね。

Gwt in Action: Easy Ajax With the Google Web Toolkit
1933988231
Robert Hanson Adam Tacy


Amazonで詳しく見る

「CHAPTER4. Working with Widgets」が、15ページほどTheServerSide.COMで読めます。
http://www.theserverside.com/tt/articles/article.tss?l=GWTWorkingWithWidgets

著者のRobert Hanson氏はGWT Widget Library
を作られています。もう一人の著者であるAdam Tacy氏もサポートしているみたいですね。

2007年03月09日

Spring勉強会

Spring FrameworkというDIコンテナがありますが、その日本ユーザー会が設立されています。
Japan Springframework User Group(JSUG)
ここ主催で第1回の勉強会がまさに今この時間に開催されています。
たまたま私の会社で行われていたので少しだけ覗いてきましたが、第1回の参加者は70名という大盛況のようです。
参加された方の中には、実際にSpringを利用されている方もたくさんいらっしゃるようです。
Springもエンジニアリング技術のひとつとして現場に浸透してきたということではないでしょうか。
皆さんもご興味があればユーザー会に参加されてみてはいかがでしょう。

2007年03月14日

[ゴータマ]はじめに

最近、お釈迦さまに興味を持ちました。お釈迦さまというと雲の上の人というイメージがありますが、極めて人間っぽく泥臭いので色々と学ぶことは多いように感じます。そこで古い仏典の中から、シロートの私が興味深いと思った事柄や、へえーそうなんだと思った事柄を載せていくことにします。


  • あくまでもゴータマさん(ブッダ)個人がターゲットなので宗教の話は必然性が無い限り触れません。

  • 原始仏典の日本語訳からの引用しかしません。引用元は明記します。

  • 仏教になってから以降の様々な解釈や仏教学の範囲は私の手には負えないのでノータッチです。

[ゴータマ]仲間について

  • 交わりをしたならば愛情が生ずる。愛情にしたがってこの苦しみが起る。愛情から禍いの生ずることを観察して、犀の角のようにただ独り歩め。
  • 朋友、親友に憐れみをかけ、心がほだされると、おのが利を失う。親しみにはこの恐れのあることを観察して、犀の角のようにただ独り歩め。
  • ・・・
  • 仲間の中におれば、休むにも、立つにも、行くにも、旅するにも、常にひとに呼びかけられる。他人に従属しない独立自由をめざして、犀の角のようにただ独り歩め。
  • ・・・
  • もしも汝が、賢明で協同し行儀正しい明敏な同伴者を得たならば、あらゆる危機にうち勝ち、こころ喜び、気をおちつかせて、かれとともに歩め。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第一 蛇の章/三 犀の角

ここでの「交わり」とは、異性の交際というわけではなく、ただ話したり仲良くすることを指すようです。ゴータマさんの言う友とは、現代での友達と言うより一緒に修行する仲間と言ったイメージです。今の世の中だと仕事仲間とか学友とかを指すのでしょうか。
自分の目的のために建設的に協力できるような仲間がいれば、シナジーを生むので共に歩みなさい。
そういう人を見つけられないのであれば、別にわざわざ仲良くしなくてもいいよ、一人で歩みなさい。
という感じなのではないかと思いました。

参考までにもうひとつ引用します。

  • 恥じることを忘れ、また嫌って、「われは(汝の)友である」と言いながら、しかも為しうる仕事を引き受けない人、---かれを「この人は(わが)友に非ず」と知るべきである。
  • 諸々の友人に対して、実行がともなわないのに、ことばだけ気に入ることを言う人は、「言うだけで実行しない人」であると、賢者たちは知りぬいている。
  • つねに注意して友誼の破れることを懸念して(甘いことを言い)、ただ友の欠点のみ見る人は友ではない。子が母の胸にたよるように、その人にたよっても、他人のためにその間を割かれることのない人こそ、友である。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第二 小なる章/三 恥

そしてもうひとつ

  • 信念あり、学識ある賢者が、究極の境地に至る定まった道を見、諸々の仲間の間にありながら仲間に盲従せず、貪欲と嫌悪と憤怒を慎むならば、かれは正しく世の中を遍歴するであろう。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第二 小なる章/十三 正しい遍歴

ゴータマさんの言う友は、現代で言う友達とは意味合いが違うので、現代で色んな趣味などを一緒に楽しむような友達のことは触れられていません。と言うよりもゴータマさんは全ての世俗的な執着を捨てましょうというスタンスなので、はじめからそういった友達の類は眼中に無いのだと思います。なので今の世の中にどこまで当てはめることができるかは微妙な気もします。しかしそれをさて置いても、結構いいこと言っているよなあという気持ちになります。

2007年03月16日

第2回 日本Springユーザー会

日本Springユーザー会の第2回が開催されます。
http://springframework.jp/?%CA%D9%B6%AF%B2%F1#f2d183a0

日時
 4/13(金) 19:00~21:00 , 21:00から自由参加の呑み会
内容
 19:00~20:00 SpringとORM
 20:00~20:10 ライトニングトークス
 トーカー募集中! オレのアツイ思いを聞いてくれな方、長い時間はアレだけど、トークスなら事例発表でもという方など募集中です。トーカー希望、もしくは誰もいないなら話してくれるという方は申し込み時にコメントでお申し込み下さい
 20:10~21:00 Spring+JPA, SpringJDBC
費用/場所
 参加費用:無料
 呑み会に参加される方は、およそ3000円程度
 場 所: 東京都新宿区西新宿2-1-1 新宿三井ビル34階 豆蔵 トレーニングルーム

2007年03月19日

SpringのHibernateTemplateに定義されていない処理を実装する方法

SpringのHibernateTemplateに定義されているメソッドは、Hibernateで実現可能なことの一部しか存在しません。HibernateTemplateに無い処理を実装したいときには、HibernateCallbackを使います。(getHibernateTemplate().getSessionFactory()することも出来ますが、それじゃあ。。。ね)
例えばAccountというエンティティがあり、それに対してユーザー認証(nameとpasswordが一致しているかどうか)を行う場合の記述は以下のような感じです。

package net.grandnature.example.invoice.dao.hibernate;

import java.sql.SQLException;
import net.grandnature.example.invoice.dao.AccountDao;
import net.grandnature.example.invoice.entity.Account;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class AccountDaoImpl extends HibernateDaoSupport implements AccountDao {
 public Account findAccount(final String name, final String password) {
  HibernateCallback callback = new HibernateCallback() {
   public Object doInHibernate(Session session)
   throws HibernateException, SQLException {
    Criteria criteria = session.createCriteria(Account.class);
    criteria.add(Expression.eq("name", name));
    criteria.add(Expression.eq("password", password));
    return criteria.uniqueResult();
   }
  };
  return (Account) getHibernateTemplate().execute(callback);
 }
}

HibernateCallbackのメソッドdoInHibernateがコールバックされます。この例ではHibernateTemplateをそのまま使っても実現できますが、Listで返って来てしまうのでちょっと気持ち悪いですよね。

2007年03月20日

[ゴータマ]人に教えるということについて

「人に教える」という言葉で括ることが適切かは迷いましたが、いいタイトルが思い浮かばなかったので。

今から引用する箇所の前後を私の言葉で補足します。サビヤという者が、自分の抱えている疑問を「覚っている」人に教えてもらいたいと思っていました。そこで2人のバラモンに対して尋ねたところ、どちらのバラモンもサビヤの問いに対して満足のいく回答をしてくれなかったばかりでなく、反問(何でそんなこと言うんじゃボケみたいに言われたと言うことでしょうか)されてしまいました。なのでサビヤは、もう駄目だ、誰も解決してくれないし、もう世の中好きなもの食って、好きなことして適当に生きようと思いました。しかしその時ゴータマさんのうわさを聞き、最後に彼にだけは駄目もとで逢っておくかと、サビヤがゴータマさんのところへ訪ねていったときの話です。

  • サビヤがいった、「疑いがあり、惑いがあるので、私は質問しようと願って、ここに来ました。わたくしのためにそれを解決してください。わたくしが質問したならば、順次に、適切に、明確に答えてください。」
  • 師は答えた、「サビヤよ。あなたは質問しようと願って、遠くからやって来ましたね。あなたのために、それを解決してあげましょう。あなたが質問したならば、順次に、適切に、明確に答えましょう。サビヤよ。何でも心の中で思っていることを、わたくしに質問なさい。わたくしは一つ一つ質問を解決してあげましょう。」
  • そのとき遍歴の行者であるサビヤはこのように考えた、「まことにすばらしいことだ。まことに珍しいことだ。、--わたくしが他の<道の人>たち・バラモンたちのところでは機会さえも得られなかったのに、道の人ゴータマがこの機会を与えてくれた」と。かれは、こころ喜び、楽しく、嬉しく、欣快の心を生じて、師に質問した。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第三 大いなる章/六 サビヤ

ここでサビヤは水を得た魚のようにゴータマさんに質問しまくり、彼の疑問が解消されます。そして後に彼は聖者の一人になったとのことです。

また、以下は、アジタという学生が、彼の師であるバーヴァリの問いを解消するためにゴータマさんのところに使いへ行ったときの話です。バーヴァリの問いは解決し、アジタはゴータマさんへそのお礼を伝えました。そのときにゴータマさんが言った言葉です。




  • バーヴァリにとっても、そなたにとっても、いかなる人にとっても、もしも疑問が起って、心に問おうと欲するならば、何でも質問なさい。


「ブッダのことば スッタニパータ 訳:中村元」
スッタニパータ 第五 彼岸に至る道の章/一 序

ここからは延々と学生の質問が続きます。この一言がきっかけとなり、アジタ本人やアジタに同行していた他の学生は、様々な疑問をゴータマさんへ質問することが出来ました。この一言がなければ、アジタは質問出来ていなかったような気がします。この一言があったからこそ、アジタや同行していた他の学生は質問できたのだと思います。

他に、ここでは前後関係は説明しませんがもうひとつだけ挙げます。

  • 友よ。汝が聞きたいと欲することを、何でも聞け。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第二 小なる章/五 スーチローマ

ゴータマさんのこういった対応は枚挙に暇がありません。とても多いです。それらに共通した特徴としてゴータマさんは、その人の抱えている疑問の内容に応じてカスタマイズし、質問者にとってわかりやすいように説明してあげているように私は感じます。なかには極端な言い方をしているものもあり、もしかするとそれらはゴータマさんの考えている本質の事柄をストレートに表していないかもしれません。実は回りくどい言い方をしているとも言えます。しかしそれは一足飛びに本質にたどり着かなくとも(というか、いきなりそう出来る人は少ないので)、それが誤りを表していなければ、その人が今の段階で理解しやすい方法でまず理解すればよいと言うことのようです。

また、ゴータマさんは人に対して説明することを全然めんどくさがってない気がしますし、職人気質と言われるような「見て盗め」でもありません。少なくとも、「見て盗め」というやり方でうまくいくためには、相手にそれなりの能動的なモチベーションが必要でしょうから、先ほど挙げたサビヤさんのような、既に二人のバラモンから不本意にあしらわれ懐疑心いっぱいの人にはそぐわなかったでしょう。

2007年03月21日

FetchType.EAGER時に複数のbagを記述できない件

Hibernate Annotationsで、FetchType.EAGERを複数指定すると実行時に例外が発生します。
具体的には


org.hibernate.HibernateException: cannot simultaneously fetch multiple bags

というエラーです。ひとつのSQLクエリーの中でbagを2つ以上定義できないと言う意味です。

Hibernate Annotations FAQ(http://hibernate.bluemars.net/329.html)によると、解決策は以下の3つです。


  • bag形式で記述しない。@IndexColumnを付けてSetかListで利用する。

  • @CollectionIdを使う。

  • @Fetch(FetchMode.SELECT)か@Fetch(FetchMode.SUBSELECT)を指定する


LAZYじゃない形で一番簡単なのはFetchMode.SUBSELECTでしょうか。SUBSELECTを指定するとSQLを別々に発行します。

2007年03月22日

[ゴータマ]物事の見解について

  • (世の学者たちは)めいめいの見解に固執して、互いに異なった執見をいだいて争い、(みずから真理への)熟達者であると称して、さまざまに論ずる。--「このように知る人は真理を知っている。これを非難する人はまだ不完全である」と。
  • ・・・
  • ここ(わが説)にのみ清浄があると説き、他の諸々の教えには清浄がないと言う。このように一般の諸々の異説の徒はさまざまに執著し、かの自分の道を堅くたもって論ずる。
  • 自分の道を堅くたもって論じているが、ここに他の何びとを愚者であると見ることができようぞ。他(の説)を、「愚かである」、「不浄の教えである」、と説くならば、かれはみずから確執をもたらすであろう。
  • 一方的に決定した立場に立ってみずから考え量りつつ、さらにかれは世の中で論争をなすに至る。一切の(哲学的)断定を捨てたならば、人は世の中で確執を起すことがない。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第四 八つの詩句の章/十二 並ぶ応答-小篇

 物事に対する良し悪しは相対的なものであり、自分の考え方が唯一最高と言うわけではない。そこにこだわることはトラブルの元である。といったようなことではないかと私は受け取りました。
 私はITエンジニアなので、自分の身近なITの世界に置き換えて考えてしまいますが、ゴータマさんの言う「めいめいの見解」を「システム開発の方法論や、個々の開発技術」に置き換えて想像してみると、IT業界の現状の問題をそのままゴータマさんが指摘してくれているような気がしました。




  • これらの偏見を固執して、「これのみが真理である」と宣説する人々、--かれらはすべて他人からの非難を招く。また、それについて(一部の人々から)称讃を博するだけである。

  • (たとい称讃を得たとしても)それは僅かなものであって、平安を得ることはできない。論争の結果は(称讃と非難との)二つだけである、とわたくしは説く。この道理を見ても、汝らは、無論争の極地を安穏であると観じて、論争をしてはならない。


「ブッダのことば スッタニパータ 訳:中村元」
スッタニパータ 第四 八つの詩句の章/十三 並ぶ応答-長篇

 ITのシステム開発の世界は、少なくとも現在のところはあまり快適なところとは言えないような気がします。それはシステム開発の大部分がQ(品質)C(コスト)D(納期)のいずれかで目標を達成できないことが多いからです。私はそんなに頑張って働いていない部類のITエンジニアですが、世間のITエンジニアには自分の生活を犠牲にして遅くまで残業されていたり、休日に出勤して挽回されている人が少なくありません。
 このような開発現場を少しでもよくしようと、ITの世界には新旧問わず様々な方法論や開発技術が提唱されています。しかしこういった方法論や開発技術は、ともすればそれらのトピックのみが大々的に取り上げられ、一人歩きしてしまうことが多いように思います。このような手段先行型の姿勢や、これらの主張によるセグメント分けと言ったようなものが、かえって現場に混乱を招き、不幸にしているのではないかという気がしてなりません。あくまでも道具のひとつに過ぎないと考えたほうがいいと思っています。どんな状況でも常に効果を発揮する道具は存在しませんよね。私はシステム開発で失敗しないためには、ドロドロとした俗世の問題を解決することにつきると思っているのでそこに注力したいです。これらを解決するために役に立つ道具は使う、役に立たないのであれば今回はおいときゃいいじゃん。と思います。
 ゴータマさんは、「人が生まれたときには、実に口の中には斧が生じている。」とも言っています。もちろん建設的な議論はすごくいいと思いますが、これ最高、他は駄目みたいな言い合いは飽き飽きします。揚げ足を取ろうと思えばいくらでも出来ますからね。同じ目的のためには協力し合おうよ、と思います。

 最後にもうひとつ。いいこと言うなあ。と思います。

  • 『等しい』とか『すぐれている』とか、あるいは『劣っている』とか考える人、--かれはその思いによって論争するであろう。しかしそれらの三種に関して動揺しない人、--かれには『等しい』とか『すぐれている』とか、(あるいは『劣っている』とか)いう思いは存在しない。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第四 八つの詩句の章/九 マーガンディヤ

2007年03月23日

Hibernate Shards登場

Hibernateの新しいプロダクトです。(Contributed by Google)
http://www.hibernate.org/414.html
複数のRDBにデータを分割してI/Oする仕組みをHibernateで実現するもののようです。
主要な機能としては


  • Hibernate標準APIに沿ったモデル:Hibernateの標準APIを利用できるため、新たな使い方を覚える必要が無い

  • 柔軟な分割ロジック:データを分割する方法を柔軟に選択できる。自分で作ることも出来る。

  • virtual shardsのサポート:分割ロジックを変更した際の再分割が容易に行える

  • フリー・オープンソース:LGPL


なかんじみたいです。試してみよう。

2007年03月29日

[ゴータマ]なまぐさについて

少なくともゴータマさんは、肉食を厳格に禁じていたわけではないようです。

  • 生物を殺すこと、打ち、切断し、縛ること、盗むこと、嘘をつくこと、詐欺、だますこと、邪曲を学習すること、他人の妻に親近すること、---これがなまぐさである。肉食することが<なまぐさい>のではない。
「ブッダのことば スッタニパータ 訳:中村元」 スッタニパータ 第二 小なる章/二 なまぐさ

 言わんとするところというか、素となるマインドが正しく伝わりさえすればそれでいいと思うのですが、なぜか物事は形式的なものを重視する方向へ変わってしまいがちなように思います。形式的な物事のほうが伝えやすいし評価しやすいからでしょうか。(ex.学校の校則とか。)
 でも形式的なものは数ある手段のうちの一つを表しているに過ぎないのに、それが目的になってしまい本来目的であったはずの事柄が軽視されたり薄れていくことはとても恐ろしいことのように感じます。手段を目的にすることによって楽をしたり得する人々がいるからだと思いますが、それは怠慢だしズルいことじゃないかなあと思います。

About 2007年03月

2007年03月にブログ「GrandNature」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年01月です。

次のアーカイブは2007年04月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。