Macintosh Developer Online (MDOnline)


2001年4月11日発行号 - Mac OS Xに対応したSharity



何人もの読者の方から、励ましや情報をいただきました。ほんとうにありがとうございます。その後、気になっていたページについては、その部署の上司の方よりおわびと削除をしたというお知らせをいただきました。動いていただいた方々にはこの場を借りてお礼を申し上げます。さて、いただいたメールでは、こうしたネットワーク上でのやりとりでの名誉毀損やプライバシー侵害について、いろいろと情報が掲載されいることを教えていただきました。せっかくなので、末尾にそのURLをつけておきます。私と同業者の方々は他人事ではないと思います。昨日は私はどうしようもないように書いていましたが、訴訟を起こすことができる基準みたいなものはかなり明確になっているようです。ただ、プライバシー侵害についての記述などは、メディアで原稿を書く身にとってはいつでも加害者になってしまうという危険性があることも理解できます。改めて、きちんと記事をかかないといけないと思うところでもあります。

◇Web110
http://www.web110.com/roppou/index.html
◇警察のホームページ
http://www.npa.go.jp/police_j.htm
◇書籍:デジタル法律講座 インターネット事件と犯罪をめぐる法律
 インターネット弁護士協議会(ILC)編
 http://www.ohmsha.co.jp/data/books/contents/4-274-06383-6.htm
(新居雅行 msyk@mdonline.jp


Mac OS XをWindowsファイルサーバのクライアントにするSharity

Objective Developmentは、Mac OS XからWindowsファイルサーバに接続を可能にするShartiy 2.4をリリースした。Mac OS Xが、Windowsファイルサーバのクライアントになることができる。Ver.2.4では対応プラットフォームとして、Mac OS Xが加わった。制限付きの利用ではフリーで使えるが、ライセンス形態は利用状況によって細かく設定されているので、詳細はサイトを見ていただきたい。2クライアントのHome Licenceで59ドルなどとなっている。個人的な利用や学生、教育機関ではフリーとなっているが、これらの条件もサイトを見ていただきたい。なお、Sharityは各種のUNIX向けにも配付されている。また、ソースコードも公開されている。Mac OS X向けのものはコンパイル済みで、dmgファイルにまとめたものが手に入るので、すぐに使う事が可能だ。インストールは手作業でフォルダとアプリケーションのコピーなどを行う。動作としてはファイルシステムの拡張を行うようなモジュールをシステムに組み込むことと、ログインなどの管理を行うアプリケーションを利用するといった形態になっている。そして、デフォルトでは/Network/CIFSといパスからWindowsファイルサーバを参照できるという形式になっている。つまり、マウントしてしまえば、Finder上でのファイル管理やアプリケーションで開いたり保存することができるようになる。ただし、日本語のファイル名についてはうまく扱えない模様だ。Windowsクライアントから問題なく使えているSambaのサーバにアクセスしたが、日本語のファイル名が文字化けしている。また、Mac OS Xから日本語を含むファイル名のファイルをコピーしたが、Windowsクライアントからはもちろん、Mac OS Xの側からも元のファイル名では参照できなかった。なお、サーバの設定をいろいろと変更してみた結果ではないので、その点はお含み置きいただきたい。
Windowsとのファイル共有を行うためのソフトウエアとしてはSambaがあるが、SambaにはWindowsサーバのクライアントとしての機能はあるもののマウントすることはできないため、あまり利用されていない。その意味では、SambaとSharityで、サーバとクライアントで棲み分けされることが予想される。

関連リンク:Sharity 2.4
カテゴリ:ネットワーク


Browsing Mac OS X》Mac OS Xのネイティブ機能を利用するMRJはまだ問題も

Mac OS X向けのアプリケーションを作成する場合に、Javaを使うという選択肢が現実的なものとなっている。Cocoa対応のアプリケーションをJavaで作るということだけでなく、Javaの標準ライブラリの機能を使って、アプリケーションなどを作成できる。つまり、プラットフォームごとに共通のクラスライブラリを使ったプログラミングができるのだ。ユーザインタフェースではJFCのSwingを使うことが今では一般化しているが、Mac OS XのAquaに対応したルック&フィールが用意されているので、そのルック&フィールを適用するだけで、Swingで作ったアプリケーションのユーザインタフェースはAquaになる。プログラムの最初に、以下のようにシステムのルック&フィールを適用するという記述を加えておけば、あとはSwingに従ってプログラムを作成すれば、Aqua対応になるわけだ。


try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) { //例外処理は適切に
System.out.println(e.getMessage());
}

Swingを始め、Javaのクラスライブラリは豊富な機能を有するため、もちろん、まとまったアプリケーションは十分に作成できる。Javaは機能不足と言われていたのは初期の頃だけの話で、今ではOSのネイティブ機能の多くをカバーできるまでにライブラリは発達している。
ただし、標準の機能でカバーしきれない部分も、もちろんある。そのために、JDirect3あるいはJNIといった仕組みを用意し、OSのAPIコールを行ったり、あるいは別途C言語などで作ったライブラリの呼び出しなどができるようにもなっている。こうした処置がどうしても必要になる時はある。もちろん、その部分はOSに依存することになるので、クロスプラットフォームで稼動させるアプリケーションではOSごとにプログラムをわけるなど、対処が必要になってくるところである。しかしながら、ポインタの使い方が今までの開発言語と大きく違うJavaだけに、つなぎの部分のプログラムはけっこう複雑になりがちである。
Macintoshでも、Mac OSの独自の処理を、アプリケーションが必要とする場合があり、もちろん、それらはJavaの標準クラスライブラリでは提供されていない。それらをJDirect3やJNIで作るとなると、プログラム作成効率はぐっと落ちることもあって、Mac OSでは、MRJ(Mac OS Runtime for Java)として提供しているJavaの実行環境に、Mac OS独自の機能を使いやすくするライブラリを入れている。たとえば、ファイルタイプやクリエイタといったMac OSにしかない機能はJavaの標準ライブラリでは当然のごとく用意されていない。そこで、MRJのライブラリ機能として、ファイルタイプやクリエイタを設定するというメソッドを提供することで、手軽にMac OS独自の処理を、Javaのプログラムに組み込める。しつこいようだが、その部分はWindowsで動かしてもエラーになってしまうだけなので、クロスプラットフォームを目指す場合には配慮は必要になる。

Mac OS XでのJava関連のドキュメントは、以下のアドレスにある。

◇Java Developer Documentation
 http://developer.apple.com/techpubs/java/index.html

この中にある「Mac OS X GM Release Notes:Java」をまずはチェックしよう。MRJ 3.0というバージョンが組み込まれている。(Mac OSではVer.2.2.4までリリースされている。)Internet Explorer 5.1ではアプレットの利用はできないことや、HotSpot対応のVMであること、スレッドはMachのスレッドに直接展開されるのでプリエンプティブであることなどがこの文書から得られる。ほかにも、コンパイルやシステムプロパティなど、簡潔ながら必要なことはだいたい書かれている文書だから、Javaでのプログラムを行う人は、なにか情報がないかまずはこの文書からチェックしていいくらいだ。
実際にプログラムを作る上で使うライブラリ機能は、MRJToolkitという部分に記載されている。Release Noteは特別な事情だけが記載されているので、詳細はJava Developer Documentationのページから「MRJToolkit」を参照すると良いだろう。ここでの機能を見て行きたい。まず、ファイルタイプやクリエイタを設定するメソッドがある。既存のファイルに対して設定したり、取得することができるが、ファイルの指定は、java.io.Fileオブジェクトでできるので、Javaのプログラムから手軽に利用できる。ただし、筆者が作ったプログラムで試した限りは、31バイトを超える(おそらくはFSSpecレベルで)ロングファイルネームで、しかもその中に漢字などの3バイトコード(UTF-8だからこう呼ぶのが適切だろう)を含むものの場合、ファイルタイプの設定でエラーが出て設定ができなかった。現在のところは回避方法は分からないし、いずれ修正されるのかどうかも不明だ。なお、アプリケーションが書き出すファイルの既定のファイルタイプやクリエイタを設定するメソッドが、MRJ 2.2.xまでは存在していたが、このメソッドは、Mac OS X以降は使えなくなっていることがRelease Noteに記載されている。既定のファイルタイプとクリエイタという言い方が適切かはさておいて、Javaでファイルを作成した場合のファイルタイプとクリエイタはそのままでは、00コードだけ4つ並ぶものとなっている。
MRJToolkitでよく使う機能としては、FinderからのOpenDocumentsのAppleEventに対応するものだ。また、QuitApplicationへの対応も必要である。さらに、Aboutメニューを選択した時のハンドラも作成する必要がある。これらは、規則通りにプログラムを組めば、こうしたアクションが発生すると規定のメソッドが呼び出されるという仕組みだ。プログラムの書き方はちょっと違うが、Javaのイベント処理に近い。ここでも筆者がサンプルとして作ってみたアプリケーションでは問題が見られた。QuitApplicationのイベント処理やAboutを選択した時の呼び出しはできるのだが、OpenDocumentsの処理がどうも動かない。ファイルをドラッグ&ドロップしてきても規定のメソッドが呼び出されないのだ。ファイルタイプの時の処理を思い出して、英語だけの短いファイル名で試してみたけど同様である。Release Noteには、AWTの初期化をしないとイベント処理ができないけども、パッケージにしたJavaアプリケーションは自動的にAWTの初期化が行われていると書かれている。Release Noteにはつまりは稼動するということが書かれていると考えてもいいので、筆者の段階でなにか問題がある可能性もあるが、Mac OSの上では、きちんとOpenDocumentsの処理はできていたプログラムである。これについては、原因が分かれば改めて追加で記事を作成する。
Mac OS Xではファイルメニューに「終了」はつけない。そして、システム側がアプリケーションメニューに終了の項目を自動的につける。このメニューを選択すると、QuitApplicationイベントがアプリケーションに送られるので、イベント対応さえしておけば、終了メニューには対応できる。ただし、再起動やシャットダウン時には、純粋Javaのアプリケーションは自動的には終了しないという制限がRelease Notesに書かれてある。どうしても、手作業で終了させる必要があるようだ(もちろん、AppleScriptで…という解決方法もある)。
なお、URL文字列を指定してそのURLをたとえばWebブラウザで開くといったopenURLというメソッドも用意されているのだが、Mac OS X 10.0には組み込まれなかったようだ。このメソッドは将来的には組み込まれる予定となっている。

以上のように、MRJの機能が完全ではない部分が見られるだけに、Javaのアプリケーションをすぐに使う必要がある場合には注意が必要だと言えるだろう。また、修正の動向などにも注意を払いたい。

カテゴリ:Java


Carbonでサウンドを非同期で鳴らすためのライブラリとソースコード

サンプルコードとして掲載されている「CarbonSndPlayDB 1.1」は、以前に公開されているSndPlayDoubleBufferのCarbon対応版である。また、CarbonSndPlayDBはCarbon環境でなくても稼動できるようにしている。CarbonSndPlayDoubleBufferという関数が用意されていて、この関数を利用することで、供給したデータにもとづいたサウンドを非同期で鳴らすことができる。また、このサンプルコードは、フレームワークを作成するようにもなっているため、コードの内容を把握した上で、ライブラリとしての利用もできるだろう。サウンド処理については、やや複雑なキューのやりとりや、コマンドの設定、コールバックの定義などがあるため、Carbonでのサウンド処理を細かく行うようなアプリケーションを作成している人とっては、ソースコード自体にいろいろと学ぶ点はあると思われる。

関連リンク:CarbonSndPlayDB 1.1
カテゴリ:アップルからの開発資料, QuickTime


TIL,TIL-J》Mac OS Xのディスク関連の文書、無視してかまわないエラーなど

Tech Info LibraryおよびTech Info Library-Jで公開されているMac OS X関連の文書のうち、ディス関連のものを紹介しておこう。アドレスと要約は以下の通りだ。

◇Mac OS X 10.0: Using Disk Copy Images
http://til.info.apple.com/techinfo.nsf/artnum/n106161
Disk Copyにより、マウントしてハードディスクのように扱えるファイルを利用できる。イメージファイルのimgと、自己解凍のsmiファイルがあると解説されている。(dmgファイルについては記載がない)

◇ Mac OS X 10.0: Disk Utility Incorrectly Reports Disk Errors on Startup Volume
http://til.info.apple.com/techinfo.nsf/artnum/n106270
Disk Utilityで起動ディスクをチェックするとエラーが出るが、Mac OS XのCD-ROMで起動してチェックを行うと、エラーが出ない。このエラーは問題があるわけではないので、無視してかまわない。

◇106244:Mac OS 9.1: Installing after Mac OS X 10.0 on the Same Disk
 http://til.info.apple.com/techinfo.nsf/artnum/n106244
Mac OS X 10.0をインストールする前にMac OS 9.1をインストールするのが本来の手順となっている。逆になってしまったのなら、Mac OS 9.1のインストーラで、新規のシステムフォルダにインストールするように設定すれば、インストールは行える。

◇Mac OS X 10.0: 付属する Mac OS 9.1 CD で最新のコンピュータを起動できない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106236JC
◇Mac OS X 10.0: Included 9.1 CD Cannot Start Up Latest Computers
http://til.info.apple.com/techinfo.nsf/artnum/n106236
Mac OS X 10.0に付属するMac OS 9.1のCDは、Mac OS 9.1のリリース時のもので、2001年以降にリリースされた本体では起動できない。それらの本体では、本体付属のMac OS 9.1のCDでインストールなどの作業を行う。

カテゴリ:Knowledge Base(旧TIL), Tech Info Library-J, Mac OS X


REALbaxic 3.1のベータ版3.1b7がリリース、iDiskでも配付

開発ツールのREALbasicの次期バージョン3.1の7つ目のベータ版リリースが行われた。新しい機能としては、control+Cでデバッガにブレークすることや、メニューの機能が増えたこと、Windowsのコントロール類で矢印キー操作によるフォーカスの移動ができるようになったこと。その他、バグ修正が多数行われている。Ver.3.0でMac OS XのCarbonに対応したが、Mac OS X 10.0により最適化させるためのバージョンアップがVer.3.1であり、3.0のユーザはフリーでアップデートできる。なお、今回のベータ版は、iDiskからダウンロードできる。/Software/Mac OS X Software/What’s Newのところにある。

関連リンク:REALbaisic 3.1b7
カテゴリ:REALbasic