うちの斜向かいの空き地で家の建築が始まっています。最初はブルトーザでそれなりにうるさかったですが、まあまあ、それくらいはいいとして、基礎が固まったある日突然、材木が運び込まれ、ものの1日ほどで梁が組み上がって行きました。で、その日の夕方に棟上げ式が行われて手拍子が鳴り響き、次の日には一気に足場が組み上がって、ネットがどーんと圧迫感をかもし出しています。で、引っ越しがゴールデンウィークくらいだとおっしゃっていたので、なるほど、内装ってけっこう時間がかかるのだなとと納得したりしています。だけど、枠組みを作るのって思ったより短時間でできるものなんですね。ある程度組み上がった材木を持ってきているようで、そこまでの準備はそれなりに時間がかかっているのかもしれません。ただ、音だけでなく、屋根に上っている工事のおじさんが、PowerBookに向かっている私の視野に入るような雰囲気なんで、ちょっと気にもなるというところです。
Macworld Expoで行うMac OSデベロッパーセミナーですが、本日が、チケットの郵送が可能な受付日の最終日です。MDOnlineの方々は、以前(2001/1/19)にお知らせしている方法で、割り引き販売を御利用ください。もし、それ以後に購読開始された方など案内がもう1度欲しいという方は、おっしゃってください。今からだと「先に入金」はできませんけど、明日以降でもかまいませんので、忘れていた方は今日中にお願いします。ただ、明日以降は販売しないというわけではありませんけど、トラブルを少なくするためによろしくお願いします。
(新居雅行 msyk@mdonline.jp)
REAL softwareは、開発ツールREALbasic Ver.3の正式版をリリースした。REALbasic 3はすでに何度もお伝えしているが、Mac OS Xで稼動するCarbonアプリケーションの生成が可能であり、また、開発ツールもCarbonアプリケーションであることがいちばんの特徴だ。つまり、Mac OS X向けのアプリケーション作成が可能になった。また、AppleScript対応やアニメーションエンジンの一新、データベース機能の変更、開発ツールの機能向上、Windowsアプリケーションのサポートの強化等が図られている。すでに、アルファ版、ベータ版のリリースが順次行われていたが、正式版がリリースされた。なお、正式リリースがあったのは英語版だ。日本語版は、1ヶ月以内のリリースを予定している。日本の販売元であるアスキーのサイトによると、2001年2月15日にREALbasic 3暫定日本語版を配付するとういことだ。英語版REALbasic 3のライセンスの販売もASCII社のサイトで開始されている。Standard版が15,500円、Pro版が46,000円となっている。また、アップデートはStandard版が8,000円、Pro版が19,000円、Standard版からPro版へのアップグレードが30,500円となっている。日本語版は、現在はVer.2.1の販売が行われている。
◇REALbasic(ASCII社のサイト)
http://www.ascii.co.jp/realbasic/
関連リンク:REALbasic
カテゴリ:開発ツール, REALbasic
教育向けに開発されたJavaの開発ツール「BlueJ」が、Mac OS X Public Betaに対応した。BlueJはJavaで開発されたツールであるが、UMLに従ったダイアグラムをもとに、クラスを定義するといった、オブジェクト指向プログラミングをビジュアルに見せることが可能なツールだ。実際に大学の講議で利用しているようで、フリーで配付されている。以前はJDK 1.1.Xレベルで開発されていたが途中からJava2対応となった。今回リリースされたVer.1.1.2で、Mac OS X Public Betaでのインストールも可能なようにしたと記載されているが、テストを行った環境が少ないため、フィードバックを求めているとしている。コンパイルや実行などもできるようになっている統合開発環境である。
関連リンク:BlueJ The Interactive Java Environment
カテゴリ:Java, 開発ツール
前回までで、Accessのデータベースを、Windows 2000 Professional上で動くWebObjects 4.5のDirect to Webの機能を利用して、Webブラウザから参照できるところまでを説明した。いろいろ紆余曲折があるが、とにかく参照できるようにはなった。ただ、いきなり世界中から会社のデータベースをのぞかれてしまうというとんでもない状況ではあり、早くログインでパスワードを入れないとダメにしたいところではあるが、カスタマイズは少し先で解説をしたい。
なお、前回、WebObjectsのアプリケーションを起動した直後、検索などがうまく行かないが、何度か検索するうちにうまくいくようになるとお話した。これについては、状況が一定しないので定かではないが、ログインの最初のページで検索を何度繰り替えしてもエラーばかりになるときもある。そのときは、Search、つまりテーブルの各フィールドに対する検索条件が表示されるページに移動し、検索条件は1バイト文字だけで指定して、しかも、containsの検索条件を指定して、何度か検索するとうまく動くようになるようなのだ。釈然としないけど、これでとにかくうまくいくこともある。
では、すでにDirect to Webで作った人は、Newボタンをクリックして新規にレコードを入力したり、一覧の左のアイコンをクリックして、レコード編集にかかっているかもしれない。Accessのデータベースでは、たいがい、オートナンバー型を使って主キーを生成していることが多いとは思うが、その状態では、どうやら新規レコード作成や、レコードの編集ができないのである。ちょっと困ったが、トレースなどをしながら、何とか分かったのは次のようなことだ。Direct to Webの動作に関わることのようなので、その原理から話をしよう。
Accessでは、オートナンバー型のフィールドを設けておけば、確実に主キーとなるので便利だ。レコードの挿入では、その主キーフィールド以外のフィールドに値を指定すればよく、レコード生成時に自動的に新しい値がオートナンバー型のフィールドに入力されるという手軽さがある。だが、Oracleなどを始め、こうした「オートナンバー型」のサポートがされていないデータベースエンジンは多い。サポートされていないというと嘘になるので補足するが、連番を生成するオブジェクトを用意しておき、そこから連番をいただいて、新しいレコードの主キーなどの連番を入れておくフィールドに挿入するという手続きを踏む。テーブル定義と、連番生成は分離しているのだ。
おそらく、WebObjectsはそうした状況を考えているのだろう。連番生成の機能をWebObjects側で用意している。たとえば、あるテーブルAddressがあるとする。その主キーフィールドがidだったとする。そして、レコードの追加や修正を最初に行うとき、データベースにEO_PK_TABLEというテーブルを作る(Enterprize Objects Primary Key Tableの略だろう)。フィールドは2つあって、テーブル名を収めるNAMEフィールド、そのテーブルの主キー値を収めるPKフィールドだ。このPKフィールドは、対応するテーブルの主キーフィールドに設定する「次の値」を記録する。EO_PK_TABLEテーブルを使って、要はテーブルごとに主キーの値に使う連番データを記録するということだ。このとき、Addressテーブルにデータを書き込もうとした場合には、idフィールドと同じ型でPKフィールドを作成する。動作上はもっともな話しなのではあるけども、Accessのテーブルの中では、PKフィールドがオートナンバー型になってしまう。オートナンバー型フィールドは、基本的にはレコード作成時に書き込みがなされそれを変更することはできない。Webブラウザからレコードの追加や修正が行われると、そのEO_PK_TABLEのテーブルに対応したPKフィールドの値を取り出し変更しようとする。つまり、次の値を取り出して、1を加えて元のフィールドに書き戻すのだ。そこで、エラーが出るようなのだ。
また、同様に、WebObjectsが生成した新しいレコードの主キーの値を、この例では、Addressテーブルのidフィールドに入力しようとする。idフィールドがオートナンバー型であるなら、自動的にidフィールドに設定される機能を使う。そのため、外部からidフィールドに書き込みするということをすることは基本的にできない。だけども、Direct to Webで作ったアプリケーションはそれをしてしまうようなのだ。つまり、自分が連番を生成するわけで、オートナンバー型のフィールドにも値を設定しようとしてやはりエラーがでる。Accessが特殊だという話しもあるだろうし、そうしたことはカスタマイズでなんとでもなると言うかも知れないが、とにかく手軽な解決方法が欲しい。
そこで考えたことは、オートナンバー型を使用しないことだ。Addressテーブルにある主キーフィールドのidは、「数値型」にしてしまう。作成したアプリケーションの設定を修正してもいいのだが、Direct to Webという位でアプリケーション作成は素早くできるので、1から作り直した方が早いだろう。また、EO_PK_TABLEがすでに作成されているのであるのなら、Access側を操作して削除しておく方がいい。あるいは、PKフィールドをやはり「数値型」にしておくのでもいいだろう。
こうしておくと、Webブラウザからレコードの追加や修正が基本的にはできるようになる。ただし、一方で、Access側でのアプリケーションを作り込んでいる場合には、要注意だ。オートナンバー型のおかげて、フォームなどで新規レコードを作成時には、主キーフィールドにユニークな値が勝手に入力される。しかしながら、「数値型」にしてしまうと、自分で値を設定しなければならない。EO_PK_TABLEの状態をもとにして、次の主キー値を生成する関数などを作成するのが順当だろうか。Access側で動くアプリケーションを作っている場合にはそちら、そちらの変更が必要になってしまうというわけだ。もっとも、Webで全部やるということになったのであれば、それは問題にはならない。だが、Access側で作り込みをしているのなら、オートナンバーを数値型に変更するのは場合によっては多大な労力がかかる。
いろいろ解析してここまでたどりついたが、実際に住所録で使っているデータベースをWebブラウザから新しいレコードを作成しても、エラーばかりがでる。細かい内容はさておいて、大原則は“SQLステートメントの解釈は厳しい”と思えばよいだろう。Webブラウザで新規レコードを作ってSaveボタンをクリックすると、WebObjectsのアプリケーションはSQL文を生成してそれをODBCに受け渡す。Accessなどを使っているときには、フィールド名などに自動的にクォーテーションを挿入するなどして、極力エラーが出ないように配慮されているが、WebObjectsからではそこまで配慮してくれないようで、結果的にSQLの解釈が厳しくなる。たとえば、どうしてもエラーが出るので、エラーメッセージの中にあるSQL文を、AccessのSQLビューで解析してみたら、SQLのキーワードと同じ名前をフィールド名で使っていた…。また、フィールド名に半角のマイナス記号があってもエラーが出た。「E-Mail」というフィールド名にしていたのだが、このフィールド名をクォーテーションで囲っていなかったので、EというフィールドからMailというフィールドを引き算するといった意味に解釈したのではないかと思う。他にも、AccessではOKだったけど、WebObjects経由だとダメなフィールド名はあるだろう。だが、とにかく、SQLの解釈が厳しいということを念頭に入れて、エラーメッセージを見つめれば原因は分かるかもしれない。
こうして、書き直しなどができるようになったのだけど、それでもダメな場合もあることに気がついた。Accessではテキスト型では「空文字の許可」というプロパティがあり、デフォルトでは「いいえ」になっている。つまり、フィールドには空文字は入力できないのである。SQL的には何も挿入しないか、NULLを入れておけばいいのだが、WebObjects的には、新規作成および更新時にはデータのないフィールドに対してもデータを書いてしまうことがあるようなのだ。ここで、WOTextFieldコンポーネントを使った1行だけのテキストフィールドであれば、それを空欄にすると特に値は指定しない。しかしながら、数行に渡るWOTextコンポーネントを使っている箇所では、そのボックスを空欄にすると、対応するフィールドに、空文字列を代入してしまう。だから、フィールドで空文字列を禁止していたならば、エラーが出るというわけだ。メモ型フィールドはWOTextを使うようなのだが、テキスト型でもある程度以上の長さのフィールドはWOTextを使う。カスタマイズで、WOTextからWOTextFieldに置き換えることで対処は可能だが、もっと手軽にはテーブルの設定で、空文字列を許可してしまうという手段もある。いずれにしても、やっぱりはまってしまうところだろう。
以上のように、WebObjectsのDirect to Webはほんとうに短時間でWebアプリケーションが作成できる。だが、満足に動かすための前提条件があるわけだ。ここでは、Accessのデータベースを使った事例を示したが、おそらく、データベースの種類ごとに同じようにつまずくポイントがあるのではないかと想像できる。ただ、それを知っておくのも今後のことを考えれば重要なことかもしれない。いずれにしても、“Accessのデフォルト”とは相性の悪いところは随所にあると言えるだろう。そこをうまく回避する必要があるわけだ。
【WindowsオフィスでWebObjects】は一段落させてもらう。近々、カスタマイズの方法を中心に、Direct to Webへのさらに突き進めてみたい。
カテゴリ:Windows, WebObjects
Tech Info Library-Jに、DHCPによるIPアドレスを解放する方法が説明された。OpenTransportでは、DHCPによってIPアドレスをリースを受けるが、終了時にはリースを解放することはないため、確保したIPアドレスはMacintoshを終了後もリースし続けて別のマシンに割り当てることはない。通常は問題は起きないが、IPアドレスが不足気味のサイトではできればマシンの終了時にリースを解放したいと考えるだろう。それを行うのが、TCP/IP Optionsであり、Mac OS 9.1の「Mac OS特別付録」フォルダに含まれている。これをインストールして使えばよい。なお、このTCP/IPオプションは英語版と日本語のOSを組み合わせても機能しないので注意が必要だ。
関連リンク:100454JO:Mac OS 9.1: TCP/IP Options J1-2.0 を使用して IP アドレスを解放する方法
カテゴリ:Tech Info Library-J, ネットワーク, Mac OS 9
Tech Info Library-Jに掲載された情報によると、Gigabit EthernetタイプのPower Mac G4に対応したMac OS X Server 1.2v3以前のものは、RADEONグラフィックスカードをサポートしないとしている。1.2v3も含めてRADEONカードはサポートされていないと記載されている。
なお、Ver.1.2v3以降の製品のアナウンスは行われていないことから、つまりは1999年に発売された系列のMac OS X Serverでは、RADEONカードを搭載したマシンはサポートされないということになると思われる。
関連リンク:100455JO:Mac OS X Server: 1.2v3 以前のバージョンは RADEON カードをサポートしていません
カテゴリ:Tech Info Library-J, Power Mac, Mac OS X Server
日本語での技術情報を掲載しているTech Info Library-Jにおいて、Mac OSに関連する文書が公開された。以下はアドレスと要約だ。
◇106103JN:Mac OS 9.1: WhatRoute の使用ライセンスが含まれています
http://til.info.apple.co.jp/cgi-bin/artnum?id=106103
Mac OS 9.1にはネットワーク管理ツールのWhatRouteが含まれている。
◇106105JN:Mac OS 9.1: 割り込み時に Open Transport 2.7.4 を呼び出すことができない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106105
Mac OS 9.1では割り込み時のOpenTransportの呼び出しができなくなったが、その場合に適切なエラーが出るようになった。
◇2354JN:Macintosh: アップルの各国語用キーボードで利用可能な言語
http://til.info.apple.co.jp/cgi-bin/artnum?id=2354
販売されている各国語のキーボードの一覧表。
◇3199JN:Japanese Language Kit:「漢字」、「カナ」および「ローマ字」の定義
http://til.info.apple.co.jp/cgi-bin/artnum?id=3199
表題の通りで、日本語版ユーザにとっては目新しいことではない。
◇31283JC:Mac OS 9: FTP 受動モードを使用していないと Web ブラウザでダウンロードできない
http://til.info.apple.co.jp/cgi-bin/artnum?id=31283
Webブラウザでのファイルのダウンロードができない場合、Mac OSの設定を受動モードにするとうまく行く場合がある。受動モードの設定方法が説明されている。
◇31168JC:Mac OS: 自動ソフトウェア・アップデートのインストールログを見る(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=31168
◇58145JC:Mac OS: RAM ディスクを使用不可にできない(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=58145
◇60580JN:Mac OS 9: カスタムアイコンと「ファイル・シンクロナイズ」コントロールパネルについて(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=60580
カテゴリ:Tech Info Library-J, Mac OS 9
日本語での技術情報を掲載しているTech Info Library-Jにおいて、iTunesやDisc Burnerに関連する文書が公開された。以下はアドレスと要約だ。
◇60785JN:iTunes 1.0: ライブラリを一致させる方法
http://til.info.apple.co.jp/cgi-bin/artnum?id=60785
2台のMacintoshで、iTunesのライブラリを一致させる方法が説明されている。「ファイル・シンクロナイズ」を使う。
◇60783JN:iTunes 1.0: DVD 用のプレーヤを使用してディスクが再生できない
http://til.info.apple.co.jp/cgi-bin/artnum?id=60783
iTunesで作ったディスクが、通常のDVDプレイヤでは再生できない場合がある。たとえば、CD-RWはDVDプレイヤでは再生できない。
◇60782JC:Disc Burner 1.0: オーディオ CD (Audio CD) フォーマットを使うには iTunes が必要です
http://til.info.apple.co.jp/cgi-bin/artnum?id=60782
Disc BurnerでオーディオCDを作成するには、iTunesがインストールされている必要がある。
◇60781JN:Disc Burner 1.0:“CD の作成 (Burn CD)”コマンドが「特別」メニューに表示されない
http://til.info.apple.co.jp/cgi-bin/artnum?id=60781
システムの入れ替えをすると、メニューに有る「CDの作成」の項目が表示されなくなってしまうことがある。Disc Burnerを再インストールすれば良い。
◇60780JN:Power Mac G4: 新規インストールを行うと Disc Burner 1.0 が使えなくなる
http://til.info.apple.co.jp/cgi-bin/artnum?id=60780
Mac OS 9.1の新規インストールでDisc Burnerを使えなくなることがあるので、別途インストールの必要がある。
カテゴリ:Tech Info Library-J, アプリケーション
日本語での技術情報を提供するTech Info Library-Jに、別掲の記事以外に以下の文書が掲載されている。アドレスと要約をまとめておく。
□ハードウエア関連
◇58765JC:Power Mac G4 (Digital Audio): サウンドのデジタル化について
http://til.info.apple.co.jp/cgi-bin/artnum?id=58765
新しいPower Mac G4のサウンド関連の機能がデジタル化されている点についての概要。
◇58771JC:PowerMac G4 (Digital Audio): CD-RW ドライブのトレイを閉めてもすぐに開いてしまう
http://til.info.apple.co.jp/cgi-bin/artnum?id=58771
イジェクトボタンがテープで固定されているからで、それを取り除けばよい。
◇18987JN:PowerBook & PowerBook Accessories: シリアル番号の記載場所
http://til.info.apple.co.jp/cgi-bin/artnum?id=18987
機種ごとに、シリアル番号が記載されている場所がまとめられている。
◇24314JC:PowerBook G3:「モデム」コントロールパネルについて
http://til.info.apple.co.jp/cgi-bin/artnum?id=24314
タイトルの通りで、基本的な使い方が簡単に説明されている。
◇24315JN:PowerBook G3: 赤外線コントロールパネルについて
http://til.info.apple.co.jp/cgi-bin/artnum?id=24315
画面ショットだけ。
◇88057JC:PowerBook, iBook: バッテリの残量表示のオン/オフ
http://til.info.apple.co.jp/cgi-bin/artnum?id=88057
メニューバーに表示されるバッテリ残量表示のオンおよびオフにする方法(「日付&時刻」コントロールパネルを使う)が手順で説明されている。
◇75110JN:iMac/Cube DVD-ROM Update: 追加インストールメッセージ
http://til.info.apple.co.jp/cgi-bin/artnum?id=75110
このアップデータを利用中に表示される可能性のあるメッセージとその対処法についてまとめられている。
◇88055JC:iMac: ダイアルアップ接続時にスピーカから聞こえる接続音について
http://til.info.apple.co.jp/cgi-bin/artnum?id=88055
モデムが接続したかどうかを分かるようにするために音を出している。音を出さないようにする方法も説明されている。
◇58753JC:iMac: サウンド出力ポートの仕様
http://til.info.apple.co.jp/cgi-bin/artnum?id=58753
電気特性やS/N比、レベルなどの情報が記載されている。
◇30648JC:iMac: よくお問い合わせいただく質問 (1/2)(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=30648
□ソフトウエア関連
◇60320JN:QuickTime: Web 再生用に最適化したムービーを作成する
http://til.info.apple.co.jp/cgi-bin/artnum?id=60320
QuickTimeのWeb向けの機能について概説されている。回線スピードに応じたムービーが作成できる点などがまとめられている。
◇25233JN:Final Cut Pro 1.2.5:「最新情報」項目
http://til.info.apple.co.jp/cgi-bin/artnum?id=25233
Final Cut Pro 1.2.5の「最新情報」として提供された情報の内容。
◇25208JC:iMovie 2.0.x: 3.9 GB より大きなムービーは QuickTime Player で再生できない
http://til.info.apple.co.jp/cgi-bin/artnum?id=25208
3.GB以上のムービーはQuickTime PlayerやiMovieでは扱えないので、圧縮率を高めるなどしてサイズを調整する。
◇25000JN:Apple DVD Player:「ディスクに汚れやキズがついている」のエラーメッセージ(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=25000
◇24464JN:Internet: インターネットで利用できる一般的なファイルフォーマット(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=24464
◇24629JN:Microsoft Internet Explorer: MacBinary 用の設定(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=24629
◇58645JN:USB Enabled Macintosh:“スリープ”に関する問題の対処方法(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=58645
カテゴリ:Tech Info Library-J