280Slides in Objective-J

2008/06/06 12:42pm

280Slides という Web サービスがすごい。

Keynote 風のプレゼンテーションツールとしての UI も素晴らしいが、圧巻なのは、その実装技術。

「どんな JavaScript や Flash を使ってるんだ?」と思うだろう。さあ、FireBug なり Safari の Web インスペクタなりで、ページに読み込まれているスクリプトを確認してみよう。その大半が馴染みのない拡張子 .j であることに驚くに違いない。

上にあげたのは、.j ファイルの一例だが、あなたが Mac OS X の開発者であれば、見覚えのある名前ばかりだろう。これは Mac OS X の MVC フレームワーク Cocoa を構成するクラス名と酷似している。

Objective-J

試しに DocumentController.j を覗いてみようか。

//
// DocumentController.j
// Editor
//
// Created by Francisco Tolmasky.
// Copyright 2005 - 2008, 280 North, Inc. All rights reserved.
//

import <AppKit/CPDocumentController.j>

import "OpenPanel.j"
import "Themes.j"
import "ThemePanel.j"
import "WelcomePanel.j"

@implementation DocumentController : CPDocumentController
{
    BOOL    _applicationHasFinishedLaunching;
}

- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{
    // FIXME
    // Check [CPApp arguments][0] for "docs" and [self openPresentationWithFilename: args[2]];

    [CPApp runModalForWindow:[[WelcomePanel alloc] init]];

    _applicationHasFinishedLaunching = YES;
}

どう見ても Objective-C です。

もちろん、ブラウザがこんな独自言語をコンパイルできるわけがない。これらのスクリプトは Objective-J.js によって、**実行時に JavaScript へと変換(コンパイル)**される。

どんなふうになるかは、プリコンパイルされた AppKit.sj もあるので、参考に覗いてみるといいだろう。

DSL and Framework

Domain-Specific Language (DSL) の有効性は散々言い古されてきたけど、Objective-J が Cocoa という、すでに GUI アプリケーションの分野で定評のあるフレームワークを土台としていることは興味深い(もしかすると今後、このような流れが他にも起こるだろうか?)。

そして、なにより、こんなことを妄想しこそすれ、本当にやってしまう心意気は賞賛に値する。

P.S.

**(2008.06.06 追記)**この記事を書いたあとで、Room 101: java’scrypt という記事を思い出した。

Javascript is the assembly language of the internet platform (and the browser is the OS).

この記事では他にも Google Web Toolkit に言及している。そういえば、Google Web Toolkit (GWT) も Java で書かれたプログラムが(サーバ側で)JavaScript に「コンパイル」されるのだった。