新刊ピックアップ

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

この記事を読むのに必要な時間:およそ 1 分

記事中に,⁠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のプログラミングの基礎を解説している書籍で,しっかり勉強することをお勧めします。