この連載では、開発作業に特別なツールは利用しないのですが、それでもソースコードを記述したファイルから実際に実行可能なプログラムを生成するために最低限のツールが必要になります。Mac OS Xには、Cocoaアプリケーション開発のための統合開発環境であるXcode Toolsがオプションとして用意されています。これをインストールすると、実行プログラムの生成に必要なツールも同時にインストールされます。
Mac OS Xのインストールディスクをドライブに挿入すると、OSの本体とは別にオプションインストールのフォルダが表示されます。この中に含まれるXcode Toolsのパッケージを選択してインストールしてください。
プログラムの実行ファイルを作成するには、まずは各ソースファイルをコンパイルしてそれぞれにバイナリファイルを生成します。次にそれらのバイナリファイル(およびプログラムが必要とするフレームワーク)を関連付けて、実行可能な状態のファイルを生成します。複数のバイナリファイルを関連付ける処理をリンクといいます。今回のプログラムを例に図で示すと、次のようになります。
Objective-Cのコンパイル(およびリンク)には、gccというコマンドラインのプログラムを利用します。gccは、C/C++/Objective-CなどのC系言語共通のコンパイラで、Xcode Toolsと一緒にインストールされます。
では、実際にプログラムをコンパイルして実行してみましょう。まずはMacでターミナルを起動し、先ほど作成したプログラムのソースファイルが置いてあるフォルダへ移動してください。そして以下のコマンドを1行ずつ順番に実行してみてください。
gcc -c main.m |
これで、まず各ソースファイルがバイナリファイルへとコンパイルされます。コマンドが無事に実行できたなら、lsコマンドでファイルの存在を確認してみてください。それぞれのファイルに対し、拡張子「.o」のファイルが生成されているはずです。これがバイナリファイルです。
もしコマンドの実行がエラーとなってしまった場合には、エラーメッセージの内容をよく読んでみてください。構文エラーなど、たいていはここにヒント(今回のような単純なレベルのプログラムであれば、ヒントというより答えそのもの)が含まれているはずです。メッセージを参考にソースを修正し、再びコンパイルのコマンドを実行してください。
各ソースファイルがコンパイルできたら、次にバイナリファイルを関連付けるリンクを実行し、最終的なプログラムの実行ファイルを生成します。以下のコマンドを実行してください。
gcc -o myFirstProgram main.o Song.o Singer.o -framework Foundation |
-o myFirstProgramの部分は、生成される実行ファイルのファイル名を指定しています。続けて、先ほどコンパイルしたバイナリファイル群を指定します。最後の-frameworkオプションは、そのプログラムが必要とするフレームワークを指定するものです。フレームワーク側のファイルは直接プログラム内に組み込まれるわけではありませんが、このプログラムがどのフレームワークに依存しているか(実行時に何が必要となるか)は、ここで明示しておく必要があるのです。
再びlsコマンドで確認してみると、先ほど-oオプションで指定した名称の、プログラムの実行ファイルが生成されていることが分かります。では、いよいよ実行してみましょう。
./myFirstProgram |
5つもソースファイルを作って長々と説明してきた割には、実行結果はあっけないですね。でもこれで良いのです。Objective-Cによる、オブジェクト指向に基づいたプログラミングの基本中の基本となる要素は、今回のサンプルに一通り含まれています。あとはそれらの基本要素を1つずつ掘り下げていくことで、より複雑なプログラムを作成できるようになります。
なお、先ほどは実行ファイル作成の流れを体感してみるためにあえてコンパイルとリンクを個別に行いましたが、これらを一気に実行することもできます。上記と同じ実行ファイル名で、コンパイルからリンクまでを実行する場合、コマンドは以下のようになります。
gcc -o myFirstProgram main.m Song.m Singer.m -framework Foundation |
今回はObjective-Cの、シンプルなプログラム作成を体験しました。先ほども述べたように、ここで作成したサンプルは、Objective-Cの基本要素を一通り踏まえた内容となっています。
サンプルがうまく動いたら、次はそれをいろいろといじって自分なりの実験プログラムを作成し、実行してみてください。そうすることで、「じゃあ、こういう場合はどうするんだろう?」といった疑問がわいてきます。それらの疑問は今後の連載を読んでいただくにつれて少しずつ明らかになっていくはずです。
Copyright © ITmedia, Inc. All Rights Reserved.