Objective-C超入門! …の前に読む小話

記事中に、⁠Mac OS(Mac System Software 1.0)はC言語で開発された」とありますが、実際は「Object Pascal(Clascal⁠⁠」で開発されており、C言語はその後に開発されたMPWで採用されました。不正確な情報を掲載したことを深くお詫びいたします。

今をときめく「iPhone」のアプリケーション開発言語として重要度を増している言語「Objective-C⁠⁠。ここでは、この言語の知られざる真の姿を、薄皮一枚だけピッピッとはがしてみたいと思います。これを読めば、あなたも簡単にiPhoneアプリが作れるように、はなりません!(断言)

Objective-Cに至る苦難の歴史

かつて、プログラミング言語の第一義はOSを作ること、OSの第一義はプログラムの開発環境を提供することでした。OSと言語は鶏と卵のような不可分な関係であり、原則としてセットで進化していくものです。

しかし、Appleの作ったOS「Mac OS」では、少々違っていました。

1984年に誕生したMac OS(Mac System Software 1.0)はC言語で開発されましたが、Mac OS上で動作するApple純正開発環境「MPW(Macintosh Programmer's Workshop⁠⁠」は、高価・低速・難解と三拍子揃っていたため、開発者にそっぽを向かれてしまったのです。代わりにSymantec社の「THINK C」が絶大な人気を博し、その後アーキテクチャがPower PCベースになると、今度はMetrowerks社の「CodeWarrior」がシェアを獲得。利用者のいないMPWはいつしか⁠無かったこと⁠にされてしまいました。

風向きが変わったのは、⁠帰ってきた男⁠スティーブ・ジョブスが、復帰の手土産に「NEXTSTEP」とその開発言語「Objective-C」を持ち込んでからです。当時最先端のオブジェクト指向理論を体現したNEXTSTEPは「Mac OS X」となり、そして、開発環境である「Project Builder(後のXcode⁠⁠」と「Interface Builder」のおかげで、Appleはようやく他社からシェアを奪還できたのです。

Objective-Cのすごいところ

Objective-Cの特徴は、OSも開発できる低レベルコーディング可能な言語であり、かつ純粋なオブジェクト指向言語でもある、という万能性です。その秘密は、全く異なる2つの言語が融合した独特の言語仕様にあります。

低レベルでは純粋なC言語(ISO C)として利用可能であり、そこにオブジェクト指向拡張として「Smalltalk」のクラスが丸々移植されているため、幅広いコーディングをこなすことができるのです。C言語から発展したC++やJava、C#が、機能拡張のためにC言語との互換性を失ったのとは対照的です。Cとの互換性については、次のようにガンダムで例えると一目瞭然でしょう。

C言語ガンダム(RX-78)
C++Zガンダム(MSZシリーズ)
Objective-Cデンドロビウム(RX-78GP03)
C#、Java∀ガンダム

堅い芯にご用心

非常に高機能なObjective-Cですが、クラス間通信をメッセージパッシングで行うSmalltalkの高度なオブジェクト理論を取り入れたため、C++やJavaよりも難解です。美味しそうな外見に誘われて軽い気持ちで囓りついても、アゴを痛めるのがオチでしょう。まずは、Objective-Cのプログラミングの基礎を解説している書籍で、しっかり勉強することをお勧めします。