Macintosh Developer Online (MDOnline)


2002年1月12日発行号 - CarbonLib 1.5がでたけども



本来ならお休みのスケジュールですが、1月は正月休みもあったことですし、発行します。MACLIFEの記事には大きく反響があり、直接メールもいただきました。こうした記事が書けるように手配していただいた方にお礼を申し上げたいと思います。その後に、正式になにかあるかなと思ってBNNのサイトに行っているのですが、昨夜はなにもなかったみたいですが、異様に重たかったですね。なんか、今はもうアクセスができなくなってしまっています。2chにはなんか結構な書き込みがあり、珍しくやや建設的な話になっています。なんか関係者が書いているのがなんとなく見える気がしますけど、結論が出てしまってからはなんとでも言えることでもありますからね。MacWIREの話にまで行っているもんなぁ…。ライターの質とかいろいろ書いていますが、確かにWindows 95以降、97年くらいにはぐっと増えたという気がします。もちろん、レベルの高い人もいたけど、そうじゃない人もいたというか…つまり、それでも需要は満たしていたんだと思います。特定の雑誌ではなく、一般論と言うか全体的な傾向としてですが、折しも、初心者PCユーザが増えた時期で、初心者向け→難しいことは書かない→簡単でいい、という図式がいつのまにか「いい加減でこなす」という線に延長されていることは明白だったと思います。どの雑誌がということではなく、結局みんな心の片隅でそうした流れを作ってしまっていたことがあるんじゃないかと思います。その結果、読者が離れていたということになるのでしょうね。雑誌がどんどん減る中、いい意味で淘汰されるのならいいんですが…。ただ、ライタービジネスとう点でもいろいろあるんですが、ま、それはいずれの機会に…。いずれにしても、私も含めて、MACLIFEで原稿を書いていたライターってのは仕事の機会を減らすのは明白です。ともかく、まずは自分自身が淘汰されないように頑張らないと…そして、出版界全体が真剣に取り組まないといけない課題はたくさんあります。
(新居雅行 msyk@mdonline.jp


【MacWIRE配信予定】小池邦人のプログラミング日記》2002/1/12<今年もプログラミングは続くのだ!>

皆さん、今年も宜しくお願い致します。Macworld Expo/San Francisco 2002のJobsの基調講演で、Macintosh全機種のブートOSをMac OS Xに切り替えるという発表がありました(ちょっと不安...)。今年は、Mac OS Xへの移行が本格的に始まる記念すべき年になりそうです。長いあいだ調査をしてきたCarbonアプリケーション開発のノウハウも、いよいよ花咲く時が来たと言うわけです(本当か?)。

今年しょっぱなのビッグニュースは新iMacの発表だったのですが、昨年末のビッグニュースは「CarebonLib_1.5GM_SDK」が発表されたことです(プログラマー限定)。CarebonLib_1.5GM_SDKは、以下のApple SDKサイトからダウンロードすることが可能です。

◇CarebonLib_1.5GM_SDK
 http://developer.apple.com/sdk/#Carbon1.5

実際に使用して試してみましたが、DataBrowsrやMLTEなどのバグも随分と解消されているようで、そこそこ安心して使えるようになりました。付属しているUniversal Interfacesのバージョンはv3.4.1f1となっています。

 

CarbonLibを単独でインストールするための「日本語版 CarbonLib 1.5」も、すでにApple Downloadサイトに登録されています。

◇日本語版 CarbonLib 1.5
 http://docs.info.apple.com/article.html?artnum=120047

ただし、Mac OS X 10.1.2に搭載されているCarbon Framworkのバージョンは1.4のままです。Mac OS 8/9用のCarbonLibとMac OS X搭載のCarbon Framworkでは、バージョンの違いによる機能差がどの程度あるのかが明確にされていません。ひょっとすると、Mac OS Xの方が機能やBug Fixが先行している可能性もあります。こうした点については、Apple側からもう少しこまめに情報提供をしてもらいたいものです。

もうひとつのニュースは、Metrowerks社から「CodeWarrior Pro. 7.1 Updater」が発表されたことです。このアップデータは、以下のMetrowerks社のサイトからダウンロードすることが出来ます。

◇CodeWarrior Pro. 7.1 Updater
 http://www.metrowerks.com/download/index.taf?function=detail&updates_uid=292

Updaterだけで30Mバイト程度の容量があり、かなり大規模なアップデートであることが分かります。IDEがv 4.2.6へとアップデートされるほか、コンパイラなどにも改良が加えられているようです。CodeWarrior Pro. 7ユーザならぜひともアップデートしておきたいところなのですが、残念ながら日本語版はまだ存在しません。無理やり日本語版をアップデートしたところ、環境設定をはじめ、いくつかのダイアログで日本語の文字化けが起こってしまいました。どうも、こうした使用方法は止めておいた方が良さそうです。

実は、Pro. 7の英語版には、Mac OS 9でIDEを起動すると強制的にアピアランスをグレースケールフォントに切り替えてしまうという大バグが存在していました。私は通常は英語版を使っていたのですが(即アップデートができるため)、このバグのために日本語版を使わざるおえませんでした。日本語版のPro. 7の方は、ちゃんとこのバグが回避されていたのです。今回調べたところ、Pro. 7.1の英語版ではこのバグが解消されていることが分かり、さっそく英語版に切り替えてしまうことに決定しました。日本語版を英語版に切り替えるのには、CD-ROMの「English Components」フォルダにある「English Components.smi」をマウントし、その中にある「English Tools Installer」で上書き処理を実行します。こうして一度英語版にしてしまえば、後は問題なくCodeWarrior Pro. 7.1 Updaterでアップデートすることが可能です。

 

そんなわけで、元旦からMacに向かいプログラミングに熱中していた私ですが、やはりと言うか予想通りというか、新年早々トラブルに見舞われてしまいました。対象となる環境は、すべてMac OS X 10.1.2です。

・CLOCK(時間&日付)コントロールの不都合

CLOCKコントロールで「年.月.日」を表示した場合、年を4桁表示にするのか2桁表示にするのかをアプリケーション側から制御できません。どなたか方法をご存知ありませんか? 現状では、「システム環境設定」の「地域情報」「日付」で「年を4桁表示にする」をチェックすると自動的に4桁になるようです。ただし、この場合「年」をキー入力しようとすると、下位2桁の変更しか受け付けず上位2桁を変更することができません(涙)。こちらは間違いなくバグでしょうね。

 

・キーボードフォーカスの不都合

エディットテキストやリストなどのコントロールを、TabキーやSetKeyboardFocus()でキーボードフォーカスした場合、どういう訳だかCarbon Eventが発生しません。キーフォーカスは、そのコントロールをマウスクリックで選択したのと同等なわけですから、kEventClassControlのkEventControlHitや、コントロールに割り付けられているkEventProcessCommandなどのCarbon Eventが発生しないと困ります。例えば、エディットテキストでは、マウスクリックした瞬間にKeyScriptを変更したい時があります。また、フォーカスによりカラム内にディフォルト文字列を表示したい場合もあります。今のままだと、こうした処理をするのに煩雑な回り道をする事になってしまいます。

・コントロールフォーカスの不都合

「システム環境設定」の「キーボード」「フルキーボードアクセス」で「すべてのコントロール可能な部分を選択」を選択しておいても、Carbonアプリケーションではこの設定が利きません。Cocoaアプリケーションではちゃんと動きます。また、この機能がONにできるのなら、SetKeyboardFocus()などのAPIでも、ポップアップメニューやラジオボタンに対してフォーカスが出来ないといけません。つまりアプリケーション側からも制御できる必要があるわけです。これも、Mac OS Xへの実装が間に合わなかった機能のひとつなのでしょうか?

 

「Mac OS Xに対する開発者からの提言」でも上がっていましたが、こうしたCarbon FrameworkとCocoa Frameworkの機能差は早急に解消するべき問題です。そうすれば、現状あるCarbonアプリとCocoaアプリのインターフェースの差異が、ずいぶんと目立たなくなると思います。例えばCarbonアプリから呼び出せないフォントパネルやツールバー機能などがこれに相当します。ColorPickerも両アプリでは異なるダイアログとして表示されてしまいます。また、アラート表示で対象アプリのアイコンがDockから飛び出すインターフェースも、Cocoa Frameworkだけにしか実装されていない機能です。CarbonLib 1.6(2.0?)の目標のひとつとして、こうした不都合の解消に早急に取り組んでもらいたいと思います。

次回は、Carbonアプリケーションから利用できるようになったMac OS X特有の機能を紹介したいと思います。まずは、Dockの様々な機能を活用してみることから始めます。
[小池邦人/オッティモ]

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


Java Watch on the X》4 - アプリケーションをパッケージとしてビルドする(2)Project BuilderでのJavaアプリケーション(1)

Mac OS Xのアプリケーションパッケージの概要に続いて、Project Builderでの設定を追って行くことにしよう。ここでは、December 2001版のDeveloper Toolsを使っている。プロジェクトのひな形として、Java(つまりPure Javaであるが)のカテゴリーには5つある。ただ、今時はもうAppletを作ることもほとんどないと思われるので、結果的にはAWTないしはSwingベースのアプリケーションとToolが選択できるということになる。

◇プロジェクトのテンプレートとして用意されたJavaのカテゴリ
 

Java AWT ApplicationとJava Swing Applicationは、いずれも、Mac OS Xのパッケージ形式のアプリケーションを構築する設定が最初から行われているプロジェクトが作成される。AWTとSwingの違いは、ひな形として作られているソースがどちらのGUIコンポーネントを使っているかということで、その他の違いはない。だから、AWTの方を選んで後からSwingに切り替えるというのは基本的にはソースプログラムの段階の作業だけとなる。Toolは、シングルバイナリとしてのjarファイルを生成すると考えればよい。つまり、javaコマンドで起動できるようなタイプのプログラムを作成するプロジェクトの設定となっている。

以下は、Java Swing Applicationを選択して作成されたプロジェクトの中身である。最初から用意されているファイルは3つだけだ。ここでは、プロジェクト名として「JavaSwingAppTest」という名前を付けている。

◇Java Swing Applicationによって作られるプロジェクト
 

プロジェクト名と同じ名前のソースJavaSwingAppTest.javaがこのアプリケーションのメインとなる。つまり、このクラスにmainメソッドが定義されているのが1つのポイントである。また、JavaSwingAppTestクラスは、JFrameを拡張したものでありつまりはSwingのウインドウである。また、OpenDocumentやQuitのAppleEventを受け付けるようにもなっている。いずれにしても、Swingのシングルウインドウアプリケーションなら、このソースを少し修正するだけで、使い物になるだろう。メニューの定義や、メニュー選択後に実行されるメソッドなども用意されているので、一度プログラムをじっくり検討するのもいいかもしれない。プログラムの作成にかかわることは別の回に改めて解説しよう。
AboutBox.javaは、文字とおり、○○について…のメニューを選択したときに表示されるウインドウを定義したものである。さらに、プロジェクトと同名のJavaSwingAppTest.icnsファイルは、アプリケーションのアイコンである。最初からアイコンが供給されていて、必要な設定が行われている。以前はコーヒーカップにアップルマークのそれなりにカッコいいアイコンだったが、どこかのバージョンから紙の上にコーヒーカップのアイコンに変わっている。いずれにしもてそのままでもかっこいいので、思わず使い続けたいとも思ってしまう。自分で作ったアイコンファイルの場合は、もちろん、プロジェクトに登録をして、「アプリケーション設定」にある「アイコンファイル」のファイル名を切り替えておく。

「プロジェクト」メニューから「アクティブターゲットの編集」(Command+option+E)を選択すると、プロジェクトの現在のターゲットについての設定が表示され、変更できる。プロジェクトには複数のターゲットが設定できるが、ターゲットにはコンパイルしてどのようにアプリケーションやあるいはファイルをビルドするのかと言った定義が記載できる。デフォルトでは1つのターゲットが作成されている。
「ファイルトビルドフェーズ」のタブでは、プロジェクトに登録したファイルをどんな処理にかけるのかということを設定するが、たとえば、あとから.javaファイルを登録すると自動的にコンパイル対象になるなど、ある程度は自動的にできる。ただ、プログラムファイル以外は登録後にここでの場所を確認する必要がある。異なる場所に設定したいのなら、ドラッグ&ドロップで移動したり、選択してdeleteで消したり、あるいは左側からファイルの項目をドラッグ&ドロップすることで編集作業ができる。

◇プロジェクトの設定の「ビルド設定」
 

Sourcesにあるファイルは、基本的には拡張子をもとにしてコンパイルがなされる。.javaだとjavacでコンパイルされるとう具合だ。
Bundle Resourcesに登録したファイルは、ビルドしたアプリケーションのパッケージの中のContents/Resourcesフォルダに、その内容が単にコピーされる。アイコンのファイル自体はここにファイルとして存在しないといけないわけだが、ビルド設定のここでの設定に従って、作成したアプリケーションにコピーされるという具合だ。
Java Archive FilesやFrameworks and Librariesについては、プロジェクト内のソース以外のライブラリを利用するという話のところで説明しよう。

「ビルド設定」のタブでは、コンパイルと、アプリケーションのパッケージ化についての設定を行う。ただ、基本的にはJavaの場合はチェックポイントは少ない。まず、「一般設定」でプロダクト名という項目があり、最初はプロジェクト名となっている。この名前は、まず、アプリケーションのファイル名になると同時に、内部では、Contents/MacOS内にある実行ファイル、Contents/Resources/Javaにあるコンパイル結果をまとめたjarファイルの名前にも使われる。もちろん、変更してもかまわないので、これは自由に設定すれば良い。ただ、日本語を含む名前にするとそのままでは実行できなくなる…というか、jarファイル名に日本語が入ってしまって問題になると思われるので、様々に変更をしなくてはいけなくなる。もし、日本語のアプリケーション名にしたい場合は、プロダクト名は1バイトコードで記述しておき、後からパッケージのフォルダ名を変更するのがいいだろう。実行時には、必ずしもアプリケーション名と、内部の実行ファイルの名前などが一致していなくてもいいようだ。

◇「ビルド設定」のプロダクト名
 

なお、「ビルド設定」のタブでの設定は、そこの一番最後にある「ビルド設定」にすべての設定が集約されていると考えれば良いだろう。それまでの部分でプロダクト名などは設定できるが、ぷダクト名は「PRODUCT_NAME」の設定として、ここでも変更はできるし参照もできる。

◇「ビルド設定」の一覧に設定結果は集約される
 

ビルド設定では、「JAVA_COMPILER_FLAG」として、javacに設定するフラグを記述することができる。=の右側をダブルクリックすると、キー入力が可能となるので、ここに設定を加えることもできる。Sept 2001版のDeveloper Toolsではここにエンコードの指定などを入れないとコンパイルエラーでフリーズするといった結果になっていたが、Dec 2001版はそうした配慮は必要ない。通常はコンパイラのフラグは何も指定しなくてもかまわない。「ビルド」設定を加えるときには、下側の(+)記号のボタンをクリックする。削除は(ー)記号のボタンだ。
「JAVA_COMPILER」には、コンパイラのプログラムへのパスが記載されているが、たとえば、コンパイラとしてjikesを使いたい場合には、jikesへのパスをここに記述すれば良い。

「ビルド設定」のタブでは、「コンパイラ設定」の「コード生成」で、コンパイラの最適化の設定が可能となっていうる。最初は「カスタム」となっているが、これは特に設定は行われていないようで、自分でフラグを設定するということのようだ。ここで、「レベル3」などを選ぶと、一番下の「ビルド設定」のところで「OPTIMIZATION_CFLAGS = -O3」といった設定が加わり、javacを起動するときに、オプションとして設定されるようだ。

◇コンパイラのオプティマイズの設定
 

(この項、続く)

カテゴリ:ProjectBuilder/Interface Builder, Java, Java Watch on the X


Java Watch on the X》4 - アプリケーションをパッケージとしてビルドする(2)Project BuilderでのJavaアプリケーション(2)

続いて「アプリケーション設定」のタブを見てみよう。ここでの設定は、パッケージの中にあるInfo.plistに設定される。一部は、PkgInfoファイルに保存される。前に説明した通り、Info.plistの内容はXMLファイルだが、この「アプリケーション設定」のパネルで、設定をしやすくしているというところだ。このパネルには「簡易設定」「詳細設定」の見出しがあるが、それぞれ基本的には設定のユーザインタフェースの違いである。詳細設定は、Info.plistファイルの中身をそのまま階層表示のコンポーネントで編集するが、簡易設定はそのなかのいくつか抜粋された内容を、適切なラベルや解説がついたテキストフィールド等で設定できるというものだ。基本的には簡易設定で概ね設定はできるが、場合によっては詳細設定を行わないといけない。

◇「アプリケーション設定」の簡易設定
 

◇「アプリケーション設定」の詳細設定
 

「詳細設定」はキーとそれに対応した値という形式で表示されている。=の左がキーで、右がデータだ。それぞれダブルクリックして編集することができる。キーの追加や削除のボタンが見えているので、それらを活用するわけだが、そのあたりは説明の必要はないだろう。

いくつかの設定を説明しておこう。まずは、ファイルタイプとクリエイタについては適切に設定しておくのが基本であることは言うまでもない。これらは、Info.plistでは「CFBundlePackageType」「CFBundleSignature」のキーに対応したデータとして記録される。単にアプリケーションアイコンを設定するだけなら、クリエイタは????でもかまわないが、文書ファイルを扱う場合には、Appleから発行された重複のないクリエイタの設定は必要である。
「基本情報」に「実行可能ファイル」、「情報を表示」に「表示名」の項目がある。まず、生成したアプリケーションのファイル名は、「ビルド設定」のタブで設定されるのが原則である。そして、実行したアプリケーションでのアプリケーションメニューでの項目名が、「実行可能ファイル」ないしは「表示名」で設定できる。表示名が優先となる。ただし、いずれの場合もDockアイコンの名前としては、ファイル名が表示される。Info.plistのキーは、「実行可能ファイル」は「CFBundleExecutable」で、「表示名」は「CFBundleName」である。
アプリケーションのアイコンは「アイコンファイル」のところに、ファイル名だけを記載する。Info.plistファイルのキーは「CFBundleIconFile」である。ここでの設定をもとに、Contents/Resourcesディレクトリにある指定のファイルを探して、そこからアイコンの画像情報を得ることになる。
基本情報の「識別子」は、Info.plistのキーで言えば「CFBundleIdentifier」に対応するが、Pure Javaではあまり意識することはないと思われる。
バージョンや情報文字列などの項目があるが、Finderのファイル情報では「情報文字列」に記載した文字が「バージョン」の欄に出てくる。だから、「情報文字列」のところにコピーライトと年号、そして開発者とバージョンを記載するというのが一応の対応ということになるだろう。
なお、「詳細情報」を出すと、Javaという項目がある。実は、ここでの設定がPure Javaのアプリケーションでは重要となる。以前にContents/Resources/MRJApp.propertiesファイルで各種の設定を行うと説明したが、実はこのファイルはあってもなくてもいい。このファイルで設定可能な項目は、「アプリケーション設定」で設定できる。つまり、Info.plistファイルの中での設定でもかまわないということである。将来のバージョンは分からないが、現在のDeveloper Toolsでは残念ながら詳細設定のところでないとJava以下のキーの設定はできない。ここで設定可能な内容については、追って説明を行う。

ターゲットの設定には他に「実行可能ファイル」の設定がある。基本的にはここはそのままでかまわないだろう。特にアプリケーションでのPure Javaでは設定が必要になる場面は少ないと考えられる。なお、デバッグができないときには、まずはここの「デバッガ」の設定で、Java Debuggerが選択されているかをチェックしよう。

◇「実行可能ファイル」にデバッガの選択がある
 

(この項、続く)

カテゴリ:ProjectBuilder/Interface Builder, Java, Java Watch on the X


KBase》CarbonLib 1.5の日本語版が公開

CarbonLib SDK 1.5は正式リリースされたが、CarbonLib 1.5の日本語版も配付が開始された。Ver.1.4からの変更点としては、DataBrowserコンポーネントをMac OS Xのコードから再構築、ヘルプメニューの自動追加、MLTEがMac OS X 10.1のソースをベースにしたものに変更されていることなどとなっているが、基本的にはMac OS X 10.1のCarbonの機能にそろえるバージョンと考えて良いだろう。

関連リンク:CarbonLib 1.4 and 1.5: Information and Download
カテゴリ:Carbon/CF


KBase》Power Mac G4のCD-RWドライブのファームエアアップデータが公開

QuickSilverタイプのPower Mac G4に搭載されたCD-RWドライブのファームウエアのアップデータが公開されている。公開されているのは英語版であるが、アップデータの性質上、英語版のOS以外でも利用できることは想定されるが、日本語版ではないのでその点は注意すべきところだろう。アップデートすることで、スリープ動作からの復帰後の動作が改善される。なお、アップデータは、Mac OS 9で起動して利用できるようになっている。

関連リンク:Power Macintosh G4 CD-RW Firmware Update: Information and Download
カテゴリ:Power Mac


KBase》Mac OS 9向けのiTunes 2.0.3がリリース

Mac OS 9向けのiTunes 2.0.3がリリースされた。Mac OS X向けのものは2001年12月にすでに配付されている。Ver.2.0.3では、iPodとの同期の機能が向上しており、ライブラリやプレイリストでチェックを付けた曲だけを転送すると言ったことが可能となった。また、Rio One MP3プレイヤをサポートした。また、Unicodeにエンコードされたタグの修正ツールも含まれている。さらに、安定性や処理能力も向上した。

関連リンク:iTunes 2.0.3 for Mac OS 9: Information and Download
カテゴリ:メディアプレイヤ