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ウィンドウとその仲間たち