2008年01月29日

「よねのはてな」のよねばやしさんは

ys_y0217 at 19:00|PermalinkComments(1)TrackBack(0)clip!

404 Blog Not Foundのdankogaiさんは

ys_y0217 at 18:55|PermalinkComments(0)TrackBack(0)clip!

第2回BPMオフ会

先週の土曜に開催された、BPMオフ会に参加してきました(ビールパーティみんなでしましょの会)。

実はあまりBPMというものを知らないまま行ってきた。正直、BEPLとかSOAとかESBとか、バズワードだと思っていてあまり勉強していなかった。SOAPとかWSDLとかUDDIとか昔すげぇ勉強して、結局使ってない苦い思い出が。
いや、もちろん時代の流れとして、どんどんサービスを疎結合にしていくというのは正しいと思うんだけども。まぁ、そういった意味で RESTful は勉強しとかにゃーって感じだね。

結論から言って、今回、参加してみてBPMは使える技術だなと思った。
というのは、今回の勉強会の最後に、スターロジックのはぶあきひろ氏がSeasarベースのBPMエンジン(この言い方で合ってるかは分からないけど)S2Buriで、スタロジの生産性は50倍になったとおっしゃっていて、話10分の1に聞いたってすごいわけで、もちろん、仕事のとり方を、S2Buriにかなりあわせてるんだろうけど、ものすごい。

僕の理解では、BPMとは業務の見える化なんだと思う(この理解で合ってるのか、飲み会で Dis ってほしかったんだけど、結局あんまり話せなかったなぁ)。
で、BPMの適用にもレベルがあって、さらに、ツールとしてたとえばWeb層のフロントエンドまで備えるかどうかでものが分かれるんだろうとは思った。
全部いりのアプリだと多分敷居が高いし、お高いし、プロプラエタリすぐると思うんだけど、今回知ったS2Buriとか、jBPM(+Seam)とか使うとかなり簡単にBMPの良い点を扱えるんじゃないかと思う。
BPMとかそういう言葉がバズワード化してしまうのは、本質を理解しないままに技術が使われてしまうからで、筋が良い技術だと思うのでうまいこと使いたいですね。

で、本題のビールパーティ(?!)に行ったわけですが、テラカオス。
まず集まってるメンバーがカオスだったし、2次会とかテラカオスでしたよ。

つか、恐れ多くも、はぶさんとエヴァについて熱く語ってしまったとか良い思いでです。
そして、はぶさん java-ja 入り。
第7回「第一回チキチキ 『Buriの旨さを味あわせてやる』?やっぱぶりは寒ブリだよね? 」開催です。
http://java-ja.yoshiori.org/index.php?%E7%AC%AC%E4%B8%83%E5%9B%9E

他にもたくさんの人が java-ja 入りしたような気がします。java-ja 恐るべし。

最後に、会場の手配などid:gothedistanceさんお疲れ様でした。



ys_y0217 at 00:47|PermalinkComments(0)TrackBack(0)clip!

2008年01月18日

万人のためのオートメーション: 継続的インテグレーションのアンチパターン について

万人のためのオートメーション: 継続的インテグレーションのアンチパターンという記事があったので、CI 大好きっ子としては言及せざるを得ない。


1個1個のパターンについて熱く議論しようかとも思ったのだが、時間がかかりすぎるのでやめておく。
記事の全体のまとめ、そしてそれに僕の今までの CI についての関わってきた感想を交えて書く。

CI ツールのメリットを端的に書くと、「ビルド、テストをチェックインのタイミングで継続的に行うことで、エラーが起こった箇所をすばやく特定し、修正できる」点にあると僕は思っている。

このメリットが消えてしまう原因には、
・継続的に行われない
・エラーの通知が無視される
・エラーが修正されない
という3つに分けられるのではないだろうか。この記事のアンチパターンも基本的には、この3つの原因に分けられるのではないかと思う。

これらの原因、アンチパターンの根底にあるのは、CI ツールの利点への開発者の理解の欠如が挙げられる。

CI ツールからいちいちエラー報告がきたりすると、うざいと思う人の心は当然だが、実は、そのエラー通知は、開発者にとって利益をもたらす天恵なのであるということを理解させることが、CI 導入の一番最初のステップではないかと思う。

また、開発者ではなく、経営者や上司などに対しても CIツールのメリットを重々承知させる必要がある。たとえば「処理速度の遅いマシン」アンチパターンの解決には速いマシンが必要だが、お金を出す層に CIツールのメリットが伝わってなければそれもままならない。個人的には、大規模な開発になってくると、速いマシンを複数台 CI・テスト用で買ってスケールさせる必要があると思っている(もちろん、それを納得させるのは苦労するわけだけど)。





ys_y0217 at 14:48|PermalinkComments(0)TrackBack(0)clip!

2007年12月21日

java-ja 第一回チキチキ 『ant から maven2へ 』?血があつい鉄道ならばこまるよね?に行ってきました。

java-ja 第一回チキチキ 『ant から maven2へ 』?血があつい鉄道ならばこまるよね?に行ってきました。

今回もかなりの人数がいて大盛況。

maven 勉強会で固いっちゃー固い内容なんだけどそこは java-ja。楽しいふいんきで良かったです。

最初は、Maven2入門(何も知らない方向け)は、丁寧にmavenについて解説していただいて、本当に使ったことない人が maven2 を理解するのに良い感じだた。ネタも面白かったし。

僕は仕事でmaven2が出たころから使ってるけど、実はあんまりプラグインの作り方とかは詳しくなかったので、tfnatoさんのPlugin入門は参考になった。(twitterのパスワードが流出してdankogaiのときばりの祭りになるって言ってたのに、ならなくて非常に残念)

maven でドキュメントの生成とかもしたことなかったので、yoichiro さんのmaven2 + apt で楽々ドキュメント作成もためになった。プロダクトがあると色々とプレゼンなどで良いなぁ。

cactusmanさんのHudsonときどきmaven2はHudsonの手軽さが分かってよかった。僕はCIツールは、Continuousをちょっと評価してみて、よくわからなくて放置して、で、その後CruiseControl使ってて便利に使ってたんだけど、Hudsonもいいね。少なくとも見た目の良さはスーツに訴えるものがあると思う。

hiroyaさんのwebstart-maven-plugin + 無償で正統?なコード署名を施す方法(LT枠だけど、ネタ増し増しで)は、最近僕はクライアントアプリ書いてないけど、非常に興味深かった。Java Web Start って良い技術だと思うけど、敷居が高い。そこをどうにかしてくれるとやはりうれしいよね。

全般的に、maven って覚えることが多いし、直感的でない部分も結構あると思う。でも一回覚えれば戻れられないぐらい便利。特に開発の規模が大きくなればなるほど、maven の利点が生きてくると思う。


そういえば今回は懇親会=忘年会でしたね。
今年は皆様お世話になりました。
java-jaに第3回から参加させていただき、色々と楽しい話聞け、刺激になりました。
あんまり java-ja に貢献できてるか分からないですが、
これからも皆様よろしくお願いいたします。
(忘年会で酔っ払って調子にのってやらかしてないか不安。。。実はあまり記憶が無い)


で、「LT として発表したので、資料などを置いておきます。気づいてた人も沢山いたと思うけど、資料は実は会場で書いてました。

yoichiro さんが Ustream で録画してくれていたので、そちらも見ていただけると会場のふいんき(何故か変換ry)も含めて分かるのではないかと。
http://www.eisbahn.jp/yoichiro/2007/12/_ant_maven2.htmlの3つ目の Ust の 16:15 あたりから。
yoichiro さんありがとうございます。

(多分)世界初 Selenium プレゼン。Firefox の Selenium IDE プラグインを入れていただき、
最初の先頭行にあるコメントの URL を base URL にして実行してステップ実行していただけるとプレゼンっぽくなるはず。

まずは Selenium ってどういうものかについての資料
Selenium について(右クリックで保存して Selenium IDE に食わせてください)

次に Cargo ってどういうものかについての資料
Selenium について(右クリックで保存して Selenium IDE に食わせてください)

簡単に説明すると Selenium はブラウザ上でユーザーの操作を JavaScript でエミュレートすることで、テストを行うツールです。そして、Cargo は Tomcat などのコンテナをラップして共通の起動のしかたを定義するツールです。cargo には maven から使うプラグインが用意してあり、さらに selenium と組み合わせることで、アプリケーションのコンパイル、アプリケーションサーバーのインストール(初回のみ)、アプリケーションサーバーへのデプロイ、アプリケーションサーバーの起動、Selenium でのテストの実行、アプリケーションサーバーの停止が行えます。

デモの資料はこちら

LT では時間も押していたので詳しく説明できなかったのでデモの構成。
以下は demo の zip を解凍してできるフォルダ構成。デモの詳細については後でまた書くメソッド

/pom.xml
後述する tomcat5x-test や jboss4x-test を行うためのマルチプロジェクト。この中から tomcat5x-test と jboss4x-test の pom.xml が実行される

tomcat5x-test/pom.xml
tomcat5x のテスト用の pom.xml。このファイルの中に Cargo プラグインで tomcat のインストールファイルの場所の設定や、Selenium でのテストを integration-test フェーズで行うということが記述されている。

tomcat5x-test/src/main/java/demo
テスト対象となる S2Wicket のプログラム。名前を入力して「Next」ボタンを押すと、次のページに行って、「名前 + javaja!」と言ってくれるだけのアプリ。

jboss4x-test/pom.xml
jboss4x のテスト用の pom.xml。tomcat5x-test/pom.xml と異なるのが、tomcat5x-test/src/main/java/demo にある テスト対象のプログラムを build-copysource.xml でコピーしてから、テストを行う点など。実はこの構成は teeda の teeda-selenium-test からぱくった!この辺りって、マルチプロジェクトをうまく適用するともっとうまくいくと思うので後で調査したいところ。


zip を解凍してできたフォルダ上で mvn integration-test を実行すると、最初は tomcat と jboss のインストールがあるので時間がかかると思うが、サーバが起動してブラウザが起動して Selenium のテストが実行されてテストが成功するはず。




ys_y0217 at 17:22|PermalinkComments(1)TrackBack(0)clip!java-ja 

2007年12月13日

イノベーションの神話 神話1 ひらめきの神話

イノベーションの神話という本を今読んでいる。多分、章単位で読める本なので、章単位で軽く感想を書いていく。

全体的な内容としては、
 ・イノベーションにまつわる神話を洗い出す
 ・なぜそれが有名になっているのかを解説する
 ・真実という観点からそれらを探求し、教訓とする
という本。

神話1 ひらめきの神話
イノベーションはひらめきによってもたらせるという神話。ひらめきによって物事が解決することはないと著者は述べる。ひらめきとは、パズルの最後のピースのようなもので、パズルの最後のピースをはめるときに深い感慨があるが、それは最後だからであって、ピースそのものは、何個もあるピースの中の単なる1個にすぎないと例にあげてのべている。
また、ひらめきには、前段階、発見段階、後段階という3つの段階に分かれており、何日何ヶ月何年も考えたり試行錯誤した結果(前段階)、ひらめきを発見し(発見段階)、そしてそのひらめきを実現するという困難を乗り越えるという段階(後段階)があり、ひらめきとは、イノベーションのためのほんの一部の段階にすぎないと言っている。
僕もつい、この神話によりかかるときがある。すばらしいアイデアが浮かべばすべてがうまく良くと。が、やはり何百もアイデアを出し検討しつぶし、プロト作って評価したり試行錯誤してるうちに、本当に良いアイデアがうまれて、そして、そこからもっと苦労してそのアイデアをビジネスとして成功させる必要があるのだろう。

ys_y0217 at 14:05|PermalinkComments(0)TrackBack(0)clip!

2007年11月29日

Subclipse のチーム同期化ビューに.classpathとか出さない方法

Eclipse の Subclipse のチーム同期化ビュー(Team Synchronize View)に、リポジトリで管理してない Ecliipse が出力する .classpath とか .project を出さないようにする方法を探して見つかったのでメモ。

[設定]-[チーム]-[無視するリソース]
[Preference]-[Team]-[Ignore Resources]
に設定を足す

今までの苦労が嘘のようだ。

ys_y0217 at 18:54|PermalinkComments(0)TrackBack(0)clip!

2007年11月16日

twitter の web ページで @ のリンクをつけるぐりもん

twitter の web ページで、@yamashiro とか書いてあってもリンクにならなくなってたので、
ぐりもんを勉強がてら書いてみた。
ぐりもん初なので変なところとかあるかも。



ys_y0217 at 14:15|PermalinkComments(2)TrackBack(0)clip!

2007年11月13日

Selenium RC Java クライアントにおける Ajax テストの Wait について

Selenium というテストツールをここ2年ぐらいずっと使っている。

Web ブラウザ上での自動テストを行うツールだ。ブラウザの操作そのものを JavaScript でシミュレーションしてくれるので、Webアプリケーションのブラウザ互換性に対するテストも行える。

非常に便利なツールなのだが、Ajax で作られた Web アプリケーションに対するテストを行うにはコツがいる。

古き良き画面遷移で処理が進んで行く Web アプリケーションの場合は、
1.たとえばボタンを押す
2.サーバで処理が行われる
3.ページが書き換わる
という流れが決まっていたので、Seleniumのテストも1.〜3.の手順を行って、3.が終了したらページの中身を検証・テストするという流れだった。

これが Ajax の場合は以下のようになるはずである。
1.ボタンを押す
2.サーバで処理が行われる
3.非同期で処理結果が戻ってきて、ページ内の一部が書き換わる。


非同期に通信した結果が戻ってくるので、「3.」の後に検証作業をするというタイミングが難しい。

多くの場合は、Ajax で通信した結果、HTML の表示が変わったりするはずなので、ボタンを押すという selenium のコマンドを実行した後に、ループを実行し、Thread.sleep を使いつつ、3.のページ内の一部が書き換わるのを isTextPresent や isElementPresent などで待つという作業が必要になってくる。

あるいは無理やり10秒待つということもできるが、動作が不安定になるし、テストの実行に時間がかかってしまう。

このように Ajax の実行を待つのにはなんらかの Wait をしなければならないが、今までそれを自分で実装していたのだが、Selenium Rc の JavaClient に用意されてた。


com.thoughtworks.selenium.Wait クラスを使えばよい。

たとえばページ内にあるテキストが存在するまで待つには以下のようなコードを書く。


ちなみに HTML でコマンドを書いて実行する場合には、waitForXXX 系のコマンドを使うと wait して ajax のテストを行うことができる。

ys_y0217 at 12:25|PermalinkComments(1)TrackBack(0)clip!Selenium 

2007年10月06日

java-jaの第一回チキチキ 19時だよ全員集合!!ライトニングトーク大会(性的な意味でに参加してきた

java-jaの第一回チキチキ 19時だよ全員集合!!ライトニングトーク大会(性的な意味でに参加してきた

発表資料はこちら。

ケータリングで食事とりながら、ビール飲みながらの回だったので、気楽で楽しかった。


皆様のプレゼンも楽しかった。
プレゼン能力向上のための回だったから、皆様のすごいプレゼン参考にして、
今後自分のいたらない点を修正していきたいと思った。


iPod touch でプレゼンはものすごかったなぁ。
yoshiori さんの Keynote 活用しっぷりもすげぇ。
さくらばさんのやつは今後写真とるのに勉強になったー。
他の人のも楽しかった。

一番印象に残ってるのは「携帯電話でコーディング」だな。
携帯て。すげ。

あと、昔、平塚の学校に通ってたのだが、
藤沢の人に「茅ヶ崎は田舎」と DIS られてたけども、
平塚は眼中にすらなかったのに絶望したっwww


そして、
java-ja 終わりに結局一人でメイド喫茶行ってきたとかまさか。
朝までいたとかまさかw




ys_y0217 at 22:35|PermalinkComments(3)TrackBack(0)clip!