この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは。
KBMJの佐藤です。
今回はCappuccinoとObjective-JでHello Worldを書いてみます
Cappuccino と Objective-J を使うと iPhone や Mac 向けのアプリ開発と同じ感覚で Web アプリケーションを開発することができます。
CappuccinoとObjective-Jについて
Cappuccino は、デスクトップソフトウェアのユーザーがうちとけやすい見た目のアプリケーションを開発するためのオープンソースフレームワークです。
Cappuccino は JavaScript などの標準的なWeb技術の上に構築されています。そしてアップルのCocoaフレームワークに非常に近い実装がなされています。
Cappuccino でプログラムしたとき、HTML, CSS, DOM などの伝統的なWeb技術を意識する必要がありません。
複雑なクロスブラウザアプリケーションを構築する際の不愉快さはありません。
Cappuccino は Objective-C をモデルとした新しいプログラミング言語である Objective-J で実装されています。Objective-J は JavaScript の上に構築されています。Objective-J で書かれたプログラムはクライアント上で翻訳されるので、プラグインなどは必要ありません。Objective-J のライセンスは LGPL となっています。
ソースコード
Hello World のソースコードを以下に示します。
import <foundation /cpobject.j>
// アプリケーションコントローラークラスである AppController を宣言します
@implementation AppController : CPObject
{
// ラベルオブジェクトをメンバ変数として持たせます
CPTextField label;
}
// アプリケーションの起動時に呼ばれる関数です。ここに各種初期化処理などを記述します
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{
// ウィンドウオブジェクトを生成し、そのビューを管理する contentView を取り出します
var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
contentView = [theWindow contentView];
// ラベルオブジェクトを生成します
label = [[CPTextField alloc] initWithFrame:CGRectMakeZero()];
// ボタンオブジェクトを生成します
var button = [[CPButton alloc] initWithFrame: CGRectMake(
CGRectGetWidth([contentView bounds]) / 2.0 - 40,
CGRectGetMaxY([label frame]) + 100,
80, 18
)];
// ボタンオブジェクトの自動リサイズに関する設定を行います
[button setAutoresizingMask:CPViewMinXMargin |
CPViewMaxXMargin |
CPViewMinYMargin |
CPViewMaxYMargin];
// ボタンのタイトルを設定します
[button setTitle:"swap"];
// ボタンが押された際に呼ばれる処理を登録します
[button setTarget:self];
[button setAction:@selector(swap:)];
// ビューにボタンを追加します。
[contentView addSubview:button];
// ラベルのキャプションとフォントを設定します
[label setStringValue:@"Hello World!"];
[label setFont:[CPFont boldSystemFontOfSize:24.0]];
[label sizeToFit];
// ラベルの自動リサイズ設定を行います
[label setAutoresizingMask:CPViewMinXMargin | CPViewMaxXMargin | CPViewMinYMargin | CPViewMaxYMargin];
// ラベルの位置を設定します
[label setFrameOrigin:CGPointMake[1]CGRectGetWidth([contentView bounds]) - CGRectGetWidth([label frame] / 2.0, (CGRectGetHeight([contentView bounds]) - CGRectGetHeight([label frame])) / 2.0)];
// ビューにラベルを追加します
[contentView addSubview:label];
[theWindow orderFront:self];
// ラベルのキャプションを中央に設定します
[label setAlignment:CPCenterTextAlignment];
// メニューバーを表示します
[CPMenu setMenuBarVisible:YES];
}
// ボタンが押された際に呼ばれる処理
-(void)swap:(id)sender
{
// ラベルのキャプションを変更します
if([label stringValue] == "Hello World!")
[label setStringValue:"Goodbye!"];
else
[label setStringValue:"Hello World!"];
}
@end
さいごに
Cappuccino を使うと Mac や iPhone のソフト開発と同じ感覚で Web アプリケーションを開発することが可能です。
次回以降、Objective-J, Objective-C, Cocoa, Cocoa Touch などに関する記事を掲載していきたいと思います。
お楽しみに!
個人ブログ 拡張現実ライフ
References
↑1 | CGRectGetWidth([contentView bounds]) - CGRectGetWidth([label frame] |
---|