Macintosh Developer Online (MDOnline)


2000年10月11日発行号 - パッケージの謎…



昨日の配信でお知らせしたプレゼントの締め切りは、「2000年10月16日(土)到着分」と書きましたが、「2000年10月16日(月)到着分」に訂正します。今週の土曜日のつもりだったのですけど、後になる日付の方で訂正させていただきます。もうお分かりのように、9月のカレンダーを見てしまったのでした。申し訳ありません。それから、昨日のファイルサーバに関する記事にも訂正がありますので、そちらも御覧ください。訂正と補足でそれなりの記事になってしまいましたけど…。
今日、ジャストシステムの発表会があったのですが、質問時間に、サンケイ新聞の記者が「ダイアルアップでインターネットを使っている人がほとんどなのに、こんなにインターネット機能を追加して意味があるのか」という質問をしていました。まあ、後半は感覚的な問題としても、一般紙の人はいまだにインターネットはダイアルアップがほとんどだと思っているという方がなんだか驚きです。統計などはしっかりしらべていませんが、そこそこの企業では常時接続が当たり前ですし、家庭でもブロードバンドがだいぶん浸透してきています。「ほとんどダイアルアップ」という状態では決してないと実感しています。そうした動きを受け手のジャストシステムの方針なのですが、前提条件が折り合わないと意図は伝わらないものです。ジャストシステムは個人向けのASPも立ち上げていますし、インターネットを付加価値の大きな道具として使いはじめました。ソフト開発というフィールドでの動きとしてはしばらくは注目する必要がある会社だと思います。
(新居雅行 msyk@mdonline.jp


【小池邦人のプログラミング日記】2000/10/11<パッケージの秘密を探る>

Mac OS Xの環境について良く尋ねられる質問に「リソース・フォークはどうなるの?」というのがあります。この質問に対する答えは「まだある」が正しいのですが、以下のAppleサイトからダウンロードできる「Inside Mac OS X System Overview」(PDFファイル名はSystemOverview.pdf)を読んでみると、その将来には暗い影がちらついています。

◇Inside Mac OS X System Overview
 http://developer.apple.com/techpubs/macosx/macosx.html

そこで、リソースが大きく関わっているアプリケーションのパッケージ化について、Mac OS 9とMac OS Xの両環境で調べてみることにしました。Apple社は年々増加するアプリケーションの関連ファイル(共有ライブラリ、Plug-inファイル、ヘルプ用コンテンツ、辞書ファイル等)をすっきりまとめるために、Mac OS 9から(8.6から?)「パッケージ」という仕組みを導入しました。この仕組みは単純です。アプリケーションとそれに関連するファイルを、あるルールに従いひとつのフォルダ内にまとめ、ユーザからはひとつのアプリケーションファイルとしか見えないようにしてしまいます。つまりMac OS 9のFinderが、パッケージ化されたフォルダ表示を内蔵アプリケーションのアイコンへ切り替え、アプリケーションの起動も、それのダブルクリックにより実行してくれるわけです。技術的には、フォルダ(ディレクトリ)のDInfo構造体のfrFlags(Finder Flag)のHasBundleビットがONだとパッケージ化されたフォルダだと識別されます。当然、パッケージの仕組みがサポートされていない旧Mac OSの環境へコピーすれば、それは単なるフォルダとしか見なされません。

Mac OS 9でパッケージ化を行うには「CarbonLib 1.0.4 SDK」の「Sample Code」フォルダに含まれている「PackageTool」を利用すると簡単です。



このアプリケーションは、ダイアログへドラッグ&ドロップしたフォルダをラジオボタンの切り替えでパッケージ化することができます。



サンプルフォルダには、パッケージ化用のサンプルとして、「HTMLSample」というアプリケーション(既にパッケージかされている)も含まれていますので試してみてください。



まずは、HTMLSampleのパッケージを解除して、パッケージのフォルダ内構造がどうなっているか調べてみるのが近道です。最初の階層にアプリケーション本体のエイリアスが存在していることがわかります。これにより、アプリケーション本体はフォルダ内のどの階層に存在していてもかまわなくなります。よって、共有ファイルやPlug-inファイルのように、その保存位置がアプリケーションの階層に依存しているファイルもまとめて整理することができるわけです。



それではMac OS 9環境でパッケージ化したアプリケーションは、そのままMac OS X Public Betaでもパッケージとして認識されるのでしょうか?実験してみたところ、パッケージとしてではなく、ドキュメントとして認識されてるようなのです?(アイコンも付かない)ダブルクリックすると何故だかMac OS X付属のTextEditが起動してしまいます?



それならということで、Mac OS X上でPackageToolを起動して(このアプリはCarbon化されている)その場でパッケージ化してみると、作業自体は問題なく終了するのですが、やはりダブルクリックでは起動できません。Mac OS X Finderには、旧パッケージの取り扱いが完全にインプリメントされていない雰囲気です。よって、旧パッケージフォーマットが、そのままMac OS Xでも利用できるのかどうかの疑問は謎のまま残ってしまいました。

今度はMac OS X側でのパッケージ構造がどうなっているのかを調べてみました。Mac OS Xでは、関連ファイルをフォルダにまとめる仕組みを「バンドル」と呼び、そうしてまとめられた物を「アプリケーションパッケージ」と呼ぶようです。調べてみると、そのバンドル方法がMac OS 9とは大きく異なっています。詳しい仕組みはSystem Overviewを参照してもらうとして、なんとクリエータとタイプも別テキストファイルに持たせ、加えてバンドルの様々な情報をXMLで記載した「情報プロパティリスト」というテキストファイルも用意する必要があるようです。



Mac OS 9では、Finderの情報ダイアログで「アプリケーションパッケージ」と表示されますので、フォルダとパッケージは簡単に区別できます。しかし、Mac OS X ではそうした区別は無いようです。Mac OS XのNativeアプリケーションがパッケージ化されているかどうかを調べるのには、そのアイコンをResEditにドロップしてみます。ResEditが起動するだけで、その後に何も起こらなければ、それはフォルダ(つまりパッケージ)であると判断できます。

Mac OS Xのパッケージ構造を調べるのには、それをMac OS 9上にコピーしてきます。例えば、付属の「Internet Explorer」をMac OS 9上にコピーしてみましょう。Mac OS XパッケージはMac OS 9へ持ってくると魔法が解けてただのフォルダに戻ってしまいます(笑)。



System Overviewによると、バンドルでのリソースは個別ファイルとしてデータ・フォークに格納するように指示しています。確かにInternet Explorerの場合、Mac OS Xで利用する大サイズアイコンは個別リソースとしてデータ・フォークに格納されているようです。同様にSystem Overviewでは、ローカライズ用のリソースはリソース・フォークではなくデータ・フォークに格納するよう記載されています。(CoreFoundationにあるBundle APIとResource Managerでアクセスできるらしい)しかし、Internet ExplorerパッケージのEnglish.lproj内にあるInternet Explorer.rerc(アプリで使う大部分のリソース)は、何故だか今まで通りリソース・フォークに格納されています?



また、共有ファイルやPlug-inも指定フォルダに納められているはずですが、このパッケージではアプリケーションと同階層に集められています。なにやら、Mac OS 9とMac OS Xの和洋折衷状態となっています。



と言うわけで、Mac OS X Public Betaでは、とりあえずアプリケーションパッケージ内でもリソース・フォークに保管したリソースは利用できています。はたして、この仕様は実装途中の物であり、最終的にはSystem Overviewの内容に到達するのか?それとも、現状のMac OS 9寄りでこのまま固定されるのか?今後の展開に注目してみたいと思います。
[小池邦人/オッティモ]

関連リンク:オッティモ
カテゴリ:Mac OS 9, Mac OS X, 小池邦人のプログラミング日記


【Mac OS X Public Betaシリーズ】Mac OS Xをファイル共有サーバにはできない…わけではでない

2000年10月10日に配信した【Mac OS X Public Betaシリーズ】「Mac OS Xをファイル共有サーバにはできない?」に関して読者の方より、複数のアカウントより参照できる共有フォルダを作ることが可能であることを教えていただいた。ほとんどできないようなことを書いてしまったが、その点については筆者の調査不足でありおわびしたい。

さて、自分のアカウントでログインしたとき、自分のホームフォルダをマウントできると同時に、他人のアカウントの名前のボリュームが見えている。そのボリュームは他人のアカウントのホームフォルダにあるPublicフォルダの中身である。そこには最初から、Drop Boxという名前のフォルダが作られている。他人の名前のアカウントのボリュームをマウントすると、そのDrop Boxは書き込みのみのアクセス権で利用することになり、ファイルをドラッグ&ドロップして送信するだけの利用になる。
ここで、ホームフォルダ内のPublicフォルダ内にフォルダを作る。そして、そのフォルダのアクセス権を変更することで、誰でも書き込みや読み取りが可能なフォルダは作成できるのである。
具体的に説明するために、Adminでない一般ユーザ、all、dog、catという3つのアカウントが作られているとする。allは「誰でも」というつもりだ。Mac OS Xにallでログインし、自分のホームフォルダ内のPublicフォルダをFinderで見える状態にする。そして、FileメニューからNew Folder(Command+Shift+N)を選択して、Public内に新しいフォルダを作成する。そして名前をたとえば、Sharing Filesなどと適当につける。そして、Sharing Filesフォルダを選択した状態で、Inspectorを呼び出す。FileメニューのShow Inspector(Command+I)を選択すればよい。そして、新しく作ったフォルダの情報を表示するインスペクタのウインドウが表示されるので、ShowのポップアップメニューからSharingをを選択する。ここで、所有者やグループ、全員に対するアクセス権が設定することができる。このあたりの操作体系は、Mac OS 9と共通するものがある。ここで、staffというグループがあるが、これはアカウントすべてが所属するグループになっている模様だ。グループのアクセス権を右側のボタンから、Read & Writeを選択する。選択するだけで設定がされ、OKボタンなどを押す必要がない。
こうして、dogやcatのアカウントで、allという名前のボリュームをマウントする。そうすると、書き込みのみのDrop Boxフォルダだけでなく、Sharing Filesという名前の読み書き可能なフォルダが登場する。ここに、たとえばファイルメーカーProのデータベースファイルを置いておけば、みんながダブルクリックして利用できるという次第である。
ところで、Drop Boxフォルダのアクセス件をインスペクタで見て気が付いたのであるが、そのアカウントに対してだけに読み書きが設定されており、他のグループや全員に対してはアクセス権が設定されていない。全員に対して書き込みのみが設定されていて然りだと思うのだが…。なお、Terminalでファイルのアクセス権を見た時には、グループと全員に対して、書き込みは許可、読み込みは不許可の設定がなされていることが確認できた。あえて、インスペクタではそうした情報が見えないようにしているのだろうか。

ちなみに、その意味でいえば、ホームフォルダの内のPublicフォルダのアクセス権をstaffグループに対して読み書き可能にするという手もある。それだと、Drop Boxフォルダも間違えて消してしまう可能性もあるので、Public内にフォルダを作るのがいろいろな意味で安全だろう。
さらに、staffグループは全員に対するものなので、Everyoneに対して設定をしてしまえばいいではないかと思うかも知れない。昨日の記事では紹介しなかったが、Mac OS XのAppleShareサーバにはゲストでアクセスが可能となっている。ゲストのアカウントは、Multiple Usersなどで登録などをしなくても、最初から作られている。ただ、AppleShareに関してはパスワードなしで利用できるゲストをアカウントというのは適切ではないかも知れない。ゲストについては、ホームフォルダは持っていない。ゲストでログオンすれば、アカウント名のボリュームをマウントでき、各アカウントのホームフォルダ内にあるPublicフォルダ以下をマウントできる。その意味では他人の名前のボリュームをマウントするのと同じである。このとき、アカウントとして登録されたユーザとゲストを区別するということが可能である。ゲストはstaffグループに所属していないので、ゲストには書き込みを許さないということであれば、staffグループに読み書きの権限を設定すればいいのである。一方、ゲストにも書き込み許可をしたいのなら、さきほどのインスペクタの設定で、Everyoneつまり全員に対して書き込み可能にすればいいわけだ。なお、ゲストのアクセスを許可しないという設定もおそらくシステム的には可能とは思われるが、設定項目は見当たらない。(実は、NetInfoの設定に、ゲストアクセスの可否、さらにはAppleTalkを使うかどうかを示すようなエントリがある。いずれ試すことができれば、これの結果もお知らせしたいがそれを除くと設定方法は見当たらないのである。)Public以下にファイルを置くと、最低限でもゲストで読み取りということができてしまうため、その意味ではセキュリティ的には甘くなることは認識しておいた方がいいだろう。なお、ゲストは、Drop Boxに対しては書き込みができる。
なお、ここでグループの設定がしっかりできれば、いろいろとアクセス権が設定できて、ファイルサーバとしてもしっかり運用できると思うところだ。グループは、NetInfoで管理されており、/Applications/Utilities/NetInfoManagerというアプリケーションでgroupsのノードに設定されている。だが、このアプリケーションでグループを作って書き換えるということでうまく動く保証がない。どういった設定をすべきかということがAppleから情報として出されるのを待つか、あるいは誰かが完全に解析するのを待つ必要があるだろう。たとえば、staffアカウントの登録ユーザはなぜかrootだけになっている。であるが、Adminでないユーザでログオンしたときも、staffに対して書き込み権限を与えたフォルダは書き込み可能となっているのである。このあたりは分からないことで理由の説明が申し訳ないができないところだ。しかしながら、上記の方法でアカウントの全員が読み書きできるフォルダをマウントすることができるというわけだ。

セキュリティについて補足したい。AppleShare IPは、TCP/IPで利用できるファイルサーバであり、不特定多数からのアクセスは否定できないのではないか(ネットワーク外部からの接続は確認していないが…)。そして、ゲストアクセスで、書き込みが可能であるというのはやや不安でもある。単純なところでは関係のないファイルをばんばん書いて、ハードディスクの容量を圧迫させる悪戯も可能だと思われる。アクセスできるIPの制限などは簡単にはできない模様なので、ファイル共有の機能を使う場合、ファイアウォール内でのみ運用するなどの配慮は必要になるだろう。

カテゴリ:


QuickTime 5がリリース、Playerはスキンに対応

QuickTimeの次期バージョン、QuickTime 5のプレビュー版がリリースされ、Mac OSで利用できる英語版がダウンロード可能となっている。正式なリリースは2001としている。QuickTime 5の機能はいくつかあるが、開発寄りの話を先に持ってくると、ユーザインタフェースのカスタマイズができることがまず挙げられる。MP3プレイヤでは当たり前となっている「スキン」の機能が、QuickTime Playerに組み込まれた。また、リアルタイムでのビデオ編集にも対応し、リアルタイム系の画像処理をFinal Cut Proでも実現できるようになる。ハイエンド向けの製品はすでにアナウンスされているが、レンダリングしながら画像再生といったことも、将来的には一般的になると考えられる。Sorenson Video 3に対応した。また全方向のVRムービにも対応するなど、機能的にはかなり高度化している。
新しいQuickTime TV Channelなどユーザにとってすぐに得られるメリットもある。また、QuickTime Streaming Server 3.0との組み合わせで、ストリームデータが途切れた場合でも元に復帰するといった機能も利用できる。デベロッパが新しい機能を有効に使った製品を出すまでには時間がかかるだろうが、プレビューリリースというやり方は、ある意味ではこうしたデベロッパ対応を促進する結果になるかもしれない。

関連リンク:QuickTime 5 Public Preview
カテゴリ:QuickTime


QuickTimeのストリーミングサーバがVer.3へ、Web管理ツールが追加

QuickTime Streaming ServerのVer.3がリリースされた。プレビュー版としてリリースされており、同時にDarwin Streaming Server 3もリリースされた。Mac OS Xで稼動するのがQTSS、それら以外のUNIX系OSで稼動するものをDSTとしている。DSTはFreeBSD 3.5、Red Hat Linux 6.2(5.2でも稼動する)、Solaris 7、Windows NT Server/Windows 2000 Serverが対応機種となっており、ソースコードも入手できる。なお、QTSSの対応OSは、Mac OS X Public Betaとの記述しかなく、Mac OS X Server 1.2については対応OSリストには見当たらない。
QTSS/DTS 3はスキッププロテクションとして、QuickTime 5のクライアントの組み合わせで通信状態によるデータ落ちに対する対処がなされるといった機能が組み込まれている。また、通信効率も高くなるように改良された。さらに、Webベースの管理ツールが添付され、利用がよりやりやすくなった。インストール方法などは、ReadMe文書でも参照できる。

◇Darwin Streaming Server
 http://www.publicsource.apple.com/projects/streaming/

◇QuickTime Streaming Server 3 Public Preview
 http://www.apple.com/quicktime/preview/qtss.html

◇QuickTime Streaming Server 3 Public Preview: Read Me
 http://til.info.apple.com/techinfo.nsf/artnum/n31260

◇QuickTime Streaming Server 3 Preview(ダウンロード)
 http://asu.info.apple.com/swupdates.nsf/artnum/n11851

カテゴリ:サーバー製品, QuickTime


ATOK14が2001年2月にリリース予定、インターネットでユーザ辞書を共有

ジャストシステムは、一太郎11、花子11、ATOK14の発売に関する発表を行った。いずれも2001年2月に発売とかなり先に発売されるものながら、同社の主力製品であるだけに動向としては注目できる。
まず、Mac OS版のあるATOKであるが、当日の発表資料には含まれていないものの、Mac OS版ATOK14も2001年2月下旬に発売することが発表会では明らかにされた。従来に比べ、変換効率をさらに高めた。「チョーイケてる」などの口語の変換や、専門辞書を用いて「東証マザース」「ベルファーレ」などの変換ができることがデモされた。また、ATOK Directとして、キーワードからWebサイトを呼び出す機能や、ATOK Libraryとしてインターネットを経由した辞書参照が紹介された。また、ATOK Syncとして、ユーザ辞書や設定の内容をインターネットで保存し、異なるパソコンでも自分自身のかな漢字変換環境を再現するといったコンセプトの機能も紹介された。ただし、最初はユーザ辞書の共有ということだけを目標にし、各種の設定については試行しながらの対応となる予定だ。この手法は個人のユーザ辞書をサーバに置くという見方だけでなく、複数のユーザでユーザ辞書を共有するという使い方にもつながる。インターネットベースでの情報共有を核にした、かな漢字変換の環境をより高めるという方向性でのバージョンアップと言えるだろう。なお、Mac OS X版については「開発中」ということも話された。
一太郎、花子については残念ながらMac版はない。いろいろと機能アップしたが、1つの大きな特徴は、それぞれのソフトを購入したユーザに、インターネットでのファイル保存領域を50MB提供するというところだ。両方のソフトを購入すると100MBの領域が追加料金なしに使える。FTPベースでの利用となるが、一太郎や花子ではインターネット上の自分の領域からの呼び出しや保存は手軽にできるように考慮されている。将来的にはHTTPベースにするということだが、おそらくはWebDAVを使うことになるだろう。現在、一太郎のテンプレートはインターネット上に5100種類も用意されている。アプリケーションもインターネットを軸に付加価値を高めるという方向性も持っているというわけだ。

関連リンク:ジャストシステム:ニュースリリース
カテゴリ:アプリケーション, 各種プロダクツ