ウィルスが猛威を振るっていますが、SirCamにやられるは、CodeRedの影響でネットワークはとめられるはサンザンです。やれやれ…。まあ、しかし、SirCam関連メールはまだ来ますけど、プロバイダでウィルス除去をやってもらっているので、それが効きはじめたためなのか、添付ファイルは削除されて送られてきます。ところで、こうしたウィルス報道って難しいものだというのが以前は仲間内では話し合ったものですが、最近はそういうことは考えないのかな。たとえば、技術的な意味で、いったいどうやって感染させたり増殖したり、あるいは破壊をするのかといことを詳しく知りたいじゃないですか。でも、それは、かえって新たなウィルスの製作を助けていることになるから、根幹部分の情報はあいまいにされます。それにウィルスの加害者は思いっきり非難できるとしても、被害者の扱いは難しいです。対処していないことを非難するのは簡単だけど、それって「いじめられるのは本人にも責任がある」と言っているのと大差ないわけですからね。しかし、SirCamの報道の中には、添付されてきたファイル名をそのまま出して、かなり興味本位モードに片足突っ込んだ記事もありました。これって、プライバシーの侵害以外の何ものでもないのですが、むしろ問題なのは、ウィルスを作ったやつの尻馬に乗っているというとか、ウィルスの被害を助長している以外の何ものでもないと思いましたけどどうでしょうか。もちろん、うちにも魅力的なファイル名が添付されていますし、最初の1つは開けてしまったわけですが、それの具体的なことを雑談で話すならともかくも記事にしてしまうというのはちょっとまずいんじゃないかと思ってしまいます(正直、若干の誘惑はありますけど…)。これも他山の石というやつでしょうか。
(新居雅行 msyk@mdonline.jp)
これまでのところで、OpenBaseのデータベースを作成し、1つだけであるがテーブルを作成した。いずれも、OpenBaseManagerを使っての作業である。こうした管理ツールがきちんと用意されているところがOpenBaseとオープンソース系のデータベースソフトとの大きな違いでもあると言えるだろう。今回は、作成したOpenBaseのデータベースをWebObjectsで利用できるようにする重要な設定を行う。
WebObjectsは、Enterprise Objects Frameworkというフレームワークを内包しているが、EOFとして参照されるものだ。非常に大きなフレームワークであるが、1つの大きな仕事は、リレーショナルデータベースをオブジェクトとして利用できるようにする諸機能を包括しているということだろう。また、そうしたデータベースとのかかわりにおいて、ビジネスロジックを組み立てるもとになるものとも言えるが、まずは、データベースをオブジェクトとして扱えるようにするための基本機能だと考えてもらえば良い。そして、データベースをどのようにオブジェクトとして扱うかを定義したものが「モデル」と呼ばれる。そのモデルを定義するアプリケーションがEOModelerなのである。WebObjectsのアプリケーションは、このモデルを手がかりにしてデータベースを利用する。つまり、WebObjectsアプリケーションは、自分自身からSQLステートメントを発行してデータをくちくちと取り出すということはしない。ある種の初期化プロセスを経れば、アプリケーション内では、インスタンス化されたオブジェクトとして、テーブルの中身を取り出したり、追加したり、あるいは変更できるのである。
伝統的なデータベースプログラミングになれている人は、SQLくらいはどうってことないと思うかも知れないし、わざわざモデルを作るというのもかえって面倒と思うかも知れない。しかしながら、オブジェクトとして扱えるということは1つには、開発ツール上で自由にデータベース処理を組み込むということにつながっている。これは、今後紹介するWebObjects Builderでの作業を見てもらえば、オブジェクトとして扱う意味がまず見えてくるだろう。また、オブジェクト指向という点を考えれば、自由度の高いオブジェクトの設計が、柔軟に複雑な要求に適用できるという方向性を持つことになる。もちろん、住所録のような単純なアプリケーションだとそうした柔軟性は見ることはできないが、複雑なテーブル構成を持ったもので、単純には行かないビジネスロジックを組み込むような場合、オブジェクト指向がベースになっていることがのちのちの開発効率やメンテナンス性に響いてくるということになるだろう。
ところで、こうした「データベースの中身をオブジェクトとして扱う」というメカニズムで有名なのは、むしろJava2 EEのEnterprise JavaBeans(EJB)だろう。EJBをサポートしていれば、「アプリケーションサーバ」と名乗ることができるというのが一般的なコンセンサスとなっている。EJBの基本的な仕様は同一のものであるので、EJBに対応したコンポーネントはたとえばアプリケーションサーバの製品に限定されないというメリットもあり、こうしたコンポーネントの流通を促すと言う側面もあるため、業界では高く注目されているのである。いや、言い方を変えれば、EJBに対応していないものはアプリケーションサーバとは言えないという空気さえある。WebObjectsのEOFは、このEJBにおおむね対応するものと考えて良いだろう。詳細は違いはあるだろうが、大局的な目的な同じものだ。どちらが優れているかという点についての評価は筆者にはできないが、EJBに比べてEOFが劣っているということはないという話は聞く。たぶん、標準ということを意識したいのならEJBということになるのかもしれない。一方で、こうしたエンタープライズな開発素材は相互互換性があるからといって結果的に別の製品に変えるのには多大な労力がかかることもあるため、その意味では互換性はあまり高いプライオリティで考えない場合も多々あるだろう。結果的にデベロッパーが責任を持って選択をしないといけないのであるが、EJB全盛の時代ではあるけども、EOFでも必要十分な機能が提供される点は言えることだと思う。もっとも、WebObjectsも将来的にはEJBをサポートするが、おそらく現在のEOModelerやWebObjects Builderの機能を考えると、EOFでのデータベース利用が中心になると思われる。もっとも、EJBをサポートすることによって別のアプリケーションサーバからの移行を促すという側面が強いと考えられる。
アプリケーションを実際に作るには、Project Builderの作業から始めることになるのだが、今回はまずはEOModelerでモデルを定義したファイルだけを作成し、後からプロジェクトに納めることにする。というのも、Project Builderから新規にモデルを作るような機能は今のところはないので、モデル作成作業は今のところ独立して行うことになると思われるからだ。
では、まずはEOModelerを起動しよう。/Developer/Applicationsフォルダにあるので、アプリケーションのアイコンをダブルクリックして起動する。
◇EOModelerは普通にアプリケーションとして利用できる
EOModelerが起動すると、単にメニューだけが表示される。「モデル」を定義すると説明したが、物理的にはモデルを定義した結果を、ファイルとして保存しておく。このファイルを開発時や実行時にツールあるいはフレームワークが利用して、データベースのオブジェクト化を行うのである。だから、EOModelerでは結果的にモデル定義ファイルを作成することになる。
では、FileメニューからNewを選択しよう。もちろん、Command+Nでもかまわない。すると、いきなり文書ウインドウが開くのではなく、次の図のようなNew Model Wizardが開く。モデル定義ファイルには、必ずデータベースへの接続情報が込められる。これがないことにはデータベースに接続しようがないわけで、その設定をモデルファイルに埋め込むわけだ。また、データベースに接続しないと意味がないと言うこともあるので、モデルを新規に作る時にはデータベースに接続を行うのである。最初はアダプタの指定だが、OpenBaseに限らずWebObjects 5ではほぼ例外なく(今後は分からないけど)JDBCアダプタを選択することになるだろう。
◇アダプタはJDBCを選択する
Nextボタンをクリックすると、以下のようなJDBCアダプタでの接続設定を行うダイアログボックスが表示される。ここでは決められた通りに入力をしなければならない。まず、URLは複数の設定が入り交じるが、いずれにしても、接続するデータベースの場所を定義しておく必要がある。基本的にはJDBCでの接続URLとして定義されたものだ。プロトコルは「jdbc」なのは当たり前として、サブプロトコルに「openbase」を指定する。続いて区切って、サーバが稼動しているマシンのホスト名を指定するが、同一マシンで稼動しているOpenBaseに接続する場合はホスト名は「localhost」でほぼOKだろう。そして、スラッシュで区切って、データベース名を指定するここでは起動しているデータベースの名前「Address」を指定した。
そして、UsernameとPasswordは、OpenBaseに設定されたアカウントを指定する。Mac OS X野アカウントとは別のもので、OpenBaseManagerを使うなどして定義されたものだ。この一連のシリーズでは、前回に、最初から登録されているadminというアカウントにパスワードを設定した。従って、今現在はadminという1つのアカウントが設定されているだけなので、Usernameにはもちろん「admin」と指定する。そして、そのadminのパスワードをPasswordに指定をするわけだ。
Optionalには、Driverのところに図にあるように「com.openbase.jdbc.ObDriver」を間違えないで指定する。この通りでなければならない。PlubInは指定はしなくていい。
◇データベース接続に対する指定を行う
なお、こうした設定をどうすればいいのかといった説明は、/Library/OpenBase/DocumentationにあるREADME-JDBC-WO5.0.rtfというファイルを参照すれば子細が記載されている。いずれにしても、上記の設定はJDBCのプログラミングを知っている人にとってはどんなプログラムか想像できてしまう範囲だと思う。
なお、OpenBaseのJDBCドライバは、/Library/Java/OpenBaseJDBC.jarにある。/Library/Javaが追加するJavaのライブラリファイルを入れる代表的な場所としてMac OS Xは用意している模様だ。
カテゴリ:データベース, WebObjects
OKボタンをクリックすると次のようなダイアログボックスが出てくる。書いてある通りなのであるが、今回のように主キーを定義した1つだけのテーブルを使うような単純な場合にはチェックは全部オフにして、Nextをクリックすれば良い。
◇モデル作成のオプションが出てくるが今回は全部オフにする
ざっと説明しておくと、「Assign primary keys to all entities」はテーブルの主キーフィールドをどのフィールドなのかを指定するダイアログボックスが後から出てくる。OpenBaseだとテーブルを新規に作成すると、自動的に連番が入力される主キーフィールドが設定され、その主キーはモデル定義ファイルでも自動認識されるから、特に主キーを指定する必要はない。データベースエンジンによっては定義した主キーの設定が認識されないので、手動で主キーを設定する場合が出てくるのである。
「Ask about relationships」はもちろん、2つ以上のテーブルをモデルに組み込む時の設定である。リレーションの設定はWizardだけでなく、モデルを作ってからでも行えるので、これもやはりケースバイケースだ。
「Ask about tored procedures」はもちろん、データベースにストアドプロシージャが定義されている場合、どのストアドプロシージャをモデルに含めるかを指定するためのものである。ストアドプロシージャがない場合やあってもアプリケーションで使わないのなら、チェックを入れる必要はない。
「Use Custom Enterprise objects」は、EOFの1つの機能であるカスタムオブジェクトとしてすでに定義をしたものを利用する場合に指定する。カスタムオブジェクトを使用しない場合にはチェックはいらない。
前のダイアログボックスでNextをクリックすると、次に、モデルに取り込むテーブルを指定するダイアログボックスになる。今回は1つだけのテーブルだが、もちろん、複数ある場合には取り込むテーブルを選択するという作業が必要になる。今回はこれが最後のダイアログボックスなので、Finishをクリックする。
◇モデルに取り込むテーブルを指定するダイアログボックス
以上でWizardは終了し、EOModelerの文書ウインドウが開く。EOModelerでは、テーブルを定義してフィールドを作成し、その結果に応じてデータベースにテーブルを作成できるなど、データベース管理ツールとしても利用できるのであるが、最初からテーブルを作ってあるような場合、おおむね、最初のWizardで必要な設定が出来上がっている。すでに、左側にPersonaladdressという項目が見えるが、これは定義されたテーブルであることを示している。
◇出来上がったモデル定義ファイル
左側のPersonaladdressを選択すると、右側にはこのテーブルに定義されているフィールドが一覧される。もちろん、OpenBaseManagerでの指定とおりではあるが、最初から作られる_RowIDフィールドはここでは_Rowidとなっているし、_timestampフィールドは見えていない。今回のアプリケーションではこの点は問題はないので、特に気にすることはない。
◇モデル定義にあるテーブルの定義を見る
ここで保存と行きたいのだが、このまま保存をすると、勝手に名前をつけているRowidフィールドについて、先頭が大文字なのは良くないという意味の警告メッセージが出る。だから、このフィールドの名前はrowidと変更しておく。フィールド名の部分をダブルクリックすると、編集可能な状態になるので、そこでキータイプしておけばよい。
◇フィールドの名前を変更する
そして、FileメニューからSaveあるいはCommand+Sなどでファイルを保存しておく。ここでは、とりあえずどこかに保存するのでかまわない。「プロジェクトと同じフォルダじゃないとだめなのじゃないか」と思うかも知れないが、次回での作業を行うために、すでにプロジェクトを用意してしまった人は、プロジェクトの外のとにかく適当な場所に保存をしておいてもらいたい。もちろん、プロジェクトの中でも何とかなるのだが、いろいろ作業をしてみて、とりあえず、モデルファイルはプロジェクト外にいったん保存するというのが適しているようなのである。
◇とりあえず、モデル定義ファイルを保存しておく
これでモデル定義ファイルが作成できたので、今回はこれまでということにしたいが、次回に移る前に、ここで使っている住所録のテーブルに2つほどレコードを作成しておいてもらいたい。最初の作業で何もデータがないと作業がやりにくいからだ。ここで、もちろん、日本語の名前を入れたいという欲求があるのだが(笑)、まずは問題を複雑にしないために、アルファベットあるいは数字で適当なデータを入力しておいてもらいたい。
まず、OpenBaseManagerを起動して、データベースのAddressを選択し、右側にある「データ一覧」ボタンをクリックする。
すでにパスワードを設定したので、adminのパスワードをここで1度は入力しなければならないはずである。
次のようなウインドウが表示される。左側でテーブル名の「PersonalAddress」を選択すると、右側にカラム一覧が出てくるはずだ。そして、Addボタンをクリックすると、とにかくレコードが1つ追加される。_rowidフィールドに連番が自動的に設定される。そして、その他のカラムでは、該当する部分をダブルクリックすることで、キー入力が可能になるので、適当にデータを入力しておく。
以上のようにして、テスト用のデータを入力しておいてもらいたい。もちろん、きちんと入力してもらっても一向にかまわないが、とりあえず1バイト文字ということにしておこう。
カテゴリ:
Mac OS XのJava実行環境がアップデートされることが明らかになった。ADC(Apple Developer Connection)のサイトに、「Mac OS X J2SE 1.3.1 Developer Preview 2」がADCメンバーのみに公開されていることが明記されている。Mac OS X 10.0.4でも、Javaのバージョンは1.3.0であるが、HotSpot 1.3.1を含むJavaの実行環境がリリースされる見込みだ。他のプラットフォームでも、Ver.1.3系列では1.3.1が最新であるが、すでにVer.1.4のベータ版のリリースも始まってる。いずれにしても、Mac OS XのJava実行環境をアップデートする動きがあるという点では歓迎できる。もっとも、JDKのバージョンよりも、日本語環境でSwingアプリケーションが満足に使えない状況や、あるいは31バイトを超えるファイル名をMRJのクラスで使えないといった基本的なところが更新されていることを大いに期待したいところである。
関連リンク:Mac OS X Java Runtime Environment
カテゴリ:Java
Tech Info Library(TIL:米国のサイトで公開されている技術情報)が事実上クローズした。これに代わってKnowledge Baseというサービスが開始され、これまでTILとして公開されていた文書はキーワード検索などを行えば参照することができる。しかしながら、最新の文書を検索する方法がついになくなってしまったようだ。2000年4月までは、更新されたTIL文書というページがあったものの、そのサービスはなくなってしまった。しかしながら、検索した文書タイトルの一覧を日付の逆順で参照できる機能があったので、かろうじて最新の文書は完全ではないものの、リストアップすることはできた。しかしながら、Knowledge Baseではそれが不可能となってしまった。なお、日本でのTech Info Library-Jは以前と変わらずに運用がなされており、更新文書一覧のページも機能している。
なお、バグや不具合あるいは操作上のポイントなどがTILで公開されることから、MDOnlineは新規に公開された文書を中心に記事を作成してきた。そうした細かな技術情報を提供することがシステム利用者あるいは管理者、デベロッパにとって必要だと考えるからだ。しかしながら、今後は極めて制約された状況で、新しい文書を探し出すことになる。制約されたというよりも、目隠しでさがすのに近いだろう。もちろん、TIL-Jが頼りにはなるが、米国の方針はいずれ日本にも反映されることになると思うので、いつまでもそちらを頼りにはできない。残念ながら、TIL関連の記事はこれまでの御期待に沿うことができないことをお許しいただきたい。
関連リンク:Developments to the AppleCare Web site
カテゴリ:業界動向
すでに公開されている模様だが、Mac OS 8/9向けのJava実行環境であるMRJ(Mac OS Runtime for Java)のVer2.2.5の日本語版が配付されている。英語版は2001年6月に配付を開始している。2バイトシステム利用する時の問題やネットワークの問題などが解消されているとしている。Mac OS 8/9のユーザはソフトウエア・アップデートでアップデートすれば良いだろう。
関連リンク:Mac OS Runtime for Java 2.2.5 に関する情報と、ソフトウェアのダウンロードサイト
カテゴリ:OS関連ソフトウエア, Java
Trolltech社は、C++向けのアプリケーションフレームワークQtをMac OS X向けに移植した「Qt/Mac Open Beta 1」をリリースした。QtはGUIアプリケーションの作成が可能なプラットフォームで、WindowsやX Windowを搭載した各種のUNIX系OSでも利用できる。ソースコード付きのクラスライブラリに、XMLやデータベース処理が可能な基礎的なデータ処理の機能も含んでいる。また、GUIの設計ツールや、国際化のためのツール、そしてオンラインヘルプを作成するツールも付属する。Mac OS X版はベータ版で期限付きとなっているが、登録することで入手できる。正式版は販売する予定となっている。他のプラットフォームのものは、開発者向けにライセンスする形式となっており、1ユーザでProfessional版が$1,550、Enterprise版が$1,950となっている。ボリュームディスカウントなども設定されている。
なお、Mac向けのベータ版はシェルで環境変数を設定しないと稼動しないし、また、開発ツール向けのプロジェクトファイルは用意されていないなど、単にダウンロードだけでは使えないので、そのつもりで臨まれたい。
関連リンク:Trolltech
カテゴリ:ライブラリ
Runtime Labsは、Macintoshでデータベース管理を行うツール「MacSQL 2.0」をリリースした。MacSQL Monitorとして前バージョンはリリースされていたが、Carbon対応してMac OS Xのネイティブアプリケーションとしても稼動するようになった。価格は通常版が$249、Lite版が$99となっている。対応するデータベースは、MySQL、Microsoft SQL Server、ODBC(Mac OS 9のみ、Merantのドライバが必要)、Oralce(JDBCドライバ)となっている。ワークシートのような画面でテーブルのデータを参照したり、編集することができる。また、PHPやPerlのサーバ向けプログラムの生成や、AppleScript対応、テーブル作成ツールなど、データベース管理のためのさまざまな機能が組み込まれている。Lite版はMySQLとSQL Serverにデータベースが限定されており、基本的な機能だけに絞られている。
関連リンク:MacSQL Product Information
カテゴリ:データベース, データベース