Macintosh Developer Online (MDOnline)


2000年8月31日発行号 - Mac OS Xは9月リリース



夏休みでニューズレターの発行をお休みさせていただき、大変御迷惑をおかけしました。今日から再開いたします。その間、Mac OS Xのベータ版リリースのニュース等が飛び込んできていますが、ちょっと後になったので分析・予想記事でまとめてみました。ほんの何日か休んだだけではありますが、それでも何となく休みぼけのような感じで、なかなかエンジンがかからないものですね。いずれにしても、もうすぐ創刊1周年ということありますし、気合いを入れ替えてがんばります。
休みの間は、天橋立に家族旅行に行きました。兄の知り合いという人から、リゾートマンションを借りることができたので、非常に快適な、まさにこれぞ休日という感じの休日を堪能できました。マンションが合計9棟くらいある地域のあちらこちらに建てられていて、ある棟にはプールがあり、別のところにはテニスコートがあるなど、いかにもリゾートといった施設が揃っています。また、ビーチに直結した棟もあり、何年かぶりに海で泳いだりもしました。だけど、困ったことに、PHSが全然つながらず、一切通信ができませんでした。途中、近所の街のスーパーに買い出しに行ったときにメールをダウンロードしようかと思ったけど、その街(というか村ですね)では一切「圏外」の表示しかみられなかったのです。PHSでしか使えないプロバイダとしか契約していなかったのであきらめました。まあ、休暇だからいいかということもあります。若干どこかからか電波は来ているため、捕捉に電力を使ったためか、到着2日目にはPHSの電池もなくなりました。兄や父が持ってきた携帯電話はぜんぜん大丈夫で使える状態だったのですが、PHSはやっぱり場所を選ぶということが実感されました。海には行ったけど泳ぎは得意でないので、波打ち際のムービー撮影なんかをしていましたが、デジカメなので短時間しか録画できなかったのが残念です。若狭湾の水は十分透き通っていてきれいでした。夏場は日本海側は海は穏やかですね。
(新居雅行 msyk@mdonline.jp


Mac OS Xの出荷日は2000年9月13日、その日に登場するものは何か?

Mac OS Xのパブリックベータ版のリリースが2000年9月13日と表明された。Seybold San Franciscoの基調講演の場で、CEOのスティーブ・ジョブズ氏が口にした言葉で、これまでの「夏」という表現を一歩進めたことは、待望の情報であることは間違いはない。この点は、すでにいろいろなメディアで紹介されているので、それを受けての分析を試みたい。
まず、明白なことは、配付方法が公開されていないということがある。秘密なのだろうか? そんなことは秘密にしてもあまり意味はない。もちろん、CD-ROMで配付ということになった場合、事前の漏えいを目論むインサイダーの標的にはなるかもしれないが、いずれにしても、ダウンロードかCD-ROMでの配付かいずれかしかないわけで、秘密にしたところであまり意味のないことである。予想としては、「決まっていない」という線が何となく思い浮かぶ。
そしてもう1つ気になることは、ニュースリリースが出ていないことだ。5月のWWDCでは直後にDP4のリリースがあったことを、ニュースリリースとして公開している。Mac OS Xのパブリックベータのリリースという重要な事柄で、ニュースリリースが出ないことは極めて異常だと考えられる。Appleのサイトでは、Mac OS Xのページに、ほんの少し、9月13日であることが紹介されているに留まっている。これも予想だが、9月13日という日付は、それほど社内には根回っていなかったのではないだろうか。そして、基調講演でいきなり日付が指定され、ニュースリリースを発行しようとしたら、関係者の調整がつかなくて難航しているということも予想できる。もちろん、具体的な配付方法等の情報を含めてリリースを作っているとも考えられるのだが、いずれにしても、基調講演の内容をフォローするニュースリリースが出ないことはやや異例である。

Apple社内でどんなことが起こっているのかは分からない。だが、度重なるリリースの遅れということを重視する人たちと、完成度を重視する人たちがいることはおそらく間違いないだろう。こうした考えの違う人たちで議論をしていると、へたをするといつまでたっても進展しないということもありうる。その意味で、トップから「そろそろいこう」というお達しをしたのではないかとも考えられる。
では、9月13日に何が出てくるのか? もちろん、Apple expo 2000の来場者にCD-ROMをばんばん配る…というのは期待したいところだが、それはしそうにないような気がする。1つの考えられるシナリオとして「ベータ版だから」という理由で限定的な配付になるではないだろうか。ADC(Apple Developer Connection)メンバーにはとりあえず発送するかもしれないが、それ以外の人たちには、事実上ADCのOnlineメンバーになるのと同じ手続きを経て、申込制にする。そして、申込者に発送するという手順になるのではないだろうか。「一般ユーザの皆様は、2001年初頭の最終リリースをお待ち下さい」というスタンスを取るというわけだ。これだと、CD-ROMの製造も、発送の少し前まで引っ張ることができるし、パッケージもいらない。手軽に出荷できるというわけだ。
もちろん、以上は想像である。一般に「出荷」と言えば、店頭に並ぶことを期待するが、Mac OS Xは店頭で販売するとは今まで一切言っていないし、ADCメンバーに配付するだけでも「出荷」という表現は使われてきている。だが、残り2週間で実現できるのは以上のような手法がいちばん確実だと思われる。もちろん、実際にどうなるかも、2週間語に分かるのであり、いずれにしても楽しみに出荷を待ちたい。

関連リンク:Mac OS X
カテゴリ:Mac OS X, Mac OSテクノロジー


【小池邦人のプログラミング日記】2000/8/27<Mac OS Xへの道 Carbon対応の実際(6)>

既存のソースコードをCarbon APIに対応させ、Mac OS X環境でも起動できるアプリを作るための工程のうち、今回は(8)新しいEventモデルへの変更について解説します。

(8)新しいEventモデルへの変更

CarbonLib v1.04を用い、今まで説明してきた工程に従えば、Mac OS Xでちゃんと動くアプリケーションが開発できたはずです。これがMac OS Xでちゃんと動かないとなると、Mac OS XへのCarbon APIの実装にバグがあることになります。しかし、現状のMac OS XがまだDP4(デベロッパ・プレビュー版)であることを考慮すれば、厳密なチェックは少々可哀想です。Appleの言葉を信じれば(笑)9月中にはMac OS Xのパブリックβ版が発表されるはずですので、とりあえずそれを待ち、CarbonLib APIの実装状態を厳しくチェックしてみたいと思います。

さて、CarbonLib v1.1(現状はαバージョン)から新規に「Carbon Event Manager」がサポートされました。この新しいEventモデルは、今までのようなイベントループによる分岐を使わず、Apple Eventで用いた手法を拡張し、発生したEventを各オブジェクトに対応させたEvent Handlerで処理する設計になっています。例えば、ユーザがウィンドウ(オブジェクト)上の、Close Box、Zoom Box、Grow Boxなどをマウスクリックした時でも、Event Handlerとして登録されているルーチンが処理することになります。あらゆるオブジェクト(ウィンドウ、メニュー、コントローラ、ダイアログ)に対するEvent処理を、すべてこの仕組みで統一しようというのが新モデルの目標です。

当然ですが、今まで利用してきたイベントループとWaitNextEvent()を使った旧Eventモデルでも、ちゃんとMac OS X用のアプリケーションは開発できます。以前にお話した「Carbon Print Manager」や「Carbon Scrap Manager」のような強制書き換えは必要ありません。ただし、Mac OS XではCarbon Event Managerを利用した方がアプリケーションのパフォーマンスが向上するようです。つまり(8)の「新しいEventモデルへの変更」の工程は(9)の「Mac OS Xに対応する最適化」に含もまれるわけです。しかし、作業量が非常に大きくなるので、わざわざ別工程として抜き出してみました。

現在のCarbonLib v1.1a4 SDKには、Carbon Event Managerに関する詳しいドキュメントは含まれていません(涙)そこで、AppleのCarbon Documentのサイトを見てみると、以下のアドレスにCarbon Event Managerに関するドキュメントが登録されていることがわかります。

◇Carbon Event Manager
 http://developer.apple.com/techpubs/carbon/oss/CarbonEventManager/carboneventmanager.html

このうち「Carbon Event Manager Preliminary API Reference」は、APIや定数に関するリファレンス的な説明がHTMLにより記載されています。このドキュメントと、ユニバーサルヘッダーファイルの「CarbonEvents.h」を参考にすれば、Carbon Event ManagerにどのようなAPIが存在するのかは、だいたい把握することができます。もうひとつの「Introduction to the Carbon Event Manager [PDF]」の方で、こうしたAPIの使い方を詳しく解説しているだろうと見てみると、見事に期待を裏切られます。何とこのPDFファイルは、たった5ページの内容しかないのです。恐ろしく貧弱な内容なのですが、このドキュメントが言っている事を簡単にまとめると以下のようになります。

(1)Mac OS Xでのパフォーマンスを上げるならCarbon Event Managerを使え。
(2)マウス座標の入手はGetMouse()の代わりにTrackMouseLocation()を使え。
(3)押されたキーの内容をチェックするためだけに待ちループを作るな。
(4)定期的に割り込む必要がある処理はInstallEventLoopTimer()で登録しろ。

(1)に対応するための最初の手順はRunApplicationEventLoop()を呼ぶことです。するとアプリケーションのEvent管理は、QuitApplicationEventLoop()を呼ぶまでOS側に移管されます。つまり、アプリ側でイベントループを用意して処理分岐をさせる必要はないのです。この新しいEventモデルへの移行には、あらゆるイベントに対するEvent Handlerが必要です。こうしたHandlerの大部分は、今までのEvent処理ルーチンの書き直しで済むとは思いますが、それにしても大きな変更となります。Carbon Eventモデルの雰囲気を知るのには、SDKのSample Codeフォルダにある「BasicCarbEvents」や「SimplerText」といったサンプルプロジェクトを参考にしてみてください。

(2)は、メインイベントループから外れた所でマウス座標を得る手段を、GetMouse()からTrackMouseLocation()へ切り替えろということです。今までの...

 while( StillDown() )
 {
    GetMouse( &loc );
 }

等を、

 TrackMouseLocation(curPort,&loc,&result );
 while (result !=kMouseTrackingMouseReleased )
 {
    TrackMouseLocation(curPort,&loc,&result );
 }

へと書き直します。StillDown()やGetMouse()はプロセスに対するオーバーヘッドが大きいので、Mac OS Xでは推奨されないと言うことでしょう。

(3)は、特定のキーや特殊キー(オプションやコントロールなど)が押されれているかどうかの判断を、あちこちで行うことは止め、ちゃんとEvent Handlerとして登録しろという事です。ドキュメントには以下のようなEvent Handlerを登録するサンプルが記載されています。このようなキー入力の待ち処理もオーバーヘッドが大きいわけですね。

const EventTypeSpec kMyKeyModsChanged={kEventClassKeyboard,kEventKeyModifiersChanged };

InstallEventHandler( GetApplicationEventTarget(),NewEventHandlerUPP( myKeyModsChanged ),1,kMyKeyModsChanged,NULL,NULL );

(4)はイベントループで定期的に処理していたルーチン(カーソルの切り替えやアニメーション、テキスト入力時のインサーションポインターの点滅、プログレスバーのアニメーションなど)はInstallEventLoopTimer()で登録して処理しろという事です。

if( ! WaitNextEvent( everyEvent,theEvent,60,NULL ) )
 myDoIdle();

などと記載していた箇所は...

InstallEventLoopTimer( GetCurrentEventLoop(),0,60,NewEventLoopTimerUPP( myDoIdle ),0,timerRef );

と、InstallEventLoopTimer()で処理ルーチンを登録しておけば、それをいちいち呼び出さなくても、指定した時間間隔で定期的に実行されるわけです。

実際に対応しなければいけない変更点は、まだまだ沢山あるような気もしますが、とりあえず上記箇所の優先順位が高いようです。CarbonLib v1.1 SDKのサンプルプロジェクトでは、Carbon Eventモデルの「雰囲気」は味わうことはできますが、詳しい解説書なしでのアプリケーションへの大規模な導入は無理だと思います。Appleには、Carbon Event Managerに関する詳しいドキュメントの早急な配布を強く要望したいと思います。

次回は(9)の工程についてお話しする予定です。「新Eventモデルへの変更」以外の「Mac OS Xに対応する最適化」と最新のCarbon SDKについての解説です。

関連リンク:オッティモ
カテゴリ:Carbon/CF, 小池邦人のプログラミング日記


サーバ向けソフト群のiToolに、JSPやサーブレットの稼動環境が追加

Tenon Intersystemsは、Mac OS X Serverで利用できるApacheなどのインターネットサーバ機能を強化するソフト群「iTools」に、JSP(Java Server Pages)やServletを稼動する環境を追加した。Apacheのプロジェクトの1つでApacheにJavaベースのアプリケーションサーバ機能を組み込むJakarta ProjectのサブプロジェクトのTomcatを、Mac OS X Serverに移植したものだ。JSP 1.1、Java Servlet 2.2を組み込んである。

関連リンク:Java Server Pages (JSP) Now Included in iTools
カテゴリ:Java, Mac OS X Server


福岡でMac OS Xの開発やシステム関連のセミナーが開催

アニーズ・クラフトは、Mac OS Xに関するセミナー「MacOS X セミナー in 福岡」を、2000年10月8日(日)〜9日(月)に、福岡市のスカラエスパシオで開催する。参加費は前売りが10,000円、当日が15,000円となっており、いずれも2日間の通し券となっている。NeXTユーザ会のメンバーを中心に、10以上のセッションが計画されている。現在のところは、アニーズ・クラフト案浦浩二氏による「MacOS Xのサーバ構築」、Skylee Pressのアーサ・C・カイルによる「NeXT, Be, MacOS X」、Galapagos Systems代表佐藤徹氏による「MacOS X概要」、NeXTユーザ会水野隆一氏による講演、NeXTユーザ会白山貴之氏による「Darwinプロジェクト」、NeXTユーザ会竹尾哲也氏による「Cocoaかんたんプログラミング」、MDOnline新居雅行による「MacOS Xのソフトをどう作るか」、シスコシステムズの塩崎英司氏による「Ciscoネットワークソリューション」、大座畑重光氏による「コンピュータの歴史」がリストアップされている。8日は11:00〜18:00の予定で、夜には懇親会(参加費5,000円)が計画されている。9日は10:00〜18:00にセッションが行われる。宿泊場所などは主催者側である程度確保されているので、ツアーを利用して手軽に気軽に参加することも可能だ。Mac OS Xに関連する技術的なセミナーで、オープンで開催されるものとしは、おそらく日本で最初のものとなるだろう。

関連リンク:MacOS X セミナー in 福岡
カテゴリ:Mac OS X, イベント


DVDやCDがデスクトップに現れない場合の対処方法

GigabitタイプのG4において、CDやDVDを挿入しても、デスクトップにアイコンが表示されない場合の対処法が、Tech Info Libraryに公開されている。本体を開けて、ドライブとマザーボードの間を接続しているケーブルが、しっかりコネクタには言っているかどうかを確かめる手順が記載されている。つまり、ケーブルの接続不良が原因と考えられるということで、その対処方法が説明されているということだ。

関連リンク:Power Mac G4 (Gigabit Ethernet): CD/DVD Disc Does Not Appear on Desktop
カテゴリ:Knowledge Base(旧TIL), Power Mac, 周辺機器


ファイルメーカーProのカスタムレイアウトを生成するツール

Ascending Technologiesは、ファイルメーカーProのテーマファイルを作成するツール「ThemeMonster」をリリースした。価格は$79.95。ファイルメーカーProでは、フォームなどの作成において、色味やフォントなどのスタイル設定を「カスタムレイアウト」として適用することが可能となっている。新規にレイアウトやレポートを作るウィザードの途中で、カスタムレイアウトの選択がある。このカスタムレイアウトは「テーマ」とも呼ばれている。こうしたレイアウトのスタイル定義は、XMLファイルで行うことができ、テキストエディタでXMLファイルを作成すれば独自にカスタムレイアウトを設計することができるが、ThemeMonsterはそのカスタムレイアウト定義を手軽に作成できるようにするものと思われる。

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


QTSS 2.0.1で変更された設定ファイルの書式

Tech Info Libraryに公開された文書によると、QuickTime Streaming Sever 2.0.1では、それ以前のバージョンから、設定ファイル(/etc/QTSSRelay.conf)の書式に変更があり、引数をダブルクォーテーションで囲う必要があるようになっている。そのため、ソフトウエアをバージョンアップした場合には、設定ファイルを手作業で描き直す必要が出てくる。リレーの設定ファイルについて、実例も示されているが、その他の設定についても同様なのかはこの文書には記載されていない。

関連リンク:QuickTime Streaming Server: Configuration File Syntax Changed in Version 2.0.1
カテゴリ:Knowledge Base(旧TIL), サーバー製品, QuickTime