2004.1.4 〜 2004.12.26

[1999.9-2000.9 2000.9-2001.3 2001.4-2001.12 2002.1-2002.6 2002.7-2003.1 2003.2-2003.12 2004.1-2004.12 最新版]

僕のホームページ[1]および[2]の更新メモですが、自分のページ作成に関して参考にしたサイトなどや興味あってちょっと調べたことなどを紹介しています。


2004.12.26
 書籍「JMF,JAIN詳解 Javaマルチメディアコミュニケーションプラットフォーム」(新紀元社)を購入。
 雑誌「月刊ジャバワールド誌2005.2号」購入。
 雑誌「WEB+DB PRESS Vol.24」購入。12月度累積図書費26586円。
2004.12.14
 書籍「C++ Coding Standards: 101 Rules, Guidelines, And Best Practices」を購入。12月度累積図書費20097円。
2004.12.12
 書籍「WebDAVシステム構築ガイド」を購入。ネットの情報だけでWebDAVを構築しようとしたのですが、散発的な情報をつまみながら実像をまとめあげなくてはならない状況だったので、本を買ってきました。12月度累積図書費15938円。
 Solaris 9 x86にApache 2.0.52 + WebDAVを入れようと四苦八苦中。先に買ったSubversionとWebDAVは関連が深いようです。
2004.12.8
 雑誌「Linux Magazine 2005.1」購入。Fedora Core 3のCDが付録にあっただけが要因。職場のPCがLed Hat 9だったので、Fedora Core 3へ更新するのが目的。Oracle 9が入っていたけれど、これをOracle 10gにすることも計画しているマシン。Samba + LDAP、Subversionも試みる予定。いろいろと実験したいことは多々あり。12月度累積図書費12284円。
2004.12.4
 書籍「バージョン管理システム『Subversion』解説書」購入。昨日見つからなかったのでちょっと嬉しかった。
 書籍「プログラマの『本懐』」購入。ついタイトルにつられて買ってしまいました。内容はアーキテクトとしての仕事についてなので、ちょっとタイトルとずれるかもしれない。
 12月度累積図書費10794円。
2004.12.3
 書籍「入門SSH」購入。最近セキュリティ上telnet/ftpではなくSSHを使う方がベターとされているけれど、いまいち仕組みがよく分かっていないのでちょうど良い機会と購入。
 書籍「徹底解説Samba LDAPサーバ構築」購入。職場でも家でも、UNIXとWindowsの混在環境となります。環境設定や相互運用性、特にユーザ認証が一元化できないかなと思っていた折だったので購入。
 12月度累積図書費5124円。
2004.12.2
 Internet Week 2004。疲労。
2004.11.25
 日帰り出張の日。昨日買った雑誌をゆっくり読める時間がとれた。
 Java Press誌のセキュリティ特集はJ2SEで実装提供している暗号・ハッシュの方式などまで触れていてよかった。JCEのプロバイダを自分で作ってみると面白そうな感じだ。意味はあまりないが、シーザー方式のプロバイダを作ってみようかな。Eclipse特集は、最近辟易気味。プラグイン紹介なんて自分でちょっと試せば済むし、ネットを検索すればあるし、そもそもマニュアル読めばいいのに・・・。と思考が転がっていったときにはたと思い出したが、「マニュアルを読まないエンジニア」が増えた。
 ジャバワールド誌はここのところ面白くなってきている。
 今週末は読書会。アジャイルソフトウェア開発の奥義です。事前に読書会MLでは非難轟々気味だったのできっと盛り上がるでしょう。読書会の本は、「ここおかしいぞっ」と言える本が盛り上がります。それと難しい本。
2004.11.24
 「月刊ジャバワールド誌2005.1号」購入。「Java Press誌Vol.39」購入。C++シフトから少しJavaに戻った。11月度累積図書費23709円。
 週明けに稼動させるDHCPサーバの設定。担当者が風邪でお休みで期限がないのでピンチヒッター。使用マシンがSolarisワークステーションなので、Solaris DHCPサーバの設定をを試行錯誤。意外に時間がとられる。GUIで設定するのが簡単だがコマンドラインで設定をしている分はまってしまった。
2004.11.20
 C++プログラミングをする際には、あらかじめ定石となるものを規約として用意しておかないと、人によってあまりに差異が出るし問題も発生する。本来はC++を使えるという時点でその定石が身についていて然るべきはずだが、実際はそうではない。となると、プロジェクトでしっかりと規約を設けてレビューをして規約を徹底して・・・ということが必要となる。しかし、規約を作るだけの技術を持つ組織ってそうそうない。と、負のループに落ちてしまうなぁ。。。ここのところC++書籍を買っているのは、定石を集めようとしてのこと。
2004.11.18
 書籍「省メモリプログラミング -メモリ制限のあるシステムのためのソフトウェアパターン集」を購入。11月度累積図書費20790円。
2004.11.17
 日帰り出張のため、電車の中でEfficient C++を読む。随分進んだ。
2004.11.16
 書籍「Efficient C++」購入。11月度累積図書費16380円。パフォーマンス問題を解決すべく・・・。
2004.11.14
 Bruce Eckel氏の"Thinking in C++"がWebで公開されている(英語)。よく書かれているなと感じる内容。標準例外の整理やcatchされない例外の行方などについて書かれた本は初めて見た。Makefileについても言及されている。
2004.11.9
 JDEE 2.3.4正式版リリース。強化ポイントはこれから調査。
 AspectJ 1.2.1リリース。
2004.11.7
 JavaでスレッドセーフをJavadocドキュメントに記載すべきと思っている。しかし、スレッドセーフは一言で表すことが難しい。IBM developerWorksのJava technologyコーナーに、参考になりそうな記事「Javaの理論と実践:スレッド・セーフの特性について」がある。
2004.11.2
 「Gaming Programming Gems 2」購入。11月度累積図書費は12600円。C++でパフォーマンスが出ない、メモリを押さえたいときのTipsがいくつか載っている。グラフィックス処理やパフォーマンス要求などにゲーム系のプログラミング技術が役立つことがけっこうある。
2004.10.31
 「美しいC++プログラミング見本帖」を今月のどこかで買っていた。10月度の累積図書費は20481円。
2004.10.30
 「はじめて読むPentiumマシン語入門編」購入。10月度の累積図書費は17541円。
2004.10.27
 「WEB+DB PRESS Vol.23」購入。10月度の累積図書費は14601円。
2004.10.24
 「あるプログラマの本棚」ページを久しぶりに更新。まだ本棚の1/3分しか反映できていない。過去のJolt AwardのWinnerになった本のリストを追加した。
2004.10.23
 「月刊ジャバワールド誌2004.12号」購入。10月度の累積図書費は13047円。
 Solaris x86ページに、インラインアセンブリ記述を追記。
2004.10.21
 「AspectJ in action」購入。10月度の累積図書費は12067円。
 AspectJのプログラミングの良い書籍がないので、洋書AspectJの3冊からセレクトした1冊。なお、12月にオライリーからAspectJ Cook本(洋書)が出るらしいが、待ってられずに購入。
2004.10.18
 「月刊Cマガジン2004年11月号」購入。
 「BSDマガジン Vol.20」購入。10月度の累積図書費は7689円。
 Cマガジンの特集記事は、コンパイラの最適化。実はちょうどSolaris SPARCで最適化方法を検討した直後だったのでタイムリー。もう1つの特集のC++とWin32 APIで作るオリジナルGUIライブラリも興味を引かれた。MFCを使わずC++のGUIライブラリがWindowsにあるとよいなと思っていたので。WTLもあるけれど、自分で作ってみるというのがよいなと思った次第。
 BSDマガジンのVol.20はEmacs特集。Emacsの記事を見たいのが最大の理由。BSDに走ったわけではない。
2004.10.8
 「Software People Vol.5」購入。10月度の累積図書費は4179円。
 特集記事1は、ソフトウェアエンジニアのホームページの清水さんが書いています。記事ではプロセスフローダイアグラムが登場しています。その他の記事にも、ソフトウェア開発という仕事にいると役に立つ内容がたくさん散りばめられています。なお、この雑誌の特色として、他のコンピュータ系雑誌に載っていないがエンジニアとしてヒントになることが多い記事が載っています。
 
2004.10.3
 「Human Interface Guidelines:The Apple Desktop Interface(日本語版)」購入。10月度の累積図書費は2625円。
 お仕事で関わる仕事は、それぞれのシステムのユーザー・インタフェースであることが多い。HTMLベースのブラウザで済むようなものではなく、かな〜り操作性を追及させられるものが多い。今の仕事でも、GUIツールキットの制約でかなり苦労する点がある。一方、未だにウィンドウ、マウスのGUIベースだったりするので、ユーザー・インタフェースは技術としては進んでいるのかいないのか。
2004.10.2
 C++は遅い、メモリ喰い、互換性低い、などなどを痛感する。昨年の仕事では、PDA (WindowsCE)上での開発物件で、C++を使用したアプリケーションのメモリ問題に随分苦労した。32MBの壁(正確にはアプリケーション側では10MBの壁)によるものだった。今度の仕事では、Solaris上での開発物件で、C++を使用したものだが、プロセスサイズが1GBに至るという状況でまさかと思ったがメモリ問題に苦労することになりそうだ。性能面でも問題の個所があるし、う〜む、、、どう考えてもJavaの方がまともだ。
 SunのC++コンパイラだとビルドがエラーになるオープンソースが多い。Boost、ACE、gtkmm、など。大抵はGCCで開発されているので、GCCだとビルドはできるのだが、それはGCCがC++規格に優秀というわけではない。C++規格が複雑すぎて実装しきれていないのか、解釈が曖昧で実装依存な部分が出てしまうのか、コンパイラの検査が不十分で規格違反コードも通しているのでコンパイラ実装が異なるとエラーになるのか、厳密な問題は分からないが、この状況ではGCC以外は使うのをためらってしまう。C++の場合、同じコンパイラ実装系でビルドしたライブラリ同士しかリンクできないので、そもそもライブラリのバイナリレベルでのポータビリティは皆無なのだ。ソースコードレベルでの互換性もC++ではかなり厳しい。
2004.9.24
月刊Java World誌11月号購入。9月度の累積図書費は24559円。
ソフトウェアエンジニアのためのホームページ」に、プロセスフローダイアグラムの表記法解説が登場しました。自分がしなくてはならない開発作業をイメージアップするにも使えるし、複数人数での作業を整理したり束ねたりするのに役立つし、これは強いツールです。
2004.9.23
 AspectC++続き。AspectC++のソースを入手し展開すると、AspectC++とPumaの2つのディレクトリから構成される。AspectC++のビルドには、Pumaのライブラリが必要である。しかし、Pumaをビルドするには、ac++コマンド(AspectC++をビルドすると出来るもの)が必要となる。うむ、厄介だ。
2004.9.20
 AspectC++を試しに入れてみる。Solaris/Sunpro C++にこだわってみると、makeがエラーになる。問題点としては、
2004.9.19
 本日の書籍購入は、「Kerberos」、「JavaPress Vol.38」、「UNIX MAGAZINE 2004.10」です。9月度の累積図書費は23069円。Kerberosは、Solaris9インストール時に設定有無を聞かれる項目で、使い方等がよく分からなかったのでこの機に購入した。JavaでもKerberos認証のAPIがあるようなので。
2004.9.18
 読書会の日。今回は著者の方が夕方よりお見えになり、2次会になりました。
2004.9.16
 本日の書籍購入は、「Squeakプログラミング入門 オブジェクトランドへの招待」、「ケント・ベックのSmalltalkベストプラクティス・パターン」です。9月度の累積図書費は16740円。
2004.9.12
 Boost C++をSolaris x86上で試すが、Sun Studio C++コンパイラ(sunpro)では最初の例からNG。テンプレート関係のエラーなので原因を特定するのが難しい。昔はBoostの対応状況のコンパイラ一覧にSolarisのWorkShop C++が掲載されていたが、最近はSolarisが載っていない。うーむ。。。GCCだとすんなりビルドされるのだが・・・。
 SWIGをSolaris x86で試す。SWIGは情報が少ない。特に日本語サイトはほとんど見当たらない。もともとC++自体の情報サイトが少ないのもあるが。C++コミュニティは職人肌が強いのかな、知りたければ勉強しろ、技を盗め、という感がある。Javaコミュニティとは大きく違う点の1つと思う。数少ない情報源。
2004.9.11
 リーンソフトウェア開発、なかなかいけていると思う。アジャイル開発をいきなり導入しようとしても強い抵抗があるが、リーンの原則「ムダを排除する」に基づく方策に取り組むという姿勢ならば、硬直化して制度疲労を起こして官僚化した日本企業の中でもいけると思う。
 本日の書籍購入は、「Boost C++ Library プログラミング」、「C++プログラミングの筋と定石」、「軽快なJava」。9月度の累積図書費は10650円。
2004.9.6
 TAOのエラーの原因は、<sys/utsname.h>の定義において、以下の定義がある場合に、
#if !defined(_KERNEL)
#if defined(i386) || defined(__i386)
#if defined(__STDC__)
#if !defined(lint) && !defined(__lint)
static int uname(struct utsname *);
static int _uname(struct utsname *);
#else
extern int uname(struct utsname *);
extern int _uname(struct utsname *);
#endif
static側の定義が有効になっており、これがあると ACE_OS::unameとなぜかバッティングするようだ。この宣言は、SPARC Solarisでは適用されないはず。回避策は不明。
2004.9.5
 忙しい一週間が終わった。仕事以外に勉強する時間がほとんど取れないのが辛いところ。仕事は調整業務(客と社内と)なので、仕事だけでは技術がおろそかになってしまう。こんな仕事を何年もしていると、「書類しか作れないエンジニア(えせ)」になってしまう。
 Solaris 9 x86のCDE(共通デスクトップ環境)では、ATOKが標準IM(Input Method)となっている。これがEmacsと相性悪い。Emacsのリージョン開始指定のCtrl+SpaceがATOKのON/OFFに奪われる状況になるのだ。ググってみるとLinux系のATOKでは次のファイルを作成すれば日本語ON/OFFが切り替わるとあるが、SolarisではNGであった。
#touch /usr/lib/im/locale/ja/atokserver/shift_space
 これからTAO(オープンソースのCORBA実装)をSolaris 9 x86に入れる予定。7月にバージョン5.4.2が出ている。C++はライブラリがおもいっきりコンパイラ依存なので、Sun Studio 8の試用版(60日間)か、GCC-3.3のどちらかでトライする。TAOは、ACEと呼ばれる汎用C++クラスライブラリの上に構築されているので、TAOを入れるとACEが利用できる環境が整う。ACEは例えばスレッドやソケット等のAPIをC++クラスとしてラッピングしているので、C++オブジェクト指向プログラマーにとってはとてもうれしいライブラリ。さて、Sun Studio 8でビルドすると、いきなりエラーとなってしまう。
CC -mt -g   -DSUN_CC_HAS_PVFC_BUG   -I/export/home/toru/work/ACE_wrappers -DACE_
HAS_EXCEPTIONS -D__ACE_INLINE__ -I.. -DACE_HAS_ACE_TOKEN -DACE_HAS_ACE_SVCCONF -
DACE_BUILD_DLL  -c -KPIC -o .shobj/Local_Name_Space.o Local_Name_Space.cpp
"/export/home/toru/work/ACE_wrappers/ace/OS_NS_sys_utsname.inl", line 14: Error:
 uname(utsname*) is not a member of ACE_OS.
    :

 Java 2 Standard Edition, SDK 5.0(通称JDK1.5)がようやくβテスト期間を終えてリリース候補RC(リリース・キャンディデイト)になりました。10月までにはFCS(最初の顧客出荷版:いわゆる製品版)が出るのではないかと思われます。
2004.8.30
 結婚記念日で休暇。優雅な一日になるはずだが、免許証などの住所変更残件の処置などに周り、ランチとリフレクソロジーとお茶の後は子供用品の買い物。けっこうこなした一日でした。
2004.8.29
 この一週間で自宅PC(2線級:440BXチップセットのPentiumIII 500MHz)に、Solaris 9 x86をインストールしてみた。Solaris x86は対応ハードウェアが少ないので、最新機種に入れるよりは旧い機種に入れる方が問題が少ない。とはいえ、ビデオボードとLANカードの設定でそれなりに試行錯誤が発生した。Solaris 9 x86インストールメモのページを作成した。
2004.8.25
 行くべきか、行かざるべきか、悩んだあげく休暇。モチベーションを上げるにはどうすればよいのだろうか。書籍まとめ買いの日となり、「初めてのPython」、「UNIXシステムパフォーマンスチューニング第2版」、「ステップアップのためのソフトウェアテスト実践ガイド」、「便利なツールEmacsらくらく入門」を購入。手に馴染むスクリプト言語を覚えたいが、Perlは今さらという感があるので、RubyかPythonか試行中。Rubyは2003年にチャレンジすべき言語として目標設定したが3日坊主で挫折した。今度はPythonと思ってチャレンジ開始。
 8月度の累積図書費は28685円。
2004.8.24
 月刊Java World誌10月号購入。Oracleの新しい開発環境JDeveloper10gが目に付く。UMLモデリング、JSP開発、パフォーマンス計測が充実していて、当然Oracleとの連携は豊富。当面RDBMSを用いた開発には携わりそうにないのでウォッチ程度。リファクタリングの特集記事は、書籍を一読すればあえて読まなくてもよいかな。ビジネスモデリング入門は、今まで目にしたことのない各種シートをツールに分析しているので、把握が難しい。リッチクライアント開発記事の連載が開始されたが、今回は概念を述べた程度、今後の展開に期待。先月から連載開始されたJ2SE5解体新書はGenericsの続きでワイルドカードと型引数の境界、ちょっと難しい。Jakarta活用指南では、AvalonプロジェクトのIoCコンテナ"Merlin"の紹介、興味深い。J2EEアンチパターンでは、DTO爆発を取り上げている。Javaデザインノートでは会計処理システムのドメイン分析として、複式簿記について事例を取り上げている。総合的に読みでがあって堪能できる濃い号です。
 Web+DB PRESS Vol.22購入。特集の逆引きデザインパターンは、逆引きになっていないような気がするのと構成が見づらいと感じてしまったが、MySQLの特集記事がDBの構造に踏み込んだ記事でよかったので買い。はじめてのSeasar2は、流し読みするだけだと何がメリットかよく把握できず、後で細かく追ってみる予定。ロジカルシンキングは技術者としては重要な思考法なので、これも良。
 8月度の累積図書費は15476円。
2004.8.22
 最近Meadow 2.10(開発版)にしましたが、旧いphysical-line-modeを使用していたので、折り返しのある行でカーソル移動しようとするとフリーズ状態になってしまいました。physical-line-modeを最新版に入れ替えれば解消されます。
 昨日のJava読書会「UMLモデリングの本質を読む会(第3回)」は参加者21名でした。個人的に読んでいて気にとめた文書を引用します。  J2SE 5.0βのjavacが生成するバイトコードのバージョン番号の検証をしてみました。バージョン番号は4バイトで構成され、最初の2バイトがマイナー番号、残りの2バイトがメジャー番号です。J2SE 5.0βでは、何も指定しないデフォルト状態でGenericsや拡張構文が有効となっています。その代わり、Tigerで拡張した機能を全く使っていなくても、コンパイルしたクラスはJ2SE 1.4以下では実行できなくなってしまいます。
-sourceオプション J2SE 5.0SDK J2SE 1.4.2 SDK
なし 0000 0031 0000 002e
1.4 0000 0030 0000 0030
1.3 0000 002e 0000 002e
1.2 0000 002e 0000 002e
  UNIX MAGAZINE 9月号購入。メモリ管理についての記事が買い。空調障害との闘いは、今まで考えなかった観点だけにGood。
2004.8.13
 Mavenのページについて質問を受けたので、プロキシー経由の場合の設定方法を追記しました。
 書籍「プログラマ主役型プロジェクトのススメ」を読んでいます。ものすごくプログラマー視点での平易な記述でありながら、チームワークと組織ワーク、スケジューリング、トレードオフ、エンジニアの良心、自分の失敗から学ぶ、人の成功から学ぶ、といったことが書かれており、内容に激しく共感しました。しかし、この本でのプログラマはかなり高い意識が要求されます。エクストリームプログラミングやアジャイル開発で必要なプログラマー像とも言えます。ちなみに、ヨーロッパでは、プログラマが評価されているとの記述があり、ヨーロッパにおけるプログラマの地位・社会的評価について詳しく知りたいと思いました。土地柄、職人が評価されているのと同じ感覚なのかな。アメリカでは、プログラマよりコンサルタントが評価されている点で日本とさしてプログラマの地位が変わらないということだそうです。とにかくいろいろ考えさせられる本です。もう一冊購入した「アジャイルと規律」もよさげ。
 UML PRESS Vol.3購入。Vol.2からかなり期間があいたが続いているようだ。よい事例と失敗事例、教育の実際など参考になりそうなことがあったので買い。
 EclipseパーフェクトマニュアルVol.4購入。僕はJavaの開発はEmacs + JDEEなのでEclipseはほとんど使わない。ただし、Emacsを人に勧めることはしないので、そんなときにはEclipseを勧めるので多少なりとも知識を入れておくために買い。
 8月度の累積図書費は12432円。
2004.8.7
 仕事の負荷が高まって更新が滞っていました。客と開発グループの間に立つという板ばさみ的なあまりうれしいポジションではない立場です。自分では開発に直接携わっていないのが一因です。ミスマッチなポジショニングですが、いつか解消されるのかは疑問。仕事に対して受動的だとこうなってしまうという自分への戒め・・・。
 ラショナルのOOAD実践教育を受けました。RUPに基づくプロセスが背景にあるためか手順が明確に出ている分析設計でした。ユースケース主導なやり方は知識では分かっていたつもりが教育を受けてみてやっと身に付けられるようになったと感じられました。知識はそのままでは実践できずということを再度認識しました。ここで新たに認識したことは、クラス図は決めるものではなくじわじわっと決まっていくという感触です。コラボレーションやシーケンスを洗い出してはクラス図に反映という手順を繰り返していくからかと思います。
 書籍「ソフトウェアエンジニアリング」を傍らに通勤。Validation(妥当性検査)とVerification(検証)の区別が解説されています。ドキュメンテーションについても記載されています。開発プロセスについて、スパイラルプロセス、インクリメンタルプロセスについて述べられています。要求については、要求分析を顧客要求と開発者要求の2段階に分けることを提唱しています。今までのソフトウェア工学分野の本とは違い、しっくりと来る感じがあります。著者のバックグラウンドが実際にソフトウェア開発現場にあることからかと思います。
 7/31にJava読書会実施。UMLモデリングの本質の第2回目です。自己紹介時点からUMLツール大会(Together/Jude/PatternWeaver)があったり書籍紹介がありました。紹介されたうちの2冊「リーンソフトウェア開発」と「思考系UMLモデリングエクササイズ」は週末購入。リーンはトヨタのカンバン方式がアメリカへ行ってソフトウェア開発に適用されたとのことです。さて、読書会が開始された午前中は議論が広がって数ページしか進まないという実に読書会の醍醐味が味わえたりと今回はよい会となりました。ユースケースについてはいろいろな体験を参加者から聞けました。メトリクスの議論も奥深かったものがありました。今回の書籍も読書会向きです。「UMLモデリングの本質」から今回読書会範囲の中でちょっと残った文章を以下に引用します。  8/4のソフトウェアパターン勉強会に参加しました。客先問合せが頻発して仕事がなかなか切れずにちょっと遅れて会場に入りました。JavaWorld誌2004.9の特集記事の1つ「デザインパターンで学ぶテスト容易化設計技法」の著者の1人太田さんによる紹介。ほぼ記事の通りの内容でした。その後グループに分かれてのパターンライティング。とはいえ今回はどこもパターンが書けず、ディスカッション内容の紹介に終わっていました。僕のグループでは、バグだらけでテストしなくなった、テストがうやむやになってしまう、前工程が遅れるのでテストは圧迫、オブジェクト指向設計で進めると小さいクラスの組み合わせになるのでテストケースが減らせる、テストコストが一番小さくなるのは設計でテストを考えること→TDD、画面単位で担当を分けてしまうと冗長になってしまう、等の議論がありました。終わり間際に細谷さんによる欲求→願望→要求→要求モデル→ソリューション仕様→ソリューション実現のV字モデル(?)の紹介がありました。いくら要求で合意を取ってソリューションを作っても、願望や欲求のレベルが満たされていないと「違う」ことになるねというお話です。そこで要求を定義して分析する替わりにいきなりソリューションをぶつけてしまうというやり方もあるねということが述べられていました。何となく聞いていて、ショッピングに近いなと思いました。何を買いたいか要求が明確になっていないでお店を回っていくつかの選択肢から選んで買うという流れです。これからのソフトウェア開発のヒントになりそう。
 8/6は会社を午後休を取ってアスペクト指向技術セミナーに参加しました。鷲崎さんの発表では、配布資料で構造化プログラミングとオブジェクト指向プログラミングの違いがうまく説明されていて変なところで感心してしまいました。Javaの標準APIのDynamicProxyも一種のAOPだそうです。メソッドコールのフックのみで、しかもinterfaceで定義されたものに限定されますが。なるほど。ひがさんの発表ではSeasarにおけるAOPの紹介で、話題のSeasarが少しかいま見れました。「簡単に使える」を目指してメソッドにだけpointcutできること、Javaの文法でOKなようにしたとのこと。Seasarのコンテナは汎用なのでJ2EEの用途に限らないものとのことです。立堀さんの発表ではAspectJでデザインパターンの実現をする例が紹介されました。これはなるほどよさそうな適用方法です。特にObserverは使えます。本来モデルにリスナー管理機能と通知機能を実装するのはオブジェクト指向的(責務の割り当て的)には汚いなと思っていたので、Aspectで分離することができるのはとてもきれいと感じました。
 8月度の累積図書費は4515円。
2004.7.19
 Cygwinの日本語化はじめとした情報が載っている「Cygwinで便利!」。
 IEEE Software 2004/7-8月号に、Scott Meyers氏の記事"The Most Important Design Guideline?"が記載されています。「利用者がインタフェースの使い方を間違ったら、それはインタフェース設計者の過失」という主張がよいです。記事から離れますが、間違わないように(せめて間違っていたらそれを直ぐに発見できるように)、事前・事後条件と例外を使用したりアサーションを使用するのも一つの方法です。インタフェースの誤りは、ユニットテストでも検出できず、統合テストでは運がよければ検出できますが、発見・修正コストが高いものにつきます。運が悪いと運用中に検出されることになります。
2004.7.10
 EJBのプログラム作成にXDocletを試行中。とりあえず世の中のサンプルにあるAntから呼び出す形で使っています。Mavenに少し慣れた段階でAntを使うと、面倒だなと思う他に、Antのbuild.xmlを作るのは「こぴぺ」作業だなということを改めて感じます。「こぴぺ」は作業ミスを誘発する原因(俗にバグの元凶)ということも痛感しました。
 さて、MavenからXDocletを利用するにはどうするのかな。。。
2004.7.6
 先月買った「ソフトウェアエンジニアリング」(Eric J. Braude著、羽生田栄一監訳、翔泳社刊)を読み始めました。オブジェクト指向技術をベースにしたソフトウェアエンジニアリングの教科書といった内容の本です。プロセスのところで登場する図がRUPの有名な絵(フェーズとワークフローのマトリクス)だったりします。品質保証といった大事な概念も解説されています。構成管理がしっかり登場します。People、Process、Product、Projectがソフトウェア開発4大要素として取り上げられています(分析設計実装テストではないんですね)。PSP、TSP、CMMとプロセス改善の話が出てきます。
 @ITに、J2EE1.4でのXML記述がDTDからXML Schemaに変更になったという記事が掲載されています。J2EE1.4を弄ぶページにリンクを追記しました。また、J2EE BlueprintsのAdventure1.0の起動方法を追記しました。
2004.7.4
 Java Hello Again Desktop編の1.0.2リリースです。ダイアログの文字列のセンタリングとJARファイル中のバージョン情報の取り出しを追加しました。
2004.7.1
 MavenがRC4にバージョンアップ。
 @ITで開発プロセス再入門の記事が連載されています。ビルド、QAの立場でソフトウェアのリリースの観点での管理と言う点がとってもよい。上流工程は単純にプロセス化することが非常に困難なので下流に着目しています。  Java Tigerの正式バージョンは5.0にするような。Solarisのときに、2.6の次を2.7ではなく7としたのと同じ商業戦略だろうけど、、、
2004.6.27
 WEB+DB PRESS誌Vol.21購入。昨日の読書会2次会でも話題になりましたが、最近テスト関連の技術が盛り上がりつつあります。特集記事がテスト手法だったので買い。ただ、やはりツールについての記述が多いかな。
 Maven絡みのURL。
2004.6.26
 読書会は過去最高の人数でした。会場手狭でした。飲み会にも20人強が参加し盛況でした。
2004.6.25
 昨年日経ITプロフェッショナル誌2003年12月号に、電通国際情報システムが定めたJavaコーディング規約2003について掲載されています。各規約について、悪いコード例と良いコード例が並列に書かれている点がよいです。なお、この規約が書籍化されています。「超図解 Javaルールブック
 明日はJava読書会。「UMLモデリングの本質」です。今回は参加者が多く、会場定員一杯になってしまいました。来月は定員が今回より多い場所にしたのですが。。。
2004.6.24
 伊藤昌夫さんの記事群からいくつか興味深いものをメモ
2004.6.21
 明日はJava World Day。ランボーさんの講演から開始になります。OMTからオブジェクト指向の表記法に入ったのでちょっと感慨深いですね。
 Javaの仕事からは離れていますが、Javaをやりたい事はアピールしなければと職場では4月から毎週1回1〜2時間のJavaチュートリアルセッションを続けています。Software People誌Vol.1の記事「コミュニティカルチャーを育てる」で紹介されたIn-House Tutorialを昨年から職場に導入して、その延長にあるセッションです。なかなか仕事に追われて新しい技術には取り組んでいかない風土を少しでも変えて行こうということでしたが、まだまだ定着したとは言えない状況です。まあ、今の職場にいる限りは続けていこうと思っています。毎回題材を用意するのも大変なので、@ITサイトIBM developerWorksサイトなどで紹介されている記事からその回のトピックによさそうなものをチョイスし、皆で見てみると言う形で進めています。これなら主催の負担も開催通知と議事録配布だけなので、仕事の合間に週1回実施しても楽です。jvmstatのデモとかJava2Demo/SwingSet2デモなどをプロジェクタで紹介するなども取り入れてみました。本日は、JavaWebStartの紹介を行いました。日曜日ずっとJava Web Startにチャレンジしていたのはこのためでもあったのです。次週は無謀にもJ2EEのサンプルアプリケーション(簡単なもの)を紹介することになっています。
 仕事に身が入らず、IEEE Software誌2004 March/April号の記事"Overlookded Aspects of COTS-Based Development"を読みました。中小規模のシステム開発におけるCOTSの利用状況の調査を元に書かれた論文です。あちらでは、COTSを組み合わせる開発をCOTS-Basedとカテゴリ化して区別しているようですね。この論文では調査結果から、COTSというものに対する共通の理解がないことや、COTS製品を選ぶ基準、などを抽出しています。SEIのサイトにも、CBS:COTS-Based Systemというコーナーが立ち上がっています。ソフトウェアの開発の仕方について個人的にいろいろ検討しているところなので参考になります。
2004.6.20
 Emacs lispのnxmlを使用しようとすると、nxml-mode is not compatible with Mule-UCS とエラーになってしまいます。nxmlは、James Clark氏の作でよさそうなモードだったので残念。XMLでは日本語を記述するのにUTF-8を多用するので、Mule-UCSは外せないのです。
 HelloAgainのJava Web Start編プロジェクト開始。一見簡単なようで、時間を食っています。
2004.6.19
 JDK1.5(コード名"Tiger")のフォント設定ファイルがちょっと様変わりしています。それまでは、font.properties.ロケール名.OS(ディストリビューション)名 という形でしたが、今回からは、fontconfig.OS(ディストリビューション名).bfc およびfontconfig.OS(ディストリビューション名).properties.src の2つに分かれています。前者がバイナリファイル、後者がテキストファイル形式です。設定内容についてはまだ不明(今後の調査が期待される)。今のところGentoo Linuxでの日本語化がうまくいっていません。
2004.6.17
 Javaの仕事から遠ざかって3年以上が過ぎてしまっています。最初の1,2年は、組み込み系のC言語や大規模なC++言語といったものを経験できて、Javaとの比較もでき、それはそれで良しとも思えていたのですが、あまりに長く遠ざかりすぎてきたかな。まあまるっきりゼロと言うわけでもなくて、途中に新人向けの教育でJavaを取り入れたりはしていたのですが。世の中には、プログラミング言語なんてどれを使っても一緒で(多少語弊あり)、どれを使うか適材適所で選べばよいという意見と、プログラミング言語によって考え方(設計の仕方)も縛られるので、よい言語を使うべきとの意見もあるようです。また、優れたプログラマーならばどの言語を使ってもよいプログラムが作れるというのもあります。しかし、プログラミング言語の選択は何故かプログラムしない人間によって非論理的な理由で決められてしまったりするのですが・・・。
 J2EE1.4のUpdate1がリリースされている。このUpdate1というのは、Sunの製品におけるマイナーバージョンアップで用いられる表現ですね。SunのJ2EE1.4実装は、従来のReference Implementationという形の提供ではなく、Sun Java System Application Server Platform Edition 8という製品の無償提供となっています。なので、このApplication Server Ver.8のUpdate1という表現になっていると思われます。
2004.6.13
 セッター/ゲッターの記述で、つい間違いをしてしまったのに気づかず、あちこちログを加えて時間を費やしてしまいました。ユニットテストはセッター/ゲッターについても書くべきです。
 Java Hello Again Desktop編の1.0.1リリースです。前景色/背景色の変更機能に対応したものですが、かなり複雑になってきました。ソースコード行数(総行数)1580、メソッド内のコード行数の合計593というメトリクス値です。
 Javaにマルチスレッドの紹介記事のメモ。職場で週一回開催しているJava勉強会のネタ用。
2004.6.9
 JDIC : JDesktop Integration Components というのがSun(javadesktop.org)から打ち出されました。Javaアプリケーションと、OS固有のアプリケーションとをよりシームレスに統合するための環境で、例えばHTMLブラウザを埋め込み使用したり、メールツールを起動したり、ファイル種類に対応付けられたビューアを起動したり、JNLPアプリケーション(つまりJavaWebStart)をRPM、SVR4、MSI等のOS固有パッケージ化したりといったことができるようです。Java Web Startのデモプログラムがあるのでデモを動かすことが簡単にできます。
 
2004.6.7
 Java Hello Again Desktop編のプログラムを作成していますが、GUIの設計においてロケールを考慮するときに、メニューのニモニックが問題になっています。英語ロケールの場合、"File"メニューのニモニックに'F'を設定すると、表示が[File]と'F'の下にアンダーバーが付加されてます。一方、日本語ロケールの場合、"ファイル"には'F'の文字がないため、アクションとしては有効なのですが、ニモニックが見えなくなります。Mozillaなどのアプリケーションでは、[ファイル(F)]のように、ロケール依存文字列の末尾にニモニックの文字を()で付与して対処しているようです。なるほど。。。
 Java Hello Again Desktop編のソースとバイナリを暫定リリース。さて、バージョン管理はCVSにしようかSubversionにしようか。
 Beautiful Looking Java Applications というスレッドに、きれいなJavaのアプリケーションのスクリーンショットが載っています。SmartCVSってどうだろう?
 Cygwinで'ls'コマンドを間違って'sl'と打ったら汽車が通り過ぎていった。世の中的には有名な話しのようだが、今まで知らなかった・・・。
 Maven v.s. Ant。Mavenでは標準で提供される手順(ゴール)にはないことを追加するのが大変。Antなら手順を自分で書いているので追加は楽。ただし、Mavenで提供される手順は魅力的。ある意味手順が標準化されているといえる。Antで手順を標準化しようとしても、プロジェクト依存が強すぎて結局雛型を用意してコピー&ペーストでの再利用が限界。ということで今の時点ではMavenを推すかなぁ。
2004.6.6
 ここのところ本を買う量が急増してしまった。出費もそれなりだ。仕事への不満から現実逃避へのパワーが増したのがおそらくの原因。この4月以来の本は、
 ソフトエア再利用の神話、C++プログラミングの処方箋、X Windowで遊ぶ本、J2EEアンチパターン、EJBシステム開発ガイド、暗号技術大全、JUnitインアクション、ソフトウェアプロダクトライン、AspectJによるアスペクト指向プログラミング入門、JUnitによるテストファースト開発入門、UMLモデリングの本質、ソフトウェア開発55の真実と10のウソ、Enterprise Integration Patterns、デスマーチよさようなら、基本から学ぶテストプロセス管理、
 そういえば、オブジェクト指向技術にべったり取り組んだのも会社に入った年で、仕事への不満からだった。不満の質は違うが、現実逃避は勉強意欲を増大させるスパイスだ。
2004.6.2
 今日は現実逃避だなぁ。ゆっくりと過ごした日。近所でおいしいランチを食べて○。後述のJava Hello Again Desktopのプログラミングを堪能して○。やっぱり人に作らせるでは駄目で自分で作るがよいなぁ。
 @ITの記事「モチベーションをアップさせる方法」。仕事のモチベーションが完全に低下しているのでよいタイミングの記事です。しかし・・・。今日の現実逃避行動はすべてこの記事に書いてあることばかりだ。好きなことをやっておいしいものを食べて・・・。何も解決していないぞ。
 Java Hello Again Desktop編のページにおいて作成しているJava Desktop版Helloプログラムとりあえず動作レベルになってきました。メニューバー、ツールバーを備えたGUIプログラムとなると、結構な量になります。ソースコードは動かすために書いたレベルなので、これから少しきれいにしていく予定。ページの説明も充実させていかないと、というところです。しかし、なかなか進まない。JavaWebStart版やJ2EE版に着手するのはいつになることやら。
2004.5.31
 Java 2 Standard Edition, ver.1.5.0(通称"Tiger")では、Java2DのレンダリングパイプラインにOpenGLを使用して性能を上げる機能が取り込まれています。-Dsun.java2d.opengl=true を指定すると有効になります。残念ながら、RADEON 9600 では正常に表示されません。NvidiaとATIの最新ドライバではだめっぽい記述があります。
 (補足)BugID 5033205、
2004.5.29
 Java 2 Standard Edition, ver.1.5.0(通称"Tiger")のセカンドβ版がリリースされています。
長年の懸案であったSwingのMetal look&feelにおける日本語フォントのデフォルト設定(Bold)が汚いというのが改善されています。下記は左側がJava version 1.5.0-beta2、右側が1.4.2_04です。(確認したのがWindows2000上だけですが)
 
ソフトウェア・ピープル Vol.4の特集記事「人と組織のWin-Winマネージメント」をもう一度読み直す。現在の会社におけるポジション(役割)と自分の目指すところをどう調整するか。
 ソフトウェアを作ることを原点から見直す必要がある今日この頃。
2004.5.23
 昨日は読書会で、「EJBデザインパターンを読む会」の最終回でした。
2004.5.18
 @ITの記事「外資系コンサルタントのつぶやき 第23回 プログラミングスキルをもっと評価すべき」は、上流偏重でプログラム品質が下がることを憂える(?)内容となっています。うんうんと頷く内容です。プログラミング技術は数ヶ月で得られるものではないのです。しかし、大抵の会社では評価されないので、本来はやっと一人前に達するかどうかの経験を得たレベルで現場から離れてしまうのでしょう。多重下請け構造では、個人のスキルによる価格ではなく新人もベテランも一律で人月いくらの世界です。一方ソフトウェアは書いた人のスキルに品質が依存します。低レベルの人が書いたプログラムは低レベルの品質です。ソフトウェアの一部分でも低品質であれば、それが全体の品質を下げてしまいます。
2004.5.15
 EJBは3.0へ向けて、インタフェースの制約を解除したり、実装クラスにメタデータのタグを記述してインタフェースを自動生成させたりという方向に向かいます。これって、インタフェース主導設計から離れるように思われるのですが・・・。自動生成させるということは、ちょっと実装をいじっても毎回インタフェースが生成し直されるので、変更管理が大変になるのではないかとか、気軽にインタフェースをいじってしまって変更の波及が広がるのではないかとか、ちょっと危惧があります。システムの仕様が一人の頭の中に入る程度の規模でかつ再利用はプロジェクト内という開発であればよいのですが、システムの仕様が複雑で多くの人の間で整合を取るように調整されなくてはならない規模の場合、ころころと変更されては困ることが多いはず。Sunよ、VBなんかを目指してどうするのか?
 Gentoo Linuxを入れている。かなり手作業で構築するので面倒な点はあるが、好みの設定に仕上げることができる。Debianに似てなくもないが、安定性よりは最新版への追従を優先しているので、開発マシン用途には絶好である。また、Java関係のパッケージも充実しており、SunのJDKは1.5.0βもパッケージ化されており(バイナリ自体はSunからダウンロードする必要あり)、ライブラリ群については、Ant, AspectJ, Avalon, Batik, Jakarta Commons, DBUnit, FOP, groovy, hibernate, javacc, 各種JDBC, JGraph, POI, Struts, Velocity, XDocletなどなどがパッケージ化されている。Emacs用JDEEも2.3.3と公式リリースの最新版である。JavaはApache/Jakarta系のよく使うライブラリを手作業でインストールしていたが、これらがパッケージ化されているのはうれしい事である。
2004.5.12
 ソフトウェア開発において「正しいこと」の認識が共通化されていないという意見もあります。うむむ。
 ソフトウェアを毎回スクラッチ&ビルドで作成するという方法と、過去に作成した部品を再利用してそこに追加するという方法とがあります。スクラッチ&ビルドの場合は、作りやすさが優先されるので、設計が難しいものは敬遠されがちです。一方再利用の場合は、設計が難しくても繰り返し利用されることによってペイできるので、手を加えずにいかに再利用できるかがポイントになります。また、スクラッチ&ビルドは環境依存しまくっても問題ないのに対して再利用は環境依存を極力排さなくてはなりません。EJBは明らかに再利用を目指すフレームワークなので、難しい構造になっています。これがEJBが敬遠される理由ではないかと思います。今までのソフトウェア開発はスクラッチ&ビルドが主流でした。しかし、短納期・低コストでかつあらゆる品質も要求されるようになると、はたしてどこまで対応できるのでしょうか?品質は今まではバグの数が問題でしたが、これからはセキュリティホール、障害への耐性なども要求されるようになってきます。バグの数はコード量に比例するので、バグを減らすには作成するコード量を極力減らすことです。セキュリティホールは設計やコードに対してその専門的な知識からの検証が必要です。障害対策も同様です。多岐に渡る品質を一人のプログラマーが保証することは困難です。ソフトウェアをそれぞれ専門的な観点で検証して品質を高める必要があります。他人の作ったソフトウェアを検証することは非常に難しいことです。検証するには、なるべく小さなサイズでかつ独立性が高いことが必要になります。つまり、一枚岩の巨大ソフトウェアではなく、独立性の高い小さな部品の集合で構成されるソフトウェアであることがポイントです。ここにこれからのソフトウェア産業の姿があるように感じています。
2004.5.9
 ソフトウェア開発をうまく進めるには「正しいことを確実に実施する」につきると思います。いろいろな人と話していると、何をすべきか(=正しいこと)は皆頭では知っているのです。それが実施できないところがソフトウェア開発の問題の根源です。「正しいこと」より自己の保身を優先すると、プロジェクトは崩壊します。自分の担当外だからと課題を放置したりすることもあります。今決めるのは大変だからと後回しにしたり、ということもあります。プロジェクトの構成によっては、担当者が「正しいこと」をしようとしても、自己保身を優先するマネージャに一喝されて、だんだんモチベーションを失っていくということがあります。もっとも自己保身をしているという意識はないのでしょうが・・・。組織(会社)の体面を気にするとか、できないと言うと角が立つと思い込んでいるとか。人月見積もりも駄目と言われながらいつまでたっても変わりません。
2004.5.7
 JDEEが依存しているSemanticを(setq semantic-load-turn-useful-things-on t)で使用すると、Javaのソースのクラス、フィールド、メソッドなどの行にオーバーラインが付きます。
2004.5.6
 GWは、Gentoo Linuxに取り掛かっていました。詳細はココログの方に書いています。ココログは日記のように日々の内容を書こうと思っていました。が、ココログは特定のトピックについてあとからどんどん付け足すのに向いていて、逆に単純なHTMLのこのページの方が日記向きなのではないかと思う今日この頃です。
 JDEEの2.3.4β3がリリースされました。活発にβテスト中です。
2004.4.26
 JDEEの2.3.4β1がリリースされました。J2SE SDK1.5にも対応しています。
 Cygwin環境でJavaを少し快適に使うためのページの加筆。汎用java_wrapperも第1版といえるレベルになったかと思われます。
 スタブ不要なRMIのページ(J2SE 1.5)の誤記を修正。サーバ実行時のcodebase指定に誤りがありました。リモートインタフェースのクラスがあるディレクトリを指定しなくてはなりませんでした。
2004.4.25
 先週末はJavaごはんでした。今回はデンマーク料理でしたが、飲んだ量の方が食べた量より多かったという感じです。最近、過去に行ったJavaごはんレストランが記憶からあぶれてしまっています。行ったお店リストが欲しいなぁ。
 本日の購入書籍・雑誌  Cygwin環境でJavaを少し快適に使うためのページを作成開始。
2004.4.21
 先週末は「Java読書会」がありました。前からエラー処理設計についてのパターンってないのかなと疑問に思っていたら、「EJBデザインパターン」書中に、Exception Patternsのリンクが載っていました。Exception Patternsのサイトを見ると、例外型の定義に関するパターン、例外の発生に関するパターン、例外の処理に関するパターン、例外とテストに関するパターン、例外の使用時期に関するパターン、例外使用の代替に関するパターン、C++/C(!)/Javaのイディオムなどがサイトに掲載されていますね。
 JDEE(Emacs用java開発環境)の次バージョン(β版)が来週あたり出るようです。JDK1.5対応と、依存するLispパッケージの最新版への対応、多くのバグフィックスが実施されるようです。
 情報処理学会ソフトウェア工学研究会パターンワーキンググループが主催する(うー、長い)「ソフトウェア再利用とパターンに関する特別セミナー」に参加してきました。RAS(ラズと発音)と呼ばれるソフトウェア成果物をパッケージングする標準仕様の話と、メッセージングを主軸にしたシステム間連携の設計に関するパターンについての話の2点でした。前者はIBMラショナルのGrant Larsen氏、後者はThoughtWorks社のGregor Hohpe氏が講演。RASについてはコードだけでなく、設計書、使用法、テストなどの成果物も資産(Asset)として管理する。OMGに提案しており、今後標準となる可能性があります。後者のHohpe氏は、書籍"Enterprise Integration Patterns"の著者です。
2004.4.15
 書籍「JUnitによるテストファースト開発入門」(サイバービーンズ株式会社著、ソフトバンク刊)を購入。JUnit本はいくつか出ていますがいずれも期待外れだったのでこれもどうかなと思っていたが、どっこい良書でした。ちゃんとテストについて書かれているではないですか。テストケースの抽出方法、契約による設計とアサーション、テスト管理など。さりながら、ツールの説明も充実していて、JUnit他定番のテストツール以外に、Maven, CruiseControl, XPlannerなども扱っています。
 書籍「デスマーチよ!さようなら!」(深沢隆司著、技術評論社)を購入。これもいいですね。プロジェクトを成功させるための実績・経験に基づくノウハウがいろいろあります。技術屋としては、口先だけの主張ではなく、実績を持って主張するものを信用します。
2004.4.7
 Java How to Programmingページに、パッケージバージョンを追加しました。パッケージのバージョンを扱うための方法のメモです。
2004.4.4
 Java How to Programmingページコレクションを扱うプログラミングに、J2SE 1.5で導入された拡張for文を使用する例を追加。同じく型に安全な定数の作り方に、J2SE 1.5で導入された型に安全な定数enumを追加。
 Meadow 2.00とSKKの相性がいまいちです。SKKでかなモードで入力を行っていると、ある程度の頻度でキャレットがBufferのトップに飛んでしまい、以後SKKのかなモードでもかなが入らず半角英数字が表示に表われる状況に陥ってしまいます。再現方法が確定しないので厄介かな。こうなった状態からの回復方法として、C-x tでSKKのチュートリアルを起動し、チュートリアルを終了させるやり方があります。Meadowを再起動するより早いので、当面これでしのいでいます。
 Software People誌 Vol.4が出版されています。特集記事の「要求の仕様化入門」は、ソフトウェアエンジニアとしては必読ですね。要求と要求仕様の違い、重要です。前半から以下キーワードをメモ。  明日職場内に発信する技術レターの作成。今回はアサーションをテーマにしています。アサーションについては、Java World誌2002.6および2002.9に記事がありました。技術レターは週1回発行を目標にしていましたが、長期間間隔があいてしまったりとなかなか実現が難しいです。きちっと毎週メルマガとかを作成できる人は素晴らしいですね。
2004.3.31
 J2SE 1.5でjava.net.InetAddressクラスにisReachableメソッドが追加されています。これは、そのアドレスに対してIP reachableかどうかを問い合わせるメソッドで、いわゆるping機能に相当します。実際にICMP Echoが飛んでいるかどうかEtherealで調べてみると、、、
        try {
            InetAddress address = InetAddress.getByName(args[0]);
            boolean isReachable = address.isReachable(TIMEOUT);
        } catch (IOException e) {
Linux Fedora Core1上のJ2SE SDK 1.5.0beta1の場合、一般ユーザで実行するとTCPポート7番(Echoポート)への問い合わせとなっていました。root権限で実行すると、ICMP Echoパケットが飛びました。
Windows2000上のJ2SE SDK 1.5.0beta1の場合、Administrator権限で実行するとICMP Echoが飛びました。一般ユーザ権限で実行すると、マシンによって1) SocketExceptionが発生する 2)結果がfalseとなるがICMP Echoは飛んでいない、との結果になりました。
2004.3.30
 スタブの要らないRMIプログラムの例を作成しました。
2004.3.29
 CMPエンティティBeanとステートレスセッションBeanとの組み合わせによるEJBアプリケーションの例までをJ2EE 1.4を弄ぶページに加筆。J2EE SDKのPointBaseのテーブルにアクセスするツール(startconsole)の使い方も加えています。
 EJBは賛否両論ある技術です。今回J2EE SDK 1.4にTryしてみて、最初の関門がかなり高いことを痛感したところです。確かにソースコードを記述する部分は非常に簡潔ですが、コードがどのようにデプロイされ、どのように自動生成コードが作られて、かつどのように実行されるのかをきちんと把握することはかなり困難といえます。コードを作成するよりも、EJBの環境を理解し構築していくためのノウハウの方が難しいほどです。この部分をどう捉えるかが賛否両論の所以なのでしょう。
 1台のサーバで全てをまかなう小規模なシステムでは、EJBの持つスケーラビリティやトランザクション、ポータビリティは無用なので、わざわざEJBを使うことによる性能上のオーバーヘッド、開発・運用に要する技術知識のオーバーヘッドを許容することに疑問が生じるでしょう。また、既にデータベースが構築され、これにWebインタフェースを追加するような開発では、EJBの足枷が重くのしかかり、不自由さからEJB技術への疑問が生じるでしょう。EJBは、単独システムの開発を加速するような(俗にRAD)機能をあまり提供していません。また、特定のWebサーバやデータベースの機能を活用するような設計にも融通が利きにくいからです。例えば、Tomcatの認証とかデータベースのロック・トリガーといった機能をべたに使うアプリケーション設計を行う場合、EJBとは相性が悪くなってしまうでしょう。
 EJBが力を発揮するとすれば、いくつものシステムが連携しており、個々で作成したコンポーネントが別なシステムへポーティングされるような環境でしょう。コンポーネントが別なシステムで利用可能な条件をEJBでは押さえています。個別システムの最適化よりも企業なり組織なりの最適化を狙うような戦略的な観点での適用です。
2004.3.28
 J2EE SDK 1.4で、ようやくCMPエンティティBeanの配備までたどり着きました。Deploytoolの使いこなしが結構重要となります。J2EE 1.4を弄ぶページに加筆中。
 コンポーネント技術やフレームワーク技術が進歩すれば、確かにアプリケーションの記述は楽になります。しかし、それは本来プログラムがコンピュータ(やネットワーク)上でどのように動くかといった基盤についての知識を隠蔽する層が充実してきたからです。プログラムとしていざ何か問題が発生した場合は、隠蔽していた知識を掘り起こしていかなくてはなりません。隠蔽が却って災いとなってしまうのです。
2004.3.26
 J2EE SDK 1.4 FCSに入れ替え。
2004.3.22
 J2EE SDK 1.4のDeploytoolには、言語環境(ロケール)が英語でないとエラーが発生する模様。回避方法をJ2EE 1.4を弄ぶページに記載しました。
2004.3.16
 今週末はJava読書会の日です。「EJBデザインパターン」が課題図書ですが、EJBは使ったことがなかったので、読書会では参加者の皆にお話を聞けるので非常にためになります。
2004.3.14
 EJBクライアントをC++で書く場合、CORBAを使用してEJBサーバと通信することになります。CORBAにTAOを使ってみたところ、どうもJavaのrmicで生成したIDLファイルをコンパイルできないようです。
 コンポーネントがバイナリで流通することを想定すると、ソースを修正したりコンパイルし直さずに、セキュリティによる制御や使用するミドルウェアを組み込む必要があります。このあたりがJ2EEのコンポーネントが目指すところに感じられます。
 Niftyのウェブログ(ココログ)を使い始めてみました。とりあえずここ
2004.3.13
 EJBやJavaの考えの一つに、永続ストレージの変更に対応できることがあります。これについては、RDBMSを変更する可能性はプログラムを変更するより少ないので実質的ではないという意見があります。一つのシステム範囲だけをみれば、RDBMSを変更することはないでしょう。しかし、EJBやJavaはもっと広範囲なソフトウェア再利用を狙っています。あるシステム範囲で作成したコンポーネントを、別なシステム範囲(別企業であることも十分考えられる)に移行することまで考慮すると、そこで使われている永続ストレージが異なっていることはよくある話です。ソフトウェアを変更せずに異なる永続ストレージに対応するという思想が初めて生きてくるのはそんな状況でしょう。さて、このソフトウェア再利用、ソフトウェア技術の長年の夢の一つですが、ようやくJavaによって実現性が見えてきたように思います。あとはソフトウェア再利用を阻むものは人間自身です。
 J2EE 1.4 SDKにてステートレスセッションBeanの開発が一通りJ2EE1.4を弄ぶのページに記述できました。かなり「弄ばれ」ました。よく分からないことも2,3ありますが。。。続いてエンティティBeanに着手する予定。
2004.3.11
 J2EE 1.4 RIでEJBクライアントを実行するときに、JNDI設定に何を指定すればよいのか1週間ずっと悩んでいました。試行錯誤とインターネットを調べまわった結果、以下の設定で通すことができました。
JNDIプロパティのキー 設定値
java.naming.factory.initial
com.sun.jndi.cosnaming.CNCtxFactory
java.naming.provider.url
iiop://localhost:3700
2004.3.3
 J2EE 1.4 RIベースで初めてのEJBプログラムの配備までたどり着きました。HelloレベルのちゃちなEJBですが、手順を把握するまでが大変です。一度把握すればいいだけなのですが。その内容はJ2EE1.4を弄ぶのページ参照。タイトルとはうらはらに実際にはJ2EEに弄ばれているかも。このあとはクライアントを作成していきます。クライアントはJavaとC++(CORBA経由)を作成してみる予定です。
2004.3.2
 Microsoftから"Windows Services For UNIX ver.3.5(日本語版)(略称SFU)"が無償(要ユーザ登録)でダウンロードできるようになっています。Windows上でUNIX環境を使う際のCygwin以外の選択肢としてよさそうです。Cygwinでは日本語対応が今3つ位なので、日本語が使いたいときはよいかもしれません。bashが無いのが痛いと思ったところ、既に世の中にはSFU用のbashが公開されていました。SFUのインストールや追加コマンド等の情報が記載されているページSFU installがありました。SFUとCygwinを比較した記事「マイクロソフトSFU vs Cygwin - Windows上のUNIX互換環境を徹底比較」も参考になります。
Cygwin
Interixサブシステム Win32サブシステム
OSカーネル
2004.2.29
 J2SE 1.5(開発コード:Tiger)でRMIを使用するときには、もはやrmicを使ってスタブを生成する必要はなくなっています。内部的にはDynamicProxyを使用して、リモートインタフェースへの呼び出しを仲介することによってスタブを不要にしている模様。スタブを事前に作成していてもOKで、このときはDynamicProxyではなくスタブクラスが使用されるようです。これで単にリモートインタフェースとその実装クラスを普通にJavaで書くだけで、RMIプログラムが出来るようになります。この機能も確か2000年頃にBillJoyのインタビュー記事の中で触れられていたのですが、JDK1.4には含まれず、ちょっとがっかりしたことを思い出します。昔Voyagerという分散ORBがあって(今もあるかもしれない)、今回TigerでRMIが取り入れたような機構を既に実現していたのですが、RMIもようやく取り入れたという所です。
2004.2.28
 J2EE 1.4 で初めてのEJBプログラムを作成開始。意外なことに、書籍や雑誌記事には具体的なコマンドの実行方法やら設定まで記載されているものが見当たりません。アプリケーションサーバの種類によって異なるからと思うが、これではEJBに取っ付きが悪いのも仕方ないかも。ベンダーの技術者は自社製品の記事を書くだろうし、日本Sunはなぜか書籍・雑誌にはあまり登場しないし、フリーライターはほとんどJSP+Servletどまりだし、WebにはあってもJBossでの手順が大半だし、・・・。
 おっと、Java読書会の時間だ。
2004.2.24
 なかなか忙しくてJava Technology Conference2004(JTC2004)について記載できていません。最近なぜか夜に弱くなっており、家に帰って夜中にPCを操作していると睡魔であまり創造的な作業ができないのです。朝型にシフトさせないと・・・。
 J2SE 1.5(開発コード:Tiger)はなかなか面白そうな機能が拡張されています。今日のTigerは、lintオプションです。例は以下
$ javac -Xlint Foo.java
Foo.java:4: 警告: 直列化可能なクラス Foo には、serialVersinoUID が
定義されていません。
public class Foo extends JFrame {
       ^
警告 1 個
$ 
2004.2.19
 昨日・今日とSun Technology Conference2004に参加してきました。今年のテーマはEoD(Ease Of Development)のようです。Java 2 Standard Edition, v.1.5で導入されるMetadataをベースにEJBやJDBCやJAX-RPCなどが簡単に記述できるようになっていくらしいです。また、Java Server Faceをベースにした開発環境Java Creatorも近々リリースされる模様。
 Hotspotについては、昨年のJDCセミナーの方が内容が濃かった。紹介された技術資料やツールを以下にメモ。 System.gc()を呼び出すと、フルGCが発生するため、長い停止時間が生じることになる。呼ばない。finalize()が実装されていると、GC時にそれを起動するので停止時間が長くなってしまう。
 その他トピックについても数日内に触れる予定。
2004.2.18
 「ソフトウェアエンジニアのためのホームページ」の清水さんが書いた書籍「SEの仕事を楽しくしよう」が出版されています。上記ページを見て出版社(SRC)にインターネットで注文すると3割引で買えます(今月一杯)。よいことが書かれています。素晴らしい内容ですが、実践するのは大変。しかし日々心がけ、できることをするのが大切です。そういえば、ホームページの中に、日記を書く習慣を薦めている個所があったなぁ。
2004.2.10
 IBM developerWorksに「TriActive JDOの実践入門」が記載されています。オープンソースなJDO実装TriActive JDO(TJDO)を使った記事です。TJDOはApache Software Licenseで提供されます。O/Rマッピングのツールはいくつかありますが、フリーのものはJDO仕様に適合していないのばかりでしたので、ちょっとめっけものという所です。
 なぜかTiger(J2SE 1.5)でC言語標準関数printfの模倣が取り込まれています。
public class Hello {
    public static void main(String[] args) {
        System.out.printf("Hello, %d", 123);
    }
}
と記述すると、"Hello, 123"と出力されます。ちなみに上記コードではAutoboxingも使っています。printfメソッドの2番目以降の引数はObject型なので、基本型は取れないはずなのですが、しっかり使えています。
2004.2.9
 引越し後ようやくネット接続環境が整い更新再開です。ADSLからCATV環境に移行したのですが、幸いにしてURLは変わらずに済みました。パソコンは3方がダンボール箱に囲まれている状況。
 Java 2 Standard Edition, v1.5のβ1版がリリースされています。早速インストール・・・。
 AspectJのページがいつの間にか1万ヒットを超えている状況。放置しっぱなしなので、少し手を入れるのを再開しようかな。JavaDeveloper誌で鈴木純一さんによる連載も始まったことだし・・・。
2004.1.22
 Java読書会の2004年最初の本は、「EJBデザインパターン」になりました。いよいよEJBに手を出すことになります。サーバ・サイドJavaは避けつづけていたので(というか、CORBAでゴリゴリ作ってしまうのでJ2EEを使う理由がなかった)、ちょっと新しい分野にチャレンジで新鮮です。
 プライベートではお引越しが控えており、更新がはなはだ滞っています。次の更新は来月になる見込み・・・。
2004.1.10
 やりたい仕事は自分で作るしかない。受身でいるといい仕事はこない。やりたい仕事を獲得するには、政治力が必要。知識が多いだけでは駄目だ。ということを改めて認識しました。
 「Java読書会」は、今度の1月31日(土)から新たな本を課題にスタートします。これから読む本を投票で決定します。投票はこのページから誰でもできますので、Java読書会メンバーに限らず投票してみて下さい。現在、「EJBデザインパターン」と「実践J2EEシステムデザイン」が1票差で1、2位を競っています。また、新規参加者も大々的に募集していますので、是非参加してください。読書会は毎月1回土曜日に10:00〜16:30位まで、本を朗読し、随所で質問・意見を出し合いながら進めていきます。「こうしてはいけないと書いてあるけれど何故ですか?」、「この著者の主張は間違っている。これでは・・・」、といった感じです。参加者も、Javaの達人から何となくJavaに興味があるけどといった人まででバラエティに富んでいます。ただ、臆してしまって発言できないと参加しても辛いかもしれません。初対面だと発言しづらいんでしょうね。(怖い人はいないんですが・・・)
 Mavenで、Webアプリケーション(Javaソース+JSPファイル)を構築しようとしていますが、ちょっと設定が難しいようで成功していません。調査中。
2004.1.7
 IBM developerWorksの記事「Merlinの魔術:動的イベント・リスナー・プロキシー」にて、java.beans.EventListenerクラスを使ったSwing部品のイベントリスナー処理の例が解説されています。このクラスは、各種イベントリスナー型のインスタンスを生成することが出来て、かつリスナーに対してイベントが通知されると、生成時に指定したインスタンスの指定したメソッドをコールする機能を持っています。言葉で表現すると難しいです。この方法は、C++で時折り使用されるSignal/Slotパターンに似ているなぁと思いました。利用方法としては、イベントリスナーの処理が単に別なインスタンスのメソッドを呼び出しているだけならば、わざわざ別にクラスを作成する必要がありません。
2004.1.6
 Mavenのページの参考文献に追記。最近ちらほらとMavenの記事が載るようになってきているようです。Mavenってどこがいいの?Antで十分じゃん、Antの方がいいじゃん、という意見もありますが、これはMakefileとAutoconf/Automakeの関係のように相互補完的なものではないかと思います。
2004.1.4
 いよいよ2004年が始まります。ソフトウェア屋さんとしては今年はどんな取り組みをしていこうかと計が頭を巡ります。Javaは1995年の発表から9年目を迎え、新しい技術から普及した技術になってきています。今まではJavaを使っていかに作るかが焦点でしたが、これからはJavaで作られたものをどう保守していくか、拡張していくかという点にもどんどん焦点があたっていくでしょう。システム開発言語としての宿命にさらされつつある段階になりました。オブジェクト指向技術も普及してきましたが、この先にはアスペクト指向の導入によるさらなる進化も予想されます。CMM、RUP、アジャイル開発とソフトウェア開発プロセスについてもいろいろな技術(というと語弊があるかもしれません)が登場してきています。ソフトウェアを開発するための素材は十分揃ってきています。あとは料理人がいかに腕を振るうかですね。

Contact me : torutk@alles.or.jp