Macintosh Developer Online (MDOnline)


2000年11月10日発行号 - 東急ハンズ池袋店のサイトはWebObjects



明日からMOSAのイベントですので、次回の配信は月曜日に行う予定です。イベントの内容は可能な限り記事にしたいとは思いますが、機密なのかそうでないのか、今一つ分からないということもありますので、どこまで記事にできるかは未知数です。また、日曜日のセッションは平行して行われますし、私も前に出て話をすることもありますので、一部の内容しか残念ながらお届けできないと思います。
休む話ばかりで申し訳ないですが、昨年、米国の感謝祭時期に全然記事のネタがなかったこともありますので、日本では勤労感謝の日でもありますので、11月22日の次の発行は11月27日ということにします。ご了承ください。年末年始もそろそろ計画を立てないといけないのですけど、やはり日本とアメリカでは行動パターンが違うので考え所です。昨年の記事の流れをみて考えないと…。
雑誌の記事も書いていますが、そろそろ発行号が「2001年」になりつつあります。年末進行の足音はすでに高く(笑)、年内発売の締め切りでちょっとヘトヘト状態です。郵便局に注文していた年賀はがきも届き、気分はどんどんと年末に向かいつつあると言うところでしょうか。2000年問題で幕開けした今年もあっという間に過ぎた気がしますが、おっと、その前に年賀状やらなんやら、片付けないといけない仕事が山のようにありますね。
(新居雅行 msyk@mdonline.jp


東急ハンズ池袋店のWebサイトを運用するのはWebObjects 4.5

東急ハンズに買い物に行く…と言えばなにかいいものを買いに行くのと同じような響きがある。その東急ハンズ池袋店のWebサイトは、Appleが開発・販売するアプリケーションサーバの「WebObjects」を使って運用されている。どのようなシステムを開発し運用しているのかを、システムを開発した千明社のシステム開発課の倉持哲也氏にうかがった。
千明社:http://www.senmeisha.co.jp

DIY用品や文房具などを扱う東急ハンズは東京圏に7件、大阪と名古屋にそれぞれ2件、神戸、広島、札幌に各1件の主力ショップを構えている。大型店であることが特徴で、大きなものから小さな素材も含めて圧倒的な品揃えである。クラフトの材料やあるいは金物類、携帯電話関連グッズなども扱い、東急ハンズに行けば必ず何かあると言わせるくらいなのである。プレゼントになるような商品も取り揃えるなど、買い物に出かけるときの目的地ともなっているような店鋪である。
Webサイトは店鋪ごとに運用されているそうで、池袋店のサイトを千明社が開発し、運用しているのである(記事の最後にアドレスを記載している)。売れ筋商品の告知や、あるいは通信販売を行うといったコマース機能も備えたものであり、商品情報をリアルタイムで更新するなど、東急ハンズの1つの売り場機能を果たすものだ。お勧め商品の一覧から商品説明のページに移動し、そこでボタン1つで買い物カゴに入れるという手軽にショッピングできるユーザインタフェースが構築されている。購入時の送付先の入力では郵便番号から住所の自動入力ができるなどの工夫も見られる。イベントの告知や、「レシピ」として手づくり豆腐の作り方などを掲載するなど、単なる販売サイト以上の情報提供も行っている。

運用システムは、PowerMac G4 Server(450MHz、512MBメモリ)にMac OS X Server 1.2を搭載したアプリケーションサーバを設置して、ここでWebObjects 4.5を稼動させている。さらに別のデータベースサーバを設置していて、こちらはPentium III Xeon 500MHzのCPUに512MBのメモリを搭載したマシンで、Windows NT 4.0を稼動させている。データベースエンジンには、Oracle8i(r8.1.5)を利用している。さらに、Webサーバとして333MHzのPentium II、256MBのメモリのマシンにredhat Linux 6.2Jを搭載し、Apache 1.3.12を稼動している。合わせて3台のマシンで運用しているが、Webサーバとその他のマシンの間にファイアウォールを入れてセキュリティ面の強化を行っている。WebObjectsを採用した理由としては、倉持氏は「オブジェクト指向が隅々にまで行き渡っているので生産性が高く、少人数でもシステム構築ができること。それに成功事例も多くあり、負荷分散も容易であること」を挙げている。設計から納品まで1ヶ月で完了させており、PerlのCGIで開発していたら倍の時間がかかったかもしれないと見積もる。また、他社のアプリケーションサーバに比べて価格が安いため、コストパフォーマンスは比較にならないくらいWebObjectsの方がいいこともあった。安定性についても申し分がなく、5ヶ月間運用をしているが、過負荷やアプリケーションエラー、OSの問題でのリブートは1度もないという。

一方、開発に必要な情報については英語がほとんどであることや、テキストなども少ないこともあって、トレーニングや情報取得の点での問題はあった。そこで、開発から運用においては、WebObjectsコンサルタントで著名な有限会社テクニカル・ピット代表の倉橋浩一氏に広範囲にわたってサポートしてもらったそうだ。
有限会社テクニカル・ピット:http://www.techpit.co.jp/WO/
WebObjectsの全体像を理解するのに時間はかかったものの、EOF(Enterprise Object Framework)は高く評価しており、「使いこなせれば鬼に金棒というくらいの強力なもので、他アプリケーションサーバーのデータベース接続環境が貧弱に見えてしまう」(倉持氏)というほど評価をしている。開発においては当初はアプリケーションでの日本語処理の問題が懸念はされたが、これについては何の問題もなかった。一方、Javaで開発を行うもののメモリ管理の必要があり、その点に注意を払う必要があったそうだ。また、千明社ではSQL Serverでの開発経験はあったが、Mac OS X ServerのWebObjectsからはSQL Serverに接続することができないために、結果的にOracleを使ったという経緯もある。「Mac OS X Server版のWebObjects4.5で安心して利用できるRDBMSはOracleとOpenBaseだと感じた」そうだ。
今後についても、情報掲載をやりやすくするなどの改良を考えているそうだが、Java2に対応したWebObjects 5のリリースを待って、Java2を駆使したアプリケーション開発に取り組む考えもあるとのことだ。

関連リンク:東急ハンズ池袋店
カテゴリ:WebObjects


Interface Builderで定義したシートを表示する方法を示すサンプルプログラム

Mac OS Xのユーザインタフェースの特徴の1つとして「シート」という形式のウインドウがある。たとえば、文書ファイルを閉じるときに閉じるかどうかをたずねるダイアログボックスは、ウインドウのタイトルバーからすり出てくるような「シート」として表示される。ファイルの保存のダイアログボックスもやはりシートとして表示される。メインのウインドウに関連するダイアログボックスとしての表示に使われるのがシートであり、ダイアログボックスのメッセージの関連性をある程度ユーザに示すものとして、Mac OS Xでは積極的に使うべきものだ。そのシートの表示方法を示すサンプルプログラム「Sheets」が公開されている。
このサンプルプログラムは、Project Builderで作成されているが、Carbonアプリケーションであり、Mach-Oで出力されている。Mac OS X専用であるが、シート自体もMac OS Xでないと使えない。このシートを、Interface Builderで作成しておいて、プログラムで表示する方法を、このサンプルは示している。Interface Builderではウインドウなどをグラフィカルに設計できるが、ウインドウの1つとしてオブジェクト定義をしておき、nibファイルとして保存しておく。このとき、ウインドウのクラスとしてインスペクタで「Sheet」を選択しておくのがポイントとなる。あとは、nibのデータを利用したウインドウの作成方法と大きな違いはないと言えるだろう。プログラム自体はCで定義してあるが、nibで定義したウインドウを表示する方法を知るサンプルとしても参照できるだろう。Cで作成されたものなので、Interface Builderで、クリックして動作させるクラスなどといった定義はできない。つまり、ドラッグして線で結ぶような設定はできないため、Interface BuilderはあたかもResEditのように使っていると言えばよいだろうか。OKボタンなどへの反応は、Carbon Event Managerによるイベントハンドラによるもので、ソース内でボタンごとの分岐がcase文で作成されている。

関連リンク:Sheets 1.0
カテゴリ:ユーザインタフェース, Mac OS X, Carbon/CF


印刷するグラフポートのビット深度を正しく得る方法

Technical Q&Aに、印刷を行うグラフポートのデプス(画素1ドットあたりのビット数)の取得方法についての記事が掲載されている。PMSessionGetGraphicsContextで取得したグラフポートからGetPixDepthを利用しても、デプスが取得できないというもの。これは、印刷ポートが白黒の場合のみに有効な方法となっている。取得したグラフポートからGetPortPixMapを使っていったんPixMapを得て、その結果に対してGetPixDepthを適用することで正しく取得ができる。そのためのサンプルプログラムも掲載されている。

関連リンク:QD63:Finding the bit depth of a Carbon Printing Manager graphics context
カテゴリ:Technical Q&A, グラフィックス


ATSUIやMLTEでテキスト印刷を行うために必要なフラグのセット

Technical Q&Aに、ATSUIやMLTEでの印刷に関する問題についての文書が掲載されている。ATSUIやMLTEでのテキスト描画処理において、描画が行われないという問題で、プリンタドライバの作成者からの問いとなっている。印刷処理を行う場合に、グローバルにあるフラグを立てておかないと、ATSUIやMLTEでの印刷処理がなされない。そのための、マクロについても作成例が示されている。

関連リンク:QD64:ATSUI and MLTE Printing
カテゴリ:Technical Q&A, グラフィックス


マスク領域を求めるAPIをCarbonで使う時の結果のビットマップを得る方法

Technical Q&Aに、QuickDrawのCalcCMaskやSeedCFillをCarbon対応するときのポイントを示した文書が掲載された。これらマスク領域を得るAPIでは、これまでは結果を1ビットのグラフポートで得ていた。そのためにOpenPortを使っていたが、これはCarbonでは対応されていない。そのため、GetPortBitMapForCopyBitsを使って作ったPixMapを渡して、1ビットのデプスのGWorldを作成し、そこに結果を残すようにプログラムを修正すればよい。

関連リンク:QD62:CalcCMask and SeedCFill in Carbon
カテゴリ:Technical Q&A, グラフィックス


GetPortBitMapForCopyBitsは引数にBitMapを指定する必要があるときのためのもの

Technical Q&AにCarbon APIに用意されているGetPortBitMapForCopyBitsというAPIコールについての説明が掲載されている。これは、引数にグラフポートではなくBitMapを必要とするようなAPIを使う時に併用するものだ。また、文字通りCopyBits向けに用意されたものでもある。一般には、BitMapへのポインタだけでなく、PixMapへのポインタも指定できる点も留意しておくべきことである。

関連リンク:QD61:GetPortBitMapForCopyBits
カテゴリ:Technical Q&A, グラフィックス


WebObjectsアプリケーションのデバッガでコマンドが正しく動作しない点の修正

Tech Info Libraryに、ある種の環境で稼動しているWebObjects 4.xのアプリケーションをgdbでデバッグするときの問題についての文書が掲載されている。print-object(po)コマンドが正しい結果を出力しないというものだ。それを修正したプログラムが配付されており、このTIL文書からリンクが設定されている。プログラムをダウンロードするとともに、設定ファイルの修正も必要になる。ただし、この修正は、WebObjectsアプリケーション向けであり、AppKitアプリケーションでは留意が必要になる。いずれにしても、gdbベースでのデバッグを行っているプログラマは、ドキュメントの内容を確認して必要ならgdbの更新を行っておくべきだろう。

関連リンク:WebObjects 4.x: gdb’s Print-Object Command Issues
カテゴリ:Knowledge Base(旧TIL), WebObjects


Mac OS Xでのディスプレイの状態や設定を行うAPIのリファレンスが公開

Technoteに、Mac OS Xで利用できるCGDirectDisplay APIおよびCGDirectPalette APIについてのリファレンスが掲載されている。

◇TN2007:The CGDirectDisplay API
 http://developer.apple.com/technotes/tn/tn2007.html

◇TN2008:The CGDirectPalette API
 http://developer.apple.com/technotes/tn/tn2008.html

CGDirectDisplay APIは、Mac OS 9までにあったDisplay Managerに代わるものだ。ディスプレイのサイズやデプスなどの動作モードを取得したり、カーソルの位置やガンマテーブルの取得などができる。CGDirectPalette APIはディスプレイのパレットの取得を行うために用意されている。サンプルのプログラムも掲載されている。
Mac OS Xでディスプレイコントロールを伴うようなアプリケーションやあるいはユーティリティを作成する場合には、このAPIを使うことになるだろう。

カテゴリ:Technote, グラフィックス, Mac OS X


USBのネットワークデバイスドライバのプログラミングに関する解説

Technical Q&Aで、USBのネットワークデバイスドライバにおけるDeferred TaskとSecondary Interruptについての解説文書が掲載されている。USBからはSecondary Interruptでのコールバックが発生するが、Open Transportではdeferred taskレベルでの呼び出しになる。相互にやりとりをするための方法については込み入った話となり、原理からふまえて詳細に記載されている。

関連リンク:DV45:Coordinating Deferred Tasks and Secondary Interrupts
カテゴリ:Technical Q&A, ネットワーク, 周辺機器


FrontBase 2.18のMac OS X Public Beta対応バージョンがリリース

FrontBase社は、同社のデータベースエンジンの最新版FrontBase 2.18のMac OS X Public Beta対応バージョンをリリースした。FrontBaseはCocoaをベースにしたMac OS Xネイティブなアプリケーションであり、WebObjectsとのアダプタなども用意されている。また、Linuxなど他のプラットフォームでも稼動する。FrontBase自体はANSI Cで作成されており、内部的にはUNICODEでのテキスト保存を行うようになっている。TCP/IPベースで接続ができ、SQL 92にのっとったものだ。トランザクションやストアドプロシージャに対応し、暗号化した保存や通信にも対応する。レプリけーションやクラスタリングによるマルチサーバ運用にも対応する。価格は$499から$1999となっているが、フリーの開発バージョンも用意されている。

関連リンク:FrontBase
カテゴリ:データベース


ユーザグループ懇親会でMac OS Xのフィードバックの受付も

アップルのユーザグループコネクションは、ほぼ毎月行われているユーザグループ懇親会を2000年11月18日(土)13:30〜18:30に東京・初台のアップル本社で開催する。デモとしては、マクロメディア株式会社よりMacromedia Flash 5など、株式会社ヤマタネよりPC-Transer 2000・MED-Transerなど、メディアドライブ株式会社よりe.Typist バイリンガル v6.0などについて行われる予定だ。また、Mac OS Xの製品担当者が直接フィードバックを受け付ける時間も設けられる。Mac OS Xに関する要望を直接アップルに伝えることができる数少ないチャンスになるかもしれない。

関連リンク:11/18ユーザグループ懇親会
カテゴリ:Mac OS X, イベント


TIL-JにMac OS X Public Betaに関する文書が翻訳されて公開

日本語で技術情報を提供しているTech Info Library-Jにおいて、2000年11月9日付けで、以下のようなMac OS X Public Betaに関する文書が掲載された。いずれも基本的には英語版のドキュメントが既公開であり、MDOnlineでは記事化しているので、文書のタイトルとアドレスを列挙しておくにとどめる。

◇43089JC:「Welcome to Mac OS X Public Beta」PDF 書類について
 http://til.info.apple.co.jp/cgi-bin/artnum?id=43089
◇43087JC:Mac OS X Public Beta についての FAQ の PDF 書類
 http://til.info.apple.co.jp/cgi-bin/artnum?id=43087
◇43088JC:Mac OS X Public Beta についての White Paper の PDF 書類
 http://til.info.apple.co.jp/cgi-bin/artnum?id=43088
◇106024JC:Mac OS X Public Beta: PC カードを認識できない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106024
◇106022JN:Mac OS X Public Beta: インターネットアプリケーションが Classic 環境で動作しない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106022
◇106023JC:Mac OS X Public Beta: 輝度調整キーが使えない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106023
◇60737JC:Mac OS X Public Beta: ユーザのパスワードを変える方法
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60737
◇43090JC:Mac OS X Public Beta: 利用可能なアップル製コンピュータ
 http://til.info.apple.co.jp/cgi-bin/artnum?id=43090
◇106025JN:Mac OS X Public Beta: Mac OS 9 の再インストール
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106025
◇106026JN:Mac OS X Public Beta: PPP 接続アプリケーションが 1 時間後に接続を切る
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106026
◇60753JN:Mac OS X Public Beta: 日付と時刻を「ISO 8601:1988 標準規格」に設定する方法
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60753
◇43086JC:Mac OS X Public Beta: インストール手順について
 http://til.info.apple.co.jp/cgi-bin/artnum?id=43086

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J, Mac OS X


iMovie 2でのビデオ取込みでサウンドにノイズが入る場合の対処

日本語で技術情報を提供しているTech Info Library-JにiMovie関連の情報が掲載された。以下は、その文書へのアドレスと概要だ。

◇100427JO:iMovie 2: ビデオカメラから読み込む音声にノイズが入るのを回避する方法
 http://til.info.apple.co.jp/cgi-bin/artnum?id=100427
iMovie 2では「カメラからのオーディオにフィルタをかける」がオンになっているが、過大な音が入るような場合に誤動作することがある。そのようなビデオの取込みには設定をオフにして再度やり直すとうまいくいくことがある。

◇100428JO:iMovie 1.0: デジタル 8 カメラにテープエラーのため書き出しができない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=100428
iMovie 1.0では、MEのHi8テープに出力するときに、エラーを出す。1.0.2以降では修正されているためにこうしたエラーは出されない。

◇100371JO:iMovie 1.0.x, 2.0: Sony DVMC-DA2 で出力できない(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=100371

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J, ビデオ編集


ファイルメーカーProで電子メールのやりとりを行う機能を追加するプラグイン

FileMaker Proで電子メールのやりとりを行うプラグイン「.mail.it for Mac」のベータ版がリリースされた。メールの送信や、メールの受信でレコードを新しく作ることなどができる。ファイルの添付やHTMLメール、リッチテキストメールにも対応している。一定の条件のメールだけをダウンロードしたり、自動応答などの機能も備える。価格は$59.00からとなっているが、フリーのトライアルバージョンもある。Mac版が配付されているが、Windows版もすぐに公開する予定だ。

関連リンク:Get .mail.it for Mac now!
カテゴリ:データベース


2000/11/9に公開されたその他のTIL-Jの記事

日本語で技術情報を提供しているTech Info Library-Jにおいて、2000年11月9日付けで、別掲の記事以外に以下の記事が掲載されている。

◇86062JC:Mac OS 9.0.4: Apple DVD Player がマルチユーザログイン前に起動する
 http://til.info.apple.co.jp/cgi-bin/artnum?id=86062
◇60530JC:Mac OS 9: ホットファンクションキーを使うには
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60530
◇60295JN:QuickTime 4: 解説
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60295
◇43082JC:QuickTime 4: Macintosh へのカスタムインストール
 http://til.info.apple.co.jp/cgi-bin/artnum?id=43082
◇60296JC:QuickTime 4: 製品仕様
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60296
◇60300JN:QuickTime 4: テクニカルシート
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60300
◇60342JC:QuickTime 4: Windows での QuickTime 4 のアンインストール手順
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60342
◇60299JC:QuickTime 4: 特徴と利点
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60299
◇24677JN:Mac OS 8.5: IXMicro カードでクラッシュする
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24677
◇24676JN:Mac OS 8.5: ヘルプビューアがタイプ 3 のエラーで終了する
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24676
◇24679JC:Mac OS 8.5:「インターネット」コントロールパネルと“Internet Config”アプリケーション
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24679
◇58693JN:Apple DVD Player 2: アプリケーションと DVDRuntimeLib のバージョンは一致させる必要があります
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58693
◇20287JN:省エネルギー設定: CD-ROM ディスクの再生ができなくなる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=20287
◇86015JC:AirMac Software Base Station: Ethernet を介してインターネット接続を共有する
 http://til.info.apple.co.jp/cgi-bin/artnum?id=86015
◇58551JC:DVI ビデオケーブルを延長する
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58551
◇7328JN:MacBinary: ファイルフォーマットについて
 http://til.info.apple.co.jp/cgi-bin/artnum?id=7328
◇22059JN:Macintosh: 起動処理の順序
 http://til.info.apple.co.jp/cgi-bin/artnum?id=22059
◇19533JN:Macintosh Computers: 起動プロセスにかなり時間がかかる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=19533
◇58621JC:iBook: 外付けのキーボードから起動することはできません
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58621
◇60461JC:Power Macintosh G3 (Blue and White): 複数のキーボードをつなげて起動しているときの Shift キー操作について
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60461
◇16889JN:Power Macintosh:「仮想メモリ」を“入”にして RAM の使用を最適にする
 http://til.info.apple.co.jp/cgi-bin/artnum?id=16889
◇24328JN:Power Macintosh G3: ビデオメモリが 6MB のモデルについて
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24328
◇88042JC:PowerBook Firmware Update 2.7: Read Me
 http://til.info.apple.co.jp/cgi-bin/artnum?id=88042
◇30541JN:PowerBook G3 Series: Mac OS 拡張フォーマットの互換性に関する問題
 http://til.info.apple.co.jp/cgi-bin/artnum?id=30541
◇58641JC:Macintosh: 標準外のディスク形状はスロットローディングのドライブで使用できません(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58641
◇24639JN:Power Macintosh G3, iMac: スリープ状態のときはファイル共有が遅くなる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24639
◇58451JN:Power Mac G4 (AGP Graphics): シングルチャネル SCSI カードがスリープ解除を妨げることがある
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58451
◇20328JN:Macintosh Computers: 内蔵電池の容量低下により画像が表示されなくなります
 http://til.info.apple.co.jp/cgi-bin/artnum?id=20328
◇88014JC:iMac Discussion Board: よくお問い合わせいただくご質問 (FAQ):パート 2
 http://til.info.apple.co.jp/cgi-bin/artnum?id=88014

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J