20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CocoaAdvent Calendar 2015

Day 1

[OSX][iOS]Cocoaとは何ぞや

Last updated at Posted at 2015-11-30

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となった。そして、RhapsodyのBlue BoxはCarbonに、Yellow BoxはCocoaという名前となり、現在でも、OS XやiOS、watchOS、tvOSの主要なフレームワークとなっている。

関連情報
Cocoa Advent Calendar 2015

Kurt J. Schmucker(1986)『オブジェクト指向プログラミング for the Macintosh [上巻]』大谷和利訳, 日本ソフトバンク.

Kurt J. Schmucker(1986)『オブジェクト指向プログラミング for the Macintosh [下巻]』大谷和利訳, 日本ソフトバンク.

Xウィンドウとその仲間たち

【Cocoa練習帳】
http://www.bitz.co.jp/weblog/

http://ameblo.jp/bitz/(ミラー・サイト)

20
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?