Macintosh Developer Online (MDOnline)


2001年10月27日発行号 - Java Watch on the Xスタート



iTunesでラジオが聞けない話ですけど、まれーに聞ける場合もあるみたいです。でもほとんど聞けない状態になっています。いずれにしても、インターネットラジオってあまりもうけにならないのか、すっかり下火になったと言っていいのかもしれませんけど、やっぱりなくなって欲しくないですね。一部に有料でマニアックなチャンネルを提供していたところとか、どうなっているのかな? iTunes 2でしっかりとチャンネルリストがアップデートされていることを期待しています。
ところで、11月2日にアスキーが主催して行うX Partyのチケットが来ました。当選みたいです。どうせ1000人だったらみんな当たるかな(笑)などと思っていたら、2chを見ると落ちたといっているやつもいたので、はずれている人もいるようですね。私のためにPowerBook G4を用意してくれているのと思うとワクワクしてしまいますが、同じことを考えているやつが1000人もいると思うとゾクゾクしてしまいます。いちおう、取材としていくつもりではありますが、取材していいかどうかはこれから問い合わせるところです。会場でお会いする方もそこそこいらっしゃるかと思いますが、お気軽に声をかけてください。ところで、X Partyのはがきが来なかったのでステータスがどうなっているか昨日調べようとしたのですけど、MacPowerのトップに行けばリンクがあると思って行ったらなかったですね。MacPeopleも同様です。雑誌の方々は全然からんでいないのかな。結局、お宝のページのトップにリンクがあったのを思い出して、そこからジャンプしましたけど…。そういえば、2日は午後はMayaのイベントがありますね。そちらの方も興味があるのですけど、それに行っているとニュースが発行できなくなりそうなので、そちらは残念ながら欠席しようと思っています。
(新居雅行 msyk@mdonline.jp


Java Watch on the X》prologue - Mac OS XのPure Javaの世界に入り込む

【MDOnline読者様限定コンテンツ】
今月より開始する「Java Watch on the X」のコーナーは、Mac OS X対応のプログラムをJavaで作成するということを主テーマにして、さまざまな情報をまとめていくといった主旨でお届けする。
Javaといっても、Mac OS Xには大きく分類して、「3つのJavaがある」ということは、以前からも指摘してきたとおりだ。1つは、ネイティブなライブラリ(フレームワーク)であるCocoaを利用したアプリケーションを作るという側面で「Cocoa-Java」などと呼ばれている。当初はAppleもこの枠組みを事ある毎に示していたのであるが、Mac OS Xの発売時期ごろを境目に従来のNeXT以来の開発言語であるObjective-Cでの開発に比重が移った。理由はいろいろあるが、主たる理由はデベロッパの支持が得られなかったということであるだろう。特に、これまでNeXTのプラットフォームからずっとサポートしてきた開発者は、Mac OS XのCocoaでの重要なサードパーティであることは間違いなく、そうした人たちがMac OS XのCocoa環境での発言力も大きいことは容易に想像できるし、開発言語としてObjective-Cを使うというのはおそらく前提条件だろう。加えて、デベロッパは、より“ネイティブ”な環境を好む傾向もある。Cocoaはネイティブであるが、Javaは仮想マシンで稼働するし、Objective-CのフレームワークをJavaで利用できるようにしたに過ぎない環境というのがある意味では敬遠されたのであろう。いずれにしても、Cocoa-Javaは決して完成度が低いという訳ではないところまでは来たものの、メインストリームにはなっていない側面もある。もっとも、Objective-Cへの注目が集まっているところにJavaで乗り込むのも勇気がいることであり、その意味ではCocoa-Javaファンは今は静かにしているのかもしれない。赤松正行氏から「Cocoa-Java」という書籍も広文社から発売されているなど情報も豊富になりつつあるので、それはそれでやはり注目できるプラットフォームであるとは十分に言えるだろう。
一方、もう1つのJavaであるWebObjectsという世界は、フレームワーク的にはCocoaとは起源は同じところにあるものの、Ver.5で完全にJava対応となった。こちらはObjective-Cでのアプリケーション作成はできなくなってしまった。フレームワーク自体を完全にJavaで記述しているのである。もちろん、Webアプリケーション作成という世界では、開発効率の高さなども含めてよう注目の製品でもある。WebObjectsのフレームワークは、CocoaのFoundation部分のようにある意味で共通のものもあるが、データベースをオブジェクトとして扱えるようにするEnterprise Objects Framework(EOF)や、Webブラウザで扱えるダイナミックエレメントなど独自のフレームワークを駆使してプログラミングを行う。標準のJavaライブラリを使ったり、XMLのクラスを使うなどの側面もあるものの、総じて独自のフレームワークを使ったアプリケーション作成が主となるのがWebObjectsの開発の世界である。
さらに、もう1つのJavaとして「Pure Java」の世界もある。Pure Javaはここでは、Javaの開発もとであるSun MicrosystemsがSDKとともに提供しているJava標準のライブラリを中心にプログラミングを行う世界であるとしよう。つまり、AWTやSwing、java.net、java.ioといったパッケージを主として使うプログラム作成である。たとえば、Cocoa-JavaではCocoaのフレームワークを使ってウインドウを作成することになるが、そのプログラムは、Mac OS Xでないと動かない。一方、Pure Javaのプログラムは、標準のライブラリを使ってウインドウを作成するので、Mac OS Xはもちろん、Mac OSやWindowsでも基本的に同じように稼働するプログラムが作成できる。クロスプラットフォーム対応にこだわるかどうかは実際に作るプログラムの目的にもよるとは思われるが、完全な互換性はなくて容易に別のプラットフォームに移行できるとか、Macintoshの世界以外からのソフトウエアや開発情報の供給も期待できるなど、それなりのメリットがある世界なのである。

Java Watch on the Xは、3つ目に説明した、Pure JavaプログラムをMac OS X向けに作成する場合のさまざまな情報をお届けする。ネイティブな世界じゃないものに魅力を感じない人も多いかもしれないが、まずはMac OS X上でのPure Javaのプログラムは、基本的にAqua対応のユーザインタフェースが稼働することを知っていただきたい。また、ダブルクリック可能なアプリケーションも作成できてアイコンも貼付けることができるし、書類ファイルとして、書類ファイルをダブルクリックしてアプリケーションが起動するといった基本的な動作もサポートする。つまり、外見上は一般ユーザにとってはそん色ないアプリケーションが作成できるのである。その意味では、動作原理上はネイティブではないものの、見てくれはほとんどネイティブであると言っても過言ではない。
一方、Javaにつきまとうパフォーマンスの問題は確かにある。たとえば、Javaのアプリケーションの方が起動には確かに時間がかかる傾向にある。実動作は相当なパフォーマンスが必要な処理は明らかに差が出るとしても、そうではないような一般的な処理はそれほど大差はないと言えるだろう。もっとも、Mac OSのMRJのような印象を持ってしまうかもしれないが、たとえばファイル処理はMac OSよりもMac OS Xの方が格段に速いようで、Javaでのファイル処理もそれなりに高速にできる。Mac OS Xではカーネルでのスレッド対応がなされているので、たとえばDual CPUマシンでのパフォーマンス向上にも期待ができる。「ネイティブアプリケーションと同じ」とは言えないまでも、パフォーマンスが問題になるようなプロジェクトばかりではないことは確かであり、Pure Javaでも実用に耐えられるアプリケーションを作ることは可能であると言える。
ただ、「Javaをサポートした最高のデスクトッププラットフォーム」などと発売前に大きくアピールしたMac OS Xであるが、Public Betaの段階では国際化対応のライブラリファイルがないとか、Pure Java環境でMac OS独自の処理に対応する機能が一切組み込まれていないなど、Pure Javaのプログラムは動いたとしても、まともなMac OS X対応のアプリケーションとして作成可能な状況ではなかった。さらに、Ver.10.0.xになっても、テキストフィールドがウインドウ内にあるなどGUIコンポーネントを使ったPure Javaのアプリケーションでは、インプットメソッドが選択するとアプリケーションが応答しなくなるなど、日本語環境での実用性はほとんどなかった。ただ、Ver.10.0.xでは基本的な機能がほとんど組み込まれているため、アプリケーション利用にはいたらないにしても、開発はできるようになったと言える。Pure Javaプログラマにとっては事実上のPublic Beta版に相当すると言ってもよいだろう。そして、Mac OS X 10.1がリリースされた。まだ一部に従来の不具合が残ることもあり、パフォーマンス的にも完全ではないにしても、「Mac OS XでPure Javaのアプリケーションを動かす」ということが現実的な線になったと言えるだろう。ともかく、最低限はクリアするというところまでは来たのである。前向きな見方で締めるとすれば、機は熟したというところだろうか。

これから、おおむね月に1回のペースで、「Java Watch on the X」をお届けする予定である。もちろん、Javaのすべてをこの連載で扱うつもりはない。Javaの基本的なところ、つまり言語だとか、ライブラリのごくごく基本的な利用方法などは前提知識とさせていただきたい。Java Watch on the Xで扱うのは、まずはMac OS Xでの特殊事情である。仮想マシンの動作の違い、あるいはMac OS Xだけで使えるクラスの使い方といった話題である。また、Mac OS Xでの実際の開発作業の方法を具体的に説明したり、実行環境との兼ね合いといった部分についても説明をするつもりである。こうした内容に加えて、Pure Javaのライブラリ機能を使ったプログラム作成を行ってみて、たとえばWindowsで稼働するようにしていたプログラムを移植したときに何か特別なことが必要になったりはしないか、あるいはMac OS X向けアプリケーションとして留意することは何だろうかと言ったことも追求する予定である。
ところで、一部の読者の方は、筆者が「Macintosh Java Report(MJR)」として1998年10月より1年近くに渡って、Mac OSでのJavaについてのオンラインコンテンツを販売していたことを思い出していただけるかもしれない。Java Watch on the Xは、まさにそれのMac OS X版だと思っていただければよい。MJRは基本的には現在は販売を終了している。

◇Macintosh Java Report(MJR)
 http://cserver.locus.co.jp/mjr.html

Java Watch on the Xの最初のテーマは、システムプロパティの詳細な検討を行うことである。これは、11月のテーマとは言わず、10月分として数日後に公開することにしよう。

カテゴリ:Java Watch on the X


HTTPの細かなプロトコル処理を手軽に利用できるようにするCFNetwork APIの文書が公開

デベロッパー向けのドキュメントとして「CFNetwork」というものがPDFで公開された。CFNetwork APIは、さまざまなプロトコルでのクライアント-サーバ通信を手軽にできるようにするAPIであると説明されているが、ドキュメントではHTTPに対するAPIのみが公開されている。HTTPのリクエストやレスポンス、シリアライズなどの処理をサポートし、ヘッダの処理を行うようなAPIをサポートするなど、HTTPの細かなプロトコル処理を含めて、Webサーバとの通信を行うようなプログラムをより作成しやすくする目的のAPIであるようだ。なお、CFとあるので、Core Foundationだと思われるが、Mac OS X 10.1のCore Foundationのフレームワーク内には、CFNetwork.hファイルは存在していない。どのシステムがサポートしているのかとかいった情報は、この文書には記載されていない。

関連リンク:CFNetwork
カテゴリ:アップルからの開発資料, ネットワーク, Carbon/CF


KBase》Mac OS X ServerのWebサービスでSSIを可能にする方法

Mac OS X Server 10.1のWebサーバで、SSI(Server Side Includes)を有効にする方法がKnowledge Baseに掲載された。Server AdminでWebサービスに関する設定を追加することで、SSIが有効になる。「MIMEタイプ」のタブで、htmlの設定を複製し、複製したhtmlの拡張子に対する動作で「server-parsed」を選択して、サービスを再起動すればよい。(違う拡張子でSSIを有効にするなら、htmlの記載を変更すれば良いだろう)

関連リンク:Mac OS X Server 10.1: How to Enable SSI
カテゴリ:Knowledge Base(旧TIL), ネットワーク管理, サーバー製品, Mac OS X Server


Carbon Eventで稼働するアプリケーションでのムービーの利用方法

Technical Q&Aに、QuickTimeムービーを利用する場合にCarbon Eventの処理をどのようにすればいいのかといった質問と回答が掲載された。従来のEvent ManagerではMovieTaskをイベントループ中で呼び出せばよかった。Carbon Eventでは、タイマーイベントを生成し、そこから必要なアイドリング時の作業を呼び出すようにするのが基本である。タイマーの間隔は10分の1秒が推奨値であるが、ムービーの表示がまったくない場合には必要に応じて0に設定するなどの対処の必要性がある。

関連リンク:QA1090:QuickTime and Carbon Events
カテゴリ:Technical Q&A, QuickTime, Carbon/CF


QuickTimeエフェクトの高解像度化とコンバートによる画質の変化

QuickTimeのビデオエフェクトを高解像度で生成するためにcodecHighQualityフラグを利用したが、color clipping(色が段階的になることと思われる)ができてしまうという問いに関する答えがTechnical Q&Aに掲載された。これはYUVをRGBに変換するときの結果であり、圧縮なしのフルカラーでムービーを作ってRGBフォーマットにすればまた見え方が変わってくるとしている。

関連リンク:QA1089:Quality of QuickTime video effects
カテゴリ:Technical Q&A, QuickTime


TIL》Mac OS X 10.1でFireWire記憶装置間のファイル転送でシステムが応答しなくなる場合

Mac OS X 10.1で複数のFireWire記憶装置を接続し、その間で大きなサイズのファイルをコピーすると、システムが応答しなくなる点について、Tech Info Libraryで掲載されている。FireWire装置のファームウエアをアップデートするのが1つの対処方法である。それでもだめなら、いったんFireWire以外の装置にコピーしてから改めて別のFireWire機器にコピーするか、Mac OS 9でコピーを行うようにする。

関連リンク:106512JN:Mac OS X 10.1: FireWire 装置間のファイル転送中に応答しなくなる
カテゴリ:Tech Info Library-J, 周辺機器


TIL》Mac OS X 10.1でWeb共有が利用できない場合の対処方法

Mac OS X 10.0.xからMac OS X 10.1にアップデートしたとき、Web共有が開始しない。これは、Apacheの設定ファイルである/etc/httpd/httpd.confの表記に間違いがあるためである。「LoadModule apple_hfs_module…」は間違いで、正しくは「LoadModule hfs_apple_module…」である。この文書に書き直す方法が詳細に記載されているので、Terminalの操作になれていなくても手順通りに作業をすれば、修正することは可能だろう。

関連リンク:106505JN:Mac OS X 10.1: Mac OS X 10.0 からのアップデート後に Web 共有が開始しません
カテゴリ:Tech Info Library-J, サーバー製品


TIL》Mac OS X 10.1ではAirMacのソフトウエアベースステーション機能は組み込まれていない

Tech Info Libraryに、Mac OS X 10.1では、AirMacのソフトウエアベースステーションの機能は利用できないことが説明されている。単体のAirMacベースステーションを利用するか、コンピュータ間通信(アドホックモード)を利用するように記載されている。

関連リンク:106507JC:Mac OS X 10.1: AirMac ソフトウェアベースステーションは機能として含まれない
カテゴリ:Tech Info Library-J, ネットワーク


TIL》Mac OS Xで起動する設定ではOpen Firmware Updatesは適用できない

Open Firmware Updatesを実行するのであれば、Mac OS Xから起動しての利用はできないことがTech Info Libraryの文書に掲載された。Mac OS 9を起動ディスクとして設定しなおし、そしてMac OS 9で起動して、Open Firmware Updatesを利用する必要がある。

関連リンク:106506JN:Mac OS X: Mac OS 9 から起動して Open Firmware Updates をインストールする
カテゴリ:Tech Info Library-J, Mac OS X


TIL》内蔵モデムでのインターネット接続時に出てくるエラーへの対処

Mac OS Xで内蔵モデムを使ってインターネット接続をする場合に、「クロス接続が…」というメッセージが出た場合の対処がTech Info Libraryに掲載された。ネットワーク設定のモデム設定で、モデムスクリプトを選択し直すということで対処できるとしており、その方法が手順で説明されている。

関連リンク:106513JN:Mac OS X:「クロス接続が検出されました。」メッセージ
カテゴリ:Tech Info Library-J, インターネット全般


TIL》ファイル名の先頭が._のファイルはリソースフォーク用のファイル

Mac OS Xでは、HFSあるいはHFS+フォーマットのディスクではリソースの保存をサポートする。しかしながら、リモートNFS、SMB、WebDAVといったファイルシステムではリソースをサポートしないため、AppleDoubleというフォーマットでファイルを保存する。AppleDoubleは、データフォークとリソースフォークを別々のファイルに納めるが、元のファイルと同じ名前のファイルにデータフォーク、名前の冒頭に「._」をつけたファイル名のファイルにリソースフォークが格納される。ファイルの削除を行った場合、データフォークのファイルだけが削除されることもあるが、そのときはリソースフォークのファイルは削除してしまってもかまわない。

関連リンク:106510JN:Mac OS X: Apple Double フォーマットは接頭辞に「._ 」を持つファイル名を作成します
カテゴリ:Tech Info Library-J, Mac OS X


TIL》Macintosh Manager 2を導入するときに検討すべき内容

Macintosh Manager 2のサーバとして単体のサーバを利用するか、あるいは複数のサーバで運用するのかと言った選択肢がある。Tech Info Libraryで公開された文書で、Mac OS X Serverでの運用に移行するために検討すべきことが詳細に記載されている。Macintosh Manager 2を導入する場合には目を通しておく必要があるだろう。

関連リンク:106454JN:Macintosh Manager 2.0: 一般的な設定方針
カテゴリ:Tech Info Library-J, ユーザ管理