トップ «前の日記(2015-11-10) 最新 次の日記(2015-12-02)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|

2015-12-01 [OSX][iOS]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となった。そして、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/(ミラー・サイト)

トップ «前の日記(2015-11-10) 最新 次の日記(2015-12-02)» 編集