サンプルプログラムについて		荻原剛志 (Dec. 2011)


● ディレクトリ構成

　書籍に掲載したソースプログラムおよび関連ファイルは、トピックスごとにひとつのディレクトリに格納されています。ディレクトリの名前の先頭の数字は章番号を表しています。
　便宜上、複数のディレクトリに同じソースファイルが入っていることもあります。また、書籍に掲載していないサンプルコードが付いている場合もあります。
　ファイルの内容が必ずしも自明ではない場合、ディレクトリに簡単な説明文書を添付しています。

● コンパイル方法

　まず、Mac OS X 10.7 またはそれ以降が動作するマシンで、開発環境（Xcode 4.2以降）がインストールされていなければなりません。ソースプログラム自体は、書き込み可能なディスク上に展開して下さい。
　実行ファイルを簡単に作成するために、ディレクトリごとに makefile を用意しています。書籍に掲載したサンプルコードは引数なしの make だけで作成できます。つまり、各ディレクトリ内で次のコマンドを入力します（$ はプロンプト）。

	$ make

これで、コンパイルおよび必要な場合はアプリケーションラッパの構成などの作業が自動的に行われて実行ファイルが生成されます。もちろん、自分でコマンドを入力してコンパイルすることもできます。書籍に掲載した以外のサンプルコードのコンパイル方法は makefile に書かれていますので参考にして下さい。
　なお、コンパイルが失敗するように記述されているプログラム（例えば、04dynamic/type.m）もありますので、注意して下さい。


● 作業ファイルの削除

　コンパイルした結果のファイル（実行ファイルも含む）をすべて削除して、ソースプログラムだけの状態に戻すには、各ディレクトリ内で次のコマンドを実行して下さい。

	$ make clean

　また、すべてのディレクトリについて、上記のコマンドを実行するシェルスクリプト cleanall が用意されています。各サンプルのディレクトリのひとつ上のディレクトリで実行して下さい。


● 著作権、免責事項、その他

　このパッケージに含まれているソースプログラムおよび関連ファイルの著作権は、作者である荻原剛志に帰属します。プログラムの内容を別の著作物の参考にするのは構いませんが、そのまま無断で引用することはお断りします。
　このパッケージに含まれているプログラムを利用したことによって、利用者に万一何らかの損害が発生したとしても、作者はその責めを負わないものとします。（そのようなプログラムは含まれていないはずですが、念のため）
　プログラムはすべて、Mac OS X 10.7 で動作を確認しています。コンパイラには clang 3.0 を使っています。ただし、64ビット対応かどうか、およびマルチコアかどうかによってコンパイラの挙動やプログラム自体の動作に若干の違いがあることが分かっています。さらに、将来、Objective-C やフレームワークの仕様や規格の変更、コンパイラや実行ツールの改良などによって、必ずしも期待通りに動作しなくなる場合もありますのでご注意下さい。


○ 内容 ○
00Note.txt	このファイル
02volume/	Volumeクラス
03mute1/	MuteVolumeクラス（バージョン１）
03mute2/	MuteVolumeクラス（バージョン２）
03testself/	selfとsuperのテスト
04dynamic/	動的結合(List4-1)、型チェック(List4-2)
04rgb/		三原色クラス(List4-3)
04rgb2/		三原色クラス：実装部に記述したインスタンス変数の例
04testinit/	クラスオブジェクトの初期化(List4-6)
05retain/	メモリ管理(List5-1)
05fraction/	分数電卓（手動のカウンタ管理方式）
05fraction_arc/	分数電卓（ARC版）
05friend/	弱い参照を使った例題(List5-7)
05array/	ARCによるメモリ管理(List5-8, 5-9, 5-10)
06gcspeed/	ガーベジコレクションの実行速度調査
06gctest/	【参考】ガーベジコレクションのテスト
07property1/	アクセサと宣言プロパティを使った例(List7-1, 7-2, 7-3)
07property2/	宣言プロパティで@synthesizeを使った例(List7-4)
07property3/	宣言プロパティでインスタンス変数を隠蔽した例(List7-5, 7-6)
07property4/	宣言プロパティによるインスタンス変数の生成例(List7-7, 7-8)
08method/	メソッド送信の速度調査(List8-1)
08LP64/		【参考】64ビットモデルのデータ型を調べる
08mute3/	脆弱でないインスタンス変数(Fig8-8)
09string/	節09-02「オブジェクト定数の文字列」の例
09encode/	節09-06「NSValue」の例
10path/		カテゴリを用いた文字列クラスへの機能追加(List10-1)
10random/	連想参照を用いた配列クラスへの機能追加(List10-4)
11figure/	Figureクラス(List11-1)
11cluster/	クラスクラスタ内のクラスの調査(List11-8)
11bit/		BitPatternクラス(List11-9, 11-10, 11-11)
12real/		プロトコル RealNumber (List12-1)
13twoway/	【参考】双方向リストのアーカイブ、アンアーカイブ
13plist/	【参考】プロパティリストの各形式間の変換
14blocks/	ブロックオブジェクトのテストプログラム
15reverse/	ReversibleStringクラス(List15-1)
16locale/	ロケールの実験プログラム
16format/	節16-06のコラムの書式文字列の例
17viewer/	簡易ビューア
18exception/	例外の実験
19operation/	オペレーションを使った並列プログラムの例(List19-1〜4)
19browsingViewer/	並列処理を使ったビューアプログラム(List19-5)
19distributedViewer/	分散オブジェクトの例(List19-12)
19philosophers/	【参考】哲学者の食事（ロックを使った版）
19synchronized/	【参考】哲学者の食事（@synchronizedを使った版）
20KVC/		キー値コーディングの簡単な例題(List20-1〜)
20quad/		２次関数のグラフ描画
ApB_bridge/	付録Ｂ：ARCにおけるトールフリーオブジェクトの型変換
cleanall	すべてのディレクトリで make clean を実行する

以上

