Macintosh Developer Online (MDOnline)


2001年1月5日発行号 - ソースコードライセンスの改定



新世紀おめでとうございます。今年も、そして今世紀もよろしくお願いします。私は家族や友人達といっしょに、新世紀を渋谷公会堂で迎えました。ウルフルズのカウントダウンライブの最後列にいたのです(笑)。新年早々、弱い2001年問題にひっかかって手間取ってしまいました(笑)。というか、MDOnlineのアカウント削除プログラムが、年越しの場合の処理でバグっていて、アカウントの削除ができなかったという、毎年起こりそうなバグだったりして情けないのですが…。今月にアカウントが終了する方々には、本日、更新のお願いメールを出していますので、よろしくお願いします。
20世紀を振り返る…なんて企画は昨年のうちに終わっているみたいですが、20世紀と2000年の区別が付いていない評価はどんなものかと思いながら、自分なりに何が20世紀のいちばんの産物なのかと考えてみました。古くは相対性理論、最近だとコンピュータとかいろいろあるのですが、私なりの結論は「ジャズ」です。とは言っても、音楽は好きですけど、私はそれほどのジャズ気狂いなわけではありません。ジャズの何に注目できるかと言えば、まずは原理原則がシンプルなことです。クラシックの流れの西洋音楽とは違う基盤であり、そのシンプルな原理原則が非常に多彩な表現を可能にしたという点があります。構成は重要だけど、ノリとかグルーブ感みたいなものを重視することもあるのですが、そうしたやり方がジャンルを超えた点でも評価できるわけです。また、演奏者のコミュニケーションという点でも、指揮者がいるような音楽とは違う意味で、高い次元のコミュニケーションを形成しています。電話とか、コンピュータの通信とかよりも、ずっと高い次元のコミュニケーションじゃないかと思うのです。人間と人間がインタラクティブにかかわり合い、そして、確固とした表現があるというわけですね。今世紀の中ごろまではジャズは音楽だけのムーブメントでしたけど、デザインとか、組織とか言った面にかなり影響は強いと感じます。もっとも、世紀末では何から影響が来たのかあいまいにはなっていますが、「個の時代」という潮流の源流はジャズじゃないかと思ったりもしています。どうでしょうね?
(新居雅行 msyk@mdonline.jp


ソースコードのライセンスがアップデート、変更結果の運用が緩やかに

Appleがオープンソースとして配付されているソースコードを利用するときの条件であるApple Public Source LicenseがVer.1.2に変更された。DarwinやQuickTime Streaming Serverなどのソースコードが、Apple Public Source Licenseに従って配付されている。全体的に見て、以前よりも制約は緩くなっていると言えるだろう。個人的な利用では修正結果を再配布する必要がなくなり、また、変更した結果の運用に際してAppleに申請する必要もなくなっている。Appleのライセンスはやや独特のものとして評価されていたが、変更結果を報告しないで使えることから、独自のシステムを構築するような場合への利用がやりやすくなるなどが考えられる。

関連リンク:Apple Public Source License
カテゴリ:オープンソース


【小池邦人のプログラミング日記】2000/1/5<Carbon Event Managerを使う その2>

やっとこさ「CarbonLib 1.2 SDK」のGM版が、以下のサイトから一般ユーザでもダウンロードできるようになりました。ただし、それに含まれているUniversal Interfacesは、いまだv3.4b3というβバージョンです(涙)。

◇Development Kits
 http://developer.apple.com/sdk/

 

SDKの出来具合(?)は別の機会に調べてみるとして、今回は「CarbonLib 1.2 SDK」に添付されている「BasicCarbEvents」サンプルで、Carbon Event Managerがどのように使われているのかを詳しく調べてみます。2001年1月4日現在、ADCメンバーサイトに登録されているUniversal Interfacesの最新バージョンも、やはりv3.4b3です。このバージョンで、前回お話した「Carbon.r」のバグは取れているようです。Metrowerks CodeWarrior 6用のPreCompiled Headerを使用されている方は、この最新バージョンをダウンロードして、作り直されることをお薦めします。

まずは、オリジナルのプロジェクトである「BasicCarbEvents.mcp」を起動させてみましょう。

 

「Libraries Group」に登録されている「CarbonLib」はv1.2のStubライブラリを、「MSL RuntimePPC.Lib」はCodeWarrior 6の最新Runtimeライブラリをリンクしてください。リンク用の「Access Paths」はSettingダイアログで調整します。また「MSL C.PPC.Lib」もCarbon対応の「MSL C.Carbon.Lib」に差し替えます。(今回はリンクしなくても大丈夫のようです)それから「CarbonHeaders.pch」は外してしまい、代わりにSettingダイアログの「C/C++Language」に記述されている「CarbonHeaders.h」を、事前に準備しておいたPreCompiled Headerの「CarbonHeadersPCH」に変更するとリンク時間が短縮できます。

 

これでプロジェクトの準備はOK、メイクすると問題なくサンプルアプリが作成されることが確認できました。

このサンプルアプリケーションのソースファイルは、BasicCarbEvents.cひとつだけです。アプリケーションの動作内容は、ウィンドウをひとつオープンし、そこに36ポイントのフォントサイズで「Hello World!」と描画する簡単なものです。メニューで機能するのはFileメニューの「Quit」だけ、コメント文を除けば100行程度の短いソースコードとなっています。まずはmain()を見てみると、InstallStandardMenuBar()でメニューを作成し、AEInstallEventHandler()でQuit(作業終了)用のApple Event Handlerを登録しています。

続いてCreateNewWindow()でウィンドウを作成するのですが、その時にウィンドウのアトリビュートに、kWindowStandardHandlerAttributeフラグを加えている点に注目してください。

 

Carbon Eventでは、各オブジェクト(ウィンドウやコントロールやメニュー)に対しEvent Handlerルーチンを用意しないと、「Standard Handler」と呼ばれるディフォルト処理が実行されます。例えば、ウィンドウのタイトルバーをドラッグしてデスクトップ上を移動させるといった処理は、わざわざEvent Handlerルーチンに記載しなくても実行されるわけです。CreateNewWindow()のWindowAttributes引数にセットしているkWindowStandardHandlerAttributeは、そのStandard Handlerを有効にするオプションです。このアトリビュートを設定しないと、ウィンドウに対するディフォルト処理は実行されませんので注意してください。

次はInstallWindowEventHandler()により、ウィンドウに対応するEvent Handlerを登録します。このサンプルでは利用していませんが、アプリケーションに対応するEvent Handlerルーチンの登録にはInstallApplicationEventHandler()を、コントロールにはInstallControlEventHandler()を、メニューにはInstallMenuEventHandler()を、それぞれ利用します。

 

オブジェクトの種類だけではなく、個々のオブジェクトに対してEvent Handlerが登録できるところが、Apple Eventとは異なる重要なポイントです。InstallWindowEventHandler()の最初の引数は、対応するウィンドウのWindowRefを、2番目にはEvent Handlerルーチン名(EventHandlerUPP)を渡します。このサンプルでは、作成したウィンドウに対し登録されているEvent Handlerルーチンは1種類だけです。

続いてEvent Handlerルーチンが対応できるEventの個数とその種類を渡します。種類を明記するEventTypeSpec構造体には「eventClass」と「eventKind」をペアで表記し、それの配列として渡します。今回、配列に記載されているeventClassは、すべてkEventClassWindowとなります。また、eventKindの方は、kEventWindowClose、kEventWindowDrawContent、kEventWindowBoundsChangedの3種類が記載されています。対応する処理を調べると、kEventWindowCloseはウィンドウでClose Boxがマウスクリックされた場合に、kEventWindowDrawContentはウィンドウのアップデートで内部の再描画が必要になった場合に、kEventWindowBoundsChangedはウィンドウのリサイズや移動が起こった場合に発生していることが分かります。

ウィンドウに対応するEvent Handlerの登録が終了したら、ShowWindow()でウィンドウを表示し、その直後にRunApplicationEventLoop()を実行します。Carbon Eventの基本は、今までWaitNextEvent()を使いメインイベントループを実行していた処理を、RunApplicationEventLoop()に置き換えることです。そうすると、後はCarbon Event Manageがイベント発生を管理し、必要に応じて適切なEvent Handlerルーチンに処理を渡してくれます。ここでは、ウィンドウをオープンしたことで、一番最初にeventClassがkEventClassWindowで、eventKindがkEventWindowDrawContentのイベントが発生します。それを受け取ったEvent Handlerルーチン(MyWindowEventHandler)は、HandleWindowUpdate()を呼んでウィンドウ上に「Hello World!」を描画するわけです。また、アプリを終了させる時には、QuitApplicationEventLoop()を呼ぶことも忘れないでください。

次回は、ウィンドウに対応させたHandleルーチンの挙動と、Fileメニューで「Quit」が選択された時のCarbon Event Managerの対応を詳しく調べてみることにします。
[小池邦人/オッティモ]

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


Power Mac G4では、スレーブのハードディスクにはMac OS Xをインストールできない

Tech Info Libraryに公開された文書によると、Mac OS X Public Betaを、Power Mac G4のスレーブのディスクにインストールした場合、インストール終了後にフリーズするなどして、正しくインストールができない。
なお、この文書はMac OS X PBリリース時に機種に関係なくスレーブのディスクにはインストールできないことが記載されて公開されていたが、すぐに削除されていた。スレーブにインストールできないのは機種依存すると考えられる。たとえば、Blue & WhiteのPower Macintosh G3ではスレーブのディスクにインストールできる。

関連リンク:Mac OS X Public Beta: Will Not Install on ATA Hard Drive Configured As Slave
カテゴリ:Power Mac, Mac OS X


G4 Cubeは電源スイッチ不良で異臭や煙が出るものもある

Tech Info Library-Jに掲載された情報によると、Power Mac G4 Cubeの一部の出荷製品で、電源スイッチの不具合があり、電源を入れると異臭や煙が発生することがある。これによって安全上の問題はないとは記載されているが、迅速な体制でリペアを施すことも明記されている。また、すでに製造工程では問題のある部品の使用は行なっていないともしている。連絡先などの情報がある。Power Mac G4 Cubeユーザで煙が出るなどのトラブルがあるユーザはすぐに連絡をして対処すべきだろう。

関連リンク:Power Mac G4 Cube: 電源スイッチの不具合について
カテゴリ:Tech Info Library-J, Power Mac


2000/12/28に公開されたTech Info Library-Jの文書

2000年12月28日に公開されたTech Info Library-Jの文書について、以下にタイトルとアドレスをまとめておく。

□Mac OS X/Mac OS X Server
◇106065JN:Mac OS X Public Beta: ソフトウェア・アップデートは Classic 環境で動作しない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106065
◇106075JN:Mac OS X Public Beta: Classic は TCP/IP 接続のみを使って AppleShare を使用可能にする
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106075
◇106034JN:Mac OS X Public Beta: Disk First Aid が MountCheck エラーを表示する
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106034
◇106068JN:Mac OS X Public Beta: Classic 環境から iDisk に接続することができない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106068
◇106066JN:Mac OS X Public Beta: Mac OS 9 TCP/IP コントロールパネルが Classic 環境で無視される
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106066
◇106070JN:Mac OS X Public Beta: ネットワークブラウザ「サーバへの接続」は Classic 環境では動作しない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106070
◇31235JN:Mac OS X Server: ボリュームとファイルサイズの制限
 http://til.info.apple.co.jp/cgi-bin/artnum?id=31235

□Mac OS
◇11947JN:Mac OS: 損傷を受けているフォントスーツケースをフォントフォルダから移動できない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=11947
◇25219JN:Mac OS 9: オーディオ再生中の遅延
 http://til.info.apple.co.jp/cgi-bin/artnum?id=25219
◇31288JN:Mac OS 9: 個々のコンポーネントのインストールと削除
 http://til.info.apple.co.jp/cgi-bin/artnum?id=31288
◇25217JN:Mac OS 9:「Command」+「Shift」+「0」キーでシステムがスリープする
 http://til.info.apple.co.jp/cgi-bin/artnum?id=25217
◇8379JN:Mac OS:「フォント」と「サウンド」をインストールする
 http://til.info.apple.co.jp/cgi-bin/artnum?id=8379
◇25164JN:Macintosh Manager: エラー“-5019”
 http://til.info.apple.co.jp/cgi-bin/artnum?id=25164
◇30157JN:Mac OS 8: 特別メニューに「スリープ」選択がない(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=30157
◇60241JC:Mac OS: コントロールバーの移動方法(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60241
◇6859JN:Mac OS: ファイル共有の使用方法(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=6859
◇100436JO:Mac OS 9: 言語解析ライブラリが見つからないエラーについて(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=100436
◇30004JN:Apple Menu Options:「最近使った書類」のエイリアスが作成されない(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=30004

カテゴリ:Tech Info Library-J


2000/12/28に公開されたTech Info Library-Jの文書(続き)

□Power Macおよび本体
◇60768JN:Power Macintosh G3: コンピュータの起動時にモニタの解像度が切り替わる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60768
◇95058JN:Power Mac G4 (AGP Graphics): VGA-Macintosh 変換アダプタ
 http://til.info.apple.co.jp/cgi-bin/artnum?id=95058
◇58465JC:iMac (Slot loading): CD-ROM ディスクを手動で排出させる方法(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58465
◇58593JC:PowerBook (FireWire): 技術仕様について(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58593

□周辺機器
◇17296JN:Macintosh: RMS、Peak-to-Peak、ラインレベル (Line Level) の定義
 http://til.info.apple.co.jp/cgi-bin/artnum?id=17296
◇60767JN:Macintosh:「機能拡張」をオフにしてもモニタ解像度が“640 × 480”のままになる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60767
◇30621JN:Mac OS Extended (HFS Plus):「ディスクの初期化...」コマンドと初期化の比較
 http://til.info.apple.co.jp/cgi-bin/artnum?id=30621

□アプリケーション
◇106087JN:AppleWorks 6: AOL ユーザは Web クリップを使う前にインターネットに接続してください
 http://til.info.apple.co.jp/cgi-bin/artnum?id=106087
◇24555JN:AOL (America Online) を使ってユーザ登録をする
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24555
◇31237JN:QuickTime Streaming Server: Configuration ファイルのシンタックスがバージョン 2.0.1 で変更されました
 http://til.info.apple.co.jp/cgi-bin/artnum?id=31237
◇70159JN:WebObjects 4.0.1 Patch 3 の概要(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=70159
◇70037JN:WebObjects: パッチリスト(修正)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=70037

カテゴリ: