2000.9.5 〜 2001.3.31

[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 最新版]

僕のホームページの更新メモです。自分のページ作成に関して参考にしたサイトなども紹介しています。


2001.3.31
 普段、A6の小さなメモ帳を持ち歩いて、ソフトウェア開発について何か思いついたことや考えたことを書き留めていました。3年ちょっとたって1冊使い切ったので、メモの内容をホームページソフトウェア開発四方山に移しました。
 MySQLが細かなリビジョンアップを続けており、現在3.23.36になっています。国内ならSoftAgencyのミラーサイトから。
 JDEが2.2.7beta6となっています。
 AspectJが0.8beta2となっています。
2001.3.29
 仕事でJavaのプログラムを作ってめちゃハードな2週間でした。ホームページの更新がとどこってしまいました。落ち着いたら書き足したいネタはいっぱい出てきているのですが。。。今回の開発ではJUnitを使ってしっかりテスティングしたら、バグが激減したと実感しています。もちろんコーディング中はJUnitのテスト実行でたくさんエラーが出るのですが、コーディングが終わってJUnitのテストがOKになってから先のバグが非常に少なくなったのです。それで、最後の頃はとんとん拍子に組みあがっていきました。これは革命的といっても過言ではないほどソフトの信頼性が向上します。ちょっとした不注意なバグとか正負の考え違いとかいったバグが組み合わせに持ち越されないので、組み合わせ以降の作業が効率アップします。JUnitでテストをしているときに、テストしにくいクラス構造(他のクラスとの関連)があり、いろいろ悩みも出てきました。今まではテストのしやすさはあまり念頭におかずに作ってたので、JUnitでテストが書きにくいクラスとなっているものがあったのです。一例は、コールバック的に上位のクラスを呼び出すクラスです。
 3.22のJDE2.2.7beta2(beta3も)でbeanshが起動できない問題対応案をJDEのメーリングリストに出してみました。次のbeta4でこのバグはfixされ、ChangeLogにThanksが載りました(fixコードは3.22のとは違いましたが)。ほんのちょっとだけJDEに貢献できました。
 JDEのメーリングリストねたですが、Emacs用のソースコードブラウザECB1.10が出ました。画面のキャプチャを置いておきます。勿論JDEと一緒に使うことができます。Speedbarよりは使いやすそうです。
2001.3.22
 年度末は忙しいです。。。
 先日のJava読書会は少し人数が少ないのでした。次回は4/21です。でもAspectJやAntやJUnitやDocletのカスタマイズやらの話しもできたので収穫は大いにあり。AspectJ関連のメモ
 3.8のJDE2.2.7betaでbeansh起動しないよ問題の修正ができそうです。condをつかって
    (cond (jde-global-classpath jde-global-classpath)
          ((getenv "CLASSPATH") (split-string (getenv "CLASSPATH")
                                          jde-classpath-separator)))
としてあげれば、if文のネストにならずにきれいにいきそうです。
2001.3.13
 JDK1.3から導入されたDynamic Proxy Classesを使って、rmicで事前にstubクラスを生成しなくてもRMIを使える、というサンプルを見つけました。2.27には見つけられなかったのでした。Rickard Oberg氏のサンプルコードについて、下記参照。この機能はどうやらJDK1.4で搭載されるらしいです。
サンプルのダウンロードは、 http://www.dreambean.com/download/rickard/SmartWorld-1.2.zip
 ちょっとだけJava3Dをかじってみた。雑誌記事やWebサイトの情報は、Java3D1.1.xのものが多いので、Java3D1.2.1ベータ2ではエラーになったりする。
2001.3.8
 昨日のJDE2.2.7beta2でbeansh起動しないよ問題を突き詰めます。(某仕事からの現実逃避パワーによるもの。オープンソース隆盛の一因は、本業ではない点ではないかと思ってしまう) まずは起動しない(エラーとなる)beansh.elの記述を見ます。
    (if jde-global-classpath
        jde-global-classpath 
        (split-string (getenv "CLASSPATH") 
                      jde-classpath-separator)
        )
    )
jde-global-classpathに何も設定されていないと、(split-string ...)が評価されます。ここで、環境変数CLASSPATHが未定義だと(getenv "CLASSPATH")の評価結果がnilになります。関数split-stringはsubrパッケージで定義されています。この関数にnilを渡すとエラーとなってしまいます。次に、split-string関数の仕様を見ます。M-x aproposを実行し、ミニバッファでsplit-stringと入力すると、説明が出てきます。
2001.3.7
 JDE2.2.7beta2になって、CLASSPATHに何も設定してない&jde-global-classに何も設定しない、の条件ではbeanshが起動しないみたい。うむむ。。。
 ちょっとおもしろいデザイン系のWebサイトeuvodesign。携帯ストラップにeuvo人形が増えてしまった。
2001.3.6
 Apache Web Serverが1.3.19にバージョンアップしてます。昨日1.3.17を入れてみたばかりなにに。。。
 「JavaプログラマーのためのC++講座」 Q)クラスはどんなファイルに書けばよいのですか?A)C++では1つのクラスをソースファイルとヘッダファイルと2つのファイルに書きます。
2001.3.3
 Antのページを作成開始しています。
 来週水曜日、「Javaごはん」があります。
 次回読書会「Javaスレッドプログラミングを読む会」は3月20日です。
 まだパンダを見たことがないので、週末上野動物園へ行く計画をたてていましたが、パンダ"リンリン"は現在メキシコへ貸し出されていることがわかり中止しました。
  「JavaプログラマーのためのC++講座」 Q)mainメソッドはどこに書けばよいのですか?A)C++では起動後最初に実行されるmainはグローバル関数で書きます。
2001.2.27
 Antを使ったJavaのコンパイル(make?)を試してみる。設定ファイルをXMLで書くのが結構大変。慣れるまで2,3日かかりました。でも、やりたいことはたいてい出来るようになっているというのが素晴らしい。
 先週土曜日は、Java読書会でした。スレッドプログラミングは結構難しい。ちょうどダブルチェックというテクニックが登場するところで参加者の方から今月のJavaWorld(日本の雑誌ではなく、U.S.のオンライン記事)に、ダブルチェックは誤りという記事があるとの報告がありました。時間をかけて読んでみよう。
ほかに面白そうな記事があるのか見てみたところ、
前者は、クライアント側でRMIオブジェクトを呼び出すときに、JDK1.3のDynamic Proxyを使って実行時にリモートインタフェースオブジェクトを生成するというもの。クライアントではローカルインタフェースへプログラムしておき、実行時にローカルインタフェースからリモートインタフェースへDynamic Proxyを使って呼び替えをするらしい。残念ながらサーバ側は従来どおりのRMIのコーディングとなる。Voyagerのように、コンパイル時にポストプロセッサ(rmicなど)が不要になるともっとよいなぁ。
後者は、契約による設計(Design By Contract)のツールiContractの記事です。事前条件、事後条件、不変表明をコメントに特殊なタグ(@pre, @post, @inv)で記述しておきiContractを通してコンパイルする。実行時に条件を破る事態が起きると実行時例外とともに破られた条件がエラー表示される。コメントに記述するため、ソースコードを変更しなくてもいいのが優れもの。
 「JavaプログラマーのためのC++講座」 Q)package文がないんですが、どうやってクラスをグループ化すればいいんですか? A)namespaceを使います。
2001.2.19
 Apache Web Serverの安定版1.13.17が出ていますね。Windows用バイナリは、従来のInstallShield込みのEXE形式から、MSI形式に変更されています。MSI形式はWindowsMe/2000でOSに標準搭載されたインストーラ用の形式らしいです。この変更の恩恵はダウンロードサイズが約半分になったことです。
 自作のPCでこの半年たまにファイルが化けるトラブルが起きてました。ファイルをコピーしたときに数バイト化けること、化けるときは必ず同じビットであること、などの症状です。最初HDDを疑い、新たに1台追加したのですが、それでも同じ症状がありました。滅多に起きないので、そのまま使ってました。大きなファイルをコピーしたり、大量にコピーすると症状がおきます。最近ディスクを整理したときに、問題を突き詰めていき、ようやくメモリが原因であることが分かりました。2枚あるうち1枚を外すと症状がなくなったのです。そういえば、いままで頻発していたIE5.5のアプリケーションエラーや原因不明のリセットもなくなったようです。これらもメモリが原因だったらしい。よく1年近くも使っていたなぁ。。。
 週末のお買い物:168pin SDRAM 256MB, 雑誌インターフェース最新号、雑誌オープンデザインのバックナンバー(2000.12)。
2001.2.13
 1.28に取り上げたC++でソースからドキュメントを生成するdoc++ですが、Solaris SPARC2.5.1でもWindows2000/Cygwin1.1でもコンパイルができないのでちょっとあきらめかけたときに、別のドキュメント生成ツールdoxygenを見つけました。Linuxの二大デスクトップの1つKDEのGUIライブラリであるQtで使われているそうです。JavaDoc互換形式があるので、JavaプログラマーがC++を使うときには有効かもしれません。こちらはWindows用、Linux用のバイナリが公開されているので、とりあえず使うことができます。ドキュメントも豊富です。doc++からdoxygenに乗り換え中かも(といってもdoc++がインストールできないのだけど)。
 2.10の朝に、Amazon.co.jpで洋書(The Elements of Java Style)を注文したら、2.11の午前中に配達されました。速い・・・。ちなみにこの本は、Rogue Wave社のエンジニアと、僕のページで公開しているJavaコーディング規準翻訳の原著者Scott Ambler氏の共同執筆本です。
2001.2.3
 Make in Javaもsourceforgeサイトの下へ移っていました。そのうちフリーなものはみんなsourceforgeになってしまうのかな。すげー勢いです。
 Cygwin1.1.8が出ていますが、cygwin-1.1.8-1はバグを抱えておりすぐにcygwin-1.1.8-2が出たので、こっちを使いましょう。
 節分です。豆まきしました。
 最近平日深夜にやっているTV番組「サバイバー」をつい見てしまっています。元は米CBSの番組です。無人島でサバイバル生活をしながら、投票で脱落者を1人づつ選んでいき、最後に残った一人が賞金を手にするという内容です。
2001.2.1
 12月初めに見つけたJavaソースコード自動整形ツールJPrettyは、Windows専用です。GUI版とコマンドライン版と2種類プログラムがあります。自動整形内容は、インデント量、switch/case文のラベル、コードのインデント量、括弧の位置、class宣言文のthrowsの位置、メソッドの引数の並び、class内のフィールド、メソッド、などの順番といったことを設定することができます。使い方も簡単です。GUI版ではソースコード表示パネルで日本語が化けてますが、自動整形されたコードは日本語OKのようです。
2001.1.28
 Meadowで開発のページをいくつか修正しました。IRIEさんからMeadowで開発のページに助言と誤りの指摘をいただいたのを機に、Meadow1.13b1++(Emacs20.7+Mule4.1化)の方法、SKK、Mule-UCSを最新版に更新、JDEのSet/Get Pairテンプレート改修といった事柄です。
 最近フリー/オープンソースなプログラムのホームページが次々とsourceforgeサイトへ移行されています。書籍「達人プログラマー」で紹介されていたC++でJavaDoc風なドキュメントを生成するツールDOC++についてサーチエンジンでいろいろサイトを探していたら、doc++ホームページにあるバージョン3.2より新しいものがsourceforgeのDOC++プロジェクトページにありました。2001.1.14リリースの3.4.7が最新のようです。 
2001.1.24
 MySQLのバージョン3.23.32がリリースされました。このリビジョンをもって「安定宣言」が出されました。まだ国内はミラーされていないようですが、まもなくミラーされると思います。
2001.1.22
 Emacs(Meadow)では、キー操作にCtrlキーやEscキーを使うことが多いです。ですが、PC系のキーボードは、CtrlキーもEscキーもあまり使いやすい位置にはありません。左手小指が攣ってしまいそうな位置です。そこで、[A]キーの左隣にあるあまり使う機会のない[Caps Lock]キーを[Ctrl]に替えてしまいます。ただ、もとの[Ctrl]キーはそのままにしておきます。でないと、他の人が困ってしまいます。。。WindowsNT/2kではレジストリを変更することでキーボードのCapsキーをCtrlキーに変更することができます。Escキーの方は、実は[Alt]キーでも操作できるということを知りませんでした<(^_^; Escキーとの違いは、Escは一度押せば離しても次に入力されるキーがMeta修飾されるのですが、Altキーの場合は次のキーを入力するまで押しつづけていなければならないのです。超基本みたいですが、今日まで知らなかった・・・
 JUnitが3.5にバージョンアップされています。いままで3.2を使っていたので、どんな変更があるのか覗いてみたら、けっこう多岐に渡って改良されているようです。TestRunnerもリファクタリングされてしまっていたり:-)
 技術評論社のJAVA PRESS誌Vol.16(2001年1月18日発売)の記事「ソースコード記述基準」で、Javaのコーディング規準の翻訳が取り上げられてました。"多少翻訳文書と違う部分がありますし、翻訳文書にはない解説もありますので・・・"と言われています。訳出したのが原文書の1つ前のバージョンなのと、後半パフォーマンス項は訳をはしょってしまったあたりかな。仕上げが抜けているなぁ。近いうちに更新しないといけないだろうなぁ。
2001.1.20
 Meadowでファイル指定するときに、Cygwinのmount設定を有効にするcygwin32-mount.elというものがあるそうです。Fake FaceというWebページで紹介されていました。
 フリーなRDBMSのMySQLがバージョンアップして3.23.31になりました。
2001.1.13
 Java読書会、次回は1/20(土)に決まりました。スレッドプログラミングは奥深いです。
 書籍「CORBA完全解説応用編 -POAを使いこなす-」を先週買いました。CORBAプログラミングはBOAからPOAへ移行しつつあるので、ちょうどよい解説本が出ました。インターオペラブル・ネーミング・サービスについても解説されています。
 XMLにデータ型を持ち込む日本発の規格RELAXをJavaで利用するためのツールRelaxerがあります。Relaxerのライセンス形態はGPLであったため、商用利用に難点がありましたが、商用ライセンス向けにLGPLが加わったので、商用利用が容易になりました。RELAXについてはRELAXに関するFAQサイトを、RelaxerについてはWebサイトじゃばじゃばのRelaxerページを見るとよいでしょう。
 Meadowの設定が初心者向けに丁寧に説明されているサイトめどうさんを見つけました。
2001.1.11
 JDEのデバッグ機能(JDEbug)を使ってみました。Java 2(JDK1.2.2以降)で導入された、JPDA(Java Platform Debugger Architecture)を使用してEmacs上でデバッグを行うというものです。使い方メモとしてMeadow and JDEの下にJDEによる快適Java開発環境−デバッグ編というページを作成しています(途中)。デバッガの起動方法には3種類あるのですが、最初の方法(一番シンプルな方法)がWindows2000SP1ではNGとなってしまいました。また、上記ページではWindows上でソケットを使ってデバッガとデバッグ対象プログラムを接続できると書いてますが、もしかするとWindows上では共有メモリだけしか使えないかもしれません。
2001.1.8
 いよいよ21世紀になりました。
 年末年始にかけて、MySQLとPHPとApacheをWindows上で動かしてみました。設定内容などをWeb+DB on Windowsページに書いてみました。
 JDEのバイトコンパイル用makeファイルがいつのまにかついていました。バイトコンパイル方法をJDEのページに追加しました。
 JavaDocで生成されるHTMLに、独自タグを追加しようと思っています。Java 2からはDocletが定義できるのですが、新規にDocletを書くのはかなり大変そう。標準Docletをちょっとカスタマイズするにはどうしたらよいか検討中です。JDK1.3のドキュメントを展開すると、標準Docletのソースコードが添付されているので、これを修正して使うのが楽そうです。まずは解析をしてみないと。。。
 1月6日はJavaごはん新年会でした。朝まで企画なのですが、今回は終電帰宅組でした。
2000.12.27
 本屋さんに昨日の書籍「MySQL徹底入門」と「バージョン管理システムCVSの導入と活用」がありました。さっそく購入。Windows版のMySQLの設定もあります。
 MySQLのJDBCドライバ(2.0)には、以下のものがあります。
2000.12.26
 20世紀も残り1週間をきりました。
 今月ひょんなことから、Windows上でフリーなWebサーバ、スクリプト、DBを探していました。スクリプトとしてはPHPがいいらしいですね。ひょんなことというのが、システムの制御用にWebブラウザを使うというものです。アナリストが仕様提示に使うので、HTML,JavaScriptといったあたりで作ります。割とHTMLは書けるので、HTMLと一緒にかけるPHPがよさそうです。HTMLとは独立した言語(Perl、Java、その他)だとちょっとつらいですね。。。ということで、Apache+PHP+RDBの組み合わせを考えているところです。PHPが対応しているRDBということで、PostgreSQL、MySQLか、ODBC経由でAccessもできそうかな。InterBaseには直接対応してないですが、いくつかPHPとInterBaseを組み合わせる試みもあるみたいです。
 PostgreSQLはかなりUnixがしがしの作りらしく、Windowsで動かすには大変なようです。ただし、Cygwin1.1.5以降で動くPostgreSQL7.0.3がSomething PostgreSQLサイトで公開されてます。
 MySQLは、Windows版は有償だと思って候補から外していたのですが、最近のバージョン(3.23.19以降)からGPLになっていたのを知り、再度候補にいれました。日本では株式会社ソフトエージェンシーというサポート会社があるのですね。この会社のWebサイトからWindows版バイナリやJDBC、日本語ドキュメントがたどれます。商用ライセンス版もあるのでビジネス向き開発にもいいかもしれません。翔泳社から「MySQL徹底入門」という本が出る/出たそうです。
 PHPはバージョン3と4が出ています。ちょうど移行期のようです。国際化版はバージョン3のものが出ています。Windows用国際版のバイナリはPHP日本語ページからWindows版PHPをたどるとダウンロードできます。現在はPHP3だけですが、そのうちPHP4も公開予定とのことです。
 ということで、どうやらWindows上でちょっとしたWebベースのアプリを作るには、Apache+PHP3国際版+MySQLがよさそうです。  ソフトバンクからCVS本「バージョン管理システム(cvs)の導入と活用」が出ているようです。
2000.12.22
 JDE2.2.6がリリース。今回はユーザのフィードバックがかなり反映され、幅広く機能が向上しているようです。JDEのページも少し見直さないと・・・(時間がぁ・・・)
 一昨日はXP-jpのオフ会に参加しました。いろんな話を聞けてよかった。
2000.12.19
 達人プログラマーやDoug LeaのJavaスレッドプログラミングなどで触れられているAspect Oriented Programming。ちょっとおもしろいです。12/16の読書会でも話題にあがりました。オージス総研のオブジェクトの広場2000年12月号の記事の1つ「梅澤 真史のOOPSLA’2000レポート」において、AspectJが紹介されています。
 Java用のmakeっぽいツールではapacheのantがよく使われているようです。antの簡単な使い方があるページを見つけました。また、The Ja-JakartaプロジェクトにおいてAnt翻訳が進んでいます。
 ようやくeXtreme Programming eXplainedの翻訳「XPエクストリームプログラミング入門」がピアソンから出版されました。ソフトウェア開発のダウンサイジングが始まります。ただ、この本だけではXPの具体的な様子が分かりにくいです。できれば映像で見たいなぁ。
 最近ウィーン・フィル世界の名曲シリーズを買っています。月2回ずつ出版され、音楽CDと簡単な紹介記事がついています。CDとしては廉価です。最近出たのはR.シュトラウスの「ツァラストラはかく語りき」でした。
2000.12.10
 JUnitの勉強ページを加筆。今回は、複数のTestCaseを自動実行する方法を調べました。前回加えたリンクの1つJUnit Primerでは単一TestCaseの実行からパッケージ全体のTestCaseまで説明されており、また、負荷テスト等の拡張まで紹介していてとてもよい資料です。
 アイデアノートとして日頃持ち歩いていたメモ帳がいっぱいになったので、とっておきたいことを抜き出すために読み返し始めました。3年分あるので、昔そんなことを考えていたのかと面白いことがあります。あるいはいまだに解決できない問題があったりと。XPや達人プログラマーを読んでいて、「うんうん」とうなずける部分はそうした問題の部分なんですよね。問題意識が重要ということで。。。
 達人プログラマーで紹介されていたAspect Oriented ProgrammingとJavaでAOPを実現するAspectJについて、オージス総研のオブジェクトの広場2000年12月号の記事「梅澤 真史のOOPSLA’2000レポート」で紹介されています。
 Microsoftの.NETでは、Eiffelが動くようです。MSDNの記事より。他の言語で定義された型を利用(継承も)できたりするようです。そのため型のメタデータがあるらしい。そしてEiffel#言語とは。。。.NETあなどるべからず。
 醤油に昆布と鰹節を入れるとおいしくなる、そうです。
2000.12.6
 Javaツール・ライブラリ・リンクのページに、契約による設計(DBC)ツールを追加しました。また、ソースコード整形ツールJPrettyを見つけましたので追加しました。Jindentが有償化してしまったのですが、DBCツールJMSAssertを出している会社がフリーで公開しているのを見つけたのです。ついでに細かい修正をちょっとしました。そうそう、Javaデコンパイラjadを追加しました。
 Java読書会「Javaスレッドプログラミング」第2回は12/16(土)です。今回は宴会参加(夜の部)だけの募集もあります。どうぞお越しください(って誰がいったい見ているんだろう・・・)
2000.12.1
 いよいよ20世紀も残すところあと一ヶ月を切りました。
JUnitに関するリンクをJUnitの勉強ページに追加しました。JUnitのプレゼンテーション資料が置いてあったりしてよさげです。
 書籍「達人プログラマー」に影響されて、更新がとまっていたソフトウェア開発四方山ページに変えて新たに「ソフトウェア開発の名匠を目指して(達人への道) The road to the master」を作成しました。ソフトウェア開発技術に関して見聞きすることをどんどん放り込んでいく予定。まずはメソッド種別分類メモ(JavaReport誌の記事から)を書きました。
 書籍「プログラミング作法」もよさげです。
 達人プログラマーで紹介していた、Javaに契約プログラミング(DBC:Design By Contract)の機能を追加するiContractor。同サイトを見ると、JavaReport誌でも再三取り上げられているらしい。ちゃんと読まねばJavaReport.
 JDK1.4(Merlin)で追加される予定のAPIには、Logging APIやassertion APIがあがっています。Preference APIというのもありました。これはPropertyをもっと高度にしたようなものでしょうか。
2000.11.29
 UNIX MAGAZINE誌でCygwinの記事の連載が開始されました(2000.11〜)。12月号はCygwin1.1のインストールです。
 11月後半のホームページ更新は、各所を微量に・・・って所です。JUnitのページをちょっと充実させました。Assert系メソッド一覧表の追加です。
 "The Pragmatic Programmer From Journeyman to Master"の訳本「達人プログラマー システム開発の職人から名匠への道」がピアソン・エデュケーションから出版されました。内容はプロのソフトウェア開発者として修めておかなくてはならないことが多岐にわたって盛り込まれています。
 11/24発売のJavaWorld誌に、平鍋さんの「eXtreme Programmingの魅力を探る」というXPの記事が載っています。
 オブジェクト指向分析設計ツール、Roseが有名ですが、値段もべらぼうに高い。フリーのUMLツールには、Together/J (Whiteboard版)はクラス図のみ、Jude(梅)もクラス図のみ、Argo/UMLは、クラス図、ユースケース図、相互作用図、状態遷移図、アクティビティ図を描けるようです。また、Thornというのがあると昨日のJava FAQ What's Newに紹介されていました。
 11/25の読書会は6人と少なめでしたが、けっこう充実していた(?)。少し眠かったかも。ダグ・リーのJavaスレッドプログラミングは独力では読むのが難しいのでやってよかったと思います。2次会は高田馬場でお好み焼きでした。次回は12月のどれかの土曜日です。
2000.11.19
 週末は風邪気味でメンタルパワーが低下してました。JDEのメーリングリストではかなり濃い議論が展開されており、ほとんど読みきれない・・・。次のバージョンではかなり高度なプロジェクト機能が搭載されるようです。
 Java読書会、次回は11/25(土)に決まりました。直前で冷や汗ものです。今度は早めに計画しないと。。。
 週末のお買い物:デロンギ社製オイルヒータ。パソコン部屋は冷暖房なしだったので、夏は3分間しか滞在できず、この時期は寒くて・・・だったのですが、風邪気味だったこともあり、とうとう暖房を買いました。
 夏にイギリスで買ってきた紅茶(フォートナム&メーソン)のダージリン1stフラッシュが今一だったので、マリアージュフレールでマルコポーロを買って飲んでいます。おいしいけれども高い・・・
2000.11.15
 Swingのダブルバッファリングを少し突っ込んで調べました。スプライトを実装するには少し問題がありそうなので、自力でダブルバッファリングを実装し、Swingの標準ダブルバッファは無効にしておいた方がよさそう。
 Java読書会の企画がとどこおったまま時間が流れてしまっています。いかんっ。
 C++のGUIクラスライブラリでWindowsでもUNIXでも使えるのがないかと探してみたら、Vというものを見つけました。ライセンスはLGPLで、小さくポータブルなライブラリです。また、Japanese FAQ/DOC CollectionというサイトでVのマニュアル翻訳版が公開されています。Windows上でgccを使ってVのプログラムを行う情報がフリープログラミング倶楽部のサイトで発信されています。ここで紹介しているgccは、cygwinがなくても動くmingw版です。
2000.11.12
 刻々と変化するグラフィックスを表示する画面を作ると、処理速度の問題が出てきます。パフォーマンスモニタでCPU負荷を見ると100%でサチッていたりします。シューティングゲームはうまくつくっているんだなぁと変に関心してしまったりします。いろいろ手法を調べてみると、オフスクリーン、スプライト、といったことをしているようです。うむむ、、、。Swingはダブルバッファリングが標準で搭載されているのですが、具体的にどうなっているのか調べてみました。Swingのメモページを更新。久々に更新したなぁ・・・。このページは浅海さんのSmartDocを使って記述し、HTML4形式で生成したものです。そこでSmartDocの使い方のページもちょっと更新してみました。
 Java2Dのドロー系APIでグラフィックスを描いていますが、AffineTransformのおかげで拡大縮小スクロールが簡単に実現できるようになります。その反面、画面上の座標系と描画するデータの座標系が異なります。画面上をクリックした点がデータの座標系ではどうなるか計算がやっかいそうだなと思っていたら、JavaWorld誌2000.10月号のJava API徒然草にJava2Dで描いた図形をマウスでドラッグする例がありました。ラッキー。
 ヨーロッパ/歴史ページを更新したいなぁと思ってるけど、なかなか取り掛かれない。夏にはノルマンコンクエストをたどってバイユー、ヘイスティングスと行ったのですが。
 C++の本を衝動買いしました。「Essential C++」スタンリー・リップマン著 鈴木茂哉訳、ISBN4-89471-254-7、昔のC++/ARMは持っているんだけど何年もC++から離れていたし、その間仕様がどんどん変わっていました。標準C++がANSI/ISOで制定されてるので、これにのっとった本でよさそうなのを選びました。
 さて、この手の更新記録ページって、どのくらいの分量になったらページ分けするのでしょうか?現在19.8KBのファイルサイズです。そういえば、昔ホームページ作成のお師匠様(と勝手に思い込んでいる)の川名さんは体重と同じくらいのサイズだとおっしゃっていたような、、、川名さんのサイトは、ホームページの作り方を学ぶにはとってもいいサイトです。
2000.11.8
 Cygwin1.1環境のページを更新しました。インストール方法をGUI版に合わせて修正しました。GUI版インストーラになってCygwinのインストールはとっても簡単です。
 また、同ページにCygwinのgccのC++コンパイラでmingw32によってWindows実行ファイル形式を作成する方法を記述しました。Cygwinのgccは、標準ではCだけmingw32に対応しているので、C++(Objective-C)の場合は別途ランタイムライブラリとヘッダファイルを入手する必要があります。Mingw関連の情報、入手はGNU-Win32 Related Projectsのホームページから。
 Windowsプログラムをgccで作れるなら、DirectX系プログラムもできるかとGoogleで検索してみると、How to use DirectX with GCCなるページを見つけました。gccではDirectX6.1対応まで出ているようです。
 Windows上でGTK+プログラムを作ることもできるようです。Learning GTK+ for Win32なるページを見つけました。GTK+ for Win32のライブラリを使ってgccでWindows上でGUIプログラムを作ってしまうというものです。
 Mingw GCCのGUI開発環境"gcc Developer Station 2000"というものがあります。Cool!
オブジェクト指向プログラミングを勉強し始めた頃(9年前!年とったかも)にC++をかじりました。ここ3-4年はJava一辺倒でしたが、ここしばらくC++に少し絡みがあって調べてみました。既にANSI/ISO標準C++というのが制定されていて、名前空間やら例外、RTTI、テンプレート、STLと随分変わっているんだなと思う次第です。
 今のマシンはWin2kでビデオカードは3dfx Bansheeです。OpenGLが今までサポートされてないので、一時期Premedia 2のカードを挿していました(OpenGLについてはこっちの方が速かった)。最近3dfxのβドライバを入れてみたら、OpenGL対応になっていました。ただし、β版のせいか、動かなかったり表示がおかしいソフトもあります。Java3Dへの布石(?)。
2000.11.6
 IBMのLogging Toolkit for Javaのお勉強ページを開始。オブジェクト指向クラスライブラリは、最初のとっつきが大変です。ある程度理解して全体像が分かってくると、とっても生産性があがるのですが、その段階にいたるのが非常に大変です。同じロギングツールのlog4jは、使わずじまいになってしまいそうです。最初のとっつきは多分log4jの方が易しいでしょう。
 JavaWebStartをいじりはじめました。セキュリティについては、アプリケーションでありながらサンドボックス的な囲いのなかで実行するので、ローカルの資源にはアクセスできません。アクセス可能にするには、WebからダウンロードするJARファイルに署名をしていくことが必要です。うーむ、ちょっと敷居が高いかも。
2000.10.31
 Windows2000のIE5.0は、使用頻度の少ないブックマーク(IE用語ではお気に入りというらしい)を表示しないという実にくだらない機能がついている(余計なお世話機能)。これをオフにしたかったが、設定を見回っても分からなかった。今日たまたま何気にGoogleで検索したら[検索キーワード:Internet Explorer お気に入り]、Windows 2000 TIPS--TIPS:Internet Explorer(IE)の「お気に入り」のパーソナライズメニュー機能をオフするにはというWebページを見つけました。このページによると、IEのインターネットオプション詳細設定で、「個人用に設定した[お気に入り]メニューを使用する」をオフにするそうだ。この表現で上記機能と結びつく人はそう多くはあるまい。相変わらずだなぁ・・・
 Caper Jones氏によるProgramming Language Tableページ。プログラム言語の生産性の比較としてファンクションポイントあたりのステップ数が一覧できる。例えば、Cは128、C++は53、COBOLは107、Eiffelは21、FORTRAN77が107、Javaが53、Modula2が80、Perlが21って所。同じ機能をコーディングするのに少ないステップ数のほうが高い生産性を持つってことですね。
 浅海さんのSmartMakeを使っていますが、大量のクラスをコンパイルするとどうしてもjavacの実行の遅さを感じます。仕事ではビルドにJBuilderを使っていますが、これは意外とコンパイラが高速なんです。そこで速いjavaコンパイラがないかと物色してみたら、IBMのJikesがありました。オープンソースになっています。Java2もOKのようです。Windows版のバイナリも用意されていますが、名前から察するにCygwinで構築されたもののようです。
2000.10.29
 Emacs JDEでは、import文を自動生成する機能がありますが、import文をソートして並び替える機能もあったとは・・・。また、委譲(デリゲーション)するコーディングって結構面倒なんですが、これも自動生成する機能があります。Javaソースファイルの編集に記述を追加しました。
 JDEのMLで、不要なimport文を検出するperlとそれをJDEから実行する設定が紹介されていました。最初「げっ Perlが要るの?」ってことで敬遠してしまいましたが、仕事上でこの不要なimport文を削除することをよくやっているので(他人のコードをリファクタリング中。どうしてみんなソースコードにゴミが残っていても平気なんだ!)、この機に導入をしてみました。Windows上のPerlを探してみたところ、Cygwin環境のPerlが簡単にインストールして使える事がわかったので、インストールしました。Cygwin1.1環境のページに記述しました。CygwinB20用のPerlもあるので、ちょっと前のCygwin環境な人も簡単にPerlを用意できます。Meadow/JDEから不要なimport文検出Perlスクリプトを呼び出す設定は、Java開発便利集ページに載せました。
 10.27の夜は、「Javaごはん」で池袋の沖縄料理「かちゃーしー」。なぜか翌朝まで飲んでしまい、土曜日はぐろっきー。泡盛が急激にまわって途中トイレでアルコール排出作業(人差し指で舌の奥側を押すと胃の中に残留している液体が体外に排出されるので、その後非常に楽になる“奥の手”)。過剰摂取してしまったときにお勧め(?)ですが、飲むのはほどほどに・・・
2000.10.27
 ソフトウェアのテストについて。リファクタリングやXPでは、完全自動ユニットテストが重要ですが、これを実践(実際に自分が行う開発で使用)することが難しい。それはツール(JUnit)が難しいせいではなく、長年のプログラミング活動において染み付いた習慣のせいです。何を作るか考えて(分析)、どうやって作るかを考えて(設計)、プログラムして(実装)、そして(時間があれば)テストするという習慣があるので、テストというと最後にするものと考えてしまいます。でもXPでは、先にテスト(実際はテストケース)を作って、それに合致するプログラムを書くのです。テストを考えているときが実は設計しているときになります。だから、何を作るか考えて(分析)、どうやってテストするかを考えて(テスト計画&設計)、そしてテストをパスするプログラムを書きます(実装&テスト)。これは究極です。それゆえに習慣を変えることになり、だから難しいのだと考えます。詳しくはテスティングフレームワーク JUnitのページに書いてます。
 XPにおけるテスト&コーディングのやり方について、WWWでおおむらさんによって"Test/Code Cycle in XP"という論文の日本語訳「XPにおけるテスト/コーディングサイクル:第一部第二部」が公開されています。ちょっとしたデータ検索表示プログラムを開発していく様子が描かれています。これを読んで、JUnit的テストのイメージが少し出来た気がします。
また、「ソフトウェアエンジニアのためのホームページ」を主催している清水さんによる、「意識の変革 『出来るかどうか』から『どうやってやるか』へ」というページがあります。いままでのやり方を変えるにはどうしたらよいのかヒントがちりばめられています。染み付いた習慣を変革するには参考になります。
 Emacs JDEは現在2.2.6β3になっています。そういえば一時期JDEにJUnit対応機能を載せるとMLで話題になっていましたが、その後音沙汰なしになっています。
2000.10.22
 最近のCORBAはPOAを使うものが多くなってきたので、勉強をかねてCORBAページを刷新します。
 Windows2000では、一般ユーザでログインしたまま、他のユーザ権限でプログラムを実行できるようになりました。
2000.10.21
 10,18のリンクURLが間違ってたので修正。>澤田さん指摘ありがとう。
 今回は自分のホームページ更新はないです(^^;
「コンパイラに1円も払わない窓プログラミング」というはなわさんのWebページがありました。Borland C++(無料配布のコマンドラインツール)とgccと2つ紹介しています。
 「The Free CORBA page」というWebページでは、フリーなCORBAの紹介とリンクがあります。
 「Java Web Start」、1.0βとなりました。JavaApplicationをWebからダウンロードして実行できるようにする仕掛けですが、1度ダウンロードした後はバージョンアップをチェックしローカルキャッシュを使うとか、実行可能なVMのバージョンをチェックするとかいろいろ管理機能が充実しているようです。夏前にバージョン0.4が出ていたのですが、正式版まで様子見していました。
2000.10.18
 JavaでCORBAをするには、JDK1.3標準のJavaIDLがありますが、基本機能だけなので少々不十分かつCORBAの仕様を完全には満足していない点があるようです。商用製品ではInprise社製VisiBroker、IONA社製Orbixが有名だけど、値段もうん十万円代で手がでない。(VisiBrokerはお試し期間があるけど・・・)
 そこで、フリーで使えるCORBAの登場です。有名なのは、JacORB、JavaORB、非商用に限り無償なORBacs、このあたりがよさそうです。入手はツール・ライブラリ・リンクのページにあります。これらの勝手な感想は、質実剛健ドイツ製なJacORB、RMIoverIIOPや各種サービスが充実しCORBA3.0対応も間近なJavaORB、商用製品のしっかりさを持ち、C++にも対応しているORBacusといったところでしょうか。
2000.10.15
 Windows2000は、DirectX7をサポートしています。DirectDraw, Direct3D, DirectSound, DirectInput等のプログラミングができるので時間があったら遊んでみよう。Cygwin1.1のgccは、WindowsAPIを使ったプログラミングができるので、これも試してみよう。VisualC++を買わなくてもいいって点が気に入った。
2000.10.9
 連休なので、Windows2000を入れてみました。今の感覚は、「95/98っぽい見かけになったNT」ってところです。もったりとした動き(重くなった?)なところもあります。管理系ツールが1つに統合されたのを見て、Linuxconfのようだと思ってしまいました。(GUI版のLinuxconfにはどうも馴染めなくて・・・)
 検索エンジンGoogle、いけますね。ORBacusとJavaを調べたらごそごそ出てきました。今まではJava関係はInfoseekを使うことが多かったのですが、Googleに移りそう。
 月餅を食べています。好物の1つなんです。
あじの開きを焼くときに、皮から焼くか、身から焼くか悩んでネット検索。どうやら海の魚は皮から焼くそうです。
2000.9.26
 Emacs JDEが2.2.4になったので少々手直し。JDEは活発に開発が進んでおり、短期間にどんどん機能が充実しています。まだまだ紹介したい機能や試したい機能がたくさんありますが、とてもおいつきません。XP関係も活発で、そっち方面の情報も整理して載せたいのですが、同じく時間なし。XP12実践の1つ週40H労働を実現できれば・・・
 XP(eXtreme Programming)、ソフトウェア開発方法(実践方法と言ったほうがいいかも)の名前で、スピードの速いライトウェイトな、そして楽しい開発を行います。オージス総研のサイトにオブジェクト指向シンポジウム2000におけるRUP v.s. XPのレポート記事があります。平鍋さんのeXtreme programming FAQページには、プレゼン資料、日本語FAQ、各文献の日本語訳、日本語メーリングリスト、リンク情報等が載っています。ここは日本語のXP関係のポータルサイトかな。また、近々XPの書籍(翻訳)が出版されます。リファクタリングと合わせて読むといいでしょう。XPについての辛口評論がありました。結構反対色が濃いです。プログラマはコーダとして位置づけているのが日本的ですね。プログラマは設計しないのかな。反対意見を聞くと自分の理解がさらに深まるので(いろいろ考えますから)、このページもXPを知るにはよいと思います。XPのサイトの翻訳と思われるサイトもあります。なかなか英語だと読み切れないので、日本語に直して公開してくれるサイトが増えてきてとてもうれしいですね。
 夕食のレタスのサラダに黒胡椒をたっぷりかけて食べました。おいしいんです、これが。
2000.9.15
 XML ParserをJava maneuver recordに追加。まずはDOMプログラムの生成と書き出しについて記述。ちょっと前まではIBMのXML Parser for Javaが定番でしたが、今はSunのJAXPやApache(IBM)のXercesが登場してきているので、どれを使うか悩ましいかもしれません。
 Meadowの設定内容に問題があったことをWebページを見ていた人からメールで教えてもらいました。さっそく修正しました。こういう情報をもらえるということはとってもうれしいですね。
 Javaのコーディング規準を翻訳し、著者の了解を得てWebページに掲載しております。夏前にこの利用していたサーバがサービス終了を間もなくすることになり、別のサーバへ移転させました。このことを著者へメールしました(遅いですが)。最初は英語でやり取りするのはけっこう緊張し英文作るのに何時間もかけていましたが、やってみると簡単だし、著者も喜んでいるみたいです。ちょっとした技術ページを訳してみたら、是非著者へメールして日本語訳をWebに掲載する許可をもらってみてはどうでしょうか?
2000.9.10
 Java 2のコレクションAPIを調べる必要があったので、Javaお勉強リンクのページのコレクションAPI項に雑誌・書籍の記事を追加しました。コレクションAPIでソートをするにはどうしたらよいか調べたのですが、簡単にできてしまったので驚きです。
 ここ最近XMLのプログラミングをしなければならないため、お勉強中。昔XMLよりSGMLの方が知名度が高かったときに概要を調べただけなので、自分でプログラミングするとなって詳しく調べることになった・・・。
2000.9.6
 Emacs JDE2.2.3がリリースされたので、Meadowで開発のJDE Java開発環境ページの入手とインストールの記述を更新しました。今回新たにelibというパッケージが必要になります。
 IBMのAlphaworksから公開されているJLog、プログラムのログ(メッセージ)を出すためのライブラリですが、なかなかよさげです。もう少し時間がとれたらJava maneuver recordに追加しようと思っています(書きかけのlog4jのページと一緒にするかも)
 昨晩ユーハイムのフランクフルタークロイツを食べました。おいしい。これは紅茶よりはコーヒーが合うと思います。
2000.9.5
 オブジェクト指向の本棚に、読書関連リンクを作成しました。まずは読書会BOF(Java互助会)MLの澤田さんの「積読」ページと、Yoshikiさん(Java Press等に記事を書いている人です)の書籍ページをリンク。このページは、SmartDocで記述してHTMLに変換して作っているのですが、久々に更新しようと思ったらマシン環境が新しくなっていてSmartDocをインストールしていませんでした(^^;。そこで、ついでにSmartDocを始めるページを作成しました。
 @Niftyのサーバにコンテンツを置いたはじめなので、お勧めページの紹介。今hotなテーマXP(エクストリームプログラミング)の日本語ページ。XPでソフトウェア開発は変わる・・・
 タイトルのblack pepper(黒胡椒)、最近使い始めたPeugeot製の胡椒ひきがとてもGoodなため、なんでも胡椒をふっているからつけました。昨晩は炒めたニラ(だけ)に味付けは胡椒だけで食べました。

Contact me : torutk@alles.or.jp