Macintosh Developer Online (MDOnline)


2002年2月21日発行号 - MoreFilesX



Mac OS Xのニュースを毎日更新していた「Mac OS X News」が更新を停止するそうです。お疲れ様でした。Mac OS Xのニュースがあちらこちらで出てくるようになったからということですが、確かにMac OS Xだからという特殊事情は現状ではもう突出した話題にはなっていないかもしれません。Mac OS Xの世界もスパイラルしはじめているというところでしょうね。Mac OS Xの登場を機会にいくつかサイトが登場し、フリーソフトのサイトもいくつかありますが、一方で既存のサイトについてもXへのシフトはかなり進んできています。Xの登場をとらえて…という段階ではすでにないということでしょうね。iMacの出荷はMac OS Xに対するある意味では大きな転換ポイントになると思います。もちろん、正確には、Mac OS Xが最初に立ち上がるようになるというのが転換の大きな要因ですが、象徴的な意味でユニークなデザインの新型iMacの登場と言えるでしょう。もはや、Mac OS Xであれば目立つとかそれでいいという状況ではありません。ソフト開発という場面でも、やはりX対応は当たり前であり、さらにきちんと動くと言うところが求められているというのはもはやそのうちということではなく、現状のレベルになっていると思うべきでしょう。
(新居雅行 msyk@mdonline.jp


ファイル関連処理のライブラリ集がMoreFilesXとしてHFS Plus API対応

サンプルコードとして「MoreFilesX 1.0」が公開されている。Mac OS向けには、MoreFilesとして、ファイル処理関連の便利な関数ライブラリ集があったが、それの次世代版である。ただし、Mac OS 9向けにも利用できるようになっているが、やはり主ターゲットはMac OS Xである。Mac OS 9で導入されたHFS Plus APIを利用したファイル処理のための関数が用意されている。プログラムソースの一部を自分の作っているソースにコピー&ペースとしたり、あるいはソースファイルごとプロジェクトに組み込んで使えば良いだろう。C言語で記述されているため、CarbonあるいはCocoaでのプログラムに利用することができる。なお、Carbonのヘッダを参照するためには、ソースの冒頭の一か所を変更する。Mac OS 9でのビルドでは、他にいくつかの変更が必要となっている。FSRefでのファイル参照を行うのがHFS Plus APIの特徴であるが、FSSpecとの相互変換や、FSSpecベースの情報からのパスの取得、FSRefからFinder情報の取得など、File Managerではいくつかのステップを踏まなければならない処理を、MoreFilesXを使えば関数呼び出し1つで行える。ファイル処理でFile Managerにない処理を行いたい場合は、まずはMoreFilesXを探してみるということになるだろう。なお、各関数の使い方は、ヘッダファイルにコメントとして詳しく記載されている。

関連リンク:MoreFilesX 1.0
カテゴリ:アップルからの開発資料, Mac OS X


今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(19)パッケージ情報とアバウトの国際化

   この記事のPDFファイル(657KB)は以下のアドレスにあります。
   ダウンロードには、MDOnlineのアカウントが必要です。
   pdfs/MDOnline020013.pdf
 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
nibファイルを言語ごとに用意することや、あるいは文字列の置き換えテーブルを使って、言語ごとに異なる文字列メッセージを出すといったことはすでに説明した。国際化関連の作業の残りとして、パッケージ情報の国際化や、あるいはアバウト画面の国際化についても作業をしておこう。

――――パッケージ情報の国際化
アプリケーションパッケージには、Contents/Info.plistに、プロパティリスト形式、つまりXML形式で保存された情報があり、システムはここに設定された内容を調べて、さまざまな動作に反映させるようになっている。このInfo.plistファイルで定義されたものを「パッケージ情報」として総称するが、基本は、ターゲットの編集の画面にある「アプリケーション設定」のタブで設定する。ここではテキストフィールドなどに文字を入れるなどすれば設定ができるが、場合によっては、「詳細表示」にして、階層構造リスト形式で表示すれば、Info.plistとして作られる結果そのものの編集も可能となる。
この、Info.plistによる情報自体を、国際化することができる。つまり、結果的にはパッケージ情報を言語ごとに用意できるということである。そのためには、言語とのリソースとして、InfoPlist.stringsというファイルを用意し、そこに言語に特有の情報を記載する。
プロジェクトには最初からResourcesグループに、InfoPlist.stringsが存在している。この項目を選択して、「プロジェクト」メニューの「情報を表示」(Command+I)を選択し、情報パレットを表示する。ここで「地域情報とプラットフォーム」のポップアップメニューから「異なる地域情報を追加」を選択する。そして、表示されるシートで、追加する言語としてJapaneseを選択すれば良い。つまり、nibファイルの日本語向けのものを用意するのと同じ手順でかまわないということである。

◇InfoPlist.stringsに新たな地域を追加する
 

◇日本語を追加する
 

以上の作業で、InfoPlist.stringsの下位項目がEnglishだけだったのが、Japaneseも増えた。Englishは最初から用意されているが、とりあえずは同じ内容のJapaneseという項目も作られている。これらは、nibファイルと同様で、それぞれEnglish.lprojフォルダのInfoPlist.stringsと、Japanese.lprojフォルダのInfoPlist.stringsファイルとなっている。つまり、Project Builderで見えている階層と、フォルダ階層は逆になっている。

◇英語に対応したInfoPlist.stringsファイル
 

このInfoPlist.stringsファイルでは、Info.plistファイルのXMLタグで言えば〈key〉〜〈/key〉で指定するキーを左に書いて、イコールで結び、その右側に、キーの値を文字列として記述するというのが1つの形態として取りうることができる。たとえば、CFBundleNameというキーに対する値はMOSAEditorという文字列だが、とりあえずはこのキーに対する情報は、Info.plistには含まれていない。したがって、英語のときには、システムはEnglish.lprojのInfoPlist.sringsファイルを参照して、このキーに対する値を取り出す。
一方、日本語に対応したInfoPlist.stringsファイルを次のように書き換えてみた。あまりにベタなカタカナが続くが、どこが変化するかを分かりやすくするために、わざとこうしてみた。CFBunldeNameというキーに対する値は「モサエディタ」としている。

◇日本語のInfoPlist.stringsファイルを編集した
 

日本語のInfoPlist.stringsファイルには、イコールの左右に文字列を記載している行を追加している。これは、プロジェクトの設定にある「アプリケーション設定」で「書類の情報」として設定した文字列を思い出してほしい。そこでは、拡張子とファイルの種類の対応を指定したが、拡張子meditに対して「MOSAEditor Document」という名前を指定した。この定義は、Info.plistファイルに作られている。Productsグループの下にあるアプリケーションのパッケージを開いていってみれば分かるはずだ。Info.plistファイルで定義した内容の置き換えを、InfoPlist.stringsファイルで定義できるのである。つまり、言語が英語の場合はInfoPlist.stringsに特に設定はない。だから、拡張子meditに対する文書の種類を示す名前はMOSAEditor Documentである。だが、このように記述すると、日本語環境では拡張子meditに対する文書の種類名は「MOSAEditor書類」となる。ただし、プログラム中は、言語に関わらず「MOSAEditor Document」で参照できる。
実際にアプリケーションを起動してみよう。アプリケーションメニューの項目は、CFBundleNameで指定したカタカナの名前が見えているが、メニュー項目はたぶん、MOSAEditorのままだろう。これは、メニュー項目自体はnibファイルを修正しないといけないのである。そして、ファイルを保存するとき、ファイルフォーマットのポップアップメニューを見ると、文書の種類はInfoPlist.stringsで指定した文字列になっている。

◇文書の種類を示す文字列が日本語化されている
 

以前に説明したLocalizable.stringsファイルで指定するような文字列の置き換えをInfoPlist.stringsファイルで指定するとともに、XMLファイルのキーに対する値も、ちょうどJavaのプロパティファイルの形式のような記述で付け加えることができるというわけである。

――――アバウト画面の国際化
Cocoaでは、Credits.rtfという名前でリッチテキストフォーマットのファイルを用意しておくことで、アプリケーションメニューの「○○について」を選択したときに、そのリッチテキストの内容などを持つアバウト表示ウインドウを自動的に表示する。もちろん、自分でアバウトのウインドウを凝りに凝って作ってもいいのだが、簡単な手段が用意されているので、とりあえずは手軽なところから対処しておくのがいいだろう。このCredit.rtfについても、nibファイルやInfoPlist.stringsファイルと同じように国際化ができる。これまでに説明してきたのと同じように、日本語のCredits.rtfを用意する。もちろん、Japanase.lprojというフォルダにCredits.rtfという名前でファイルは保存される。

◇日本語のCredits.rtfを編集した
 

こうして作成されたCredits.rtfに日本語を入力するなど自由に編集してよい。もちろん、ワープロなどを使っても良いが、Project Builderでもスタイル付きでのテキスト編集が可能だ。左側で、Credits.rtfのJapaneseの項目を選択し、右側で編集作業を行なえばよい。つまり、ソースと同じということである。このとき、「形式」メニューの「フォント」や「カラーパネルを表示」を選択して、カラーパネルやフォントパネルを出しておいて、色や文字書式の設定ができる。
実際にアプリケーションを起動して、「MOSAEditorについて」を選択すると、次のようなアバウト画面が出てくる。ウインドウサイズは変更できないのであるが、これ以上凝った形式にしたいのなら、やはり自分でウインドウを定義しないといけないだろう。

◇日本語環境で表示させたアバウト画面
 

ここで中心のスクロール部分には、Credits.rtfで作成した文書がそのまま見えているのが分かる。また、トップの画像は、アプリケーションのアイコンが見えている。そして、CFBundleNameで指定した名前、CFBundleShortVersionStringで指定したバージョン名が見えている。ここで(v0.2)と見えているのは、「アプリケーション設定」のタブで設定するバージョン番号で、キーはCFBundleVersionとしてInfo.plistファイルに定義されている情報だ。ウインドウの下部には、NSHumanReadableCopyrightで指定したコピーライト表示が見えている。

∽∽∽∽∽∽∽この項、以上∽∽∽∽∽∽∽[新居雅行]∽∽∽∽∽∽∽

カテゴリ:ユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング


KBase》Mac OS X 10.1.3の変更点が詳しく記載された文書

Knowledge Baseに、Mac OS X 10.1.3のアップデートポイントが掲載されている。対応が拡大されたCD-RWドライブやデジカメについての具体的な機種名が書かれているなど、アップデート時に示される変更点よりも詳しい内容となっている。
また、他の文書では、起動時に時計が勝手に1969年など古い日付になってしまう点が解消されたことや、PRAMリセットしないとコンピュータのシリアル番号がApple System Profilerで確認できない点の修正がされたことも公開されている。

関連リンク:Mac OS X Update 10.1.3: Enhancements and "Before You Install" Information
カテゴリ:Knowledge Base(旧TIL), Mac OS X


KBase》Open Firmwareでディスクのイジェクトを行う方法

CDやDVDを抜き取る方法はさまざまな方法があるが、何をやっても駄目な場合には、Open Firmwareの機能を使ってディスクのイジェクトを行う方法があることが紹介されている。起動時に、Command+option+O+Fのキーを押し続けると、Open Firmwareでのコマンド入力の状態になる。そこで「eject cd」とコマンドの入力を行えば良い。その後に、「mac-boot」というコマンドを入れればシステムが起動する。

関連リンク:Macintosh: How to Eject a Disc When Other Options Do Not Work
カテゴリ:Knowledge Base(旧TIL), 周辺機器


Universal Interfaces 3.4.1が正式にリリース

Mac OS 9やMac OS XでCFMベースのCarbon対応アプリケーションを作成するときに必要になるヘッダ等を含む「Universal Interfaces 3.4.1」が正式にリリースされている。Mac OS 9、QuickTime 5、そしてCarbonLib 1.5といったバージョンでの開発では、ヘッダやライブラリとして、3.4.1を利用することになる。ただし、2001年後半にすでにβ版がリリースされており、それを使っている開発者もいるだろう。

関連リンク:Universal Interfaces 3.4.1
カテゴリ:開発情報, Carbon/CF