34911 visitors

Cocoa GUI App

No 0  改訂履歴
No 1  はじめに
No 2  プロジェクト作成
No 3  モデル
No 4  ビュー 1
No 5  ビュー 2
No 6  ビュー 3
No 7  コントローラー
No 8  接続とビルド
No 9  一覧表示の追加
No 10  各種設定
No 11  アイコンの設定
No 12  日本語化


このサイトについて
contact me
home

Programming
C 言語
learn C
Objective-C 2.0 言語
learn ObjC
Objective-C 2.0 言語 簡易版
learn ObjC  Lite
Cocoa GUI アプリケーション
Cocoa GUI App
メモリ管理検証  new
Memory Management Test

Other
参考図書・グッズ
Favorites
ソフトウエア
Software  soon

Legacy
古い記事
Objective-C Primer


Info.plist ファイル

 プロジェクトウィンドウの中に Info.plist というファイルがあります。このファイルによってアプリケーションのさまざまな設定がされています。今回はこのファイルを使ってアプリケーションのバージョン番号や著作権表示などの設定を行います。内容的にはかなり地味なものになります。

 Info.plist をダブルクリックすると Property List Editor というアプリケーションで Info.plist が開きます

 上の図は Xcode 3.1 でバージョンアップされた Property List Editor 3.1 の画面です。まだ Xcode 3.0 のままの方もおられると思いますので今回は Info.plist をテキストエディタで開いて編集することにいたします。プロジェクトウィンドウから Info.plist をテキストエディタ・アイコンまでドラッグ&ドロップしてください。なお Property List Editor は 3.0 も 3.1 もその使い方は結構簡単です。次回、自作のアプリケーションを設定される時には Property List Editor を使われることをお勧めします。


 plist ファイルは上記のように XML 形式になっています。一番上位に plist という階層がありその直下に dict という Dictionary を意味する階層があります。そしてその下に key と string のペア (エントリ)が続きます。ここでは設定すべき key と string のペアを順不同で説明していきます。



主要なキーの説明と設定

CFBundleIdentifier
 上の図では4番目のキーになります。マックではアプリケーションは単体のアイコンのように見えますが、実際には「.app」という拡張子のついたフォルダになっています。そしてそのフォルダの中に実行ファイルや各リソースが入っています。このフォルダのことをアプリケーションバンドルもしくは単にバンドルと呼びます。このバンドルという呼び方はプログラミングでの共通用語ではありません。アップルがそういう呼び方にしたというだけのことです。CFBundolIdentifier キーではそのバンドルの識別子を string つまり文字列で指定します。この識別子によって各プリケーションは識別され、例えば Dock で希望のアイコンをクリックすれば希望のアプリケーションが起動することになります。識別子には逆ドメイン方式が使われることがマックでは一般的です。逆ドメイン方式とは例えばアップル製アプリケーションの場合にはまずアップルのドメインを逆から始めたものが先頭に付きます (例 : com.apple ) 。この部分にはドットで区切られた2つ以上のドメイン (文字列) が必要です。そしてドットで区切ってアプリケーション名が続きます (例 : com.apple.Application 名 ) 。このような形で識別子を決めていくとそのドメインを所有しているグループもしくは会社が自社のアプリケーション名だけを重複しないようにしっかりと管理すれば世界中で同じ識別子が存在する可能性はなくなります。
 デフォルトでは key に続く string の中で com.yourCompany.Introducer となっています。ここでは逆ドメイン方式に従って jp.vivacocoa.Introducer と書き換えます。このキーの書き換えによってユーザーの目に触れるところでの変更は何も起こりません。またこのバンドル識別子のことを applecation-identifier とも呼びます。

CFBundleVersion
 デフォルトの Info.plist の中では9番目の key になります。build-version-number とも呼ばれます。デフォルトでは string の中が 1.0 になっていますが 1個の整数値かあるいは2個以上の整数値をドットで区切ったものであれば良いことになっています。そしてこの番号がそのアプリケーションの正式のバージョン番号になります。多くの場合は 1 個の 3 桁の数値 (例えば 100 など) が使われる事が多いみたいです。1桁目はメンテナンスによって数値を1つ上げます。この Cocoa GUI App でも最初にダウンロードして頂いた Introducer のバージョン番号は 101 でした。最初に作ってから内部のコードを少し変更してから皆様に配布いたしました。アプリケーションの見た目や動作にはまったく変わりはなかったので単なるメンテナンスバージョンアップということで 100 から 101 にいたしました。今回皆様と一緒に作った Introducer では実はさらに内部コードを少し変更しています。本来であれば 102 というバージョン番号が付くところでしたが、「一覧表示」という機能を追加しました。これは明らかにユーザーの目から見ても分かるバージョンアップです。従って 110 という番号にしたいと思います。string の中を 1.0 から 110 に書き換えて保存してください。
 このようにユーザーからも分かる変更で小さいものはマイナーバージョンアップとして 2桁目の数値を1つ上げます。大幅な機能アップやユーザーインターフェースの刷新などがあった場合はメージャーバージョンアップとして 3桁目の数値を 1つ上げます。ではプロジェクトファイルをビルドして実行してみてください。そしてメニューバーの「Introducer」メニューから「About Introducer」を選んで下さい。アバウトボックスのバージョン番号が次にように変わっていると思います。

beforeafter

 このバージョン番号が具体的に必要とされる場面としてはある書類があるアプリケーションと関連づけられていたとします。要するにあるアプリケーションによって作成された書類だとします。通常その書類をダブルクリックするとそれを作成したアプリケーションが起動して書類が開きます。この場合バージョンの違う同じアプリケーションがマックの中にあったとすればバージョン番号の数値が一番の大きいアプリケーションが起動して書類が開くようになっています。
 バージョン番号は最初に言ったように1つの整数 (例えば 100) もしくはドットで区切られた複数の整数 (例えば 1.0.0) でも良いのですが次からのバージョン番号ではこの最初に採用した番号表記に従っていかなければなりません。つまり 100 の場合は次のバージョンは 101 となりますし、1.0.0 の場合は次のバージョンは 1.0.1 という表記にしなければなりません。

CFBundleShortVersionString
 さきほどの CFBundleVersion (build-version-number) はアバウトウィンドウには表示されますが情報パネルなどには表示されません。情報パネルなどにバージョン番号を表示させたい場合にはこの CFBundleShortVersionString キーを使います。この key はデフォルトの Info.plist には含まれていません。さきほどの CFBundleVersion の key と string のペアの次に下記の key と string のペアを追加して保存してください。
<key>CFBundleShortVersionString</key>
<string>1.1.0</string>
 上記のコードには HTML 用の特殊文字が含まれています。コピーで使わないでください。
通常情報パネルなどに表示させるバージョン番号は上記のように3つの数字をドットで区切ったものにします。このキーで設定した数値は情報ウィンドウなどに表示されることだけが目的でその他に機能的な役割を果たすことはありません。今回は分かりやすくするために CFBundleVersion キーの次に CFBundleShortVersionString キーを設定しましたが各キーに順序はありません。各キーをどのような順序で記述してもその結果にはまったく関係ありません。
 Xcode の「ビルド」メニューから「すべてのターゲットをクリーニング」を選び既存の実行ファイルを削除します。その後再度プロジェクトファイルをビルドして実行してください。まずアバウトウィンドウのバージョン表示も Version 1.1.0 (110) と変わったことを確認してください。Introducer はこの時点で終了して頂いて結構です。次に下記の手順で実行ファイル (アプリケーション本体) までたどりつきます。
 Introducer フォルダを開く → Build フォルダを開く → Release フォルダを開く、そしてその中の Introducer (これがアプリケーション本体になります) を右クリック (もしくは control + 左クリック) でコンテキストメニューを表示させます。その中から「情報を見る」を選択します。次のように表示されることだろうと思います。

beforeafter

NSHumanReadableCopyright
 著作権を表示するためのキーです。 copyright-text とも呼ばれます。現在の Info.plist ファイルの key と string のペアの最後に (そして </dict> の前に) 次の key と string を追加します。© は option + G で入力できます。
<key>NSHumanReadableCopyright</key>
<string>© viva Cocoa, 2008</string>
 上記のコードには HTML 用の特殊文字が含まれています。コピーで使わないでください。
再度クリーニングをしてからビルドして実行します。アプリケーションが起動したらアバウトウィンドウを表示してみましょう。しかし著作権表示のところが © __MyCompanyName__, 2008 になっていると思います。

 ここからは話しが少しややこしくなります。ゆっくり進んでください。
プロジェクトウィンドウの中に Info.plist の次に InfoPlist.strings (English) というファイルがあります。
 このファイルはアプリケーションが英語版として起動している場合に Info.plist の設定のいくつかを英語用に上書きして変更するファイルです。そして現在 Intorducer は英語版として起動しています。この InfoPlist.strings (English) をテキストエディットのアイコンまでドラッグ&ドロップして開きます。



 NSHumanReadableCopyright が © __MyCompanyName__, 2008 という文字列で上書きされています。 この一行を削除します。削除にあたってはこの文字列の先頭から最後までだけを削除します。ファイル全体としては先頭に1行の文字列があってその後に空行が2行ある形を保持したまま保存します。そしてクリーニング→ビルド→実行を繰り返します。もしビルドが成功しているにも関わらずアプリケーションが起動しない場合は option + command +esc で Xcode を強制終了してください (強制終了するのは Introducer ではなくて Xcode のほうです) そしてもう一度 InfoPlist.strings (English) を見直してください。
 この方法はかなりイレギュラーな方法だと思います。どうしてもうまくいかない場合は InfoPlist.strings (English) ファイルでも NSHumanReadableCopyright = "© viva Cocoa, 2008"; と Info.plist と同じ文字列で上書きすることにしてください。
 ただし上記の削除する方法のほうが理にかなっており、その方法でビルドした場合にアプリケーションが起動しない状態に陥ることに個人的に苛立ちを覚えるだけです :-)。どちらの方法を採用したにせよアバウトウィンドウは次のように表示されうようになると思います。

beforeafter

 なおこの InfoPlist.strings (English) ファイルは逆の使い方もできます
例えばもし私が会社として viva Cocoa をやっているのであれば Info.plist には NSHumanReadableCopyright キーは記述せずに InfoPlist.strings (English) に NSHumanReadableCopyright = "© viva Cocoa corporation, 2008"; と記述します。そして次回で日本語版を作った時に新しく増えることになるであろう InfoPlist.strings (Japanese) の中で NSHumanReadableCopyright = "© viva Cocoa 株式会社, 2008"; と記述すれば良いわけです。しかし実際には viva Cocoa は株式会社ではなく英語版であれ日本語版であれ著作権表示は © viva Cocoa, 2008 で十分です。なので今回は最初の方法を使うことにいたしました。

CFBundleName
 application name とも呼ばれます。現在の Info.plist では6番目の key が CFBundleName になっていると思います。string には ${PRODUCT_NAME} という定数が指定されています。この定数の中にはプロジェクト名が入っています。そしてプロジェクト名が現在のアプリケーション名になります。今回はこれを InfoPlist.strings (English) で上書きしてアプリケーション名を変更してみましょう。
 InfoPlist.strings (English) の3行目を次のように記述し保存します。

CFBundleName="Introducer 1.1";

クリーニング→ビルド→実行を繰り返します。無事アプリケーションが起動するとメニュバーとアバウトウィンドウはそれぞれ次のようになります。


 Info.plist と InfoPlist.strings (English) は最終的にはそぞれ次のようになっています。

Info.plist

InfoPlist.strings (English)

 なお Info.plist をプロジェクトウィンドウ内でダブルクリックした場合は次のように Property List Editor で Info.plist ファイルが開きます。
 Info.plistファイルの編集を始めた時の Items 数は11でしたが現在は 13 Items になっています。そして Value に値の入っていない key は Icon file のみです。つまりアイコンの設定はまだ出来ていないということです。
 また InfoPlist.strings (English) をダブルクリックした場合も Property List Editor でファイルが開きます。しかしやはりこのファイルの変更を行うと「ビルドは出来ててもアプリケーションは起動しない」という例の症状は起こるみたいです。その場合は慌てずに option + command + esc で「Xcode」を強制終了してから再びプロジェクトファイルを立ち上げてクリーニング→ビルド→実行を繰り返してください。またこの InfoPlist.strings (English) を Propaerty List Editor で編集した場合は文字化けを起こすなどの修復不可能な状態にまで陥る時があるみたいです。どうもこのデフォルトで用意された InfoPlist.strings (English) ファイルはかなり繊細にできているみたいです。一部ドキュメントによると「このファイルは取りあえず一旦削除すること」となっているものもあるみたいです。Info.plist を Property List Editor で編集するのはまったく問題ありませんし使い方も使えばすぐに分かると思いますが InfoPlist.strings (English) ファイルを Property List Editor で編集するのは取りあえずやめておいたほうが良いみたいです。

 以上のように「InfoPlist.strings (English) ファイルを一旦削除したほうが良いかもしれません」となると「その後は一体どうなるの?」という疑問が生まれてくると思います。必要になればまた新たに作ります。作成方法は後の回のローカライズ (日本語化) で説明いたします。結局のところ InfoPlist.strings (English) ファイルも単なる英語用のローカライズファイルにすぎません。Xcode でプロジェクトを作成した時にデフォルトで英語用ローカライズファイルが用意されているというだけの話しです。なお削除する場合はプロジェクトファルダからいきなりゴミ箱に入れるのではなくプロジェクトウィンドウで InfoPlist.strings (English) を右クリックして「削除」を選んでください。ゴミ箱にいきなり放り込むとそれはそれでコンパイル時にエラーがでます。なおこの Cocoa GUI App では InfoPlist.strings (English) で設定した CFBundleName の Introducer 1.1 という名称は最終的には使いません。従って InfoPlist.strings (English) で英語用にローカライズする項目は何もなくなります。結局のところこの Introducer というサンプルアプリケーションでは InfoPlist.strings (English) は不要 (置いておても良いけど意味はなさない) ということになります。



target 情報 ウィドウからの設定

 ここまでは Info.plist を一般のテキストエディタや Property List Editor で編集する方法を書いてきました。しかし一部の値はもっと簡単に編集する方法があります。プロジェクトウィンドウで「ターゲット」ペインを開き「Introducer」ターゲットを選択して右クリックで現れるコンテキストメニューから「情報を見る」を選びます。
 次に現れる「target "Introducer" の情報」ウィンドウで「プロパティ」タブを選びます
 このウィンドウでも識別子、アイコンファイル、バージョンなどの主要な項目が設定できるようになっています。このウィンドウで設定した値はすぐに Info.plist に反映されます。また Info.plist で変更を行えばこのウィンドウのそれぞれの値もすぐに変更されます。




 お疲れさまでした。Cocoa GUI App 第10回はこれで終ります。
次回はいよいよアイコンの設定をしたいと思います。現在の Introducer のアイコンは将来私自身が使う可能性がありますので次回はもっと簡単なものを作っておこうと思います。またアイコンの画像は当然のことながら皆さんのお好みで作れます。透明部分の保持できる tiff や png 形式で縦横がそれぞれ512ピクセルの画像を (デカイですよ :-) 用意しておいてもらっても結構です。


目次を表示 (先頭へ戻る) 前ページ   次ページ

This site is available in Safari and Leopard. © ttezu 2006 - 2008