まずは、簡単に歴史からご紹介。
Objective-C の元となっている C は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって作った言語です。
1980年オブジェクト指向のプログラミング言語としてsmalltalk が公開されます。
そして、1983年 C とsmalltalk のよいところを組み合わせて作られたのが Objective-C です。
アップルの創業者であるスティーブ・ジョブスが、アップルをクビになり作った会社「NeXTコンピュータ社」で、オブジェクト指向のマルチタスク用コンピュータ「NeXTcube」のOS「NeXTSTEP」で採用され、 Objective-C はさらに発展していきます。
NSLog、NSStringなどのプレフィックスでNSというのは、NeXTSTEPの頭文字だったりする訳です。
1996年に Apple が NeXTを買収して話題になったのは1998年のiMacの発売でしょう。
パソコンは使ったことがないけれどファッションとしてiMacを購入する女性もいたくらいです。そして、2000年に Objective-C で記述されたOSとして OS X のパブリックベータが発表されます。
当初は MacOS 9 に比べて重くて仕事向きではなかったのですが、コンピュータの性能の向上とOSのマイナーバージョンアップで、2002年に発売された OS X v10.2(Jaguar)あたりからビジネスでも使えるようになってきました。
そして、2007年に iPhone が Objective-C 2.0 を搭載し 2008年 iPhone OS 2.0、iPhone SDK が登場、2009年にiPhone OS 3.0 2010年に iOS4 が登場しました。
さて、プログラミング言語のJava、C++、C#、などは C を元に作られています。
Cを発展させたものですが、C やそれぞれの言語とは異なります。
それは、それぞれのルールで作られているので、全く同じではありません。
例えば次のようなコードを見てみましょう。
C++
#include int main() { std::cout << "Hello, World!\n"; }
Java
public class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); } }
C#
class Hello { static void main() { System.Console.writeLine("Hello, World!"); } }
それぞれ異なっているのがわかります。
さて、Objective-C はどうでしょうか?
Objective-C は C の改良ではなく C の機能追加版とでも言った方がいいでしょう。
ですから、 C で書かれたコードを Objective-C でコンパイルしても、問題なく動きます。
C
#includeint main (int argc, const char *argv[]) { printf ("Hello, World!"); return 0; }
ここで混乱してしまうのですが、C と Objective-C とはどうやって区別するのでしょうか?
Objective-C
#inportC では "#include" と記していたところが "#inport" となっています。int main (int argc, const char *argv[]) { NSLog (@"Hello, World!"); return 0; }
その他に、わかりやすい変更点として次のようなものがあります。
Objective-C
#includeint main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Hello, World!"); [pool drain]; return 0; }
[ ] で囲まれている部分がとても特徴があります。
多くの [ ] で囲まれて、まるでパズルのようですね。
C のコードで動くということは C を1から学ばなければならないかというと…
そうでもありません。
それは「Cocoa Touch」があるからです。
C のコードを使いやすく多くのクラスが追加されています。
それが Foundation として提供されています。
iPhone のプログラミングを使っていく上ではさらに、
UIKit が提供され 数百のクラス、数千のメソッドが利用できるのです。
Cocoa Touch について学んでいくことが、iPhone のプログラミングを習得する早道でしょう。
ヌシ:http://YoshiakiMATSUMURA.com