Macworld Expo Tokyoの来場者数は17万人ということで、相変わらずサンフランシスコの9万人を遥かに上回っています。UGブースにずっといたので、信じられない人込みではあったのですが、それでも全体を見るとそれほど混雑している時間帯も長かったわけではないので、意外に来た人は多かったんだなという印象です。よりプロ向けにシフトしたとは言っても、やっぱり個人ユーザも多いんだと思います。
ということで、今日は小池さんと中野さんの書籍の話題一色になってしまいますが、Expo会場で購入された方もいらっしゃるかもしれません。けっこう、ずっしり重い本ですから、そういう本こそオンラインショップということで(笑)、お手軽に買われたい方は、以下のリンクをどうぞ。もちろん、プレゼントもいただきましたので、まずは当てにかかるのもよろしいかと思います。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃Q.オンラインショップで本を買っても送料無料ってホント? ┃今すぐ購入
┃A.本当です!【楽天ブックス】では送料無料でばんがります!┃ ↓
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ↓
http://px.a8.net/svt/ejp?a8mat=BZFSP+3GFM7M+1N6+61C2R
【Mac OS X Carbonプログラミングガイド】―の購入はこちら
http://px.a8.net/svt/ejp?a8mat=BZFSP+3GFM7M+1N6+61Z82&i=4839907102
===============================プレゼント
「Mac OS X Carbonプログラミングガイド」(4冊、毎日コミュニケーションズ提供)
――――――――――――――――――――――――――――――――――――
アニーズ・クラフトは、Macユーザ向けに英語のWeb通信講座を開始する。「モニタ」「ルータ」「ココア」というカタカナで記述されている英語は、そのまま発音すると外国では通じないので、困った人は多かっただろう。新しい英語版のソフトを使ったり、新しいバージョンのソフトの使い方で英語圏の人と話すときに必要な発音や文例を短期間で学ぶような楽しい講座になっている。従来の英会話教材は空港やレストランでといったお決まりのパターンが一般的だった。しかしながら、アニーズ・クラフトの講座では、コンピュータに関することやデータベース、ソフトウェアの会話が中心なので、身近に感じ、楽しく学べる。WWDCやMacworld Expo参加者は願ってもない英語講座になるだろう。サーバは、MacOS X Serverを使い、コンテンツについてはPostgreSQL, QTSS, Flashを駆使した配信となる。4月中に開始する予定である。
関連リンク:アニーズ・クラフト
カテゴリ:サービス
毎日コミュニケーションズから、Mac OS Xのプログラミング本が出版された。MDOnlineでもプログラマー日記を連載する小池邦人氏と中野洋一氏の共著で「Mac OS X Carbonプログラミングガイド」である。価格は\3,980で、450ページあまりの重みのある1冊である。従来のMac OSで開発された移植の方法や、開発ツールを軸にしたさまざまな開発手法が説明されている。また、従来OSの互換からさらに一歩進んでCarbon Event Manager、Navigation Serviceの利用、Carbonでの印刷、MLTE、DataBrowserといった話題を解説し、さらにDockやアプリケーションメニュー対応、Interface Builderを使った開発手法、QuartzといったMac OS Xだけで利用できる機能への最適化についても解説されている。Carbonフレームワークを中心として紹介しているものではあるが、QuartzなどのOSのコアの部分についても解説がされているので、Carbonはあまり利用しないでCocoaが中心でプログラムをしている人でも、参考になる箇所はあるだろう。実際に商品となるソフトウエアを開発してきた筆者らの実体験に基づいた、実践的なCarbonの、そしてMac OS Xのプログラミングの解説書となっている。
関連リンク:Mac OS X Carbonプログラミングガイド
カテゴリ:雑誌、書籍, Carbon/CF
この記事のPDFファイル(1326KB)は以下のアドレスにあります。
ダウンロードには、MDOnlineのアカウントが必要です。
pdfs/MDOnline020020.pdf
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
MACWORLD Expo/Tokyoの会期中に、アップル社がADCメンバー対象に(Selectメンバー以上?)Mac OS Xの技術セッションを開催しました。今回は「Overlayウィンドウを使ったオブジェクトのセレクション」の話をする予定でしたが、そのセッションで、Quartz 2D(Core Graphics)の機能についての「新事実」が判明しましたので、そちらを先行して紹介したいと思います。
その前にちょっと宣伝です(笑)。毎日コミュニケーションズから「Mac OS X Carbon Programming Guide」という技術解説書が出版されます。
この書籍は、私が今までウェブサイトで書き溜めてきたMac OS XとCarbonについての解説を整理し、足りない部分を加筆した内容となっています。多くの読者から「書籍としてまとめて欲しい」という要望が届いていたのですが、それを実現できてホッとしております。加えて、MLTEやDataBrowserコントロールなど、まだ言及していない技術については、「金魚すくい」で有名な中野洋一氏が詳しく解説してくれています。Mac OS XとCarbonについて非常に「濃い」内容となっていますので、これからもMac OS XやCarbonと付き合わなければいけない方は、ぜひ参考にしてみてください。
さて、アップル社が開催したセッションは、Mac OS Xにおける「日本語環境」「グラフィックス」「ハードウェア」の各パートに別かれていました。セッションの解説者がApple本社から来日した技術担当でしたので、「プレWWDC 2002」といった雰囲気で、なかなか充実した内容となりました。ただし、深い質問をすると「それはWWDCで詳しく紹介するから参加してね(ウィンク)」といった具合に、WWDC 2002の宣伝も兼ねていたようです(笑)。出席者には、しっかり「WWDCツアー」のパンフレット配られていましたし...。「グラフィックス」セッションの大部分はQuartz 2Dに関することでした。すでに知っているトピックスが多かったのですが、Q&Aコーナーでは以下の3つの質問をぶつけてみました。
(1)「Quartz Compositor」はデベロッパー側からアクセスできるのか?それに関するAPIのリファレンスやドキュメントはあるのか?
(2)ヘッダーファイルに定義されているQuartz 2Dの「パタン機能」は、ちゃんと実装されていて利用することが可能なのか?
(3)Quartz APIで描画された図形や画像をCarbonアプリケーションからプリントアウトするのにはどうしたら良いのか?
(1)は、「非常に複雑な処理をしているので、ごにょごにょ...」といった感じで、口を濁していましたが(笑)、用意してあったスライドでCompositorの仕組みを簡単に説明してくれました(用意してあるなら質問する前にやってね)。「Quartz Compositor」はウィンドウサーバで、加えて低レベルのイベントハンドリングも受け持っています。結局、Quartz 2Dのドキュメントに解説されている内容以上の事実は分からずじまいで、このモジュールのAPIが開発者に開放されるかどうかについても、言及されませんでした。
(2)は、「ちゃんと実装している」と話していましたが(ちょっと自信なさげ)、私が「動かないんだけど...」と突っ込むと、「非常に複雑な処理なので、ごにょごにょ...」といった感じで、うまくごまかされてしまいました。サンプルソースならメールで送ることが出来るとフォローしていましたが、「誰でも見られるようにオープンにしてよ!」と頼むと、「まだ、そのレベルじゃないので、ごにょごにょ...」という雰囲気でした(笑)。多分、あの感じでは、完全な実装にはほど遠い状態なのでしょう? こちらについては、WWDC 2002で再度追及してみたいと思います。
(3)については、ついに「謎」が解決しました。まず重要な点は、Mac OS Xではプリントの最終出力には、必ずQuartz APIが作成したPDFが利用されるという事実です。CocoaアプリケーションでもCarbonアプリケーションでも、その仕組みは同じだそうです。ただし、Carbonアプリケーションからは、QuickDraw環境でQuartz APIを使わないとプリントアウトは実行できません。これは、いったいどういう事なのでしょうか?
以前に解説したと思いますが、Carbonアプリケーションのプリントアウトには、セッションプリントマネージャを利用します。関連ドキュメントによると、Quartz APIで描画した図形をプリントアウトするのには、PMSessionGetGraphicsContext()にkPMGraphicsContextCoreGraphicsを代入し、それにより得られたCGContextRefを用いて図形やテキストを描画するように指示されています。
サンプルルーチン内の、drawQuartzPrint()がQuartz APIで実際に図形を描画している箇所です。
ところが、このルーチンを実行してもプリントアウトはなされず、白紙が出力されるだけです。最初は「プリンタのドライバに問題があるのか?」と推測したのですが、ダイアログから「プレビュー」を実行しても同じ結果となるので、ドライバに依存した問題ではないという結論になりました。
今回のセッションの解説によると、Quartz APIによる描画をCarbonアプリケーションからダイレクトにプリントアウトすることは不可能なようです。つまり、プリント環境にCGContextRefを選べないのです。具体的には、PMSessionGetGraphicsContext()にkPMGraphicsContextCoreGraphicsを代入してCGContextRefを得る方法が使えないのです。その代わり、kPMGraphicsContextQuickdrawを代入しCGrafPtrを得、それをQDBeginCGContext()に渡すことでCGContextRefを得る方法を取ります。
プリントアウトが終了したら、QDEndCGContext()を呼び出してCGContextRefを開放することを忘れないでください。QDBeginCGContext()とQDEndCGContext()は、「Universal Interfaces 3.4.1」のCore Graphics関係のヘッダーファイルではなく、「Quickdraw.h」の方に定義されていますので注意してください。
この処理が一時的な対処方法なのかどうかは謎のままです。この手順を見てみると、プリント最終出力までの処理が、随分と遠回りをしているような気がします。こうしないとプリントアウトできないのは、Mac OS Xの内部的な仕組みが、まだまだ未完成である証拠なのかもしれません? しかし、出来ないなら出来ないでドキュメントに一言記述しておいてもらいたいものです。不可能な処理を試して悩むのは、まったくの時間の無駄なのですから(涙)。とにもかくにも、うちのプリンタでもQuartz APIによる図形描画をプリントアウトすることができました。記念すべき最初の出力ですね。
次回も、セッションで判明した利用価値が高いQuartz 2Dの隠れた機能を紹介します。Quartz 2Dを利用してPICTファイルを高精度で描画するという「荒技」です(笑)。どうやら、Microsoft社のExcelやWordでは、すでにこの機能が使われているようです。
∽∽∽∽∽∽∽この項、以上∽∽∽∽∽∽∽[小池邦人/オッティモ]∽∽∽∽∽∽∽
関連リンク:オッティモ
カテゴリ:グラフィックス, 小池邦人のプログラミング日記
アドレス帳機能に対応したiPodであるが、アドレスデータを、Mac OS Xの添付アプリケーションである「アドレス帳」あるいは、MicrosoftのEntourage Xから転送するためのスクリプトアプリケーションが公開されている。アプリケーションとして実際に動作するものがダウンロードできるが、それだけでなく、AppleScript Studioベースのプロジェクトファイルもダウンロードできる。たとえば、自分の作っているファイルメーカーProのデータベースをiPodに転送したいような場合には、プロジェクトファイルをもとにAppleScriptのプログラム部分を改造すれば対処可能だろう。プロジェクトのプログラム自体はそこそこ複雑ではあるが、Entourageからデータを抜き出す部分などを別のアプリケーション向けに書き換えればいいので、必要な箇所の変更でいいだろう。プログラムは、Objective-Cで作られた汎用文字列処理のクラスを使うなど、やや高度なことも行われている。独自にiPodにデータを転送するようなアプリケーションでは、プログラムを解析すれば、どのようなデータを作ればいいかも分かるだろう。
関連リンク:iPod Scripts for Mac OS X 10.1
カテゴリ:AppleScript, メディアプレイヤ
QuickTime Streaming Serverで公開するメディアを含むディレクトリの名前には、アポストロフィやバックスラッシュを含めないようにする必要がある。そうしないとプレイリストの中身が参照できないなどの問題が発生する。iTunesでCDDB経由で得られた曲名情報ではこうしたキャラクタが含まれることがあるので、手作業でキャラクタを削除するなど配慮が必要になる。
関連リンク:QuickTime Streaming Server: When Making a Playlist, a Folder or Disk Appears as a File, Preventing Access to Its Contents
カテゴリ:Knowledge Base(旧TIL), サーバー製品, QuickTime
Mac OS Xの起動ボリュームには、移動や削除をするとシステムが起動しなくなる重要なファイルやフォルダがあることが文書で掲載された。ルートにあるApplications、Library、System、Usersという表示されているフォルダに加えて、非表示のautomountフォルダやmach_kernelというファイルは、削除したり移動したりしてはいけない。元に戻せなくなった場合には、システムの再インストールなどを行わなければならなくなるがその方法などが解説されている。
関連リンク:Mac OS X: Do Not Move ’mach_kernel’ or Other System-Installed Files and Folders, Some of Which Are Normally Invisible
カテゴリ:Knowledge Base(旧TIL), Mac OS X