Objective-Cのお勉強 #0 準備篇


MacやらiPhoneでプログラミングをする場合、CやC++、はたまたJavaなんかを思い浮かべる時代はとうに終わったそうです。。

それを突きつけられたのがこの前バージョンアップしたOS、Mac OS X Snow Leopard。
これに対応したIDE(開発環境)であるXcode 3.2のテンプレートから、C/C++用のCarbonと呼ばれる環境用のテンプレートが無くなり、Javaなんかは結構前から無かったり、PythonやRubyもサポートされていたようなんだけど、それも削除。
xcode3.2_new_project
マカー系プログラマに残された道はObjective-CベースのCocoa環境しか無いわけですよ。
んじゃ、やっぱ勉強しますか。
CやC++でさえ怪しい身分ですが。。。

まず、お勉強するにあたっての当方の環境とか。

エディターについてはGvimを使います。
正確に書くとMacVimです。
(フォント綺麗だよ:-D)
まぁ、この辺りは適宜好きなエディタ使って下さい。

コンパイルはコマンドラインで。
当面はObjective-Cのお勉強なので、当面Xcodeは使ったり使わなかったり、です。
Cocoaのプログラミングに入ったらあり得ないスピードで覚える予定です。

ですが、Xcodeはインストールしておいて下さい!

インストール方法はちょっとググって下さい。

どうやらUnix界隈では有名なGCC(GNU Compiler Collection:グニュー・コンパイラ・コレクション又はグヌー・コンパイラ・コレクション)を使うようです。

まず、Terminal.appを立ち上げましょう。
「ユーティリティ」と言う場所に入っています。
見つからなければ「アプリケーション」>「ユーティリティ」で辿って下さい。

Finder_Terminal.app

で、起動した感じがこんな感じになるはずです。

Terminal.app

色の違いこそあれど、大体こんな感じのはず。

では、

pwd

と打って下さい。

preマシン名% pwd
/Users/名前

と言った感じになるはずです。
そこが今いる場所です。
以後、マシン名McLarenとします。
(理由は自分のマシンがMcLarenと言う名前だからです。。)
ちなみに、「%」なのは気にしないで下さい。
気になるなら「シェル」と言う言葉を調べた後に、「zsh」で検索してみるといいかもしれません。

では、作業用ディレクトリ(フォルダ)を作りましょう。
まず、現在見ているディレクトリにどんなディレクトリ/ファイルがあるかを見てみましょう。
「ls -al」と打ってみて下さい。

McLaren% ls -al
total 472
drwxr-xr-x+  57 ユーザ名    staff   1938 10 14 15:58 .
drwxr-xr-x    6 root        admin    204  9 27 22:37 ..
-rw-------    1 ユーザ名    staff      4  7 16  2008 .CFUserTextEncoding
-rw-r--r--@   1 ユーザ名    staff  24580 10 14 11:33 .DS_Store
drwx------    5 ユーザ名    staff    170 10 13 23:22 .Trash
(省略)
drwx------+  22 ユーザ名    staff    748 10 14 16:05 Desktop
drwx------+  25 ユーザ名    staff    850 10  8 20:13 Documents
drwx------+ 132 ユーザ名    staff   4488 10 14 11:33 Downloads
drwx------+  46 ユーザ名    staff   1564  9 28 17:33 Library
drwx------+   7 ユーザ名    staff    238  9  8 23:32 Movies
drwx------+   6 ユーザ名    staff    204  2  7  2009 Music
drwx------+  26 ユーザ名    staff    884  8 23 12:59 Pictures
drwx-wx---+   6 ユーザ名    staff    204  7 27  2008 Public
drwxr-xr-x+   6 ユーザ名    staff    204 10  5  2008 Sites

こんな感じになったのではないでしょうか。

ここにドカドカ置くのもアレなので、Documents内に置くことにしましょう。
「cd(change directory:チェンジ・ディレクトリ)」コマンドでDocumentsへ移動します。

McLaren% cd Documents
McLaren% pwd
/Users/ユーザ名/Documents

pwdで移動したかもちゃんと確認しました。

「source」と言うディレクトリをここに作ります。
その前にそのディレクトリが無いかを確認しましょう。
もしあったらややこしいので、別の名前にした方がいいかもしれないです。

確認した想定で作ります。
「mkdir(Make directory:メイク・ディレクトリ)」コマンドでディレクトリを作ります。

McLaren% mkdir source
McLaren% cd source
McLaren% ls -al
total 0
drwxr-xr-x   2 ユーザ名  staff   68 10 14 16:27 .
drwx------+ 26 ユーザ名  staff  884 10 14 16:27 ..

sourceディレクトリを作成し、そこへ移動。
更にそのディレクトリの中身を確認しました。
2つファイルがあるように見えますが、「.」と「..」はファイルでもディレクトリでもありません。
「.」は現在のディレクトリ、「..」は一つ上のディレクトリを意味します。
当然、このディレクトリを作ったばかりなので中身はカラです。

一旦Terminalの作業は終わりですが、開いて置いて下さい。
すぐ使うので。

ここまでディレクトリを作ったり移動したり、知らない人には分けわからん&知ってる人にはさっさと進めろよ的な感じだともいます。
また、フォルダは当然Finderからでも作れます。
と言うか、そっちの方が便利です。
ただ、コマンドに慣れるのはいかがですか?と言うおせっかいです:-D
ちなみに、コマンドラインの時は「ディレクトリ」、FinderなどのGUIの時は「フォルダ」とついつい書いてしまうのですが、これは癖なので、同一のものとして許して下さい。
あんまり直したいとも思わないので。。。

さて、お待たせしました。
コードを書いてみましょう。
Finderからフォルダ(ディレクトリ)を辿って行きましょう。

finder_mkdir

そこに「test.m」を作成して下さい。
出来たら下記コードを書き込んで下さい。
(シェル上で使えるエディタを使って編集できる人は直接弄ってもらってかまいません。)

#import <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}

完成したプログラムを入れるため、Documentsの中に「exe」と言うディレクトリを作りましょう。
Terminalが先ほどのままだとします。

McLaren% cd ../
McLaren% mkdir exe
McLaren% ls -al | grep "exe"
drwxr-xr-x    2 ユーザ名    staff       68 10 14 17:36 exe

「ls -al | grep “exe”」と言うように、ls -alの次に「|(パイプライン、日本では面倒なのでパイプと呼ばれる)」で別のコマンドに繋ぐことが出来ます。
「grep “exe”」と言うコマンドで「exe」と言う文字列が入っている行を取り出してくれます。

では、コンパイル(ソースコードを機械語に変換)しましょう。

McLaren% gcc -o ../exe/my_first_program test.m -framework Foundation
McLaren% cd ../exe
McLaren% ls -al
total 24
drwxr-xr-x   3 ユーザ名 staff   102 10 14 17:47 .
drwx------+ 27 ユーザ名 staff   918 10 14 17:36 ..
-rwxr-xr-x   1 ユーザ名 staff  8704 10 14 17:47 my_first_program

何のエラーも無く、ファイルも作られているので、どうやらプログラムが出来た様です。

実行してみましょう。

McLaren% ./my_first_program
Hello world!

同じディレクトリ内にあるファイルを実行する時は、必ず頭に「./」を付けて下さい。
でないと、このファイルを実行してくれません。
「Hello world!」と表示されたら成功です。
「Hello world!%」みたいになっちゃった人は
printf(“Hello world!\n”);の\nを入れ忘れたのでしょう。
ソースコードを良〜く確かめてから、もう一度コンパイルしてみて下さい。
gccの使い方とか諸々は日が暮れたのでまた今度と言うことにしておいて下さい。。。
(そもそも詳しくないので。)

とまぁ、ダラダラ無駄に長い感じになりましたが、準備はできました。
ちなみに、さっきのコードはほぼCです。。
せいぜい#includeが#importになっている程度なんで、実にアレなんですけどね。
次回からはもっとがんばりたいです。

ではまた。

Post to Twitter

, , , , ,

  1. No comments yet.
(will not be published)