Macintosh Developer Online (MDOnline)


2001年8月6日発行号 - CarbonLib 1.4 SDK



あいかわらず、東京めたりっく通信の80ポート塞ぎは解消されないため、今日はWebアプリケーションで発行するのを断念しました。実は、はじめてWebからではなく、テキストを編集してメーラから出します(おかしなことにならないように願うのみ〜)。会社に行けば直にサーバとつながっているのですけど、往復2.5時間かかりますしね〜。ほんの10分程度の作業のためにそんなに時間はかけられません。どうやらIISが稼動したところを塞いだらしいのですが、うちはIISは1台あるけどクラックされた形跡もないし、だいたいIndex Serverは動かしていないはずなんですけどね。それでもパッチを当てたと連絡をしてもなしのつぶてです。全ユーザにまとめて送ったかのようなメールが1度来ただけです。以前から、モデムが落ちることを何度もメールしているのですけど、サポートからはなんの連絡もよこしませんでしたし、対応としては非常に悪いです。ちょっとどころか相当困っています。週明け時に何の対処もない場合には、サーバを移動するなどかなり大掛かりなことを行うかもしれませんが、その場合、一時的に休刊などみなさんに御迷惑をおかけすることになります。これについてはまた御連絡をいたします。で、アカウントの更新などの処理が私の方も、みなさんの方も、まるでできないかと思います。支払い処理については少し待っていただけますでしょうか。
さて、昨日お知らせしたWebObjectsのトライアルCDですけど、ふたをあけたら…みたいな状況ですが、それほどお申し込みは殺到していません。実はまだまだ数がありますので、とりあえず、お申し込みした人にはみんな行き渡りそうです。こちらに到着はしていないので、発送は月曜以降になりそうですが、発送をしたら、またお知らせいたします。Developer Toolsも含まれたCDですが、ツールだけを単独でインストールはできない状態になっていまして、あくまでもWebObjectsということが目的のCDになっています。
(新居雅行 msyk@mdonline.jp


CarbonLib SDK 1.4が正式に公開、Mac OS XのCarbonよりバージョンが先行

CarbonLib SDK 1.4が正式にリリースされた。Carbonは、Mac OS 8/9とMac OS Xで共通のアプリケーション向けAPIを提供するフレームワークで、Carbon対応のアプリケーションだと、Mac OS 8/9およびMac OS X向けにリリースできるというメリットがある。また、保護メモリやマルチタスクなどといったMac OS Xのメリットも利用できる。CarbonLibは、Mac OS 8/9でCarbonのAPIを利用可能にするシステム機能拡張であり、Ver.1.4はMac OS 8.6以降をサポートする。これまでは、Ver.1.3.1までが公開されていた。Ver.1.4では、Mac OS 8.6でもデータフォークにセットしたリソースを利用できたり、あるいはCFMによるバイナリのパッケージ化を可能にした。新たにサポートを始めたAPIコールもそこそこの数になるが、AppleEvent関連、ウインドウ関連の処理が目立つ。変更点についてはDocumentationフォルダにある「CarbonLib 1.4 TN.pdf」という文書にまとめられている。
なお、Mac OS X 10.0.4に組み込まれているCarbonのバージョンは、1.3.0の模様で、Mac OS 8/9のCarbonLibのバージョンが先行したことになる。

関連リンク:CarbonLib SDK 1.4
カテゴリ:Carbon/CF


小池邦人のプログラミング日記》2001/8/3<Quartz 2D(Core Graphics)を使う その1>

今回から数回に分けて、Mac OS Xに搭載されている2Dレンダリングエンジン「Quartz(Core Graphics)」の使用感について書いてみたいと思います。まずは、QuartzがどのようにMac OS Xのシステムと関わってるのかを確認し、それから実際にサンプルアプリケーションを作成してみることにします。

何やらインターネット上にMac OS X 10.1 Preview版がリークされたようで、あちこちで大騒ぎになっている今日この頃です(笑)。Macworld Expo/New YorkでMac OS X 10.1のPreview版が発表されたまでは良かったのですが、それ以降、Mac OS X 10の開発環境について大きな進展がありません。毎日、新しいドキュメントが発表されていないかと、Appleサイトを徘徊しているのですが、残念ながらまったく変化なしです。Carbon開発環境にしても、7/12にADCメンバーサイトにCarebonLib 1.4b2 SDKが登録されて以来、沈黙が続いています。今の時期、Apple社のMac OS X開発チームにとってはそれどころではないのでしょうが(笑)、Mac OS 10.1の正式発表と同時に、CarebonLib 1.4 SDK GMや大量の関連ドキュメントが登場することを望みたいと思います。(と書き終わるか終わらないうちに、以下のAppleサイトにCarebonLib 1.4 SDK GMが登録されました!)

◇CarbonLib SDK 1.4
 http://developer.apple.com/sdk/#Carbon1.4

これから紹介するQuartzについても、関連するドキュメントは少なく、以下のサイトに登録されている2つのPDFドキュメントと、数少ないサンプルプロジェクトが唯一の手がかりとなります。

◇Quartz 2D
 http://developer.apple.com/techpubs/macosx/CoreTechnologies/graphics/Quartz2D/quartz2d.html

2つのPDFドキュメントのうち、片方の「Quartz Primer」(QuartzPrimer.pdf)は、たった15ページしかありません。Quartzの機能についての簡単な紹介と、Quartz APIを使いPixMapやPDFファイルを描画する簡単なサンプルソースが紹介されています。もう片方の「Drawing With Quartz 2D」(drawingwquartz2d.pdf)は、約70ページのPDFドキュメントです。こちらには、Quartzが提供する描画機能がより詳しく記載されており、そうした機能を利用する時に、どのようなAPIを使ったらよいのかが、サンプルソース付きで解説されています。ただし、こちらにも、API全体が一覧できるようなリファレンスは含まれておらず、それについてはUniversal Interfaces 3.4のQuartzに関するヘッダーファイルを参照するしか手はありません。先頭にCG(Core Graphicsの略)と付いているのが、Quartzに関係するヘッダーファイルです。

 

しょうがないので、私は全ヘッダーファイルのAPIに関する部分だけを抽出し、ひとつのファイルにまとめてからプリントアウトし、活用しています。これだけでも50ページ以上のドキュメントとなりますので、Quartzが提供する機能がいかに多いかが理解できます。

Quartzは、Mac OS Xの2Dイメージングモデルの基盤を成すシステムです。これと同様に、3Dに関してはOpenGLが、動画に関してはQuickTimeが受け持ちます。先ほどのQuartz Primerドキュメントを読んでみると、Quartzを機能別に2つのモジュールに分けていることが理解できます。以下が、Quartz Primerより引用したMac OS Xのグラフィックスとウィンドウに関するシステム概念図です。

 

Quartzの部分は「Core Graphics Rendering」と「Core Graphics Services(Window server)」に分かれています。ここで使われている「Core Graphics」という呼び方ですが、ヘッダーファイルやAPIの呼び名など、開発環境にかぎってはQuartzという呼び方より一般的です。WWDC 2001のセッションで、「Quartzはマーケッティング的な呼び名で、テクニカル的にはCore Graphicsが正解だ!」と説明していたAppleの技術者もいました。

ところが、Drawing With Quartz 2Dドキュメントの方を読んでみると、上記の2つのモジュールは「Quartz 2D」と「Quartz Compositor」と言う名称に変更されています。Quartz 2DがCore Graphics Renderingと完全に一致しているのは間違いないと思いますが、Quartz CompositorがCore Graphics Services(Window server)とまったく同じモジュールなのかどうかは定かではありません。なぜなら、今回紹介した両ドキュメントには、Quartz 2Dについてのトピックスのみが記述されており、Quartz Compositorについては記載がないのです。以下のサイトを見ると、Quartz Compositorはドキュメントリストとしては上がっていますが、残念ながらリンク先は存在していません。

◇Core Technologies Developer Documents
 http://developer.apple.com/techpubs/macosx/CoreTechnologies/coretechnologies.html

そんな訳で、Quartz Compositorについてはほとんど情報がないのですが、基本的にはMac OS XのWindow Serverの機能を指しているようです。よく、Jobsがモニター上で、QuickTime Movie、OpenGLの3Dオブジェクト、2Dグラフィックを合成表示するデモを行いますが、そうした機能を提供しているのも、このモジュールだと考えられます。加えて、ローレベルのEventハンドリングやマウスカーソルのマネージメント、Aquaユーザインターフェースなどにも深く関わっているようです。もう片方のQuartz 2Dの方は、PostScriptでお馴染みのベジュ曲線、パス・ベースの図形描画、PDFの描画や書き出し、トランスペアレンシー(透明度)やカラー環境のマネージメントなどなど、アプリケーションレベルの多くの機能を提供しています。

さて、実際に自作CarbonアプリケーションでQuartz 2Dを使う準備をしてみます。ここで、注意しなければいけないのは、Quartz API(Core Graphics API)は、Mach-Oベースのアプリケーションからしか呼び出すことがでないと言う制限です。つまり、CFMベースのCarbonアプリケーションからは利用できません。ただし、Quartz Primerドキュメントの最後には、CMFベースのCarbonアプリケーションからQuartz APIを呼び出す手法が紹介されています。そのために、Universal Interfaces 3.4にもQuartzに関連するヘッダーファイルが含まれているのかもしれませんが、この方法を使うことは、あまりお薦めできません。はっきり言って止めた方が良いでしょう。たとえ、Quartz APIを利用するCMFベースのCarbonアプリケーションを作ったとしても、Mac OS 8/9自体にQuartz 2Dに相当する機能は存在しませんので、起動は不可能です。Quartz 2Dを使うと言うことは、CarbonアプリケーションをMac OS X専用に開発することが前提となるわけです。そう言えば、WWDC 2001のQ&Aセッションで、Macromediaの技術者が「CMFベースのQuartz 2Dライブラリーを用意しろ!!」とAppleに喧嘩を売っていたことを思い出しました(笑)。

March-OベースのCarbonアプリケーションを開発するのには、Mac OS X Developer Toolsに付属していたProjectBuilderを使うか、WWDC 2001でお土産にもらったMetrowerks CodeWarrior 7.0 Early Access(開発リリース)を使います。今回は、使い慣れたCodeWarrior7.0EAを選択し、以前にMach-Oベースに作り直した自作アプリを間借りし、Quartz 2Dの機能を色々と試してみることにします。

 

以前の状態から新たに行なう作業は、プロジェクトウィンドウの「Frameworks」タグに「ApplicationServices.framework」を追加することです。このFrameworkは、Mac OS XのSystem/Library/Frameworksフォルダ内に存在します。そして、実際にリンクされる「CoreGraphics.frameworks」は、このフォルダの奥底に存在しています。Frameworkに関しては、上位階層をリンクしておけば、後はMac OS XのアンブレラFrameworksの仕組みが働き、下位階層のすべてにアクセス可能となります。

 

次回は、自作CarbonアプリケーションにQuartz 2Dで描画可能な環境を構築してみます。加えて、Quartz 2DとQuickDraw描画環境との融合についてもお話したいと思います。
[小池邦人/オッティモ]

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


QuickTimeのイベントQuickTime Liveが2001年10月に開催

QuickTimeの開発者や利用者を集めるイベント「QuickTime Live」が、2001年10月8日(月)〜11日(木)に開催される。場所は、米国ビバリーヒルズにあるBeverly Hiloton Hotelだ。セッションの内容もおおむね紹介されているが、テクニカルな話題としてはMac OS Xにからんだ最新の情報などが含まれそうだ。また、ワークフローに関するセッションがいくつもあり、AppleScriptやXMLを使うというキーワードも見られる。また、前日を含む2日に渡るチュートリアルとしては「LiveStage Professional 3.0 Authoring Hands-On」として20人限定で行われる。チュートリアルのプログラムは今後追加される予定だ。また、1日かけて行われるワークショップは、QuickTimeの基本やCleaner、Final Cut Proの使いこなしなどのテーマが挙げられている。チュートリアルを含むPlatinum Passは$1790、ワークショップを含むPlatinum Passは$1390、カンファレンスのみは$995、チュートリアルのみでは$795、ワークショップのみでは$395となっている。展示会についても、10、11日に行われこちらは無料で入場できる。

関連リンク:QuickTime Live
カテゴリ:QuickTime, イベント


Vermont Recipesに新しい文書が追加、Cocoaでのテキストフィールドとシートの表示

Stepwise.comのサイトに、Cocoaプログラミングの解説文書シリーズ「Vermont Recipes」の続きが掲載されている。Vermont RecipesはBill Cheeseman氏によって執筆されている文書で、NeXT時代から多くのプログラマに読まれているものだ。Mac OS Xに合わせて再リリースされており、Objective-CをベースにしたCocoaのプログラミングの基本からを一歩一歩、じっくりと解説した文書になっている。新たに公開されたのは「Recipe 4: User controls―Text fields (sheets)」で、コンポーネントのうちのテキストフィールドや、シートでダイアログボックスを描画する方法が詳しく掲載されている。

関連リンク:Vermont Recipes―A Cocoa Cookbook for Mac OS X By Bill Cheeseman
カテゴリ:サードパーティの開発資料, Cocoa


Mac OS Xの細かなアップデート内容を記した文書が日本語化

先頃公開された、Mac OS X 10.0.1〜10.0.4の細かな変更点を記載したTechnical Notesがさっそく日本語に翻訳されている。英語を読むのを躊躇していた人も、安心して読むことができそうだ。

関連リンク:TN2002:Compatibility between JDirect 2 and JDirect 3
カテゴリ:Technote-J, Mac OS X


MRJでURLを開くにはopenURLというメソッドを使う

Technical Q&Aに公開されていた、MRJベースのJavaアプリケーションで、URLを開く方法が更新されている。MRJ 2.2EA2以降、openURLというスタティックメソッドを利用して、URLをブラウザなどで開くことができるようになっている。サンプルプログラムが掲載されているが、openURLが稼動しないときの対処も含められたものとなっている。従来の文書は、Runtime.execを使ってブラウザをダイアログボックスで指定して稼動させるようなサンプルプログラムであったので、新しいメソッドを使うことを紹介している。なお、日本語版の文書もあるが、従来の内容のままである。

関連リンク:JAVA12:Using Runtime.exec to open a URL
カテゴリ:Technical Q&A, Java


日本語版のREALbasicのVer.3.2.2が公開、日本語に絡む不具合を修正

日本語版のREALbasicのVer.3.2.2が公開された。テキストフィールドでの2バイト文字を扱う時のカーソルのずれや、文字列操作関数の動作の不備が修正されている。Ver.3.2の日本語版が2001年5月に暫定版として公開されたが、Ver.3.2.2として、Ver.3.2の日本語版が正式に公開されたことになる。Ver.3.0〜3.2までは共通のライセンスで利用できるので、Ver.3.2.2はVer.3.0以降のライセンスがあればそのままダウンロードして利用することができる。
また、REALbasic 3.5についても日本のサイトに掲載されており、米国でのプレスリリースの翻訳が掲載されている。そして、日本での発売時期などは未定となっている。

関連リンク:REALbasic日本語版
カテゴリ:REALbasic