それでは前回のコードを解説します。
viewDidLoadメソッドはこのHelloWorldViewControllerが読み込まれた時に実行されるメッソドです。ここに”Hello World!”と表示するラベルを作成し、表示させます。
8行目でスーパークラスのviewDidLoadメソッドを呼んでいます。
次の9行目でUILabelのインスタンスlabelを作成します。CGRectMakeでlabelの位置、大きさを指定します。要素順にx座標、y座標、幅、高さです。ただし座標は左上が(0,0)、右下が(320,480)となっています。
10行目でlabelのテキスト”Hello World!”を設定し、
11行目でこのビューに追加し、表示します。

#import "HelloWorldViewController.h"

@implementation HelloWorldViewController

// ここから
-(void)viewDidLoad
{
	[super viewDidLoad];
	UILabel	*label	= [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
	[label setText:@"Hello World!"];
	[self.view addSubview:label];
	[label release];
}
//ここまでを追加

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

}

- (void)dealloc {
    [super dealloc];
}

@end

少し見栄えが悪いので、ここでカラーの設定をしましょう。Hellow Worldの色を赤に、ビューの背景色を白に設定します。

#import "HelloWorldViewController.h"

@implementation HelloWorldViewController

-(void)viewDidLoad
{
	[super viewDidLoad];
	UILabel	*label	= [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
	[label setText:@"Hello World!"];
	[label setTextColor:[UIColor redColor]];
	[self.view addSubview:label];
	[self.view setBackgroundColor:[UIColor whiteColor]];
	[label release];
}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

}

- (void)dealloc {
    [super dealloc];
}

@end

次のように表示されたでしょうか?次回はボタンを作成し、ボタンにアクションを割り当てます。

2011年4月10日(日)、神田川の桜です。

プログラミングの第一歩と言えば、Hello World! ということで、このブログでも例に漏れずHello World!から始めます。ファイルメニューから新規プロジェクトを選択して、View-based Applicationを選択します。

プロジェクト名をHelloWorldとして保存します。生成されたHelloWorldViewController.mを次の用に編集します。

#import "HelloWorldViewController.h"

@implementation HelloWorldViewController

// ここから
-(void)viewDidLoad
{
	[super viewDidLoad];
	UILabel	*label	= [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
	[label setText:@"Hello World!"];
	[self.view addSubview:label];
	[label release];
}
//ここまでを追加

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

}

- (void)dealloc {
    [super dealloc];
}

@end

編集が完了したら。「ビルドと実行」を選択するとiPhone Simulatorが起動し、次のようにHello World!と表示されるはずです。コードの解説はまた次回。

iPhoneアプリ開発の入門書をこれより記します。現在ではiPhoneアプリ開発についての様々な入門書が出版されているし、丁寧に解説されたブログも散見されるので、私は”Interface Builderを使わない”ことをテーマにこのブログを書きたいと思います。

Interface Builder(以下IB)を使わない理由

(1)面倒くさい

感情論ですが、これ結構重要です。開発していてIBを起動し、ボタンを配置し、アクションを割り当てて。。あーっ、めんどくせーって思った方はこの開発方法をお勧めいたします。ですが、IBで設定しない部分は当然、コードを書くことになります。開発ボリュームを小さくする方法ではありませんので、その点をご了承いただきたいと思います。あくまでIBを使わない開発方法で、逆の言い方をすると、すべてXcodeで開発する方法とも言えます。当然、IBが大好きな人にはこの開発方法は向かないので、別の入門書を参照してください。

(2)動的な処理

IBでボタンを100個設定するのはとても大変です。100個ならまだいいですが、1万個、10万個となったらどうでしょうか?現実的ではないですよね。コードなら個数分ループすれば済みます。また、条件によってボタンを表示したりしない場合はどうでしょうか? IB を使わずコードのみで開発する最たる理由はこの動的な処理に対してIBより優れているからです。

(3)文字媒体での伝達の容易さ

プログラムは文字で構成されています。書籍も文字媒体です。ブログも映像、画像、音声など使えるとはいっても、やはり文字が中心と言えます。つまり、文字媒体の書籍・ブログとプログラムは親和性が高いのです。プログラムはそのままソースコードを文字で表示すればいいのに対して、IBは一連の操作で処理を割り当てます。IBの操作を文字で表現して伝えると情報が誤って伝わる可能性を大きくはらんでますが、ソースコードは間違って伝わる要素が極小化されています。コピペしてビルドし、実行すればほぼ間違いなく伝達できています。この時、読者がそのソースコードやIBの操作を理解しているかはまた別問題です。あくまで正しいアプリ開発の方法が文字媒体で表現されるときにIBの操作は適していないということです。

以上の理由から、IB を使わないiPhoneアプリ開発を解説していきます。前書きはこれぐらいにして、次回からはアプリ開発を行っていきたいと思います。