見出し画像

Cocoaとは何ぞや

Apple Lisaコンピュータのアプリケーションは、Lisa Toolkitというライブラリを使って開発され、このToolkitライブラリはClascalと呼ばれるPascal言語を拡張したオブジェクト指向言語で書かれていたそうだ。

『オブジェクト指向プログラミング for the Macintosh』によると、Clascalのコードは以下のようになる。

{TViewクラスの子クラス}
TQuadView = SUBCLASS OF TView
    {インスタンス変数}
    window:TQuadWindow;
    {作成メソッド}
    FUNCTION TQuadView.CREATE(object:TObject;heap:THead;itsExtent:LRect;itsPanel:TPanel):TQuadView;
    {選択メソッド}
    PROCEDURE TQuadView.MousePress(mouseLPt:LPoint);OVERRIDE;
    FUNCTION TQuad TQuadView.NewSelection(quad:TQuad):TQuadSelection;ABSTRACT;
END;{TQuadView}

Pascal派生の言語ということでC言語とは異なる部分があるが、iOSしか知らなくてもコードの内容が理解できると思うし、Swiftなど、逆に近づいているように感じる部分があって面白いと思ったが、どうだろうか?

このLisa ToolkitとClascalは、Macintoshの開発環境に影響を与えている。MacintoshのAPIはオブジェクト指向から手続き型のToolboxライブラリになっているが、MacAppクラスライブラリが用意され、このMacAppはObject Pascalというオブジェクト指向プログラミング言語で記述されていた。

こちらもコードを『オブジェクト指向プログラミング for the Macintosh』から引用してみる。

TYPE TFoo = OBJECT(TSnark)
    fFirstObject: TEmployee;
    fNumber: INTEGER;
    PROCEDURE TFoo.IFoo;
    PROCEDURE TFoo.Free;OVERRIDE;
END;

PROCEDURE TFoo.IFoo;
VAR tempObject:TEmployee;
BEGIN
    SELF.ISnark;
    NEW(tempObject);
    tempObject.IEmployee;
    SELF.fFirstObject:=tempObject;
END;

PROCEDURE TFoo.Free;
BEGIN
    FreeObject(SELF.fFirstObject);
    INHEFITED Free;
END;

Lisaコンピュータが発売されたのが1983年。Macintoshコンピュータが1984年。MacAppクラスライブラリは1985年。NeXT創業が1985年。NeXTワークステーションとNeXTSTEPオペレーティングシステムが発表されたのが1988年。

アプリケーションは、Application Kitソフトウェアキットを利用して開発され、Objective-Cで記述されていた。『Xウィンドウとその仲間たち』によると以前のクラス名は頭にNXが付いていて、その後のNSと異なっている。NeXTSTEPからOPENSTEPに変わる際に変わったのかな?(NSはNeXT Softwareの略と聞いたことがある)

C++でなくObjective-Cが選択された理由の一つに、当時、C++は研究室で利用されるもので、実際の現場で利用可能になっていたのはObjective-Cだったからという話を聞いたことがあるが、今となってみれば、C++でなくてよかったのではないか!?

『オブジェクト指向プログラミング for the Macintosh』に古い形式のObjective-Cのコードが掲載されていたので引用する。

= Point:Object (Geometry, Primitive) { short, xLoc, yLoc; }
+ x:(int)anX y:(int)aY {
    id myNewPoint = [self new];
    [myNewPoint x:anX];
    [myNewPoint y:aY];
    return myNewPoint;
}

- x:(int)anX { xLoc = anX; return self; }
- y:(int)aY { yLoc = aY; return self; }

1996年、NeXTはAppleに買収された。OPENSTEPはRhapsodyというコードネームでMacintoshに移植された。RhapsodyにはMatintosh ToolboxをエミュレーションするBlue Boxと、OPENSTEPのYellow Boxで構成されていた。

RhapsodyはMac OS X Server 1.0としてリリースされたのち、2001年にMac OS Xとしてリリースされ、v10.8 (Mountain Lion) からMacが取れてOS Xとなり、v10.12(Sierra)からmacOSとなった。そして、RhapsodyのBlue BoxはCarbonに、Yellow BoxはCocoaという名前となり、現在でも、OS XやiOS、watchOS、tvOSの主要なフレームワークとなっている。

参考情報
- 『オブジェクト指向プログラミング for the Macintosh [上巻]』
 Kurt J. Schmucker(1986)大谷和利訳, 日本ソフトバンク.
- 『オブジェクト指向プログラミング for the Macintosh [下巻]』
 Kurt J. Schmucker(1986)大谷和利訳, 日本ソフトバンク.
Xウィンドウとその仲間たち

いいなと思ったら応援しよう!