カテゴリ: Java

JWTをJavaで作る方法

· Java

公私共にJWTをやらんとあかんな、と思い、JWTをJavaで扱うためのjose4jというライブラリを使い始めました。 [https://bitbucket.org/bc/jose4j/wiki/Home](https://bitbucket.org/bc/jose4j/wiki/Home) 使い方は簡単。例えば、HMAC-SHA256の署名付きJWTを作るためには、以下のようにすれば良い。 まず、mavenでプロジェクトを作る。 次に、pom.xmlに以下を追加する。 もちろん…

Read more →

Javaのgetter,setterメソッドは(特に)GUI部品のための規格だった話

· Java

こんな記事があった。 「 [getter/setterとはなんだったのか](http://d.hatena.ne.jp/Nagise/20141010/1412930502)」- プログラマーの脳みそ JavaBeansはGUIなどで再利用可能なコンポーネントを提供する際の規格のようなもので(僕もあまり詳しくない)2000年ぐらいにGUIのコンポーネントを作るときに意識したような、どうでもよかったような、イマイチ恩恵が実感できなかった代物だった JBuilder2とか3の頃のJava開発…

Read more →

デバッグ放棄

· Java

お願いだから、良い子はこんなコードを書かないでください。 せめてLogger.debug("error", e)を、そうでなくともせめてe.printStackTrace()としましょうよ。もちろん、ちゃんとした対処も記述されるべきです。…

Read more →

package-info.javaをコンパイルするために

· Java

Javaにおいて、パッケージにいくつかのアノテーションを指定することができます。これをするために、パッケージ定義のみを持つpackage-info.javaファイルを作成する必要があります。例えば、以下のような感じです。 このpackage-info.javaファイルは、コンパイルすることができます。しかし、上記のケースでは、このファイルは不幸にもコンパイルされないでしょう。その理由は、それが実行時に必要とはjavacコマンドが判断しないからです。それ故に、もしpackage-info.c…

Read more →

WEB+DB PRESS Vol.48が発売されています

· Java

WEB+DB PRESSにて連載させていただいている「Java Traveler」、今回で早5回目です。「クラウドコンピューティングプラットフォーム」というキーワードで書かせて頂きました。 amazon [![WEB+DB PRESS Vol.48](http://ecx.images-amazon.com/images/I/61UITuqsyWL.SL160.jpg)](http://www.amazon.co.jp/exec/obidos/ASIN/4774136913/eclipsep…

Read more →

HibernateでMap<String,String>なプロパティを扱う方法

· Java

Hibernateを使っていて、ふと困った状況に遭遇。 @Entity @Table(name="...") public class Hoge { ・・・ protected Map desc; ・・・ } Hogeエンティティクラスのdescプロパティを永続化させるにはどうしたらいいのだろう?もし、descプロパティが、 protected Map desc; というように、Mapの値が別のエンティティだった場合は、特に問題はない。しかし上記の場合はMapの値がString。これは困…

Read more →

遂にJDeveloper 11g登場か!?

· Java

と一瞬思ったけど、10gシリーズのマイナーバージョンアップだった。 orz 「 [The New JDeveloper is Here](http://blogs.oracle.com/shay/2008/07/thenewjdeveloperishere.html)」 - Shay Shmeltzer's Weblog もっと広く使われてもいいと思うんだけどなぁ。僕が知らないだけで、実はあちこちのSIerでめちゃくちゃ利用されてたりするのだろうか。 ・ NetBeans - どうしてもAnt …

Read more →

ドキュメントとして何を書くか?

· Java

僕の考えは、以下のような感じ。 (1) ドキュメント(設計書だろうが仕様書だろうが)は、「誰に何をどう伝えるべきか」を考えれば、何を揃えればいいかは自然と決まってくる。そして、誰が読んでも意味がないと判断されるドキュメントは意味がないので書かない。 (2) 「基本設計書」や「詳細設計書」や「外部設計書」や「内部設計書」という言葉があるが、肝心なのは「誰に何を伝えるか」であり、伝えたいことや認識あわせの単位でドキュメントが作られればそれでいい。それらをまとめて「○○設計書」とするかどうかは、顧客が…

Read more →

WEB+DB PRESS誌にて連載を始めました

· Java

先日発売された「 [WEB+DB PRESS Vol.44](http://gihyo.jp/magazine/wdpress/archive/2008/vol44)」から、「Java Traveler」というテーマで連載を担当させていただくことになった。 第1回目の今回は、「Facebook vs. OpenSocial 次世代インターネット形態の仁義なき戦い」ということで、SNSアプリケーションプラットフォームを紹介してみた。 Facebookは、MySpaceに次ぐアメリカで大ブレイク中の…

Read more →

JDKが勧めるOpenOffice

· Java

久々にWindowsにJavaSE SDKをインストールしていたら、OpenOfficeを勧められた。 ![jdk-win.JPG](http://www.eisbahn.jp/yoichiro/images/jdk-win.JPG) StarSuiteを勧めるならまだしも、あ、そうか、コミュニティを押すならOpenOfficeなのか。なるほど。…

Read more →

毎回繰り返される不安と問題

· Java

実際のところ、システム開発における情報の蓄積および検索や体系化・再利用って、どれくらい行われているのだろうか? 次々と迫ってくる開発案件。一つ案件がこなされる中で、不安材料とその解決方法は必ず蓄積される。しかし、次の案件にそれが生かされることはなく、振り出しに戻り、再度同じような反省材料と問題の解決方法が導かれる。そこには多くの車輪の再発明が含まれ、知識を脳みその中に蓄積している社員が退職してしまえば、全社的に情報がリセットされる。情報が属人化された結果、最悪なケースとしては、知識を持つ社員の人…

Read more →

メッセージ指向なオブジェクト指向でのUMLって?

· Java

オブジェクト指向は単なるオブジェクト間のメッセージのやり取りに過ぎない、という言葉は、僕の身近な人たちにとっては僕から一度は聞いたことがあるだろう。そんな考えに関して注目エントリが下記。書いてある内容はほぼ同意なんだけど、部分的に引っかかりを感じざるを得ないので、僕の意見をエントリしてみる。 「 [イマドキのオブジェクト指向](http://www.arclamp.jp/blog/archives/objecttomessage.html)」- アークランプ より: では、「イマドキのオブジェ…

Read more →

HttpServletResponse#getOutputStream()したストリームは自分でclose()するのか?

· Java

久々にJavaな話題。昨日社内で、 「Servletの中でresponsegetOutputStream()やgetWriter()したストリームは、自分でclose()する必要があるの?それともclose()せずに放置が正解なの?」 という質問を受けた。僕は「自分で獲得したリソースは自分で明示的に解放すべき」という考えが基本にあり、思い返すと、doGet()やdoPost()メソッド内でちゃんと自分でclose()するコーディングを長年に渡って行ってきた。flush()に関してもclose()…

Read more →

Java Edge第3回ライブセッションで話をしてきました

· Java

中部地区におけるJavaコミュニティ「Java Edge」が主催した第3回ライブセッションが昨日行われた。「こみゅすけの里帰り」という題目で、僕も話をしてきた。 [![SlideShare](http://static.slideshare.net/swf/logoembd.png)](http://www.slideshare.net/?src=embed) | [View](http://www.slideshare.net/yoichiro/javaedge3) | [Upload …

Read more →

単純化&最適化&DRY

· Java

問題の局所化およびDRYによるメンテナンスビリティを考えられないプログラマがいるとは、驚きに値する。 人間がミスをおかしにくくするためには、問題領域をできるだけ狭めて、何事にも単純化を行う必要があると僕は思っている。そして、一旦でき上がったシステムを長期的にメンテナンスしていくためには、昔流行った「各コンポーネントがそれぞれ能動的に何かをする(そのためには同一処理が複数箇所で記述されることを許容する)」のではなく、DRY(Don't repeart yourself)の精神に従った最適化ロジッ…

Read more →

JJUG クロスコミュニティカンファレンス 2007 Fallの模様です

· Java

本日開催された「JJUG クロスコミュニティカンファレンス 2007 Fall」をUstreamで配信していたのには、みなさんお気付きだっただろうか?同時に録画もしておいたので、もし残念ながら会場に来れなかった方は、ぜひご覧になってもらいたい。 [Part 1 丸山先生レクチャーシリーズ 第1回 Googleの分散処理技術] [Part 2 コミュニティパネル 「Webアプリケーション開発の今後を占う」 - 第1部 ポジショントーク Seasar代表 ひがさん] [Part 3 コミュニティ…

Read more →

クロスコミュニティ IDEに参加してきました

· Java

JJUGが主催した「 [クロスコミュニティ IDE](http://commusuke.eisbahn.jp/map/19)」に参加をしてきた。例のごとく,今回もUstreamで模様をリアルタイム配信してみた。録画に失敗しちゃったかと思ったのだが,最初の17分間だけ何故か別動画になってしまっていただけで,一応全部録画できていた。ほっと一安心。 「最初の17分間」 「残り全部」 JDeveloper紹介者の佐藤さんとは,この前のJava Edge発足総会でご挨拶させていただいていたのだが,たけ…

Read more →

seasar.orgの人々と飲みました

· Java

一昨日の8月9日,seasar.orgの中の人々にお会いすることができた。 ![200708092242000.jpg](http://www.eisbahn.jp/yoichiro/images/200708092242000.jpg) かなりぶれてしまってるのだが,お会いできたのは次の方々だ。 [よねさん](http://d.hatena.ne.jp/yone098/) [まさたかさん](http://d.hatena.ne.jp/masatakak/) [mopemopeさん…

Read more →

Java Edge発足総会に参加してきました

· Java

昨日の8月3日,名古屋工業大学で行われた「Java Edge発足総会」に参加をしてきた。今回は,単に聴衆としてではなく,パネルディスカッションのパネラーとして僕も参加。 Java Edgeは,名古屋を中心として活動を行っていくJavaのコミュニティであり,JJUG(日本Javaユーザグループ)がバックアップを行っている。最近のJavaやRuby関連のコミュニティは,東京以外の都市を対象として,総会や勉強会,各種イベントを行うことが多くなってきている。Java Edgeに関しても,Javaをメイン…

Read more →

SpringNightDreamに行ってきました

· Java

昨日の7月27日に,Japan SpringFramework User Group主催の勉強会「 [SpringNightDream](http://springframework.jp/index.php?%CA%D9%B6%AF%B2%F1)」に参加してきた。ちょっとお手伝いしつつ,総勢8名の方々のライトニングトークを楽しんだ。ひがさんを除いて(w,皆さんSpringにまつわる話を展開。nekopの上空からの突っ込み,そしてひがさんの鋭い突っ込みなども含め,なかなかレベルの高い勉強会となっ…

Read more →

僕のJava処女作を恥ずかしげもなく公開!

· Java

「 [昨日の講演](http://www.eisbahn.jp/yoichiro/2007/07/post155.html)」の中で,僕の卒業研究テーマを取り上げた。その時に作成したプログラム「CASL Simulator for Java」を,恥ずかしげもなく公開しようと思う。 [CASL Simulator for Java Version 0.992](http://www.eisbahn.jp/yoichiro/casl-0.992.tar.gz) 解凍後,「java MainWind…

Read more →

JSUG勉強会Vol.4に参加してきました

· Java

Japan SpringFramework User Groupの [第4回勉強会](http://springframework.jp/index.php?%CA%D9%B6%AF%B2%F1)に参加してきた。ミニレポートをエントリしてみたいと思う。 [JavaOne2007報告] 日立の河村さんのプレゼン。これは5月30日に行われたJavaOne2007報告会で行われたプレゼンとほぼそのままだったので,聞くのは僕個人的には2回目。 [前にエントリした通りの内容](http://www.eis…

Read more →

JavaでもC++でもLLでもない僕の選択肢

· Java

昨日、久々にDelphiで遊んでみた。僕は、DelphiのVer.1からのユーザ。最近のDelphiは「Turbo Delphi」という名前で公開されていて、「 [Turbo Delphi 2006 Explorer](http://www.codegear.com/products/turbo)」が無償版である。 ![turbodelphi.jpg](http://www.eisbahn.jp/yoichiro/images/turbodelphi.jpg) 動的言語もいいが、Windows…

Read more →

JavaOne2007報告会に行ってきました

· Java

去る5月30日にJavaOne2007報告会がSun用賀で行われ,それに参加してきた。途中からの参加だったので,JavaSEについての岡崎さんのプレゼンは聞くことができず,その後のJavaEEについての動向のプレゼンから聞くことができた。 まず,やはり注目を集めていたのは,JavaFX。RIA向けの製品ということで,JavaFX MobileやJavaFX Scriptが中心だったらしいが,JavaFX EEという言葉もプレゼンの中で出てきていたのは面白い。それがプレゼン者の造語なのか実際にSe…

Read more →

動的言語やrails系に走る理由

· Java

Ruby on Railsという言葉は誰しも知っている状況であり,さらにJava言語を推進してきたSunでさえJRubyを担ぎ出す今日。米国ではPythonで書かれた大規模サイトがスピード感を持って次々と登場してきている。昔からちょっとしたWebサイトにPHPやPerlといったスクリプト言語は広く使われてきたが,RubyやPythonによって,スクリプト系言語,つまりLLの印象は多くの開発者にとって大きく変わった。 LLがなぜこんなにももてはやされ,そして採用され始めているのか。大きく2つに分け…

Read more →

動的プロキシが循環参照していた際のシリアライズ問題

· Java

S2Wicketの新仕様を実装する際に問題となった,動的プロキシのシリアライズ問題だが,ここで直面した問題を整理したいと思う。そのために,問題領域に限定したコードを作成したので,興味のある方,解決策を知ってるぜ!という方は,ぜひ [ここからプロジェクトをダウンロード](http://www.eisbahn.jp/yoichiro/serialize-test.zip)して欲しい。 では,問題の簡単な説明をしていこう。まず,SwingやSWTなどのコンポーネント関連のクラスでよく見られるコンポジッ…

Read more →

動的プロキシをシリアライズする具体的方法

· Java

「 [Javassistを使った動的プロキシの作成](http://www.eisbahn.jp/yoichiro/2007/04/javassist.html)」エントリと「 [替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()](http://www.eisbahn.jp/yoichiro/2007/04/writereplacereadresolve.html)」エントリを組み合わせると,実行時にその場で作った動的プロキシクラスを元にnewしたイ…

Read more →

OLAPで脳みそ多次元

· Java

とある理由で情報の統計・分析についてのお勉強をすることに。うーん、なんで今まで避けて通ってきたんだろう、と思うくらい、なかなか面白い。 キーワードだけでも、 OLAP、OLTP 多次元データベース データマイニング データマート データウェアハウス VLDB スライシング ドリリング ドリルアップ、ドリルダウン ダイジング ディメンション 時系列 ファクトテーブル ディメンションテーブル キューブ メジャー と盛り沢山。OLAPにも…

Read more →

Javassistを使った動的プロキシの作成

· Java

前回の「 [動的プロキシとシリアライズ](http://www.eisbahn.jp/yoichiro/2007/04/post141.html)」エントリで紹介した通り,今回はその第一歩として,Javassistを使って動的プロキシを作成するための方法を紹介してみようと思う。 [Javassist](http://www.csg.is.titech.ac.jp/~chiba/javassist/)は,動的プロキシを作成するためのライブラリというよりは,バイトコードを操作するためのライブラリで…

Read more →

動的プロキシとシリアライズ

· Java

一般的なDIコンテナに大抵標準装備されている機能に,AOPがある。例えば,あるオブジェクトのあるメソッドが呼び出された際に,そのメソッドを処理する前に何らかの処理を挟み込む,などがAOPである。この機構を実現するためには,動的プロキシと呼ばれる機能が必要となる。 デザインパターンのProxyパターンは,あるオブジェクトと同等のインタフェースを持つProxyクラスを作成し,そのProxyクラスの中から本来のオブジェクトを呼びだすようにする。クライアントは本来のオブジェクトを触っている感覚なのだが,…

Read more →

替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()

· Java

今回は「 [動的プロキシとシリアライズ](http://www.eisbahn.jp/yoichiro/2007/04/post141.html)」エントリで取り上げた通り,writeReplace()メソッドとreadResolve()メソッドの使い方について紹介してみようと思う。 あるオブジェクトをシリアライズしたくなったとする。しかし,時として,そのオブジェクトをそのままシリアライズすることができない理由が出てきたりする。そのままシリアライズしてしまうとサイズが非常に大きくなってしまう,…

Read more →

インスタンスフィールドが勝手に上書きされる!?

· Java

さて,以下の抽象クラスがあったとする。これは,コンストラクタの中からfoo()メソッドを呼び出すが,foo()メソッドはサブクラスで実装を提供することを意味している。 abstract class C1 { C1() { foo(); } abstract void foo(); } そして,上記のクラスを継承した下記のクラスがあったとする。ここでは,インスタンスフィールドvalueを宣言し,宣言と同時に値1を代入するように記述している。コンストラクタ内でvalue値を表示し,foo()メソ…

Read more →

「冪等」って読めますか?

· Java

2007年2月23日に, [Lingr API](http://wiki.lingr.com/dev/show/API+Reference)にいくつかの [機能追加](http://wiki.lingr.com/dev/show/API+Release+20070223)が行われた(現時点の最新のAPIは [3月6日リリース](http://wiki.lingr.com/dev/show/API+Release+20070306)のもの)。その中で, The room.enter method…

Read more →

僕が考えるAOPの適用ポリシー

· Java

「 [Javaナイトセミナー(Vol.3)](http://www.nsug.or.jp/seminar/0702javasemi.html)」で宿題(?)だった「AOPの適用」について,僕なりの意見を以下に述べようと思う。 AOPはトランザクションやロギング,ベースとなる機構で必要な前処理などを適用することが代表例なのは揺るぎのない事実だろう。そして,AOPのこれらの処理に対する適用は,プログラマからテクニカルで毎度毎度のお決まりコーディングを削減することができ,さらに継承やTemplateパ…

Read more →

Javaナイトセミナー(Vol.3)に参加してきました

· Java

27日にSun用賀で行われた「 [Javaナイトセミナー(Vol.3)](http://www.nsug.or.jp/seminar/0702javasemi.html)」に参加をしてきた。 題材はSpring Framework2.0の新機能の紹介。ビールで乾杯から始まるセミナーは,いやでもノリ♪なテンションになり,雰囲気はとても良かった。講師の方はとても面白く,しかし聴衆からの質問には冗談を交えながらもポイントをしっかり突いた回答で,さすがだなぁと思いっぱなしだった。僕は対人恐怖症なため,真…

Read more →

Judeで屏風にER図を描いた

· Java

ついにJudeでER図が描けるようになった。 「 [JUDEのER図,できました!](http://blogs.itmedia.co.jp/hiranabe/2007/02/judeer8219.html)」 - An Agile Way 今後、UMLとERとマインドマップを交えた、新しい方法論にチャレンジしますので、ご期待ください! さっそく使ってみた。使用感は,ERWinに近い気がする。僕はERWinに慣れているので,非常に描きやすい。 今日では,データベースアクセスを行う際には必ずと言…

Read more →

Javaナイトセミナー参加表明

· Java

来る2月27日に,Sun用賀で「Javaナイトセミナー (Vol.3)」が開催される。 [Javaナイトセミナー (Vol.3)](http://www.nsug.or.jp/seminar/0702javasemi.html) 〜Spring Framework 2.0:   デファクトスタンダードDIコンテナの現在と未来〜 あまり(というか全くと言っていい程)こういうセミナーに参加してこなかったのだが, [java-ja](http://java-ja.yoshiori.org/)で出会っ…

Read more →

「java-ja」には気軽なJavaが待っている

· Java

現在はJavaが利用言語トップ3に陣取るIT業界であるが,10年前はJavaと言えば少数派だった。「Javaをやってます」と言えば,「おぉ,先進的ですねぇ」なんて言われたものだ。 今思うと,Javaは登場の最初からコミュニティが支えてきたのではないかと思う。ほとんどのJava牽引者は,最大のコミュニティであったJavaHouse-MLをホームグラウンドとして活動を行い,Q&Aを日々蓄積し,その結果Java人口が増えていった。その成果は,Topicとしてまとめられている。まさにコミュニティが生産し…

Read more →

アプリケーションコードとフレームワークと単体テスト

· Java

「 [フレークワークに依存しないっていうけどさ](http://d.hatena.ne.jp/higayasuo/200701191169180656)」 - ひがやすをblog アプリケーションのコードは、フレームワークに依存せずに済ませられるなら、それに越したことはありませんが、依存して楽できるなら別にいいんじゃないのというのが私の考え。 フレームワークに依存した状態で,更に「それに対する単体テストコードの記述の敷居が高くならなければ(※)」フレームワークに依存したコードを記述することを…

Read more →

DIコンテナの設定ファイル書くの?書かないの?

· Java

DIコンテナの設定情報,つまり「オブジェクトの依存関係」や「オブジェクトの設定内容」について,規約重視で暗黙のものとするか,ファイルに記述することで形式のものとするかは,個々人によって主張が異なるようである。何が何でも設定ファイルを書かない,あるいは,何が何でも設定ファイルを書く,といった「原理主義者」も多く,多くの場合は彼らの説明に「コンテキスト」が含まれない。よって,主張を聞いても,実際に何らかのDIコンテナを使う際をイメージした場合,その主張に沿う部分と沿わない部分が僕個人の中で発生し,完…

Read more →

WebSphere+commons-logging+log4jは使い物にならない

· Java

IBM WebSphere6.1(WAS)とBEA Weblogic9.2(WL)のどちらを採用するかを検証する機会が昨年あった。政治的な理由でWASに大きく傾きかけていたのだが,致命的な問題がWASに存在することが発見された。 それは,commons-loggingとlog4jの組み合わせをWebアプリケーションで使っていた場合に,WLやTomcatの場合と比べて,出力ログパターンによって処理性能が著しく低下するというもの。具体的には,「%C」「%M」といった,保守や不具合の原因の発見に非常…

Read more →

聖なる夜にソフトウェア開発を料理に見る

· Java

昨日のクリスマスイブの日は,やはり「ものづくり」をしていた。しかし,いつものプログラムや文章ではなく,料理である。 作ったものは3つ。 ピラフ ポトフ ケーキ ポトフは何となく「コンソメ入れて煮込めばいい」と想像できていたが,他の2品は完全に初体験。どうしていいかわからない。 優秀な先生の指導の元,3品をほぼ同時に作業開始。ケーキはしっかりとスポンジから焼くことにしていたので,まずは卵をクリーム状になるまで撹拌しないといけない。レシピはどっかのHPを印刷してあるが,全行程を頭に入れて…

Read more →

日本代表も舌を巻きました

· Java

とあるJIRAでの風景。自分の目を疑った。 ![jira-pass.jpg](http://www.eisbahn.jp/yoichiro/images/jira-pass.jpg) ボール(不具合修正タスク)回しの全てがワンタッチパス。 Aさん→Bさん ノールックパス Bさん→Cさん ノールックパス Cさん→Dさん スルーパス(辛うじて敵の存在を確認) Dさん→Eさん ノールックパス どんな大企業やねん。。。orz ちなみにEさんはエースストライカー。 [宇宙開発](http…

Read more →

もう「6」かぃ。。。

· Java

気がつくと,Java2SEの6がリリースされていた。 「 [Java Platform, Standard Edition 6 Release](http://java.sun.com/javase/6/)」- java.sun.com 今回の目玉は,何といってもやっぱりスクリプトエンジンの搭載。時代は「強制と自由のマッシュアップ」に突入したということか。 APIだけどんどん先行してて,完全にAPサーバベンダーが乗り遅れている気がする(特にInternational Business Machi…

Read more →

interface命名にも発想の逆転を

· Java

例えば,何らかの値をセットすることができる,という性格を表現するinterfaceを考えてみる。セットすることができるんだから, public interface SomethingSettable { public void setSomething(int value); } というように,〜Settableという名前にすることが多かった。 「何かをセットできる」というのは,対象クラスを外から見たときの観点と言える。なので,「何かをセットできる性質」というのは,そのクラスの性質の説明と…

Read more →

JavaScript流オブジェクト指向プログラミング - ITpro

· Java

JavaやCなどのオブジェクト指向言語とは異なるアプローチでオブジェクト指向を実現できるJavaScript。なかなか丁寧な解説が見つからないのだが, 「 [JavaScript流オブジェクト指向プログラミング](http://itpro.nikkeibp.co.jp/article/lecture/20061114/253669/)」 - ITpro は非常にわかりやすかった。プロトタイプ型のオブジェクト指向言語は,スクリプト言語という特性(=サクサク感&柔軟性)にぴったりだ。 ただし, そ…

Read more →

デフォルトエンコーディングは廃止すべき!?

· Java

Javaでの開発が当たり前になり,Javaプログラマの数も豊富になってきた。しかし,それもここ2,3年のこと。つまり,大多数のJavaプログラマのJava経験年数も2,3年,長くても5,6年といったところだろう。このことは,多くのJavaプログラマがWebアプリケーションしか書いたことがないことも表している。 JDK1.0.2やJDK1.1を身をもって体験している「ベテラン(僕を含む)」が常識と思うことも,現在の多くのJavaプログラマは持ち合わせていない。「全く今の若者は・・・」とつい言ってし…

Read more →

Children = Kids?

· Java

コンポジットなオブジェクトの構造を辿るときに必ずと言っていいほど見られるメソッド,getChildren()。これを変数で受けるとき,あなたなら変数名をどう命名するだろうか? Hoge hoge = ...; Collection children = hoge.getChildren(); まぁこれが多数派だろう。僕も今までこうしてた。しかし,JavaServer FacesのSun RIは違った。 Hoge hoge = ...; Collection kids = hoge.get…

Read more →

GlassFishがちょっぴり身近になるらしい

· Java

Redhat Linuxの牙城を崩すつもりでいる(だろうと思われる)Canonicalが,Ubuntu(うぶんちゅ?)ディストリビューションにGlassFishをバンドルすることを決定した。 「 [Ubuntu maker to distribute Sun's Java](http://news.com.com/Ubuntu+maker+to+distribute+Suns+Java/2110-73443-6133411.html?tag=html.alert)」 - CNET News.co…

Read more →

実装者を職人にするために

· Java

COBOL全盛の時代は,1つのメーカによる統一的な「閉じた」アーキテクチャだったために,ロックされたベンダーが提供する技術情報を身に付けるだけで,多くの案件をこなすことができた。それに,COBOLをやったことのある人ならわかると思うが,OSやデータベースなどによって提供されるサービス(トランザクションモニタやロギングなど)は非常に手厚く,しかも個々のプログラムで全く意識する必要はなかった。1プログラマから考えたら,COBOL全盛時代の方が現在よりも,よっぽどEoDの恩恵に預かることができていたと…

Read more →

Teeda - 日本発JSF実装

· Java

「 [今の最適解とは何だろう?](http://www.eisbahn.jp/yoichiro/2006/11/post106.html)」というエントリにコメントを寄せて頂いた中で,「Teedaは近いんじゃん?」という意見を頂いた。存在は知っていたけど,単なるJSFの1実装に過ぎないという軽い認識しか持ってなかったので,改めてSeasar FoundationのページでTeedaとは何かを見てみた。 「 [Teeda - JSF meets DI and AOP -](http://teeda…

Read more →

今の最適解とは何だろう?

· Java

POHPが使えて,Ajaxなリクエストを素直に受け付けられて,DIコンテナとの連携ができて,コンポーネント指向&イベント指向で,ほとんどPOJOでJavaコードが構成されて,サーバサイドでスクリプトも駆動させられて,設定ファイルが少なく,AOPも噛ませられて,プログラマにとって敷居が低く,ユニットテストもしやすくて,運用に耐えられて,JavaEEにできるだけ準拠していて,将来的に安心なもの。 ・・・誰か助けてくださぁぁぁぃ! orz…

Read more →

TDDの守備範囲

· Java

JUnitの登場によって,Javaの世界にTDD(Test Driven Development)の強風が吹き荒れた。その風は「テスト主導と言ったらJUnit」と言っても言い過ぎではないくらいの印象を多くの開発者に与えた。その結果,TDDを取り上げる記事の内容は,「TDDとは,実装コードよりも先にユニットテストをJUnitテストケースとして作成することですよ」というメッセージばかりが目立っている。 ユニットテストは確かに重要である。やるに越したことはないし,テストファーストはプログラマにとって,…

Read more →

libディレクトリ内の全jarファイルをクラスパスに

· Java

バッチプログラムやスタンドアローンなGUIアプリケーションでは,プログラムを起動するためのスクリプトを準備することがほとんどである。最近のJavaプログラムでは,数多くのOSSを使用して作成するために,クラスパスに通さなくてはいけないjarファイルの数は,それはそれは多くなる。シェルスクリプトやバッチプログラム内で,jarファイルを個々に記述してクラスパス文字列を構築するのは,非常にうっとおしく,美しくない。 せっかくのスクリプトなので,libディレクトリ内にあるjaファイル全てのパスを連結して…

Read more →

Java Persistence API時代到来!

· Java

Javaの世界の中で老舗かつ最も使われているであろうO/Rマッピングライブラリの [Hibernate](http://www.hibernate.org/)が,3.2にバージョンアップした。 [Red HatのJBoss,Java Persistenceに対応したORMソフトの新版「Hibernate 3.2」](http://itpro.nikkeibp.co.jp/article/USNEWS/20061017/250798/) - ITpro このリリースにより,HibernateをJ…

Read more →

java -versionの出力先って

· Java

標準エラー出力だったのか!?知らなかった。。。 java.exeの「-version」や「-showversion」オプションによって表示される, java version "1.5.008" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.008-b03) Java HotSpot(TM) Client VM (build 1.5.008-b03, mixed mode, sharing) ってメッセージ。てっきり標準…

Read more →

Apacheプロジェクトのまとめサイト

· Java

Apacheのサイトはプロダクトがよくまとめられて掲載されているが, [Strutsをはじめとするオープンソースプロダクト情報](http://www.arksystems.co.jp/closeupit/struts/article00103.htm) といったサイトは何気に重宝する。 [3](http://www.arksystems.co.jp/closeupit/struts/article00103.htm), [4](http://www.arksystems.co.jp/clos…

Read more →

例外機構を台無しにする巷の実装者たち

· Java

Javaには,異常系の処理を正常系の処理から明確に分離し,異常系の対処を実装者に強制することでコードの質を半強制的に高めるための「例外機構」が備わっている。例外は,チェックされるべき例外(Exceptionの直系)と,チェックしなくてもいい例外(RuntimeExceptionの系列)の2種類があり,「実装者に例外発生時の対処をさせるかどうか」でどちらを使うかを判断する。 多くの場合,業務的な例外はチェックされる例外,環境的な異常などの状況にはチェックされない例外が使われる。環境系の異常(ネット…

Read more →

不安を認識することの重要性

· Java

久々のエントリなので,ちょっと長文。 ソフトウェア開発のゴール,それは当然「仕様通り正しく動くこと」である。これは,簡単なようで非常に難しい。どんな工夫をしたとしても,完璧な結果を残すことは困難である。まだまだ職人技の集合なソフトウェア開発について,ゴールをめでたく迎えるためには,常に「不安」と「安心」がコントロールされた状態になければならない。 プロジェクトに参加した大多数の人間は,「漠然」とした不安と安心を持っているだろう。全く何も感じない人間はいないはずである。しかし,各個人の性格的な問題…

Read more →

迷いに迷う「次の一手」

· Java

最近,ソフトウェア開発の難しさを特に感じている。本当にソフトウェア開発は難しく,そして複雑だ。ことJavaに関しては,年々その複雑さが増すばかりで,EoDなど遠くの彼方な気がしてならない。それなのに,どこもJavaを選択した案件ばかりである。 しかも,技術的に複雑になってきているのに,プログラマのレベルは年々下がってきている気がする。最新技術の複雑さに追随できているプログラマなど,ほんの一握りである。多くのプログラマは,自ら技術の習得に励むような姿勢を見ることはできず,目の前の案件の仕様を何とな…

Read more →

自動生成に対する姿勢がスキルレベルを表現する

· Java

自動生成ツールに悪い印象を持っている人間は,現状把握や問題の詳細を聞くことなく,ちょっとした自動生成に関するトラブルが起きたということを聞いただけで全否定を試みる。問題の発生はどんな開発手法をとってもあり得ることであり,問題に対する解決策とその効果の蓄積が今日のIT業界では重要視されるべきなのに,それすら行おうとせずに拒否反応を示す。 相手のスキルや性格,開発に対する正しい姿勢を持っているかどうかが,自動生成に対する姿勢としてはっきりと現れる。自動生成は,開発プロセス,実装技術,保守,運用,品質…

Read more →

実装リーダーという存在

· Java

ソフトウェア開発という作業は,(ウォーターフォールやイテレーションなどの単位は抜きにして)設計から実装という流れに沿って行われる。業務的な設計から,最終的にはコンピュータ語に翻訳し,ソフトウェアという成果物を作り出すための「プログラミング」という作業が必ず存在する。 近年,プログラミングを軽視している組織やプロジェクトが非常に目に付くようになった。 プログラミングという作業は,日々の経験と,それによって蓄積されるパターンをどれだけ多く持っているか,が鍵だ。「○○ということをしたければ,△△という…

Read more →

癒し系プログラミング

· Java

高いモチベーションを維持していくための工夫。 ![font.gif](http://www.eisbahn.jp/yoichiro/images/font.gif) たまにはいいもんですよー。…

Read more →

Eclipseプロジェクトのインポート

· Java

EclipseからNetBeansに乗り換えようと考えている今日この頃。Eclipseで作ってきたプロジェクトを,NetBeansに簡単に移行できると嬉しいが,NetBeans初心者にとっては右も左もわからない。さっそくGoogle先生に問い合わせる。 なんとも戦略的な感じを受けるが,EclipseのプロジェクトをNetBeansにインポートするためのモジュールが提供されているのを見つけた。その名も「Eclipse Project Importer」。 インストール手順は以下のような感じ。 1.…

Read more →

自動生成という言葉を聞いてどう思いますか?

· Java

「自動生成」という言葉を聞いて,これをお読みのあなたなら,どんな印象を持つだろうか? 最近本職で僕は「自動生成」という言葉をよく口にするし,積極的に自動生成を行うようにしている。ロジックを自動生成することも極々たまにあるが,ほとんどの場合はXMLファイルやクラスの雛形を設計書から生成してあげるだけである。自動生成しすぎは良くない。設計書の体形とアーキテクチャを合わせて,それに機械的な規律を持たせ,更にXML地獄から救ってあげる,これが今考えている自動生成の醍醐味である。 しかし,「自動生成」とい…

Read more →

ドキュメントを読んでもらうためには

· Java

ソフトウェア開発とは,非常に難しい作業である。しかも,一人で行うことは稀であり,ほとんどの場合は複数人での作業となる。ただでさえ難しい作業なのに,チーム開発というハードルが加わることによって,その難易度は計り知れないものになる。そして,失敗したときのダメージも・・・考えただけで恐ろしい。 そこで,開発作業を滞りなく進めるために,多くの工夫が行われる。標準化であったり,規約の策定であったり,チームの細分化であったり,更にはアジャイルや統一プロセスなどの適用といった何らかの開発プロセスの採用など,あ…

Read more →

浮気しようかなぁ

· Java

新しい恋人候補が非常に気になる今日この頃。「とってもいいらしいよ」という評判しか聞こえてこない。僕のパートナーとなり得るのかどうか,試してみたくなった。 ![netbeans-exception.gif](http://www.eisbahn.jp/yoichiro/images/netbeans-exception.gif) さっそく嫌われたっぽい。。。orz これは,NetBeans5.5のβ版をMacOS Xにインストールして,新規プロジェクトの作成をしようとしたときの現象だ。MacOS…

Read more →

モッククラスにおける匿名クラスの利用

· Java

「 [最近の開発者は匿名クラスを知らない](http://www.eisbahn.jp/yoichiro/2006/05/post87.html)」のエントリで,以下のように書いた。 単体テストのコードを書く際には,匿名クラスを使ったテクニックが非常に有効だったりする 特にモッククラスを作るときに,僕は匿名クラスを良く使う。 最近のSSH(Struts+SpringFramework+Hibernate)などでは,3層構造(Web+Service+Dao)における中間のService層の単体…

Read more →

最近の開発者は匿名クラスを知らない

· Java

最近の開発者は,内部クラスは使ったことがあっても,匿名クラスを使ったことがない(あるいは知らない)らしい。 匿名クラスは,JDK1.1から採用された文法である。簡単な例は,下記のような感じ。 JButton btnOk = ...;btnOk.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent event) {    // イベント処理  }}); このように記述することによって,…

Read more →

見える化の第一歩

· Java

![200605240906000.jpg](http://www.eisbahn.jp/yoichiro/images/200605240906000.jpg) ホントは文字を誰かに手書きしてもらおうかと思ったが,今回は断念。まだ全タスクを貼り付けていないので,ちょっと寂しいが,本当の量はこんなもんじゃないはず。 黄色の付箋紙でタスクを表しているが,問題発生時は脇に水色の付箋紙を貼るとか,いろいろと見える化ができそうな予感がする。ずっとこのままだと意味がないけど。。。 2週間後どうなっているの…

Read more →

Ajaxを使うとOracleがいらなくなる?

· Java

「 [ヤマトリース、Ajax使いコスト5分の1で中古車売買サイトを構築](http://itpro.nikkeibp.co.jp/article/NEWS/20060516/238016/)」 - IT pro Enterprise Ajaxには、Webブラウザとサーバーの間でXML形式のデータをやり取りすることで、Oracleなどのデータベース管理システムを導入しなくても高度なデータ管理ができるという特徴がある。 そんなバカな(w。 あまりにも説明不足だし,Ajaxとバックボーンにある企…

Read more →

Strutsの次にくるもの

· Java

最近の仕事の中で,何らかのシステムを作るときには,問答無用でWebアプリケーション,そしてStruts採用,という感じがほとんどを占めている。これは,多くのSIerがきっとそうだと思う。とりあえずStrutsを選んでおけば安心だ,と言った感じだろうか。開発者も集めやすいし,事例や自分自身の経験もたっぷりだ。中,大規模案件でも,それに対応できるだけの問題対処パターンは豊富だし,別段ネットで調べなくとも,だいたい自分の経験値の中で解決できている。 しかし,そろそろ次のステップに行かなければならないな…

Read more →

オフィスソフトのファイル形式ODFがISO標準に

· Java

OpenOffice.orgから誕生したOpenDocument Format(ODF)が,このほどISO標準となった。 [オフィス・ソフトのファイル形式ODF(OpenDocument Format)がISO標準に](http://itpro.nikkeibp.co.jp/article/NEWS/20060504/236970/) - ITproより 記事によると,既に幾つかの標準規格として採用されていたようだ。 XML関連の標準化団体OASIS(Organization for the…

Read more →

オブジェクト指向が表に出るべきではない?

· Java

オブジェクト指向全盛時代,これはソフトウェア開発者であれば当たり前の言葉であり,その恩恵を受けている人が大半である。しかし,一般人にとってもオブジェクト指向は身近な存在であり,けれどそれはマイナスな効果を生んでいると思う。 オブジェクト指向は,情報とそれに対する操作をセットにすることが基本である。つまり,何かをしたいときは,対象のオブジェクトを探すことから始めるのである。行いたいこと,つまり関数にその対象物を渡すことから,対象物に対して関数を呼び出すという発想の転換は,今日のコンピュータの環境(…

Read more →

ITシステム開発プロジェクトはもっとオープンになるべき?

· Java

arclamp.jp「 [SpringFramework利用実績公開](http://www.arclamp.jp/blog/archives/000818.html)」より: 今後の課題は、DIコンテナを前提としたアーキテクチャ設計のノウハウを集積することでしょう。DIコンテナは紹介期が終わり、普及に向けて"正しい使い方"に注目をしていくフェーズになっています。 DIコンテナ,実際の開発の現場では,まだまだ誤解というか,うまく使えない(使い方がわからない)人で溢れていると思う。「明示的にg…

Read more →

ロバストネス駆動開発?

· Java

過去に「 [ロバストネス図113枚!!](http://www.eisbahn.jp/yoichiro/2005/05/113.html)」でも取り上げたが,最近ロバストネス分析を設計の入り口にすることが多くなった。バウンダリ,コントローラ,エンティティという3つのステレオタイプは,今日のWebアプリケーションのアーキテクチャにかなりしっくりとくる。統一プロセスでも,ユースケースからクラスの発見をするために,ロバストネス分析をすることが推奨されている。 ロバストネス分析の結果のロバストネス図は,…

Read more →

Struts1.3.1変わりすぎ!

· Java

各所でStruts1.3.1のリリースを告げる記事がこの前から掲載されている。Javadocでも見てやろうと,Apacheのサイトに覗きに行って みた。 Struts1.2.8 org.apache.struts   org.apache.struts.action   org.apache.struts.actions   org.apache.struts.config     org.apache.struts.config.impl   org.apache.struts.plugin…

Read more →

~Util?~Utils?

· Java

気がつくとポコポコ作られているユーティリティクラス。staticなメソッドの集合という傾向が強いが,このクラスの命名にいつも悩んでしまう。 ~Util?それとも,~Util s? ユーティリティメソッドの集合という点では,「s」を付けた方が正しいのかも。最近のオープンソースな感じだと,「s」が付いている場合が多い気がする。 うーん。。。…

Read more →

「それもいいねぇ♪」by Vodafone

· Java

最近流れているVodafoneのCMから:   [「それもいいねぇ♪」](http://www.vodafone.jp/japanese/cm/asx/jikkan15300k.asx) かなりこれっていい言葉である。携帯で話している二人は,きっとそれぞれの希望を言っているんだろう。しかし,相手の希望に対して「私の希望もあるけど,あなたの希望も激しく同意」って心底思っての「それもいいねぇ」なんだと思う。とても「それはいやだなぁ」なんて雰囲気は,CMからは感じられない。かなりのポジティブ会話のよう…

Read more →

クラス図は何も語らない

· Java

UMLはすっかりオブジェクト指向プログラミングの構造を図示するためのスタンダードとなった。その中でも,特にクラス図とシーケンス図に関しては,書く機会が多いのではないだろうか。しかし,だからといって,それがプログラマに伝える情報の量は微々たるものである。 ソフトウェア開発プロジェクトにおいて,近年では「基本設計=外部設計」「詳細設計=内部設計」というパターンが多い。ここでいう外部設計とは,システムを外から見たときの振る舞いの定義を指し,内部設計とは,システムの内部の振る舞いの定義を指す。つまり,こ…

Read more →

自動生成すりゃいいじゃん

· Java

「自動生成」という言葉を聞くだけで,過剰反応する開発者がとても多い。反対する人のほとんどは,「自動生成の有効性が明確ではない」という理由である。なぜそう考えてしまうのか,ちょっと考えてみた。 ソフトウェア開発は,設計から実装,つまり設計書からソースコードへの変換作業であることは,改めて言うまでもないことだ。ただし,多くの現場で,それは成り立たない。設計書が正しく記述され,メンテナンスが継続的に行われることは少なく,納品時に残っているものは実装だけ,なんて状況も少なくない。 この状況が発生するのは…

Read more →

enum型のコメント

· Java

JDK5.0から新しく加わったenum型。例えば,Webアプリケーションでよく出てくるスコープの種別について,以下のように定義したとする。 / スコープの種別を持つ列挙型クラスです。 @author yoichiro / public enum Scope {   CONTEXT,   SESSION,   REQUEST,   PAGE } このコードでは,この列挙型自体のJavadocコメントを記述している。この状態でJavadocを出力しても,各識別子のコメントは出力されない。あれ…

Read more →

JAVA PRESS Vol.47に寄稿しました

· Java

JAVA PRESS Vol.47の巻頭特集「みんなのためのJavaルールブック 初心者もそうじゃない人も全員集合!」に寄稿た。この中の「第6章:基本パッケージを使いこなせ!」が,僕が書いた記事だ。 JAVA PRESSは,この号を持って隔月での出版が最後となる。今後は,不定期出版となるため,この号は特別な意味を持っている。完全に市民権を得たJavaについて,最後に言語としてのJavaをまとめてみよう,というのが主旨である。 そのため,僕も日頃思っていること,特に多くのJavaプログラマに対して…

Read more →

カットオーバーという瞬間

· Java

長年ソフトウェア業界で仕事をしているが,自分が携わった案件がカットオーバーとなり,一般に利用される瞬間に立ち会ったという経験は,実はあまり多くない。社内の業務システムについては納品&稼働開始の現場にいた経験はあるが,それも数えるほど。パッケージの開発の方が多かったこともあり,実際に自分が作ったものを使ってもらえているという実感を直接体感したことは,皆無に等しい。 昨年に関わった某顧客のシステム開発でも,結局途中で他の案件に移動となり,最後まで携わることができなかった。風の噂で,そのシステム開発が…

Read more →

全体感の把握を行うために

· Java

アーキテクトとしてソフトウェア開発プロジェクトに関わっていると,各人の作業が本格的になるに従って,成果物のレビューを行う機会が増えてくる。今までの経験上,設計を行う実際の作業者や,実際にプログラムを行うプログラマの成果物は,洞察力が足りないために,多くの状況に対応できない内容であることが多い。本当は設計やおよびプログラマを信用したいところだが,どうしても「成果物にはミスがあって当然だ」という基本概念の下にこっちも考えざるを得ない。 多くの場合,各担当者はリーダークラスの役割を持つ人間にタスクを振…

Read more →

IEはずるくなかった!

· Java

「 [IEってずるい!けどすごい!](http://www.eisbahn.jp/yoichiro/2006/01/ie.html)」というエントリをしたが,同等のことがFireFoxでもできると,masaさんからコメントを頂いた。以下,masaさん作のJavaScriptである。 document.onkeydown = new Function("e","r eturn keycheck(e,e.target)"); function keycheck(e,tgt) {   var ex…

Read more →

UI設計は専門デザイナの領域

· Java

コンピュータシステムは,利用者が操作を行うためのユーザインタフェースが必ずと言っていいほど備わることになる。これは別に特別なことじゃない。自動販売機にも,買いたい缶を選ぶためのボタンが並んでるし,車を操作するために,ハンドルやアクセルが付いている。要は,機械を人間が操作するためには,何らかのUIが必要だということだ。コンピュータをハードウェアでみた場合は,キーボードや電源ボタンなどがそれに該当する。ソフトウェアにおいても,それを人間が操作するためにはUIが必要になる。 さて,ソフトウェア開発に…

Read more →

俺が買いたいっ!

· Java

俺にとって,かなりのビックニュースが飛び込んできた。 [米BorlandがDelphiなどIDE事業を売却、アプリライフサイクル管理分野に注力](http://enterprise.watch.impress.co.jp/cda/foreign/2006/02/09/7187.html?ref=rss) - Enterprise Watch ま,ま,まじっすか。今までM$と唯一同等に対抗して頑張ってきたのに,そりゃないぜBorland。Ajaxのおかげで今後IDEが再注目されるだろうに。。。…

Read more →

俺としたことが・・・

· Java

つい先日,あるところで僕が作ったソフトウェアが稼動を開始した。SSH(Struts+SpringFramework+Hibernate)の組み合わせを使って,生産性抜群な感じで32画面&13DB表数のWebアプリを2週間弱で若干の焦り気味で作りきった。機能的にはかなり喜んでもらえたのだが,一ヶ月間稼動させてみたところ,問題発生の知らせを受けた。 「検索すると,長いときは1分間以上返ってこないんですけど。。」 なんでそんなに検索かかるんだろう。。。情報量は2000件ほどみたいだし,いくらPos…

Read more →

手離れの良い設計とは

· Java

個人的に何らかのシステム開発を請けたとき,数年前までは本職のときとほぼ同じような設計を行ってきた。依頼主の業務を把握し,システムの管理下におかれる情報の洗い出しと整理を行う。そしてデータベースの構築と画面の設計を行って,依頼主と合意し,プログラミングに入るという流れだ。しかし,実際には「個人的に」請けたときには,同じような設計をしてしまってはうまく行かないということがわかってきた。 「システムの僕からの手離れを第一に考えること」が重要だということだ。 本職の立場で,つまり企業として仕事を請け…

Read more →

Sun Java Studio Creator 2が登場!

· Java

NetBeansをベースに開発されたSun Java Studio CreatorのVersion 2がリリースされた。 [Sun Java Studio Creator - Overview](http://developers.sun.com/prodtech/javatools/jscreator/index.jsp) [See Java Studio Creator 2 in Action](http://developers.sun.com/prodtech/javatools/j…

Read more →

IEってずるい!けどすごい!

· Java

Webアプリだと,とかく[戻る]ボタンや[再読込]ボタンが押されたときの考慮をしないといけない。最も簡単な方法は「ツールバーを消しちゃうこと」だが,大抵のWebブラウザはキーボードの操作も可能であり,[BackSpace]キーや[F5]キーで同様のことができてしまう。 しかし,IEの場合に限り,上記の操作を無効にできるようだ。              ・・・ なんと,DocumentオブジェクトにKeyDownのイベントハンドラを追加することで,そのページ内のキー操作を丸ごとハックで…

Read more →

プログラマが年越しを感じる瞬間

· Java

ソフトウェアに付きものの著作権表記に新年を追加した瞬間,毎年僕は「新しい年が来たんだなぁ」と実感する。 つまり, ![](http://www.eisbahn.jp/yoichiro/images/2181322.gif) を, ![](http://www.eisbahn.jp/yoichiro/images/2181325.gif) とした時だ。…

Read more →

Maven?Ant?

· Java

「 [CraigはDCさくらユーザだった!?](http://www.eisbahn.jp/yoichiro/2005/12/craigdc.html)」で,AntでMavenちっくなことをStruts 1.2.8のソースパッケージでやってると書いたが,実際にはStrutsをビルドするために必要な依存ライブラリを,AntのGetタスクでダウンロードしているに過ぎない。 例えば,こんな感じ。           usetimestamp="true" ignoreerrors="true"…

Read more →

CraigはDCさくらユーザだった!?

· Java

ふとApache-Struts 1.2.8のソースコードが読みたくなって(?), [Apache Software Foundation](http://www.apache.org)のサイトから [ZIP版](http://sunsite.tus.ac.jp/pub/apache/struts/binaries/struts-1.2.8-bin.zip)をダウンロード。速やかに展開し,エクスプローラで展開先を開いた。すると・・・ ![](http://www.eisbahn.jp/yoich…

Read more →

WEB-DB PRESS Vol.30に寄稿しました

· Java

[WEB-DB PRESS Vol.30](http://www.gihyo.co.jp/magazines/wdpress/archive/Vol30)( [技術評論社](http://www.gihyo.co.jp/magazines/wdpress))の巻頭特集に記事を寄稿した。前回と同様に, [アークランプ鈴木氏](http://www.arclamp.jp/)との共著である。 今回は,「DI時代のアーキテクチャ設計」という特集の第1章と第2章を担当。第1章では,アーキテクトとはどのよ…

Read more →

JSPはもうこりごり・・・

· Java

J2EEというエディションが登場する直前,JSPというものが登場することを知ったとき,僕はかなりウキウキしたものだ。当時僕は仕事でアプレットかサーバプログラム(その間はソケット通信!)ばかり書いていて,サーブレットは勉強中。サーブレット内でHTMLを文字列連結を頑張るのに「まじっすか」と思っていたときに耳にしたJSP。HTML内にJavaプログラムが書けて,動的コンテンツを埋め込める。そしてコンパイルは勝手にやってくれる。そんな便利なものが登場したら,世の中JSPさえあれば何でもできるじゃん,と…

Read more →

Web技術はここまで来た!

· Java

Web技術の進化は止まらない。HTML,Java Applet,Flash,Java Web Start,Active Xなど,多くのWeb技術が登場しては消えていった・・・わけではないが,Ajaxの登場により,Webブラウザ上でのユーザインタフェースは,Office製品をデスクトップアプリケーションと遜色ないレベルまで実現可能になった。 [Writely](http://www.writely.com/) - Ajax技術を使って作られたワードプロセッサ イメージはこんな感じだ。 [![…

Read more →

改ざんできないシステムなんて少数派

· Java

建築業界の設計偽装問題。今テレビを見ていたら,「改ざんをできてしまうソフトウェアになっていた」なんてことを言っていた。お役所と検査会社は,ソフトウェアの処理結果に対する編集ができてしまうことに驚愕し,みんな「まじっすか」っていう雰囲気になった,と言っていた。しかも,ソフトハウスの企業名すら堂々と出して,「改ざん可能なシステムを作ったのは,ここだよ」と,全国ネットで言っている。 おぃおぃ,ソフトハウスは少なくとも依頼主の言うとおりに作っただけなはずだぞ。それを,あたかも「ソフトハウスのソフトウェ…

Read more →

IT業界は鉄筋削減は当たり前

· Java

世間は建築業界の設計偽装問題で持ちきりだ。何でも,建物の耐震強度が低いらしい。組織的な偽装体質もあったみたいだし,ひどい話である。 ただ,不謹慎な言い方をあえてするならば,この問題においては一応震度5弱までは耐えられる。しかし,IT業界の問題は,ほとんどのシステムが,震度2なんてとても耐えられる代物ではない。鉄筋なんてないものだっていっぱいある。 「自分たちのシステムって,耐震強度はどうなんだろう?」と思った人は,ベンダーから提供された設計書やソースコードを見るといい。トーシローでも見抜ける…

Read more →

Wicketブログ始めました

· Java

すっかり気に入ってしまったWicket。Eclipseプラグインの時と同じように,自分にプレッシャーをかける意味もこめて,ブログを立ち上げてみた。 [Wicket Communication](http://www.eisbahn.jp/wicket/) このブログは,自ドメインでのMovableType運用開始の意味も含んでいる。何とかWicketをメジャーにすべく,ちょっと頑張ってみようと思う。 Check it now!…

Read more →

POHP戦国時代到来!?

· Java

最近では,POJO(Plain Old Java Object)と同じように,POHP(Plain Old HTML Page)というキーワードが言われるようになった。これは,ASPやJSPなどの,独自タグやスクリプトレットの記述による複雑怪奇になりやすいViewコンポーネントを見直し,普通のHTMLで作ればいいじゃん,という考えから出てきた言葉である。 現在のPOHP対応のソリューションのほとんどは,通常のHTMLの各要素が持つid属性を利用したものだ。HTMLの要素を動的に解析し,特定のi…

Read more →

僕のJavaOne Tokyo 2005

· Java

11月8日~10日に行われたJavaOne Toyko 2005。そのイベントへの参加の仕方は,たぶん誰よりも違った形だったに違いない。 今年のJavaOneの特徴は,何と言っても一般からセッションを公募したことだろう。より現場に近い声が聞けるし,単にAPIの紹介にとらわれない,現実的な解をいろいろと聞けたはずだ。 もちろん,知り合いと共に僕も一般公募セッションに応募した。しかし,残念ながら落選。「 [規約をプラグインに - Eclipseで自作する現場本位の開発フレームワーク](http:…

Read more →

JavaOne効果?

· Java

現在,11月9日,23時10分。上野駅で宇都宮線の出発を待っていると,山手線の東京・品川行きの電車のホームで,必ず外人の3,4人の集団がホームで電車を待っているのに気がつく。 これもJavaOne効果?…

Read more →

リダイレクトとmethodの微妙な関係

· Java

Webアプリにおいて,データベースへの更新処理の後に一覧表示画面に戻る,という画面遷移はほとんどのアプリケーションで見受けられる基本的なものだ。この画面遷移,何も考えずにStrutsなどで作ってしまうと,後で問題が発生する。 その問題とは,「F5問題」だ。更新処理後に表示される一覧表示画面で,Webブラウザのページ再更新機能([更新]ボタン押下やF5キー押下など)を実行すると・・・という場面の話である。通常,Strutsなどでは,「更新処理」アクションから「一覧表示用情報取得」アクションを呼び…

Read more →

Dukeがいっぱい!

· Java

会社の知り合いから,とても素敵なサイトを教えてもらった。 Dukeの館 [http://mlv.lolipop.jp/mascots/duke/](http://mlv.lolipop.jp/mascots/duke/) Dukeの様々な姿を見ることができる。というか,Javaの歴史がDukeの姿によく表れている。 Dukeを見ると,なぜかワクワクするのは,やっぱり根っからのJava好きなんだろうな,僕は。…

Read more →

良いコードには,いろんなコードが集まってくる

· Java

オープンソースが当たり前になった現在では,ユーザの人気というか,採用されるオープンソースプロダクトの取捨選択が,すごい極端な結果として現れるようになった。つまり,多くの場合,良いオープンソースプロダクトは見通しの良いコードであり,良いコードには多くの人が集まってくるっていう構図である。当たり前の話だけど。 でも,良いコードに集まってくるのは,どうやら何も人間だけではないっぽい。例えば,これ。 IBM、エクリプス財団に「Rational Unified Process」のコードを提供 by Z…

Read more →

SpringFrameworkあーんどJMS

· Java

次案件では,後ろに構えるシステムとのやり取りにJMS(Java Messaging Service)を使用する予定だ。もちろんそこにはトランザクションも挟める必要がある。つまり,あるデータベースへのアクセスと,MOM(Message Oriented Middleware)との通信を,一つのトランザクションとして束ねなくちゃいけなくて,抽象化したり,AOPでトランザクションをかけたり,といったことをしたくなってくる。 そこでやっぱり有効なのはDIコンテナだ。DAOだろうがMOMだろうが,とにか…

Read more →

プロジェクト反省文

· Java

まだ完全に離れるわけじゃないけど,やっぱり自分の周りからの使われ方は,1つのプロジェクトの初めから終わりまでベッタリというわけじゃないようになってきている。それはそれで「飽きっぽい」僕としては喜ばしいことなんだけど,同時に「責任を全うできてないのでは?」と感じてしまうのも事実だ。でも,仕方がない。仕事とは,そういうものだ。 というわけで,僕がいま携わっているプロジェクトはまだまだ終わらないけど,僕としての区切りがきたっぽいので,反省文でも書いてみようと思う。 まず,最初にプロジェクトに配属さ…

Read more →

開発フレームワークはEoTをも推進できる

· Java

十数年前までは,プログラマに全てのコードを記載することが当たり前だった。数年前までは,何らかのフレームワークを独自に(クラスの継承を使って)拡張することで,プログラマの作業の負担を軽減することが当たり前だった。そして最近は,オープンソースプロダクトを複数束ねて使用することによって,プログラマの作業の負担を軽減することが当たり前になった。 ちょっと視点を変えて,開発環境はどうだろうと振り返ってみると,「テキストエディタ&コンパイラのみで頑張った時代」から,「統合開発環境の登場」,「CASEツール…

Read more →

やっぱりGUIは面白い!

· Java

仕事サボって,ちょっと現実逃避エントリしてみる。 今,完全な趣味として, [IP MessengerをEclipseのプラグインとして開発している](http://yoichiro.cocolog-nifty.com/eclipse/2005/09/ipmessengerb0d8.html)。かなりいろいろな思惑があって,仕事よりもこっちを考えちゃってるほうが多いことに自己嫌悪。でも,(ビジネスじゃなくて)いろんな展開が考えられることは,とっても面白いし,刺激的だったりする。そもそも,( [翻…

Read more →

Update-Siteから見えるJava5.0の利用状況

· Java

Eclipseの [翻訳プラグイン](http://yoichiro.cocolog-nifty.com/eclipse/2005/07/ver11109c1.html)を自前のサーバで公開している。もちろんUpdate-Siteを立てて,自動インストールができるようにしている。Update-Siteは普通のWebサーバに所定のファイルを置いておくだけの話だが,そこにアクセスしてくるのは,Webブラウザではなく,Eclipse(というかJavaVM)なところが,ちょっと面白い。 Webサーバは…

Read more →

JExcelApi Ver.2.5.7リリース!

· Java

JavaでExcelファイルを動的に作成する機能を持つ [JExcelApi](http://jexcelapi.sourceforge.net/)。これのVersion 2.5.7がリリースされた。変更内容は,以下のページで見ることができる。 [JExcelApi Change History](http://www.andykhan.com/jexcelapi/changehistory.html) 前に使った2.5.3から比べて,日付型のセルをちゃんと連続して作成できるようになっている…

Read more →

nullに対するUn-boxing

· Java

前のエントリで疑問に思った,nullに対するUn-boxingをした場合にどうなるのかを試してみた。 public class Test {   public static void main(String[] args) {     Integer obj = null;     int i = obj;     System.out.println(i);   } } 実行結果は以下のとおり。 Exception in thread "main" java.l…

Read more →

気が付かないAuto-boxing

· Java

プライベートなプログラミングでは,すっかりJDK5.0+Eclipse3.1な環境に移行してしまった。EoDが特徴(?)なJDK5.0では,さまざまな言語あるいはコンパイラの拡張が行われたが,その全貌はまだ把握できていない。 最近ちょっとかじったアノテーションを使うときは,もちろん明確に「@hogehoge」というように書くので,注釈つけちゃいましたっ!,と言わんばかりの自覚がある。Genericsについても,文法が拡張されているから,使用したことに対する自覚は明確だろう。 さっきまで宇都宮…

Read more →

1日で50人以上のダウンロード!

· Java

昨日公開した新しいバージョンの「 [翻訳ビュープラグイン](http://yoichiro.cocolog-nifty.com/eclipse/2005/07/ver11109c1.html)」。自ドメインを取得したおかげで,自分のサーバでアップデートサイトを立てることができ,しかもアクセス解析までできるようになった。 早速昨日のダウンロード数を見てみると,新バージョンのjarファイルへのアクセス数は,54という結果だった。まぁまぁな数字である。少なくとも,日本で50人は使ってもらえているとい…

Read more →

アノテーションを拾ってみる

· Java

JDK5.0から搭載されたMetadataだが,やっぱり注釈を自分で定義したくなる。そこで,早速自分で注釈を定義してみた。もちろん,Eclipse3.1を使用する。 まずは,Eclipseで「New - Annotation」を選んで,新規作成ウィザードを起動する。 ![](http://www.eisbahn.jp/yoichiro/images/1132089.gif) 案外シンプルなダイアログだ。ここに名前を入れて,注釈を生成させる。 ![](http://www.eisbahn.…

Read more →

初めてのアノテーション

· Java

JDK5.0から搭載されたMetadata。EoDを推進させるための切り札として,JDK5.0で最も重要なものだと思っている。とはいえ,このMetadataやXDocletなどは,実は嫌いだったりする。「そんな注釈入れちゃったら,POJOじゃなくなっちゃうじゃんか!」が僕の主張だ。 しかし,どんなものか知らないのに文句言っていたら,ただの食わず嫌いである。敵を知ってこそ,って言うし,ここらでMetadataについて体験してみようと思う。 先日インストールしたJDK5.0とEclipse3.1…

Read more →

マイコン世代がふんばってるんだ!

· Java

僕が最初に触ったコンピュータ,それは「ファミリーベーシック」だ。 ![](http://www.eisbahn.jp/yoichiro/images/1104744.jpg) 何本かゲーム買ったけど,ファミリーベーシックを買ってからは,ゲームを買って遊ぶよりも,ベーマガ(雑誌)に掲載されたプログラムを打ち込んでは,それを無敵にしたりして改造して遊んでいた。今でも「PRINT命令は?で代用してメモリを稼ぐ」といったテクニックは覚えているし,基本的な制御構文の知識はこの時期(小学校5年生!)に確…

Read more →

目標がなくっちゃやる気はおきない

· Java

人間の行動の全ては,理由がある。その理由とは,つまり何かの目標を達成するということだ。もう30歳だが,「やらされている」ことと「自発的にやっている」ことが,ようやく自分で自覚できるようになった気がする。少なくとも20代までは,あまり何も考えずに行動してきた。 下の写真は,小学校5年のときの自分だ(中央)。 ![](http://www.eisbahn.jp/yoichiro/images/1091394.jpg) 普段の練習のときは,オーソドックスな紺の袴なのだが,剣友会の団体メンバーに入…

Read more →

アジャイルとテストの関係は?

· Java

プロジェクトが進むにつれて,顧客やメンバーの興味は「テスト」に移ってくる。そして,事前に「テスト」についてちゃんと考えられていなかったとき,それは後から巨大な壁として認識される。 近年のド短期なプロジェクトでは,リスク管理のもとに,また顧客の信頼を得るために,アジャイルな開発手法を採用することが多くなった。これは,XPやスクラム,広げればUnified Processなども含まれるだろう。タイムボックスを基本として,プログラマに常に見積もりをコミットさせながら,目に見える成果をGetし続ける。…

Read more →

実装とテストの微妙な関係

· Java

システム開発に必要な大事な要素,それは「実装」と「試験」だ。どっちかが良くても片方がダメダメなら全体が失敗する。この2つは言葉こそ違えど,「良いシステムを開発する」という目的は同じだ。しかし,特にPM(プロジェクトマネージャ)の志向によって,どうしても片方に傾いてしまう。かなりこの2つを綺麗に回すのは難しいだろう。 そこで,僕の思い描いている実装と試験の関係を,とりあえず気ままに書いてみる。 プロジェクトの中で,開発されたシステムを最も利用するのは,やはり試験を実施する人々だ。彼らは,目の前…

Read more →

第2段階のEoDが失敗すると・・・

· Java

[第2段階のEoD](http://blog.so-net.ne.jp/yoichiro/2005-06-05)は,相当な洞察力が必要だということがわかってきた。 [第1段階のEoD](http://blog.so-net.ne.jp/yoichiro/2005-06-12)の後,各仕様はソフトウェアアーキテクチャのさまざまな部位に当てはめられる。第1段階のEoDによって,仕様が「軸」と「箱」により定型的に分類されているはずなので,ソフトウェア的にも整理がつきやすくなっているはずだ。 仕様の…

Read more →

「遅れ」にこだわってどうする!?

· Java

先のことは誰もわからない。であれば,難しいことから片付けていくしかない。 いまやっている仕事は,非常に複雑かつ企業の生命線となる機能と,管理に必要な単純な機能がはっきりと分けられるシステムの構築である。当然前者の方がリスク的に高いものなので,顧客を安心させるために優先的に着手している。その中でも,ある程度の機能分割(全部で約200機能くらいと予想)を行い,優先順位をつけて実装順序をコントロールしている。そして,機能単位でリリースし,それに対して試験を行っていく,かなりアジャイルな展開で開発をし…

Read more →

第1段階のEoDのコツとは

· Java

誰しも設計者は,業務がどのようにソフトウェアに落ちるのかについて,イメージを持っていると思う。そのイメージは,必ず何らかの「軸」と「箱」で整理されたものであるはずだ。しかし,「軸」と「箱」が何なのか?というと,それはドメイン依存なものなので,形式的に語れないところが,もどかしい。しかし,パターンは何らかあるはず。例えば,今後の拡張性を第一に考え,しかも何らかのルールの組み合わせで全体の流れが構成できるのであれば,(Eclipse Platformのような)コア+プラグインというソフトウェアアーキ…

Read more →

優秀なデベロッパに光を!

· Java

僕ももう30歳になり,自らアプリケーションのコーディングを仕事で行うことは,めっきり少なくなった。設計やベース部分,開発ツールなどを手がけることが多くなり,もしかしたらMicrosoft Office製品を触っている時間の方が多いかもしれない(いや,確実に多い)。プロジェクトに参加する数多くのプログラマを面倒見つつ,いろんな雑務をこなしながら,システムの実装作業を指揮する。はっきり言って,自分が何人いても足りない。 実装作業に秀でたデベロッパを数人知っている。彼らが描くプログラムは,合理的であ…

Read more →

EoDフレームワーク?

· Java

お風呂で考えたことを書いてみる。 最近,EoDについて考える機会があった。「Ease Of Development」,つまり「開発を簡単に」という言葉だ。とかく世の中では,EJB3.0や,J2SE5.0に搭載されたAuto-Boxingやannotation,JSFなどがEoDとして取り上げられているが,システム開発の工程で考えると,それらのEoDは「微々たるもの」と思えてならない。EoDは局所的なものではなく,工程全体で考える必要がある。 EoDは,整理すると,3段階のEoDがあると,最近…

Read more →

イメージすること

· Java

チーム開発では,チームの船頭的なポジションにつく人間によって,プロジェクトの成否が決定するといっても言い過ぎではない。かく言う自分も,年々まとめていくチームの人数が増えてきている。その分だけ,仕事の難易度は上がっていくし,責任も大きなものになる。チーム開発を成功に導くためには何が必要か,それは「イメージすること」を忘れないことだ。 僕はスキーヤーだ。冬は(昨シーズンは不本意だったが)ほぼ毎週スキーに行く。1級を取得したあとは,なかなか目に見えるだけのはっきりした技術の向上は難しくなる。外面的な…

Read more →

Roller Weblogger始動!

· Java

先週から挑戦していた [Roller Weblogger](http://www.rollerweblogger.org/wiki/)だが,やっと動き出した。「 [インストールガイド](http://www.rollerweblogger.org/wiki/Wiki.jsp?page=UserGuideJP)」を読みながら,手順に従って作業を進めたつもりだったが,以下のようにNullPointerExceptionが発生してしまい,絶妙なところで足止めを食らってしまった。 ![](http:/…

Read more →

ロバストネス図113枚!!

· Java

あるシステムについて,その構造を「バウンダリ」「コントローラ」「エンティティ」の関係で示す表記法が,ロバストネス図だ。オブジェクト指向分析,特にユースケース駆動なプロセスにおいて,分析工程の初期から中期にかけて使われるものだ。ユースケースから導き出された各ユースケースフローからクラスを発見することが,ロバストネス分析の目的であり,その過程はロバストネス図として視覚化される。 今日のWebアプリケーションで採用されるアーキテクチャは,そのほとんどが3層構造(View,BusinessLogic,…

Read more →

カスタムタグハンドラ内でのELの解釈

· Java

自作カスタムタグ内の属性の値に,ELを記述したいときがある。普通にカスタムタグのハンドラを作った場合,ELの式の文字列が単にsetterに渡されるだけである。 渡されたELの式を評価し,ELが示しているオブジェクトを得るためには,以下のコードを実行すればよい。 import org.apache.taglibs.standard.lang.support.; Hoge targetObj; String target = "${hoge}"; targetObj = …

Read more →

後輩との飲みであがった話題

· Java

昨日「後輩の超実装クン」と久々に会って飲んだ。そこで出た話題はこんな感じ。 「単体テストの標準化」という仕事は,ドキュメントの整備ばかりで大変だ。 入力値のバリデーションをどのようにとらえるのかは難しい? 複数画面の遷移の制御をしてくれるフレームワークが増えている。今後はやはりそれが主流になる? 何だかんだ言って,JSFはこれから必須だ。 「月の雫」のテーブルに端末があり,タッチパネルで注文ができるが,きっとFlashだ。レスポンスの良さを考えると,画像は各端末にキャッシュさ…

Read more →

Image I/O APIを使ったイメージの取り扱い

· Java

日々進化しているJava。AWT時代は何かと大変だった(というか何もできなかった)画像関連のAPIを久々に使ってみた。いつの間にかImage I/O APIが搭載されていて,画像の読み書きが簡単になっている。 例えば,画像を読み込むには以下の行のみでOKだ。   BufferedImage image = ImageIO.read(InputStream); BufferedImageクラスには,getWidth()やgetHeight()が搭載されていて,幅や高さを簡単に取得できる。AW…

Read more →

「ペイ・フォワード」

· Java

いつも購読させてもらっている「 [ひがやすを(さん) blog](http://d.hatena.ne.jp/higayasuo/)」にこんなエントリがあった。 愚痴を言っているだけでは、何も変わりません。常にあきらめずに行動し、正しいことを「あたりまえ」にしたいですね。 「正しいと思うこと」を広めること,これはとても難しい。「何が正しいことなのか」ということは,その時の状況(コンテキスト)に左右されるし,常に客観的な視点を自分が持ち続けることができない限り,「正しいこと」なのかどうかもわ…

Read more →

HTTPのRefererとは?

· Java

真面目に細かく勉強してこなかったHTTPのRefererについて調査。 [Referer(リファラー)について](http://www.cdwavmp3.com/dl/download/referer.html) [はてなダイアリー - Refererとは](http://d.hatena.ne.jp/keyword/Referer) [HTTP Header Fields](http://www.studyinghttp.net/header) なるほど,リンク元URIのことか。…

Read more →

WHERE句の動的生成の枠組み考え中

· Java

一般的なアプリで必ず必要となるデータベースへの検索機能。特にユーザが自由に検索条件を変えることができるような場合,検索条件を動的に組み立てる必要が出てくる。つまり,SQL文のWHERE句の条件式をプログラムで組み立てなければならないのだ。 条件式はよほど特殊なアプリでない限り,決まりきったものだ。等号,否定,論理積,論理和,くらいだろうか。文字列的には大したことないものなのに,プログラムで作るとなると,なぜかうまくいかない。しかも,オブジェクト的に条件文を表すことを,アプリを作るたびに毎度毎度…

Read more →

収穫の多かった連休初日

· Java

今日はめっちゃ収穫の多い一日だった。その項目はというと・・・ Struts Shaleの把握 Movable Typeのインストール という2大目標だ。 Struts Shaleの方はというと,JSFの拡張機能と言ってしまえばそれまでだが,実際には, 「画面遷移&業務処理実行に対する高い管理能力」 「ポータルサイトの構築を見据えた画面構成能力」 を備えた非常に魅力的なフレームワークだということがわかった。もちろん品質面や実装具合はまだまだ怪しい感じなのだが,それはオープンソ…

Read more →

Tomcat4.Xにたどり着けない・・・

· Java

読者から [JAVA PRESS Vol41](http://www.gihyo.co.jp/magazines/javapress)の僕の記事に対して問い合わせがあり,久々にTomcat 4.X(最近はすっかりTomcat 5.0シリーズを使ってる)をインストールしなければならなくなった。[JakartaのTomcatページ](http://jakarta.apache.org/tomcat/index.html)に行って,早速ダウンロードしようとしたが・・・  Tomcat 4.X が落とせ…

Read more →

Lomboz&Tomcat5.0の組み合わせ

· Java

EclipseでJ2EE開発を支援するLombozプラグイン。Tomcat5.0.28との組み合わせの場合,LombozがTomcatをうまく起動してくれない。この問題の解決法が以下のサイトに載っていた。 [How to configure Lomboz 3.0 & Tomcat 5.0](http://forge.objectweb.org/forum/forum.php?threadid=1028&forumid=360) Tomcat 5.0.X用のサーバ定義ファイルに書いてある,「…

Read more →

プロジェクト作成時の自動ビルダー設定ムズっ!

· Java

最近はあちこちで「プロジェクトでEclipse作ってるよ」という話を聞くようになった。汎用的なプラグインではなく,あくまで特定のプロジェクトの開発で使えるものを作っていることが多いようだ。つまり,潜在的なプラグイン開発者は着々と増えつつあるということだ。「 [Eclipseプラグイン開発](http://yoichiro.cocolog-nifty.com/eclipse/)」ブログのアクセス数も着々である。 知り合いのNetPenguinクンも,悩めるプラグイン開発者になっているようだ。 …

Read more →

Poseidon for UMLを入れてみた

· Java

「AndroMDA&JUDEはダメっぽい・・・」で取り上げたUMLモデリングツール「Poseidon for UML」をインストールしてみた。起動イメージはこんな感じだ。   ![](http://www.eisbahn.jp/yoichiro/images/213285.gif) これは,AndroMDAのEJBカートリッジを使って吐いたEJBの雛形モデルである。Business Delegateパターンに対応するServiceステレオタイプと,EJBのEntityBeanに対応するEnt…

Read more →

Looking GlassってWindowsでも動くのね!

· Java

次のWindows(Longhorn)では,奥行きのあるデスクトップ(3D Desktop)が売りになるらしい。確かに,せっかくウィンドウのZオーダーがあるんだから,遠近法とか使って,遠くにウィンドウとか置けるようになれば嬉しいかもしれない(そんなフリーソフトもいくつかある)。もちろん2D向けデバイスのマウスだと,遠くにあるウィンドウを引っ張ってくる操作を直感的に行えないが,そんなことは度外視しても,3Dデスクトップは考えただけで楽しくなる。 さて,今ではLonghornを待つことなしに,3D…

Read more →

AndroMDA&JUDEはダメっぽい・・・

· Java

次のおもちゃとして注目しているMDAを実践するための [AndroMDA](http://www.andromda.org/)。これと何かしらのUMLモデリングツールを組み合わせてMDAを実践しようと思っている。個人的に [JUDE/Professional](http://www.esm.jp/jude-web/product/professional.html)を買っているので,これを使おうと思って試してみた。 結果から言うと,残念ながらNGだ。 AndroMDAのサンプルで付いてくるe…

Read more →

AndroMDAがいいらしい!?

· Java

最近よく目にする「SOA」や「MDA」という言葉が非常に気になる。 「SOA」つまりサービス指向アーキテクチャは, [Java WSDP](http://java.sun.com/webservices/downloads/webservicespack.html)をかじったこともあり( [JAVA PRESS Vol.27 「特別企画 大長編! JWSDPによるWebサービス開発」](http://www.gihyo.co.jp/magazines/javapress/archive/Vol…

Read more →

本質的じゃないのにウケる機能がある

· Java

ITシステム,特にWebアプリケーションの領域では,そのユーザにとって「これは役立つ!」と思う機能はさまざまだ。そして,開発する側と使う側で,便利に思う機能にすんごい差がある。 どうしても僕は開発者だから,開発する側の視点で機能を考えてしまいがちだ。 例えば僕は,どうせシステムを作るんだったら,そのシステムだけでやりたいこと全てができるべきだと思っている。情報のエントリから検索,帳票出力にいたるまで,使う人が行いたいこと全てがそこにある状態が理想だと考えている。 だから,データベース内の情…

Read more →

Velocity,微妙・・・

· Java

Velocityを初体験してみた。SQLのCREATE TABLE文を出力するためのテンプレートを書いてみたのだが,これがなかなかうまく書けない。 テンプレート内の記述は,基本的にそのまま結果となる。もちろん,改行もそのまま反映される。単純な文字列置換ならVelocityは非常に便利だと感じた。でも,条件によって置換する文字列を変更したりしだすと,途端にテンプレートが汚くなる。しかも可読性をあげようと改行を入れたりインデントしたりすることができない(それが結果に反映されてしまうから)。 もち…

Read more →

Velocityの調査!

· Java

仕事で使うので,今まで避けていた(?),Velocityの調査を行う。 Velocityの解説ページ(「Velocityとは」でググった)は以下が見つかった。 [Velocity - Velocity User Guide](http://www.jajakarta.org/velocity/velocity-1.3.1/docs-ja/user-guide.html) (JaJakartaの翻訳) [Velocity:第1回:汎用テンプレートエンジンVelocity](http://…

Read more →

JExcelApiの使い方

· Java

「 [Excelファイル生成ライブラリ調査!](http://blog.so-net.ne.jp/yoichiro/2005-03-26)」で取り上げたJExcelApi,さっそく実際に使ってみた。なかなかいい感じなので,基本的な使い方をここに残しておこう。 まずは, [JExcelApiのプロジェクトページ](http://jexcelapi.sourceforge.net/)から, [jexcelapi253.zip](http://prdownloads.sourceforge.net/…

Read more →

JExcelApiとWebアプリの相性は?

· Java

Webアプリでは,Webブラウザにダウンロードさせたい情報を,一旦サーバ内でファイルとして作成し,それをWebブラウザに対して送信したりする。この場合,セッションが無効になるタイミングなどで,不要になったサーバ内のファイルを削除しなければならない。完全にファイルを削除することはできないため,ごみファイルが残ってしまうこともしばしばだ。さて,あるWebアプリにおいて,Excelファイルを自動生成してWebブラウザに返却する処理が存在すると仮定する。この場合,まず思いつくことは,POIやJExcel…

Read more →

Excelファイル生成ライブラリ調査!

· Java

仕事で,何かとJavaプログラムからExcelファイルを読んだり吐かなければならないことが今まで数多くあった。Excelで書かれた設計書からコードを自動生成したり,帳票としてExcelファイルを作成したりといった感じだ。 しかし,自分ではやったことがない。「JakartaのPOIを使えばできる」くらいしか思ってなかった。副業で作っているシステムで,帳票をExcelファイルで作ることになったので,やっと自分もJavaからExcelファイル生成に挑戦してみる。そこで,まずは調査。 もちろん最初は…

Read more →

Strutsでのファイルダウンロードの方法

· Java

Webアプリケーションは,時にHTMLではない処理結果をWebブラウザに返却する。返却するものがHTMLの場合は,JSPや何らかのテンプレートエンジンを使用するが,バイナリデータをWebブラウザに返却する場合は,HttpServletResponseオブジェクトから出力ストリームを取得し,情報を送信する。 一般的なWebアプリケーションであれば,以下の手法のどちらかを採用するだろう。 サーブレットクラスの中に,情報を送信する処理を記述する。 JSPの中に,情報を送信する処理を記述する。 …

Read more →

困ったものだ・・・

· Java

[JAVA PRESS Vol.41](http://www.gihyo.co.jp/magazines/javapress/contents)に記事を書いたのだが,最初のページにいつも自分のメールアドレスを書いている。他の著者もみんなそうしているので自分も書いているのだが,載せるのやめようかな・・・と考えている。 読者が記事を読んで,その内容に関する問い合わせが来るのは一向に構わないし,むしろ大歓迎である。もしかしたらダウンロードできる題材に不備があるかもしれないし,本文の内容が嘘を書いてい…

Read more →

JavaPress Vol.41に記事を書きました!

· Java

今週に入り,JavaPress Vol.41が発売になった。この特集2の第4章は,僕が担当した記事である。 [JAVA PRESS Vol.41](http://www.gihyo.co.jp/magazines/javapress/contents) Spring+Struts+Hibernateでシンプル開発 -J2EEの先を行く!- 流行のDIコンテナを使って,シンプルかつ柔軟性の高いWebアプリを手軽に作りましょう,という内容である。もちろんお遊び的なものではなく,実用的な内容にし…

Read more →

さっそく質問メールが届いた

· Java

[JAVA PRESS Vol.41](http://www.gihyo.co.jp/magazines/javapress/contents)の特集2の第4章を担当したが,さっそく質問メールが届いた。内容は以下の通り。 ActionのexecuteをInterceptorすることはできたのですが、そのAction内で使用している、Bean等のメソッドをInterceptorしてログを注入する方法を探しています。いろいろためしてみたのですが、うまくできませんでしたので、もし参考になるサイトをご…

Read more →

うぉ!Linuxで動かないの!?

· Java

先日新バージョンを公開したTranslation Viewプラグイン,なんと早速動作不良が報告されてしまった。 [TranslationViewプラグイン - Eclipse](http://www.eclipsewiki.net/eclipse/?TranslationView%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3) どうやら,Linuxだと翻訳結果が「???」になってしまうらしい。 このコメントを見ただけで,すぐにその原因は思いついた。Exciteの翻訳サイトか…

Read more →

ジェネレーションギャップパターンとは

· Java

最近関わっている仕事のほとんどは,設計書からソースコードを自動生成するようにしている。僕が考えるに,XMLなどの設定ファイルだったら自動生成してくれるのは嬉しいと感じるのだが,やっぱりJavaのソースコードもある程度は定型的になってほしいので,自動生成の対象とすることが多い。 自動生成で問題になるのは,開発者が手を入れた後に設計書が変更になった,というケースだ。もちろん手を入れたコードと設計書にギャップが生じるので,多くの場合自動生成しなおすと,手で加えた部分が消えちゃったり,矛盾が起きてコン…

Read more →

しばらく見ないうちにSwingが成長してた!

· Java

俺のJava歴はかなり古い。HotJava1.0αを使ったことがあるくらいだ。大学時代の恩師に進められて始めたJava。正直,こんなに使われるようになるとは,当時は全く思わなかった。 昔からやってるだけあって,JavaでのGUIアプリ開発もお手のモノだ。AWTからやってるし,自作のLight Weight Component(死語?)を作ったりもしてた。もちろんSwingも一通り使いこなせるので,付き合いの長い某企業内でも,Swingを使ったプロジェクトに必ずお呼びがかかるようになっている。 …

Read more →

Synthの読み方って・・・

· Java

昨日書いた「 [しばらく見ないうちにSwingが成長してた!](http://blog.so-net.ne.jp/yoichiro/2005-03-23)」で登場した「Synth」。 これの読み方って,「シンセ」ですよね?…

Read more →

Commons-Langはオツだねぇ

· Java

ちょっとしたことでも「便利だなぁ」と思うことは多々ある。決まりきったコーディングはホントに面倒だ。このようなときに, [JakartaのCommonsシリーズ](http://jakarta.apache.org/commons/index.html)はとっても役に立つ。 自作したクラスのインスタンスをコレクション,例えばSetコレクションに格納したいとき,内容が同じものが既に登録されているかどうかを判断するために,equalsメソッドをオーバーライドする。この中で,2つのインスタンスが持つ値…

Read more →

アノテーションの具体例

· Java

java.sun.comのTechnical Articleのコーナーに,Java2SE 5.0から登場したアノテーションの具体的な使用例の記事が掲載されていた。 [Using Annotations to add Validity Constraints to JavaBeans Properties](http://java.sun.com/developer/technicalArticles/J2SE/constraints/annotations.html) JavaBeansの…

Read more →

問題は足元から・・・

· Java

最近は,現行のシステムの継続保守や機能追加に行き詰って「システムを作りかえてよ」という仕事が多い。昔の汎用機からだったり,ASPとかだったり,VBだったりするのを,Java化するっていう感じだ。 お客さんからの要望のほとんどの関心は,「プログラムを機能拡張しやすいようにして!」というものだ。しかし,その土台となるデータベースに関して,95%くらいの確率で,問題意識を全く持っていない。ホントにびっくりしてしまうことが多すぎる。 「助けてくだしぁい」と世界の中心で叫びたくなるほど,各企業が持って…

Read more →

Struts+Springの設定ファイル自動生成

· Java

StrutsとSpring Frameworkでシステムを開発する場合,その動作を決定する設定ファイル群をどう作っていくかがポイントとなる。具体的には,struts-config.xmlと[Webアプリ名]-servlet.xmlの2ファイルだが,とにかくこれらのファイル,大きくなってしまうのだ。 チーム開発では,成果物が細かければ細かいほど,並行作業がし易くなる。ただし,その分上記のような設定ファイルにしわ寄せがいってしまう。大きな設定ファイルを複数人でメンテしていく作業が難しいことは,改め…

Read more →

やっぱりコメントもらうと嬉しい!

· Java

昨年の一年間は,Eclipseプラグインの開発に熱中した一年だった。雑誌への投稿や書籍化もにらんで(実現しなかったけど),いろいろと勉強した。その成果が,このブログ。 [Eclipseプラグイン開発](http://yoichiro.cocolog-nifty.com/eclipse/) いろいろと作り方を記事化してきたけど,何か作らないといかんなぁと思って,「 [TranslationView Plug-in](http://yoichiro.cocolog-nifty.com/ecli…

Read more →

セキュリティとはなんじゃい?

· Java

IT技術で絶対に避けられない課題。それはセキュリティである。一言でセキュリティといっても,連想することは人それぞれだろう。暗号化,認証,PKI,などがサクッと出てくるキーワードだろう。 さて,システムのアーキテクチャを語る上で,セキュリティは欠かせない事項である。でも,いざ書くとなると,大抵は偏った方向に走りがちになる。多くの人は,セキュリティという範疇を,本来の3分の2しか考えていないだろう。 セキュリティとは何か?これは厳格にISOで定義されている。 [情報セキュリティのC.I.A.…

Read more →

続:XDocletはモノによってはマズいんじゃないの?

· Java

この前書いた以下の記事で, [NetPenguin](http://d.hatena.ne.jp/NetPenguin/)クンからコメントをもらった。 [XDocletはモノによってはマズいんじゃないの?](http://blog.so-net.ne.jp/yoichiro/2005-03-11) よくエンティティを表すモデルクラスのソースコードに注釈を記述して,Hibernateのマッピングファイルを自動生成する例を見かける。でも良く考えて欲しい。本来POJOなはずのモデルのソースコードが,…

Read more →

Strutsのロール設定

· Java

Strutsの各アクションを実行する権限がログインユーザにあるのかどうかを検証する仕組みを調査してみた(仕事で使うから)。 struts-config.xmlのactionタグにroles属性が存在   (struts-configのDTDから発見) Struts1.2から,roles属性にワイルドカードが使える。   (「 [Strutsユーザのための、Struts1.2ことはじめ](http://www.mamezou.com/tec/equip015.htm)」 by 豆蔵) Se…

Read more →

XDocletはモノによってはマズいんじゃないの?

· Java

Java2 5.0が登場して,JavaプログラミングがMicrosoft Visual Studioにどんどん近づいてきている。その中でも特徴的なのが,アノテーションだろう。そしてJava2 5.0が登場する前から,ソースコードに注釈を入れて,それから定義ファイルなどを自動生成することができるXDocletが多くのプロジェクトで使われてきた。 確かに定義ファイルのメンテナンスは難しい。特にStrutsの設定ファイルであるstruts-config.xmlや,Spring Frameworkのa…

Read more →

アーキテクチャ説明書って何書けばいいの?

· Java

IT業界でふつーに使われている「アーキテクチャ」という言葉。すっごいいろんな意味で使われていると思うけど,ではあなたが「システムのアーキテクチャを説明しなければならない」となったら,一体何を説明しますか? 「アーキテクチャ説明書」でググってみても,そのままズバリの文書はほぼヒットしない。これだっていうサンプルがあればパクっちゃうんだけど,世の中そんなに甘くない。それにしても「何で何書いていいかわからないんだろう・・・」と改めて考えた結果,「アーキテクチャって何?」とことがモヤモヤな状態だったと気…

Read more →