Macintosh Developer Online (MDOnline)


2001年12月9日発行号 - MOSAのセミナーが開催



前回の発行で言い忘れましたが、土曜日からMSM 2001です。細かな話がすごいスピードで話されて行くので、なかなか取りこぼさないで記事にするのは大変ですが、セミナーに参加できなかった方々はなにかの手がかりとなるようであればいいかなと思っています。
実は、大谷さんのキーノートの後、喧々囂々(笑)デベロッパーからの提言のミーティングを始めたのですが、とりあえずみんなが好きなだけ言った(笑)のち、私と小池さんでまとめることになりました。そして、デンキネコに突入したのですが、私は部屋に戻って記事をまとめているというわけです。時間も遅くなってきたし、そろそろメンバーが減りはじめたころかもしれませんね。
日曜日は1日ありますが、セミナーの記事を書きます。それから、私のセミナーの内容については、別途、MDOnlineで記事を作成しますので、詳細はそちらを御覧いただけるようにいたします。

あと、安全を見越して、2通にわけます。ダイアルアップ環境で、サーバにつないでSQLコマンドをたたきたくないので(笑)
(新居雅行 msyk@mdonline.jp


MSM2001》MOSA Software Meetingが開幕

2001年12月8日、東京・初台にあるアップルコンピュータのセミナールームで、第8回MOSA Software Meeting 2001が開始された。最初に、MOSA(Mac OS Software Association)会長である矢野氏より挨拶が行われた。今年は事務局メンバーが新しくなったことなどを報告し、恒例のミーティングでの再会を祝した。そして、アップルコンピュータの営業本部長に今年就任した恩田英樹氏を紹介した。恩田氏からは、現在Mac OS Xに移行中であるが、Mac OS Xはより多くのシェアをこれから取るであろうといった話がなされた。OSの評価としても高いが、今後はMac OS Xのマーケットは増えることを考えれば、早く参入した方がデベロッパ自身もシェアがとれるということを説明した。今回のMOSAのイベントについては、Macintoshコミュニティの強いつながりをもとにして、アイデアをもとに新しいソフトが出てくるなどの期待感を示した。
以下、MOSA Software Meeting関連の記事は、「MSM2001」のヘッダ文字でご紹介しよう。イベントは、12月9日まで続く。初日のセミナーは順番に行われているため、それぞれ紹介できるが、2日目のセミナーはいくつかが並行して行われるため、MDOnlineでお届けできるのは一部のセミナーだけになる点はお許し頂きたい。

関連リンク:MOSA
カテゴリ:イベント


MSM2001》「Mac OS X 10.1アップデート」

まずは、アップルコンピュータのデベロッパ・テクニカル・サポートの担当者によるセッションが行われた。最初は「Mac OS X 10.1アップデート」として、Stephen Chick氏からの講演である。Mac OS Xは2001/3/24にVer.10.0(4K78)がまず発売された。その後にアップデートを重ねてきた。なお、バグレポートなどを行うときには、ビルド番号とともに報告してほしいとした。ビルド番号の見方(「このMacについて」のバージョン番号をクリックすると表示される)も説明した。
Ver.10.0での要求としては、パフォーマンスの向上、DockやFinderやMailの改良、DVD再生、CD作成の順になっていた。それに応える形で9月にMac OS X 10.1がリリースされた。現在は10.1.1が最新版となっている。10.1は初のメジャーアップグレードで、実務にたえる環境整備や新機能に対応している。パフォーマンスについては、起動やウインドウのリサイズ、Finderナビゲーション、ファイルコピーなど、ユーザの体感が得られる部分を中心に高速化をした。ネットワークについては、サーバ機能強化、AppleTalkやSMBのサポート、AirPortの管理ユーティリティ、iDiskのWebDAVサポート、AppleScriptの強化(ネットワーク設定に対応)が行われた。WebDAVのサポートによる利点は、ディスクをマウントしたままにできることを挙げた。グラフィックスについてもOpenGLの20%の強化や、印刷機能の強化などが行われている。ページ設定と印刷の関係が微妙に変わっているとした。さらに、デジタルハブ対応として、より多くのドライバが入っており、さまざまなアプリケーションも用意されている。
デベロッパにとってのMac OS X 10.1の新機能に対応する話題に移った。まずはサービスメニューに関することだ。サービスメニューは以前はCocoaでしか使えなかったが、Carbonでサポートされるようになった。サービスメニューには2つあり、1つは「プロセッササービス」でアプリケーションの現在の選択範囲に対して処理が行われるもので、システムには「Stickyを作成」が組み込まれている。このメニューにより、選択範囲にある文字列を含むStickiesのメモが作成されることがデモされた。もう1つは「プロバイダサービス」でアプリケーションに対して何らかのサービスを提供するといったものである。サービスメニューにはGrabというのがあり、これによって、スクリーンショットがウインドウに自動的にペーストされるといったことが可能となっている。
サービスに対応する方法が説明されたが、Cocoaではほぼ自動的にできる。Carbonでは3種類のCarbon Eventに対応するだけで、サービスメニューに対応できる。kEventServiceGetTypesではアプリケーションでサポートされるデータの形式を戻す。kEventServiceCopyとkEventServicePasteで取込みやペーストが行われるようにすればいい。一方、サービスを提供する場合、Info.plistにNSServicesキーを追加し、CFBundleIdentifierを追加する。そして、kEventServicePerformという1つのCarbon Eventに対応すれば良い。そして、システムにサービス対応であることを示すのであるが、Applicationsや/System/Library/Servicesフォルダにあれば自動的にシステムは認識する。
続いてDock対応についての説明があった。まず、Dockをクリックして表示されるカスタムメニューを実現する方法が説明された。方法としては3つあり、簡単なのはInfo.plistに記述することだ。メニューを定義したnibファイルを作り、Info.plistにAppleDockMenuキーを追加する。もう1つの方法は、Dock ManagerのAPIを使う方法で、実行時に状況に応じてメニューを変化させることができる。SetApplicationDockTileMenu、GetApplicationDockというAPIを使うことになる。3つ目の方法は、kEventAppGetDockTileイベントに対応する方法で、ユーザがDockアイコンをクリックしたときにメニューが決定されるような場合にはこの方法を使うことになる。イベントが呼びされるのでハンドラを用意しておけばよい。いずれも、通常のメニューと同じように、メニューのコマンドハンドラで実際の処理を記述することになる。
続いて、Dockタイル(Dockで見えているアイコン画像)の変更方法が説明された。たとえば、Mailアプリケーションでは未読メール数が表示されているのがおなじみの動作である。簡単な方法は、SetApplicationDockTileImageというAPIを使う方法である。他に、画像を重ねるオーバーレイを行うAPIなどがある。なお、CreateCGImageFromPixMapsで、QuickDrawデータからImageRefを作成できる。他に、Core Graphicsを使った方法は、QuickDrawを使う方法もあり、コテンキストあるいはグラフポートがDockになるので、自由にイメージを作ることができる。その後、実際にDockに画像を表示するプログラム作成のデモが行われた。指定したPDFをロードして、一定時間ごとにタイマー呼び出しを行い、そのときに、PDFの1ページずつの画像をDockに表示するといったものをCarbonベースのC言語で作成した。グラフィックスはCore Graphicsで行うようなものだ。

カテゴリ:ユーザインタフェース, Mac OS X, イベント


MSM2001》「ヒラギノアップデート」

「ヒラギノアップデート」として永松正人氏からの講演が行われた。まず、フォントの復習として、「字体」は他の文字と区別される特徴的な形であり、「書体」は文字を表現する様式・特徴・傾向などが一貫して形成されたものと説明した。フォントには、文字セット、エンコーディング、フォントフォーマット、文字セットといった要素がある。昔は文字セットとエンコードが不可分だったが、CIDまではコードポイントと文字が密接に関係していた。CID以後はキャラクタIDという考え方により、コードポイントと文字が独立した。文字セット、エンコードの具体例を示し、フォントフォーマットにはTrueTypeやPSフォントなどがあると説明した。
Mac OS X 10.0ではヒラギノフォントを無料でバンドルし、プリンタフォントが不要になり、フォントエンベッド可能なPDF、従来のフォントのサポートを実現した。Ver.10.1では、「アップルパブリッシンググリフセット」として、JIS X0213:2000、最新のUNICODE、写植文字を含んでいる。関連文字テーブルのことえりでの利用やビットマップフォントの利用も実現した。ことえり3については、JIS X0213:2000対応、関連文字の入力や変換、文字パレットの拡張などが新しい機能となっている。これまでは外字のニーズがなくならなかったが、JIS X0213ではそうした問題が解決されている。「アップルパブリッシンググリフセット」は、Adobe Japa 1-4、JIS X 0213:2000、電算写植の文字を含めて約20000字となった。JIS X0213は人名や地名などの文字が追加されている。ひらぎのフォントはUnicode 3.2に対応し、サロゲートに対応している。サロゲートは、UTF-16の一部の領域を使ってより多くの文字を表現する方法で、1文字あたり32ビットを使って表現される(具体的なコードのフォーマットが説明された)。たとえば、「土」に点の入った文字はサロゲートで表現される。ことえりでも、サロゲートされたコードが表示される。拡張グリフに対応するには、ATSUI、Cocoaを使うことになる。
Mac OS 9からの移行においては、Mac OS 9のフォントはプロテクトCIDも含めてそのまま対応される。Mac OS Xで動作しないフォントとしては、fbitなどがある。フォントのインストール先のフォルダについても紹介された。文字セットの使い分けについての説明もあり、プリプレスはすべてOKだが、情報交換では制限があることが示された。ことえりの文字パレットでは、Unicode対応アプリケーションが必要になることが示される。OpenTypeは、TrueTypeとType1フォントを同じように扱えるようになる。また、AAT futureという機能で、コードはそのままで自動的に旧字に置き換えたりといったことができる。ATSUSetFontFeaturesというAPIを使う。
続いて、異体字へのアクセス方法についての説明に入った。「喜」という文字がたくさんあるという例で、異体字を説明した。ATSFontRefを得てテーブルをチェックし、Zapfテーブルを得て、そこからグリフを得ることができる。(Zapfとは伝説的フォントデザイナの名前だ。)そして、プログラム例を示して、APIを使って異体字を検索するところを示した。そして、字形の収集についても説明があった。現在は10万字を集めたものもあるが、同じものとみなされる文字をまとめるという「包摂」という考え方を示した。ヒラギノでは無用の文字は作らないという方針があり、対応していない文字もあることが紹介された。包摂しているもの、していないものの例がたくさん示された。(EGWordとEGBridgeでは、異体字を出せるようになるという補足もあった。)

カテゴリ:テキスト/フォント, イベント


MSM2001》「Aquaユーザエクスペリエンス」

「Aquaユーザエクスペリエンス」としてStephen Chick氏から講演が行なわれた。Aquaを採用する利点として、ユーザにとってはソフトウエアの修得、作業効率などを挙げた。デベロッパにとっても、サポート負担の軽減などが挙げられた。
Aquaに対応するということに対して必要となる10項目を紹介した。

1)Aquaを採用するには、Cocoa/Carbon/Javaのいずれかのフレームワークを使う
2)高品質なアイコン(詳細は以下に記載)
3)Dockの位置を配慮して、ウインドウがDockにより隠さないようにする。また、Dockをクリックしたときにウインドウを表示する(書類ベースのアプリケーションで、書類が1つもないなら、Dockのクリックで新規ウインドウを開くとか、最小かされた最後のウインドウを開くといった配慮が必要)
4)レイアウトガイドラインに従ったオブジェクトの配置を行う。Interface Builderではガイドラインを表示する。(ダイアログボックスやメニューについての実例で説明された)
5)決められたディレクトリにファイルを保存する
6)Appleヘルプを利用したヘルプを作成する(HTMLで作成できる)
7)ウインドウレイヤーモデルを考慮する(アプリケーションに関係なく、ウインドウが重なる)
8)シートを使う(シートはウインドウ単位のモーダルなインタフェース)
9)ヘルプタグ(ヘルプボタン)として標準的なものを使う
10)一貫性を保つ(標準ダイアログ、カラーピッカーやフォントピッカー、アプリケーションのバンドル化)

アイコンデザインについての哲学が紹介された。Previewのアイコンが紹介されたが、写真とイラストを元にしている大きな画像の元データがまず示された。デザイン自体がリアルで感情がこもったものであることが紹介された。ストーリ性についても説明され、海に行ったときの子供の写真をルーペで見るといったストーリがアイコンに込められていると説明された。感情に訴えることで、言語などにとらわれないでユニバーサルな表現ができる。
いろいろなデザインのアイコンがるが、正面からの画像と斜めになったデザインにわけられる。「ユーザアプリケーション」ジャンルとしては、従来のひし形アイコンに敬意を表し、斜になった書類を基調としたデザインになっている。メディアのエディタやビューア、日常的に使い、ビジネスやエンタテインメントに使われるものがこのジャンルに入る。デザインは遠近感をつけて鮮やかな色にして、ダブルクリックしたくなるようなデザインにした。そして、メディアと道具の組み合わせでデザインしている。机の上に書類があって、斜め上にあるカメラからの目線に従ったデザインとなっている。Palmなどの例で、ブランドを生かしたデザインもありうる。
一方、「ユーティリティアプリケーション」ジャンルとして、メディアの処理や管理ツールなどのアイコンについて説明された。遠近感は出さないで、モノトーンにして、まじめな雰囲気を出している。棚にものが乗っているというイメージでデザインされている。
書類アイコンは、従来のDog ear(右上が折れている状態)に敬意を表して、その基本形を使い、アプリケーションとの関係を示すグラフィックスを入れて、ラベル付けを行っている。環境設定のファイルは、システム環境設定のスイッチと、アプリケーションのキーとなるグラフィックスを組み合わせている。
ツールバーのアイコンについても、シンプルで遠近感は出さない方針で設計された。また、サイズが小さいので全体的なフォルムをもちいて判別できるようなデザインが取り入れられていると説明された。

カテゴリ:ユーザインタフェース, イベント


MSM2001》「Mac OS Xアプリケーションのデプロイメント」

「Mac OS Xアプリケーションのデプロイメント」として金子貴寛氏よりの講演が行なわれた。従来のアプリケーションの1ファイル形態での限界を示し、Mac OS Xではフォルダを1つのアプリケーションに見せるパッケージを導入し、複数のバイナリ、複数の言語などに対応できるようになった。パッケージの内容としては、.appという名前のフォルダがトップになり、Contentsの中に、Info.plist、Resources、PkgInfo、MacOSといったファイルやフォルダがある。フォルダがパッケージとして見えるには、特定の拡張子がついていてPkgInfoファイルがある場合、カタログ情報の特定のビットが立っている場合、アプリケーションでの指定(アプリケーション設定の書類設定)がある場合の3つがある。Info.plistはアプリケーションの情報をシステムに伝えるために使われる。シングルファイルのアプリケーションでは、plst(0)リソースで同じ情報を指定する。そうしないと128ビットアイコンはサポートされない。
Pure Javaアプリケーションを作ると、Resourcesフォルダ下にJavaフォルダができてjarファイルが作成される。メインクラスを特定できれば、.jarファイルダブルクリックできるが、MRJAppBuilderを使ってアプリケーションパッケージを作成することもできる。MRJAppBuilderの設定ダイアログについての説明が行われた。Javaのプロパティについても一部が解説が行われた。
ローカライズについても説明が行われた。言語地域名についても拡張され、たとえばen.lprojフォルダでもよく、8か国以外の言語にも対応している。Project Builderで新たなローカライズは可能だが、差分アップデートができない。そこで、AppleGlot 3という内部で使われていたツールを公開した。リソースのテキスト部分をXMLファイルで書き出す。それを手作業で翻訳し、新たな言語のフォルダやリソースが出来上がる。差分アップデートにも対応しているが、アプリケーションはサイトからダウンロードする。
ドキュメントのバインディング(文書をダブルクリックしたときに起動するアプリケーション)についての話になった。昔はクリエイタとファイルタイプだけでよかったが、DOSファイルや拡張子ファイルも扱うようになっていろいろな仕組みが作られたが、最終的には拡張子をOSで理解するようにするという方針になった。拡張子は最後のドットに続く文字列で、12バイトまでという制限がある。数字のみはだめで、大文字小文字は区別しない。そのルールは、まずFinderの情報ウインドウでユーザが設定したものが最優先となる。2番目はクリエイタに対応したもの、3番目が拡張子、4番目がファイルタイプとなる。複数のクリエイタがある場合は、Classicよりネイティブ、より最新バージョン、更新日時の新しい方を選択する。さらに、ViewerよりEditorの設定が優先される。書類を新規作成するときには、Mac OS用にタイプとクリエイタ、そして拡張子も付けるようにする。
Finderに更新するにはポーリングしていないので、FNNotifyを利用する。ただし、ナビゲーションではこの処理は不要となる。ワイルドカードは、FinderのOpenDocumentでは適用されない。バインディングは、アプリケーションフォルダをログイン時にチェックする。その他のフォルダは起動時にしかチェックをしない。
拡張子についてはMac OS X 10.1では隠すという機能が追加された。拡張子を隠す意図は、ユーザには拡張子の存在を意識させないようにしたいからである。ファイルごとに表示するかどうかを設定できる。外部から持ち込まれたファイルは、拡張子は表示されるが、全体をリネームしても、拡張子は保持される。また、拡張子を入れてリネームするとそれが反映されて拡張子は表示される。アプリケーション側でファイル名を表示する必要がある場合には、専用のAPIを使う。そうすれば、現在Finderで表示されている名前を得ることができる。ドキュメントを作成するときには拡張子の非表示をデフォルトにする。保存時に、ユーザが指定した場合や指定しない場合、間違った場合などの対処についてデモを交えて解説された。拡張子を付けないで名前を指定した場合や、間違った拡張子を付けた場合など、それぞれ考慮された結果になるものである。Windowsのような単純な拡張子の利用にはなっていないのがポイントでもある。
アプリケーションをインストールすると、アプリケーションのエイリアスを引数にとってApplEventが発生される。一番のお勧めは、dmgファイルでのドラッグコピーによるインストールである。デベロッパーツールについているPackageMakerを使うとアプリケーションバンドル以外にファイルをコピーする場合やルート特権での処理が必要な場合、前処理や後処理を行う場合のインストーラが作成できる。

カテゴリ:開発情報, Mac OS X, イベント


MSM2001》初台会場の締めでは、Appleのディレクタからの挨拶も

アップルの担当者からの一通りの講演が行なわれた後、ADC(Apple Developer Connection)の説明や、今後行われる大きなイベントについての呼び掛けも行われた。まず、2002年3月21日〜23日には、東京ビッグサイトで、Macworld Conference & Expoが行われる。また、サンノゼで毎年行われている開発者向けのイベントであるWWDC 2002については、2002年5月6日〜10日の日程で行われることが紹介された。
続いて、Apple ComputerのWorld Wide Developer Relations Partnership Management DirectorであるShaan Pruden氏より話があった。米国のデベロッパ支援業務の責任者である。今回のMOSAのセミナーを、アメリカで行われているMacHackのようなイベントの雰囲気を感じるとし、大きな成果を期待していると話した。また、WWDC 2001では日本からは200人ほどの参加者があったが、来年のWWDC 2002にもぜひとも参加してほしいと締めくくった。

続いて、これまでのセッションに関するQ&Aが行われた。なお、質問内容が込み入っているだけに、テキスト上では誤認している箇所があるかもしれないので、間違いがあれば、ご指摘頂ければと思う。

Q:拡張子を間違えてしまった場合の警告が出るがその情報はどこから得ているか?
A:Info.plistを調べている。

Q:拡張子についてのユーザインタフェースについて、手本になるアプリケーションは?
A:ない…。TextEditはいろいろ癖があるのでお手本にならない。NSDocumentは自動的にフラグが立つ。この件についてはもうすぐTechnical Noteが出るので、それを参照してもらいたい。

Q:拡張子が12バイト以内とあるけど、勝手にいいのか? あるいはクリエイタなどのように管理はされているか?
A:今、用意はしている。クリエイタの登録のようにすると思われる。ただ、UNIXやWindowsのファイルもあるので、管理したところで意味があるかどうかは未知数である。

Q:Carbonについて。Mac OS 9でも動くのが多いのか?
A:いちがいには言えない。ビルドも別々にするのは負担ではないと考える。

Q:PackageMakerでのアンインストールはできるのか?
A:サポートされていない。

Q:Mac OS Xではデベロッパが各バージョンを保持するのが大変。また、バージョンごとにインストールのプロセスを切り分ける必要も出ている。
A:バージョンごとの違いがあるのなら、サードパーティから出ているインストーラ作成ソフトも検討してはどうだろうか。

Q:アップデータのサイズが大きいので気軽にアップデートできないため、古いバージョンを使っているユーザもいる。アップデートを促進させるためにはCD-ROM、雑誌添付などがいいのでは?
A:要望としていただいておく。

Q:CarbonでAppleTalkを使うアプリケーションを作っているが、同じアプリケーションが9では動くけどXでは動かない。
A:ネットワークの担当者がいないので分からない。

Q:OS起動時に起動するものはPackageMakerで作成できるか
A:できる。ただし、シェルスクリプトを作成する必要がある。

Q:パッケージでは、Mac OS 9向けの別バイナリを供給することができるのか?
A:できるが、Mac OS 9より後のあるバージョンからしかサポートしていない。Mac OS 8.6ではサポートしていない。

Q:パッケージに関するドキュメントはないのか?
A:Inside Mac OS X: System Overviewを見てほしい。

Q:CFMのCarbonアプリケーションでスクリプトが切り変わらないことがある。
A:plstリソースを指定すればできるはずだが、シングルバイナリの場合にはだめかもしれない。パッケージだとうまくいくはず。

Q:JavaのAWTを使ったアプリケーションでは、フォントを設定しないと日本語が表示されない。
A:この点については認識をしており、アップデートで対応する予定だ。

Q:FSSpecからFSRefに移行しているが、API自体がFSRefにすべて移行しているわけではなく、FSSpecが必要になるものもある。また、CFURLに1024バイトの制限があるが問題ないのか?
A:FSRefは今後もなくならないはずである。FSSpecとFSRefの使い分けは、その後に何をするかによって決まってくるのではないだろうか。


Q&Aを切り上げた後、2台のバスに分乗して、神奈川県葉山町にある湘南国際村センターに向かい、初台を後にした。

カテゴリ:イベント