思ってることってこんなもんだよ
2005

ソフトウェアに付きものの著作権表記に新年を追加した瞬間,毎年僕は「新しい年が来たんだなぁ」と実感する。 つまり, を, とした時だ。

スキー場でカービングロングターン! 試行錯誤しながらも,気持ちよくゲレンデをカービングで滑っている夢だった。これは幸先いいぞっ!(^^/

2005年の自分は・・・ 韓○人との敵対 怪我(骨折,椎間板ヘルニア) 信頼してた人物からの裏切り 顧客との対立 JavaOneへの参加失敗 親の入院 地方への長期出張の決定 30年の中で最悪な1年だった。ホントに,きつい一年だった。 振り返ると,まぁそれだけいろいろと何かをやってた一年だったんだろうな。でも,結果は残念ながらどれも裏目に出たものばかり。自分が直接原因ではないことも起きたり,自分の価値観に全く合わないことを目の前でやられたりして,人間関係的にも,今まで経験したことのない...

Bフレッツの支払をまた忘れてしまった・・・。 orz

先日のクリスマスイブの夜,同級生の結婚披露宴&2次会に行ってきた。 同級生は中学時代の器械体操部の選手メンバーの一人。当時の団体メンバー4人(もち僕も入っている)が揃うのは久々だ。プラス,一つ上の先輩(全国跳馬2位!)や,当時一緒に練習していたクラブの同級生も集まり,気持ちはすっかり体操現役時代に戻っていた。 今ではとても考えられない,即PTAや親からストップがかかるであろう無茶苦茶な練習を共にやってきたメンバーだ。話しても話しきれない思い出が,そこには溢れている。ただ練習が厳しいわけじゃ...

クリスマスイブの今日は,複数のモデルを表で表示するための方法を紹介する。Webアプリケーションのほとんどで必要となる情報の表示方式だ。 StrutsとJSPの組み合わせでWebアプリケーションを作る場合,複数のモデルを表形式で表示するには,タグなどを使って,JSPにループの構文を記述しなければならない。よって,JSPにどうしてもロジック的な要素が含まれるために, MVCを完全に行うことができなかった。 Wicketであれば,このような場合もPOHPで記述できる。まずは,POHPから見ていこ...

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

ふとApache-Struts 1.2.8のソースコードが読みたくなって(?),Apache Software FoundationのサイトからZIP版をダウンロード。速やかに展開し,エクスプローラで展開先を開いた。すると・・・ 「なに!?DCさくらのダウンロードファイルがある!DCさくら使ってStruts 1.2.8のアーカイブをダウンロードしたわけじゃないのに。。。ま,まさかっ,Struts作者Craig McClanahan氏はDCさくらユーザなのかっ!?」 そう思ってびっくりした...

WEB-DB PRESS Vol.30(技術評論社)の巻頭特集に記事を寄稿した。前回と同様に,アークランプ鈴木氏との共著である。 今回は,「DI時代のアーキテクチャ設計」という特集の第1章と第2章を担当。第1章では,アーキテクトとはどのような役割なのか,そして確実に実装を行うためにアーキテクトはどのようにプロジェクトに関わっていくべきか,を説明している。第2章では,DIの採用によって,今までのアーキテクチャが変わったのか,それとも変わらなかったのか,について言及している。 第1章に関しては...

今日,マクドナルドに行った。ドライブスルーで渡されたメニューがこれ。 あれ?サンドイッチ? マクドナルド的には,ハンバーガーってカテゴリじゃなくて,サンドイッチって扱いなのね。 今度,「ベーコンレタスサンド,チーズ抜き」って頼んでみようかな。。。

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

社会人になってすぐに作成して,今まで設置してきた自分のホームページを削除した。全然更新してなかったし,このブログの方が有名(?)になってしまったので,更新しないコンテンツを置いておくのも資源の無駄ということもあり,廃止することにしたというわけである。 なので,ここに行っても,もちろん404である,,,と思ったら,ディレクトリページが出てきた。そっか,スキー部のページを残したんだった。そっちも何とかしなくちゃだ。 永らくありがとうございました。。。今後はこちらをよろしくです。

Webアプリケーションは,GUIアプリケーションと違って,ページ遷移が基本である。最近はAjaxが登場してきて状況が変わってきているが,基本的にはアプリケーションはページ全体の更新がかかる。つまり,Webアプリケーションはページの集合体だ。今回は,ページ遷移の方法について紹介する。 フォームのサブミット時に何らかの処理を行い,その後次のページに遷移するには,Componentクラスが持つsetResponsePageメソッドを使用する。FormコンポーネントのonSubmitメソッドや,B...

「フォームの扱い方」のエントリでは,フォームがサブミットされたときの処理の記述方法について紹介した。ただ,多くのWebアプリケーションでは,フォーム内に複数のボタンを配置して,それぞれ違った処理を行わせたいことがあると思う。今回は,そんな場合に使用するボタンコンポーネントについて取り上げる。 まずPOHPから考えよう。複数のボタンを同一フォームに配置するために,普通にサブミットボタンを複数記述すればよい。ただし,どのボタンかを特定できるようにwicket:id属性を付与しておくことがポイン...

Skypeを普段使用しているが,接続のたびにNorton AntiVirusのインターネットワーム防止機能が働いて,警告ダイアログが表示される。これを表示させないようにするための推奨設定の方法がどこかにないかなぁと探していたら,とんでもないページを見つけた。 livedoor - Skype (TM) for Windows を使って困ったら? そこには,こう書かれている。 左側の[インターネットワーム防止]メニューより[インターネットワーム防止を有効にする]を無効にし、[保護の警告]の...

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

Webアプリケーションに欠かせないHTMLのフォーム。Wicketでフォームを扱うための方法を今回は紹介する。 フォームは,inputタグなどのいくつかの入力要素から構成される。GUIアプリで言えば,フォームはコンポーネントが登録されるコンテナだ。Wicketでは,フォームを扱うために,Formクラスが提供されている,Formクラスは,Wicketコンポーネントのコンテナとして機能する。 HTMLのフォームは,formタグで表される。通常は,action属性によりサブミットがかけられたとき...

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

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

最近では,何らかのフレームワークにアプリケーションコードが依存しないように,POJO(Plain Old Java Object)なアプリケーションコードを開発することが当たり前になりつつある。Wicketにおいても,アプリケーションコードはPOJOで書かれることが想定された作りになっている。 具体的には,WicketのコンポーネントとPOJOとの連携を,IModelインタフェースを使って行う。IModelインタフェースの実装クラスがWicketではいくつか提供されているので,適切なものを...

Eclispeを入れ直す度に調べ直しているのもいい加減いやになったので,このエントリに記しておく。 Eclipseにおいて,SSH越しにCVSのpserverを叩くには,「org.eclipse.team.cvs.ssh2」プラグインのplugin.xmlファイルに,以下の内容を追記する。               その後,-noregistrycacheオプション付きでEclipseを起動すると,PServerSSH2を選択できるようになる。

「Labelを使った動的な文字列の表示」のエントリを書いていて,ふと気になった。wicket:id属性の値が同じタグが複数あった時,どういう動作をするのだろうか? 早速試してみる。 ここに名前が入る ここも名前が入る とPOHPを書いて,WebPageのサブクラス内で, add(new Label("name", "よういちろう")); としてみた。結果のHTMLは, よういちろう よういちろう となった。同一のIDのタグは,全て処理してくれるみたい。そりゃそうか。。。

Wicketが持つコンポーネントの中で,最もシンプルなのはLabelコンポーネントだろう。Labelコンポーネントは,HTMLにシンプルな文字列を動的に埋め込みたい時に使用する。 Labelコンポーネントは,実は既に「超基本構成」のエントリで使用している。ここでは,Labelコンポーネントに関するコードのみを取り上げてみよう。 まず,Labelコンポーネントに対応するPOHPの部分は,以下のような感じだ。 ここに名前が入る spanタグを使って,「ここに名前が入る」という文字列をタグ付...

さて,最初のWicketアプリケーションを作成してみる。最初なので,1ページのみの超基本構成のWebアプリケーションにしよう。表示のみの機能だが,動的な項目を一つ準備する。WTPでwicket-testプロジェクトをまだ作っていない方は,「開発の準備をしよう」を読んで作成して欲しい。 まずは,POHPなHTMLファイルを作成する。名前は「FirstPage.html」とし,作成先は「wicket-test/JavaSource/test」とする。つまり,testパッケージを作成して,その中...

今回は,Wicketを実際に試すための環境を構築してみる。いろんな方法があるが,ここでは,Tomcat5.0とWTP(eclipse Web Tools Platform)を使ってみる。ちなみに,Windows XPを対象とする。 まず,Tomcat5.0をインストールする。ダウンロードはJakartaのサイトから行える。ここでは,5.0.28を採用しよう。Tomcatのインストールについては,ここでは割愛する。exe版なら,実行するだけだし。 次に,WTPをインストールする。WTPは,E...

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

Wicketを試すには,Eclipse上で作業するのが手っ取り早いだろう。ここでは,EclipseでWicketのサンプルを動かすまでの手順を紹介する。 まず,「Wicketの基本パッケージ」で取り上げた3つのパッケージをそれぞれダウンロードして,任意の場所に展開する。 各パッケージには,Mavenのプロジェクトファイルが含まれている。これを利用して,Eclipseのプロジェクトファイルを生成することができる。以下のコマンドをそれぞれのパッケージで実行する。   > maven eclip...

最近のWebアプリケーション構築では,SpringFrameworkやSeasar2などのDIコンテナを利用する機会が増えてきている。Wicketについても,主要なコンポーネントとの連携のためのパッケージが提供されている。 Home - Wicket Stuff Wicket Stuffプロジェクトでは,以下の他コンポーネントとの連携機能を提供している。 Dojo Toolkit - AJAXコンポーネントとの統合 fValidate integration - JavaScriptでの...

一般にGUIアプリケーションのプロダクトは,どっちかっていうと付属されてくる例を見れば,「あ,こんなことできるんだぁ」って思うものである。Wicketについても,そんな素敵な題材がプロジェクトから提供されている。今回はWicketプロジェクトが提供している基本的なパッケージを紹介する。 まずは,Wicketの下記のダウンロードページに行ってみよう。 Download Page このページには,Wicketの超基本的なソフトウェアパッケージが公開されている。 wicket - コアAPI ...

Wicketは,SourceForge.netでプロジェクト管理されている。 プロジェクトホームページ - http://wicket.sourceforge.net/SourceForge.html SourceForgeサマリーページ - http://sourceforge.net/projects/wicket ダウンロードページ - http://sourceforge.net/projects/wicket Wiki - http://www.wicket-wiki.org....

会社で使っているPCからOracleをアンインストールする際に,インスタンスとリスナーのサービスを停止するのを忘れてしまったため,サービスが残った状態になってしまった。 昔,レジストリの奥底まで必死に検索して地道に削除したことがあるが,今ではそんなことをしなくてもサクッと登録抹消する手段がある。 アンインストールに失敗して残ったサービスのエントリを消去したい sc.exeコマンドがサービスを制御してくれる。しかもXPからは標準搭載。便利になったものだ。 サービスを消したくても消す方法がわ...

Wicketとは,POHP(Plain Old HTML Page)のソリューションの一つだ。Wicketを使用することにより,ロジック的な要素が多く含まれがちなJSPではなく,全くシンプルなHTMLでViewを作成していくことができる。そして,ページの中で動的な部分を構築するためのJavaコードは,GUIアプリケーション,特にSwingを使ったことのある人なら「お,似てるな」と思ってしまうようなコードで記述できる。 例えば,POHPとして,   ここが入れ替わる とHTMLに記述する。w...

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

世界選手権個人総合男子,金銀独占! 第38回世界体操競技選手権大会レポート すごい,すごすぎます。完全なアテネの再現。またまた泣いてしまいました。 種目別に絞って練習している外国勢が多いけど,体操は6種目やってナンボの世界。脚力が強いから跳馬だけ,とか,手足が長いからあん馬だけ,とか,そんな競技じゃないはず。6種目バランスよくレベルを上げてこそ,体操というものだ。だからこそ,五輪チャンピオンに日本はなれたんだと思う。 あとは,次の世代が育っているかどうか。この前の全日本を見てると,ちょっと...

現在,体操の世界選手権が行われている。予選で富田選手,水鳥選手の日本人勢1,2位独占状態に興奮しているが,それよりも気になるのがこのニュース。 消え行く体操の10点満点 歴史的なルール改正の訳 そう,今回の世界選手権で,10点満点ルールでの採点は最後なのだ。確かフィギアスケートの採点ルールと同じような感じで,今後は満点を決めずに点数を付けることになる。 体操経験者としては,やっぱり10点満点採点じゃなくなってしまうのは,すっごい違和感がある。「完璧レベルに自分がどれだけ近づけたか」っていう...

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

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

10月22日に,狭山スキー場がオープンしていた! 狭山スキー場ホームページ 来週,初滑り行ってこようっと。誰に何言われようとも,行ってやるっ!

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

so-net blogでも,やっとサイドバーに自作のコンテンツを置けるようになった。早速,恥ずかしながら「バイオグラフィー(生い立ち)」「ポートフォリオ(というか年表)」のリンクを作ってみた。 このポートフォリオ,何気に経歴書や履歴書を書くときに,かなりの威力を発揮する。自分で自分の説明をするのは(特に人前では)かなり苦手なのだが,文書を見られる分にはいいかな,と。 サイドバーコンテンツも作れるようになったので,自分のホームページは近々潰しますので,ご了承を(誰も見てないと思うけど)。

日本はやっと涼しくなってきたレベルなのに,世界はもうシーズン到来である。 マイヤー逆転Vで単独2位/W杯大回転 http://www.nikkansports.com/ns/sports/f-sp-tp0-051023-0034.html 昨シーズンはかなり不本意だっただけに,今シーズンはそーとー頑張りたい。

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

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

IP Messenger for Eclipseの開発には,複数台のマシンが必要となる。とはいえ,1台でも何とか動作確認とかしたかったので,久々にVMWareなんぞを使ってみようかなと思い,挑戦を開始した。 VMWareは早くもバージョン5まで到達していた模様(前に使っていたときは3だった)。早速VMWareのWebサイトからブツを購入。雑誌の付録についてきたIntel版Solaris10のインストールを開始した。 昔の印象と違って,インストールも思ったよりも早く終了。そりゃ3,4年前に比...

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

開発を進めているIP Messengerプラグインだが,sourceforge.jpにてオープンにすることにした。 [ipmsg4e : sourceforge.jp] https://sourceforge.jp/projects/ipmsg4e/ オレンジレンジの「キズナ」をもう6時間延々とリピートしながら,今日はプログラムをしていた。CVSにソースをコミットするたびに,「あぁ,また誰かに変なコードだなぁと言われる可能性を作ってしまった orz」とネガティブ志向な自分に自己嫌悪だ。 ポ...

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

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

プロジェクトを共有するための場所をどこにするか悩む。java.netは海外サイトなので,英語?日本語?って感じだし,sourceforgeは何かありきたりで嫌。かといって,自分のPCで環境作るのはかったるい。。。 どうしようかなー。

ついに,IPMsgプラグインを公開開始!以下のエントリを参考にして欲しい。 「IPMessengerプラグイン公開開始しました」 by Eclipseプラグイン開発Blog

着々と開発を進めているIP Messenger for Eclipse,やっとネットワークへの参加と脱退,メッセージの送受信と開封関連の処理が実装できた。コマンドのマスク系がまだ不十分だし,不在通知系の機能と暗号化もまだなので,ちょっと公開しちゃうのは早いかなぁ・・・というのが正直な気持ちだ。 とりあえず,開発中の画面は以下のような感じだ。 非常に微妙なUIに仕上がってしまった。Viewという限られたスペースの中に何も考えずに押し込めようとしたら,こんなになってしまった。 最初に送信の方...

仕事サボって,ちょっと現実逃避エントリしてみる。 今,完全な趣味として,IP MessengerをEclipseのプラグインとして開発している。かなりいろいろな思惑があって,仕事よりもこっちを考えちゃってるほうが多いことに自己嫌悪。でも,(ビジネスじゃなくて)いろんな展開が考えられることは,とっても面白いし,刺激的だったりする。そもそも,(翻訳プラグインのような)自分が生み出したものが世間で使われていることは,この上ない幸せなことだ。 最近の仕事は,火消しだったり,Webアプリケーションの...

Eclipseの翻訳プラグインを自前のサーバで公開している。もちろんUpdate-Siteを立てて,自動インストールができるようにしている。Update-Siteは普通のWebサーバに所定のファイルを置いておくだけの話だが,そこにアクセスしてくるのは,Webブラウザではなく,Eclipse(というかJavaVM)なところが,ちょっと面白い。 Webサーバは,Webalizerによってアクセスログを視覚的に見れるようにしている。Update-Site以外は,今まで何もおいていなかったので,ア...

JavaでExcelファイルを動的に作成する機能を持つJExcelApi。これのVersion 2.5.7がリリースされた。変更内容は,以下のページで見ることができる。 JExcelApi Change History 前に使った2.5.3から比べて,日付型のセルをちゃんと連続して作成できるようになっているようである(2.5.3では「-386792372」というような数値になってしまった)。あまり使い込んでいないのだが,動作はかなり安定してきているようだ。よくわからないwarningが出...

昼ごろに起きた強い地震。その影響を発生から12時間後に受けるとは,思っていなかった。 いつもの通りに(?)上野から宇都宮線の終電に乗った。大宮に0時7,8分ごろに到着。普通はそのままさくっと出発して,30分前には最寄り駅に到着するはずだった。 しかし,地震の影響で大宮への到着が遅れている東北新幹線を待ってから出発とのアナウンス。しかも,到着予定時刻は,なんと0時40分!30分以上も待つことになってしまった。 大宮からタクれば,約20分ほどで家まで到着できる(もちろんタク代はJR持ち前提)。...

~ある青年の物語~ 「よういちろうは,飲み会に誘われた」 「よういちろうは,コンビニの前を通過した」 「よういちろうは,犬のウンチを踏んでしまった!」 「よういちろうの靴が,汚れてしまった!」 「よういちろうは,仲間に笑われてしまった!」 「よういちろうのHPが,5減った!」 「よういちろうの運が,5あがった!」 ウンチを踏むのは中学2年の社会科見学以来。日本橋でまさかウンチが落ちているとは。。。 でも,何かいいことが起きるはずだ。だって,ウン(運)がついたもん。

前のエントリで疑問に思った,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.lang.NullPo...

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

部屋の電気を消して,ベットに横になると,僕の部屋では緑の星が綺麗に光る夜景を毎日見ることができる。 なかなか綺麗なんだけど,実はみんなPC関連のLED。うちにはノートPCしかないので,外付けHDDのアクセスランプがいっぱいある。 マークがないのは,机に反射している光だ。部屋全体だと,エアコンや蚊除けの電源ランプなど,さらに星が瞬いている。 真っ暗な部屋よりもこんな光があったほうが落ち着いてしまうのは,だいぶ病んでいるのかな。。。

発注元だからといって,何を言っても良いわけではない。ましてや,個人を誹謗することなど,完全に許されない。 僕らはシステム開発のプロフェッショナルだ。顧客の利益になるための,常に最適な判断を行おうとしながら,開発を進めたいと思っている。もちろん,納期や仕様変更などの顧客の希望を最大限実現したいと思っているし,そのためには自分の時間を削ることも仕方ないと考えている(少なくとも僕は)。 ただし,上記は前提がある。それは,「顧客が僕らを信頼すること」だ。最初はもちろん不安だろうけど,実績を確実に見...

外付けのHDDのフォーマットをFAT32でしようと思い,気軽にWindows XPからやろうとした。 NTFSしかないじゃん・・・。 最近買ったI-O DATAのLAN接続HDDには,USBのポートが4つ付いていて,HDDを増設することができる。でも,NTFSでフォーマットされたパーティションは,なんと参照のみっていう仕様。仕方ない,FAT32にするかと思ってWindows XPを使ってやろうとしても,NTFSしか選択肢がない。 そこでピーンとひらめいた。Linuxを使えばFAT32でフォ...

昨日公開した新しいバージョンの「翻訳ビュープラグイン」。自ドメインを取得したおかげで,自分のサーバでアップデートサイトを立てることができ,しかもアクセス解析までできるようになった。 早速昨日のダウンロード数を見てみると,新バージョンのjarファイルへのアクセス数は,54という結果だった。まぁまぁな数字である。少なくとも,日本で50人は使ってもらえているということだ。涙ものである。 それにしても,我がWebサーバへのアクセスのUser-Agentは,Javaばかり。 うーん,微妙。。。

ふと会社でこの前盛り上がった「ガンダム占い」を思い出して,再度自分は何になるのか占ってみた。 グラブロかぃ。。。グラブロなんて,相当ガンダムマニアじゃないとわからないキャラだぞ。 グラブロ君の特徴をまとめると,「包容力No.1」「協調性No.1」,そして「あきらめ早しNo.1」だそうだ。たぶん,当たってる。というか,当たってる。特に「あきらめ早し」は,僕を知ってる人間ならみんな「そのとおり!」と言うだろう。 誰か「シャア専用ズゴック」だった人,是非コメントください。

今日,翻訳ビュープラグインの新しいバージョンを公開した。それと同時に,自ドメインでのアップデートサイトの運用を開始した。これで,アクセス数とかも細かい数字がわかるし,結構楽しみだ。 Eclipse3.1で翻訳ビュープラグインの動作確認をしたのだが,久しぶりだったので,すっかりコードを忘れていた。「あれ?リソースってどう取得するんだっけ?」という至極簡単なことですらやばい状態だ。これではいけない。 というわけで,新しいプラグインの作成を始める。どんなプラグインなのかは,まだ秘密。思い出せばす...

今週の初めから「なんか変だなー」と思っていたが,徐々に症状がきつくなり,ついに今日は階段を下りるのも辛くなった。立ってられない腰痛。まったく集中できないし,じっとしていられない。 というわけで,今日は仕事を休んで,家で絶対安静。とはいえ,寝たきりも辛い。今年俺,厄年だったっけ・・・。

1989年に埼玉県学徒総合体育大会で発表された新しい鉄棒の終末技。 後方伸身失神2回宙返り下り(タナカ)(もちろん嘘) 本番での演技 まさに「失神」である。練習でできないことは本番でもできない,という良い見本だ。 着地の先取りが全くできてなくて,回るだけで必死っていう状態である。どちらかというと屈伸姿勢で回っているので,2回転目に思い切って伸身にしちゃえば,かなりいい感じだったかも。いまさらだけど。 このときは膝を怪我していて,全種目で着地とれず。規定演技で鉄棒は3位につけていただけに(1...

JDK5.0から搭載されたMetadataだが,やっぱり注釈を自分で定義したくなる。そこで,早速自分で注釈を定義してみた。もちろん,Eclipse3.1を使用する。 まずは,Eclipseで「New - Annotation」を選んで,新規作成ウィザードを起動する。 案外シンプルなダイアログだ。ここに名前を入れて,注釈を生成させる。 @interfaceが付いた特別なインタフェース,つまり注釈のコードが生成された。いたってシンプルだ。これに,内容を示すvalue属性を追加する。さらに,...

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

僕が最初に触ったコンピュータ,それは「ファミリーベーシック」だ。 何本かゲーム買ったけど,ファミリーベーシックを買ってからは,ゲームを買って遊ぶよりも,ベーマガ(雑誌)に掲載されたプログラムを打ち込んでは,それを無敵にしたりして改造して遊んでいた。今でも「PRINT命令は?で代用してメモリを稼ぐ」といったテクニックは覚えているし,基本的な制御構文の知識はこの時期(小学校5年生!)に確立された。 その後中学に入って,「パソコン買ってやるから体操をやめるな」という意味不明な理由でPC-880...

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

すでにリリースされてから結構時間が経っているJDK5.0。まだ必要になる気配がないので触らずにいたのだが,Eclipse3.1がリリースされたので,JDK5.0とEclipse3.1の組み合わせを試してみた。 起動時の第一印象としては,若干動作が速くなったかなという感じ。でも,全体的には3.0のときとさほど変わった印象は受けなかった。 しかし,使い始めてみると,細かな工夫がいくつも施されていることに次々と気がつく。 ・同一メソッドのハイライト表示 - あるメソッドにカーソルを合わせると,...

わからない未来を必死に予想し,計画に基づいて限られた人間に頑張ってもらい,取りこぼしや不具合の修正も何とか予定内に潰してもらい,やっと計画通りに進めたのに,報われない。 今後控えているリスクに対して真っ向から立ち向かう覚悟をして,必死にタスクの組み換えと実施をイメージし,今までの不具合の出方とメンバーの生産性や試験チームとの関わりを考えて,最善と思われるタスク分割とチームへの割り振りを考えたのに,報われない。 顧客に僕らの開発の仕方を必死に伝えて,納得してもらい,さらに実施の状況についても...

動く!改造アホ一台 第15回 歩く玄箱 ~ 進化したネットワークストレージ ~ HDDが歩く必要性は? 火星探査機の製作とNASAへの売り込みのため。 P2Pで手に入れた大切な○○動画を警察に没収されないように。 HDDもたまには外に出たいだろうから。 やっぱり 2. かな。

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

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

以前「DNSに挑戦!」で書いたことだが,ついに固定IP&自ドメイン環境を手に入れた。それに伴って,DNSとかメールとか,いろいろと運用できるようになった。 さて,そのドメイン名は・・・ eisbahn.jp だ。これはドイツ語(ほとんど英語になってるけど)で,「アイスバーン」と読む。雪の表面が一旦溶けて,その後気温が下がって凍った状態のことである。スキー好きならではのネーミングだと,自己満足している。 しかし,他人にとっては,パッと見なんのこっちゃって感じのようだ。これをフランス語っぽ...

VAIOで運用してきたFedora Core 3だが、インストール時のパッケージの選択に失敗したらしく、POPサーバのdevocotがどうしてもインストールできなかった。うーん、どうしたものかと悩んだ末、せっかくなのでFedora Core 4にアップグレードすることにした。 Fedora Core 4のCDイメージをGetし、さくっとまずはインストール開始。インストーラの画面や操作は、Fedora Core 3と全く一緒だった。面白いのは、Java関連のパッケージ(EclipseとかTo...

最近毎日終電で帰る日々が続いている。仕事以外にもいくつか抱えているものがあるので,行き帰りの車内でもPCを使いたい。それと寝不足で,満員電車の中を立っている気力もなかったりするので,ついグリーン券を買ってしまう。 上野に向かうグリーン車内は非常に快適だ。うるさい客もいないし,皆マナーも良い。僕もPCのキータッチの音をできるだけさせないように気にするようにしている。 しかし,終電のグリーン車は最悪だ。ホントに最悪だ。快適なことは,まずない。ひどい有様だ。 まず言えることは,酔っ払いの中年が多...

ある日,So-netから「固定IPサービス」開始のメールが僕のところに届いた。グローバルIPアドレスの取得は,以前は金額的にも何か手が届かないなぁと思っていたが,最近では極々普通のサービスになったようだ。 「何か楽しそうなことないかなぁ」と思っていたので,早速固定IPアドレスをGet!した。これにより,PPPoE認証後に必ず同じIPアドレスが割り当てられるようになった。これで前からやってみたかったことが実現できる。それは「自ドメインの取得と運用」だ。 ネットでの調査と,いろんな人に聞きまく...

やっぱりこれ!   学生の頃から世話になってます。足裏が特に気持ちいぃ!

第2段階のEoDは,相当な洞察力が必要だということがわかってきた。 第1段階のEoDの後,各仕様はソフトウェアアーキテクチャのさまざまな部位に当てはめられる。第1段階のEoDによって,仕様が「軸」と「箱」により定型的に分類されているはずなので,ソフトウェア的にも整理がつきやすくなっているはずだ。 仕様の整理がソフトウェアアーキテクチャに従っていれば,それをコードに落とす際の迷いはほとんどなくなる。さらに,整理された仕様をソフトウェア的に入れる「箱」を自動的に生成させることが可能となる。Ec...

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

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

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

顧客のシステム開発を行うこととは,どういうことなのだろうか? ADSLも飽和状態となりかけている今日では,昔とは比べ物にならないほど,インターネットの世界は一般に浸透している。インターネットの世界「だけ」でも,立派に市場が成り立つようになった。店舗や何らかの媒体,そして人間を使わなくても,インターネットというバーチャルな世界を使えば,そこで商売ができる。 当然,インターネットユーザ「のみ」をターゲットとした商売を始める企業も増えてきた。インターネット上に何らかのシステムを配置し,そのシステ...

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

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

先週から挑戦していたRoller Webloggerだが,やっと動き出した。「インストールガイド」を読みながら,手順に従って作業を進めたつもりだったが,以下のようにNullPointerExceptionが発生してしまい,絶妙なところで足止めを食らってしまった。 気づいてしまえば何てことはない,「jdbc;postgresql://~」というように,DB接続で本来「:」なところを「;」にしてしまっていただけだった。fedora core 3にはVNCで繋いで,しかも縦横比を3:4にしてい...

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

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

5月16日 AM7:50家発-AM0:40家着 5月17日 AM9:30家発-AM0:40家着(ヘルニアの治療) 5月18日 AM7:50家発-AM0:40家着 5月19日 AM7:50家発-AM0:40家着 5月20日 AM7:50家発-AM0:40家着 結局毎日終電。そして今日も終電。 いくら仕事だとしても,こんな状態でどうやってモチベーションをあげればいいんだろうか。。。人間らしい生活がしたい。

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

プロジェクトにはプロジェクトマネージャ(PM)が必ずいる。直訳すると「プロジェクト管理者」,つまり現場監督,実行責任者だ。では一体PMの仕事って何なんだろう? 僕が例えばPMに期待することは,誰が何をやっていて,どこでどんな議論が行われていて,それが全体の工程の入力なのか出力なのかの整理が常についていて,課題などを解決作業を適切なメンバーにふることができて欲しい,ってことだ。その行動は,もれなく顧客の利益(=プロジェクトの問題が常に把握されて解決に導かれている状態)を目指したものであるべき...

午前10時30分~12時会議午後2時~3時会議午後4時~10時会議午前0時30分帰宅帰宅後知人の会社のDB表追加&新版WARファイル更新 只今1時20分。 さすがに疲れた・・・。

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

次期StrutsのShaleだが,今まではuse-casesというサンプルしかなく,これは非常に簡単なものだった。use-casesからShaleの本質はもちろん見えてきたが,実際にShaleの利用シーンは自分である程度想像するしかなかった。 しかし,というか,やっぱりというか,今日Struts Shaleの開発が行われているSVN Repository(http://svn.apache.org/repos/asf/struts/shale/trunk)を覗いたら,mailreaderと...

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

真面目に細かく勉強してこなかったHTTPのRefererについて調査。 Referer(リファラー)について はてなダイアリー - Refererとは HTTP Header Fields なるほど,リンク元URIのことか。ココログで収集できるリンク元は,これだったのね。納得。 でもこれ,簡単に詐称できるよなぁ・・・。

スキーブーツの手入れをしていた際のぎっくり腰,結局椎間板ヘルニアとの診断だった。神経を圧迫して,右足の裏の筋に激痛が走る状態。痛み止めはほぼ効かず,我慢しきれずに汗までかいてしまう日々が続いた。 まだ骨折の方が楽だ。使えないだけで,痛くないし。 とはいえ,今日は比較的痛みを感じずに過ごせた。痛みが引いてきたのもあるが,痛くない姿勢を無意識に作れるようになってきたということだろう。そのおかげで,一日終わってベッドに横になると,背筋がものすごい酷使されていることに気がつく。 痛みを感じることな...

明日に延期にしていたスキーも,腰痛がひかないために中止とした。悲しすぎる。世の中は20℃を越える日々が続いたりしているし,シーズンはすっかり終わっている。自分の中でのシーズンは終わっていないつもりだったが,すっかりなまりきった体は,すでにシーズンの終了を告げている。 なんか日々腰痛が強くなっている気がするので,中学のときに通っていた接骨院に1○年ぶりに行ってきた。整形外科とか普通の接骨院は,たいていすぐに患部を固めてしまったり,動かさないように指示するのだが,そこは正反対。もちろん固めると...

明日スキー行こうと思って,日中車に道具一式を積んだ。ブーツのインナーを乾燥のために出してあったので,中腰になってシェルにインナーを入れていた。 入れ終わって,さぁ持って行こうかと立ち上がろうと思った,まさにその時!   キーーーーーーーーーーーーーーン! やっちまった。腰に痛みが走る。ぎっくり腰だ。。。 年に2,3回はおきてるこの痛み。2,3日も経たないうちに普段は治ってしまう。でも,明日スキーだというのに,タイミング悪すぎるよ,俺の腰よ。 ・・・というわけで,スキーは土曜まで延期としても...

VAIO Z1/PにインストールしたFedora Core 3。無線LANも開通したので,モバイル的に使用してみようと思い,電源ケーブルをはずし,PCMCIAカードもはずし,有線LANケーブルもはずした状態で使用してみた。 バッテリーが30分ももたないじゃん。。。 どうやら,CPUも液晶もHDDも,フル稼働状態のようだ。特にCentrino MOBILE TECHNOLOGYなんだから,CPUの周波数制御を有効にしておきたい。そのためには,カーネルの再構築が必要である。 以下のサイトの内容...

VAIO Z1/Pで稼動を開始しているFedore Core 3だが,インストールしてから一度も使っていないハードウェアがあった。それがWireless LANだ。ざっとググってみても,何もせずに使えるようにはならなそうなので,ずっとOFFにしておいたのだ。 せっかくのWireless LANだし,ぜひ使えるようにしてみたい。早速挑戦を開始したが,意外とあっさり使えるようになってしまった。 まず最初にやったことは,Wireless LANのスイッチをONにしてVAIOを起動してみた。いろん...

システム開発プロジェクトでは,一般的に「設計チーム」と「実装チーム」に分かれて作業を進めることが多い。この「設計」と「実装」の切り分け,これが非常に難しく,けれどプロジェクトの生死を決める最も重要な要素だ。 設計チームはどこまで設計とするのか? 実装チームはどこまで実装とするのか? この線引きは,人によって様々である。全く同じ線引きをする人を見つけることは困難を極める。というか,「境界線はここだよね?」「俺もそう思う,全く一緒だよ」なんて会話を,少なくとも僕は今まで聞いたことがない。 た...

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

苦戦しながらもようやく動き出したMovable Type。触りだすと,「抱いていたイメージと違うなぁ」と思い知らされた。 僕が最初に触りだしたのは,Niftyのココログである。ココログはTypePad,すなわちMovable Typeを基礎とするブログだ。もちろんユーザビリティを向上させるためにいろいろと改良が加えられていることは知っていたけど,基本的にはMovable Typeと同じだろうと思ってた。 でも,やはり「なぜ改良が加えられたのか?」を考えればわかることだが,追加,改良された機...

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

無償版もあることがわかったMovable Type。ココログでやっている「Eclipseプラグイン開発Blog」を移行するために,さっそくダウンロードしてインストールを始めた。しかし,さっそく挫折。 この難しさは一体なに? mt-check.cgiを実行してみると,HTML:Templateが古いとか,Image:Sizeが見つからないとか表示された。インストールマニュアルを見ても,こいつらが何で,こいつらをどうインストールしていいのかは書いていない(つーか書いてあることがよくわからない)...

愛機 VAIO Z1/P への Fedora Core 3 インストールも完了し,最低限整えようと思っていた機能(Samba,VNC,CVS,SSH)も動き出した。Fedora Core 3 の起動画面やGNOMEデスクトップは超かっこよく,非常に満足である。 さて,せっかくLinuxを入れたので,Windowsではできない or 大変なことをやってみたい。とりあえず思いつくのは, 自前Weblogサーバ構築 である。WeblogのサーバはどれもUNIX環境をターゲットにしていて,Win...

昨日からチャレンジしてきたSolarisインストール on VAIO Z1/P。懸念のネットワークカードの認識も何もせずにちゃんと認識されて,インストール自体は全く苦労せずに終わってしまった。画面の解像度も,以下のサイトを参考にして,1400x1050でいい感じに表示されるようになった。 Vaio PPCG-Z1R/Pで解像度1400x1050表示(Vesaドライバ) by UNIXな生活 昔Solaris2.6のx86版を入れたときは「重いなぁ」と思ったが,さすがハードの進化はすごい。...

Windowsだけの生活は退屈だ。というわけで,Solaris10をVAIO Z1/Pにインストール・チャレンジ!! ちょっと調べたところ,インストール直後はネットワークカードが認識されないらしい(Solaris9の場合みたいだけど)。 Sony Vaio PCG-Z1R/PへのSolaris9インストール by UNIXな生活 えらいインストールに時間がかかっている。なかなかプログレスバーが進まない。「あ,だめかな?」と思うと進んだりして,微妙な駆け引きをされているようで,...

Strutsのバージョン2は当然Struts2かと思いきや,「そりゃ2じゃないだろ」と猛反発を食らったために「Struts Shale」となったらしい。このStruts Shale,JSFとの結びつきの強いものになるそうだ。 JSF(JavaServer Faces)【.NET死亡?!!!】 by 2ch まぁ作者が一緒ということで,JSFとStruts Shaleでうまく分業体制をとっていくという方向性らしい。Struts Shaleの具体的なサポートとして, ベストフレームワークを使わ...

読者からJAVA PRESS Vol41の僕の記事に対して問い合わせがあり,久々にTomcat 4.X(最近はすっかりTomcat 5.0シリーズを使ってる)をインストールしなければならなくなった。 JakartaのTomcatページに行って,早速ダウンロードしようとしたが・・・   Tomcat 4.X が落とせない!!!(リンクを辿って探しても見つからない) もはやTomcat 4.Xは過去のものになってしまったようだ。トップページのTomcat 4.Xのところにも,しっかりと, We...

EclipseでJ2EE開発を支援するLombozプラグイン。Tomcat5.0.28との組み合わせの場合,LombozがTomcatをうまく起動してくれない。この問題の解決法が以下のサイトに載っていた。 How to configure Lomboz 3.0 & Tomcat 5.0 Tomcat 5.0.X用のサーバ定義ファイルに書いてある,「${serverRootDirectory}/bin」を削除すればOK。無事Tomcatを起動できるようになる。

最近はあちこちで「プロジェクトでEclipse作ってるよ」という話を聞くようになった。汎用的なプラグインではなく,あくまで特定のプロジェクトの開発で使えるものを作っていることが多いようだ。つまり,潜在的なプラグイン開発者は着々と増えつつあるということだ。「Eclipseプラグイン開発」ブログのアクセス数も着々である。 知り合いのNetPenguinクンも,悩めるプラグイン開発者になっているようだ。 Eclipseプラグイン開発3日目Java プロジェクトや Tomcat プロジェクトなどの...

「AndroMDA&JUDEはダメっぽい・・・」で取り上げたUMLモデリングツール「Poseidon for UML」をインストールしてみた。起動イメージはこんな感じだ。   これは,AndroMDAのEJBカートリッジを使って吐いたEJBの雛形モデルである。Business Delegateパターンに対応するServiceステレオタイプと,EJBのEntityBeanに対応するEntityステレオタイプがモデル化されているのがわかる。 なんとなく使いやすそうではあるけど...

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

次のおもちゃとして注目しているMDAを実践するためのAndroMDA。これと何かしらのUMLモデリングツールを組み合わせてMDAを実践しようと思っている。個人的にJUDE/Professionalを買っているので,これを使おうと思って試してみた。 結果から言うと,残念ながらNGだ。 AndroMDAのサンプルで付いてくるejb-templateを使って,EJBの雛形をGet。それに入っているxmiファイルをJUDEで読み込ませていざモデリング開始!といそしんでみたものの,JUDEがNull...

今日は4月1日,明日は4月2日。ついに復活の日である。1ヶ月半ぶりのスキーing。めちゃくちゃ楽しみだ!! 花粉症の影響か,のどが痛いけど,雪山に行けば花粉ともおさらば。滑りのイメージは大体できている。今シーズン前半とは明らかに違う体の使い方だ。早く試したいっ!! 雪質良ければいいなぁ・・・。

最近よく目にする「SOA」や「MDA」という言葉が非常に気になる。 「SOA」つまりサービス指向アーキテクチャは,Java WSDPをかじったこともあり(JAVA PRESS Vol.27 「特別企画 大長編! JWSDPによるWebサービス開発」を執筆),サービスを祖結合してシステムを構築するアプローチについては一応の考えを持っている。 もうひとつの「MDA」,モデル駆動アーキテクチャについては,モデリングを中心としてシステムを構築する手法なんだろうな,程度の認識しか持っていない。モデリ...

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

今週末,今シーズン初滑りだ!! 世間はすっかり春めいてきている。もうすぐ桜が咲くというのに,初滑りとは何事だ!と思うかもしれないが,今シーズンは僕にとって今がスタートなのだ。 忘れもしない2月11日。宝台樹スキー場での最後の滑りで,僕の右手親指は粉砕した。その結果は「記念すべき第一投は・・・」のとおりだ。それから約2ヶ月,やっと腫れもほとんどひいて痛みもおさまってきた。 1月,2月は隔週でスキーしてたのに,いきなりスキーできなくなった精神的ダメージはかなりのものだった。 今シーズンは大雪だ...

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

仕事で使うので,今まで避けていた(?),Velocityの調査を行う。 Velocityの解説ページ(「Velocityとは」でググった)は以下が見つかった。 Velocity - Velocity User Guide (JaJakartaの翻訳) Velocity:第1回:汎用テンプレートエンジンVelocity Velocityテンプレート by Kishida's SITE 置換部分の記述は,ELとかOGNLとかに似ている。なるほど,#foreachでループ,#ifで条件分岐って...

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

「Excelファイル生成ライブラリ調査!」で取り上げたJExcelApi,さっそく実際に使ってみた。なかなかいい感じなので,基本的な使い方をここに残しておこう。 まずは,JExcelApiのプロジェクトページから,jexcelapi_2_5_3.zipファイルを入手し,適当な場所に展開する。その中のjxl.jarファイルがJExcelApi本体である。これをクラスパスに通せば,使用準備は完了だ。  さて,さっそくコーディングの方法に入ろう。トピックごとにコードを紹介する。 【ワー...

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

Dr.コトー診療所のビデオみて,泣きました。

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

JAVA PRESS Vol.41に記事を書いたのだが,最初のページにいつも自分のメールアドレスを書いている。他の著者もみんなそうしているので自分も書いているのだが,載せるのやめようかな・・・と考えている。 読者が記事を読んで,その内容に関する問い合わせが来るのは一向に構わないし,むしろ大歓迎である。もしかしたらダウンロードできる題材に不備があるかもしれないし,本文の内容が嘘を書いているかもしれない(そんなことはないと思うけど)。もちろん,記事の内容よりも,もっと有益な情報を僕に気づかせて...

JAVA PRESS Vol.41の特集2の第4章を担当したが,さっそく質問メールが届いた。内容は以下の通り。 ActionのexecuteをInterceptorすることはできたのですが、そのAction内で使用している、Bean等のメソッドをInterceptorしてログを注入する方法を探しています。いろいろためしてみたのですが、うまくできませんでしたので、もし参考になるサイトをご存知でしたら教えていただけたらと思い、メールしました。 上記の「Bean等のメソッド」がちょっと抽象的なの...

今週に入り,JavaPress Vol.41が発売になった。この特集2の第4章は,僕が担当した記事である。 JAVA PRESS Vol.41Spring+Struts+Hibernateでシンプル開発 -J2EEの先を行く!- 流行のDIコンテナを使って,シンプルかつ柔軟性の高いWebアプリを手軽に作りましょう,という内容である。もちろんお遊び的なものではなく,実用的な内容にしたつもり。実際に,今やっている中規模Webアプリ(同時アクセス数は大)でも,基本的に上記の組み合わせで構築して...

昨日書いた「しばらく見ないうちにSwingが成長してた!」で登場した「Synth」。 これの読み方って,「シンセ」ですよね?

先日新バージョンを公開したTranslation Viewプラグイン,なんと早速動作不良が報告されてしまった。 TranslationViewプラグイン - Eclipse どうやら,Linuxだと翻訳結果が「???」になってしまうらしい。 このコメントを見ただけで,すぐにその原因は思いついた。Exciteの翻訳サイトからの結果のHTMLに使われている文字コードなんぞ,一切気にせずにコーディングしていたのだ。Windowsでしか動作確認してないので,きっとExciteからの結果のHTMLは...

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

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

固定が外れて早2日。動かすようになって,痛みもそれなりに出てきている。お風呂で曲げ伸ばしをやってる効果が出たのか,ずいぶんと曲がるようになってきた。 固定が外れた直後の写真と比べると,曲がるようになったし,腫れもちょっとずつだけど,ひいてきている気がする。指を最大に曲げたときに骨折した部分がひどく痛んだけど,今は若干だけど痛みも和らいできている。 ただ,昼間に無理して爪切りを右手で使ってしまったせいか,骨折した部分が慢性的にちょっと痛い。そこを手で押しても痛みはないんだけど・・・。それと...

いまTVのCMで,こんなことを言っていた。   「仕事の中で自分の時間を多く持てる人ほど,リッチマンかもしれない」 なるほど,確かにその通りである。自分の時間=自分のやりたいことができる時間,と考えると,そんな時間を作れる人って日本に数%しかいないのではないか,と思ってしまう。 興味のあること,好きなことをやっているときが,人は一番生産性があがるものだ。もちろんそれだけで決めてはいけないのだが,誰かに指示を出すときも,もちろん自分が仕事をするときも,最も生産性があがると思われる作業は何かと...

「TranslationViewプラグインバージョンアップ間近!」で予告したとおり,新バージョン(Version 1.1.0)の公開を開始した。新バージョンについては,「Eclipseプラグイン開発Blog」にて記事を書いてあるので,読んでほしい。 プロキシの設定については,一身上の都合により(?),今回は行っていない。 大幅な機能追加というわけではないので,さほどの反響はないだろう。ホントは,TranslationViewプラグインを作ったときに使用したAPIや技術的な話を,「Eclip...

「Eclipseプラグイン開発」で公開している「TranslationView Plug-in」。最初に公開した直後にいくつか改善や機能追加の要望をもらっていた。しかし,約3ヶ月ちょい放置状態。せっかくBlogにコメントもらったし,バージョンアップしましょうということで,先週,今週と作業をやってきた。 とりあえず,機能追加は完了。目玉としては,翻訳作業をやってもらうサイトとのやり取りを変更できるようにしたことかな。これでExciteのインタフェースがかわっても対応できるし,他の翻訳サイトを...

なんか捨てられない。病院に置いてくるんだった・・・。

やっと固定してたプレートがとれた!!いやぁ,長かった・・・。 プレートも,包帯も,テーピングも,何もないのはホントに気持ちがいい!!病院から出た瞬間に,手に風を感じたときは「おぉぉ!」って感じ。骨折した直後は,ものすごい色だった指も,いまは大分普通の肌色になっていた。 しかし!関節が曲がらない・・・。上の写真でちょっと指が曲がっているけど,これで最高の曲がり具合。力を徐々に強めて曲げてみると,骨が欠けた部分が傷んでしまう。やっぱり完治までにはもうちょっとかかるみたいだ。医者にも,ちゃんと...

ちょっとしたことでも「便利だなぁ」と思うことは多々ある。決まりきったコーディングはホントに面倒だ。このようなときに,JakartaのCommonsシリーズはとっても役に立つ。 自作したクラスのインスタンスをコレクション,例えばSetコレクションに格納したいとき,内容が同じものが既に登録されているかどうかを判断するために,equalsメソッドをオーバーライドする。この中で,2つのインスタンスが持つ値を比較する処理は,決まりきったものであり,実にめんどくさい。比較する値がプリミティブでない場合...

java.sun.comのTechnical Articleのコーナーに,Java2SE 5.0から登場したアノテーションの具体的な使用例の記事が掲載されていた。 Using Annotations to add Validity Constraints to JavaBeans Properties JavaBeansのプロパティに対してアノテーション(上記の例では「@MaxLength(20)」とか)を付与し,それを使って,HTMLやDDL,WSDLなどのファイルにアノテーションで指...

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

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

この前書いた以下の記事で,NetPenguinクンからコメントをもらった。 XDocletはモノによってはマズいんじゃないの?よくエンティティを表すモデルクラスのソースコードに注釈を記述して,Hibernateのマッピングファイルを自動生成する例を見かける。でも良く考えて欲しい。本来POJOなはずのモデルのソースコードが,Hibernateに依存してしまっている。もちろんコンパイルしたあとのクラスファイルはPOJOである。でも,使いまわすときはソースコードごと使いまわすのが現実では多いはず...

昨年の一年間は,Eclipseプラグインの開発に熱中した一年だった。雑誌への投稿や書籍化もにらんで(実現しなかったけど),いろいろと勉強した。その成果が,このブログ。 Eclipseプラグイン開発 いろいろと作り方を記事化してきたけど,何か作らないといかんなぁと思って,「TranslationView Plug-in」を作った。結構これが好評らしく,いろんな人に使ってもらえているみたいだ。 特にアクセスログとか取っていないので,ホントのところは,どれだけの人が使っているかはわからない。で...

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

Strutsの各アクションを実行する権限がログインユーザにあるのかどうかを検証する仕組みを調査してみた(仕事で使うから)。 struts-config.xmlのactionタグにroles属性が存在  (struts-configのDTDから発見) Struts1.2から,roles属性にワイルドカードが使える。  (「Strutsユーザのための、Struts1.2ことはじめ」 by 豆蔵) Servlet/JSP標準搭載の認証の仕組みだと,一旦ログインしたら,ログアウトするまで,そのユ...

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

So-netブログ,重すぎ!!!昨日の夜0時ごろ,記事書こうとしても全く応答なし!!So-netブログは後発なんだから,まともにちゃんと運用面考えてからサービス開始しろっつーの。 ココログの初期のころよりも酷い。「~.do」ってURLが見えたから,もしかしたらStrutsで動いてるのかな。うーん,いまStruts案件やってる僕にとっては,ちょっと怖くなりました。

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

さて,俺の今の右手はこんな感じ。 骨折3週間経過。完治の気配なし。 いい加減いやな臭いを発してきたこの手を,今は何とかしたい。。。

1981年4月: 蓮田市立黒浜小学校入学。 1986年8月: 第十回東京近県小学生剣道練成城北大会 第3位。 1987年3月: 蓮田市立黒浜小学校卒業。 1987年4月: 蓮田市立黒浜中学校入学。 1988年6月: 埼玉県学徒総合体育大会(体操) 団体優勝。 1988年8月: 第19回関東中学校体操競技選手権大会 男子団体6位。 1988年9月: 埼玉県東部地区体操競技会 個人総合2位 鉄棒2位 跳馬優勝。 1988年10月: 新人戦三支部大会(体操) 鉄...

小学校の頃から何かしら運動をやっているスポーツマン。その反面幼い頃からコンピュータに触れる機会が多かったせいか、ゲームで遊んだり作ったりというパソコン少年でもあった。 剣道、器械体操、ソフトテニス、スキーと学生時代は幅広くスポーツを経験。特に器械体操においては想像を絶する練習量と恵まれた環境によって東部地区や埼玉県で成績を残す。高3から始めたスキーはSAJ1級。大学時代はインストラクターを経験する。 昔からのコンピュータを触ってきた経験が功を奏し、今ではITアーキテクトとして活躍中。特...