この記事を読むのに必要な時間:およそ 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のプログラミングの基礎を解説している書籍で,しっかり勉強することをお勧めします。