初めてのiOSアプリを作るまで【開発編】

今回で最終回【開発編】です。
Objective-Cって聞くだけで抵抗があるかもしれませんが(私もそうでした)、実際触ってみて思ったのは他のプログラム言語を触ったことがある人なら正直そんなに難しい言語じゃないです。
それぞれの言語だってクセがあるし、Objective-Cだってクセさえ理解してしまえばちょちょいのちょいです。

私が読んだ2冊の本


Amazon.co.jp: よくわかるiPhoneアプリ開発の教科書【Xcode 4対応版】: 森 巧尚, まつむら まきお: 本

まずはXcodeの使い方を知るために買いました。
この本を買ったときは、すでにXcodeは4.2になってましたが、サポートページも充実していたのでなんなく読み進めることができました。
現在、Xcode 4.2版も出てます。Xcodeの現行バージョンは4.3になってますが。


Amazon.co.jp: iOSデバッグ&最適化技法 for iPad/iPhone: 國居貴浩: 本

一冊目の本を読んで、アプリ作ろうと思ってもそんな単純なものではありません。
「retain・alloc・release」ってなんぞ?って人が読めばアプリを作れるようになります。(体験談)
大体、これを読んでおけばなんとなくObjective-Cのクセがわかってきます。

他のプログラム言語を触ったことある人なら、この2冊読んでおけば大丈夫だと思います。私の場合、わざわざC言語も勉強する必要なかったです。
全くプログラミングが初めてな人であれば、ひとまずC言語を勉強してみたほうがいいのかもしれません。
あとは1冊目を読んでから、1冊目と2冊目の間にObjective-Cの基礎的な本を1,2冊と逆引きハンドブックあたり手元にあればいいんじゃないでしょうか。

各クラスの基本的な部分はこのページで調べる

前者は画像もありわかりやすく、各クラスの主要なプロパティ・メソッドをおさえています。
後者は各クラスのプロパティ・メソッド全て(?)おさえており、前者でわからないことがあれば後者で調べてみるといいです。

それでもわからなかったら素直にググりましょう。
「iphone XXXX」よりも「ios XXXX」や「objective-c XXXX」で検索したほうが開発に役立つ情報がでると思います。

目からウロコ!tagプロパティ

私が最初から知っておきたかったのがtagプロパティ。
言葉で説明するより、どういった場面で使うか見てみましょう。

例えば50万円貯まる!500円BANKで使ってるここのボタン。

tagプロパティを使用せず横着して作ろうとするとこんな感じになるでしょう。

#import "ViewController.h"

@interface ViewController ()
{
    NSInteger i;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //toolBar
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    toolBar.barStyle = UIBarStyleBlackOpaque;
    [toolBar sizeToFit];
    
    //Button
    UIBarButtonItem *plus10Btn = [[[UIBarButtonItem alloc] initWithTitle:@"+10枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];

    UIBarButtonItem *plus100Btn = [[[UIBarButtonItem alloc] initWithTitle:@"+100枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];

    UIBarButtonItem *minus10Btn = [[[UIBarButtonItem alloc] initWithTitle:@"-10枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];

    UIBarButtonItem *minus100Btn = [[[UIBarButtonItem alloc] initWithTitle:@"-100枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];
    
    NSArray *items = [NSArray arrayWithObjects:plus10Btn, plus100Btn, minus10Btn, minus100Btn, nil];
    [toolBar setItems:items animated:NO];
    
    [self.view addSubview:toolBar];
}

- (void)barBtnDidPush:(id)sender
{
    NSString *title = [sender title];
    if ([title isEqualToString:@"+10枚"]) {
        i += 10;
    } else if ([title isEqualToString:@"+100枚"]) {
        i += 100;
    } else if ([title isEqualToString:@"-10枚"]) {
        i -= 10;
    } else if ([title isEqualToString:@"-100枚"]) {
        i -= 100;
    }
    NSLog(@"%d", i);
}

titleくらいしか区別できるプロパティがなく、それで条件分岐してるあたりかなり怪しいコードになってます。
だけど、tagプロパティを使えばこんな感じ。

#import "ViewController.h"

@interface ViewController ()
{
    NSInteger i;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //toolBar
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    toolBar.barStyle = UIBarStyleBlackOpaque;
    [toolBar sizeToFit];
    
    //Button
    UIBarButtonItem *plus10Btn = [[[UIBarButtonItem alloc] initWithTitle:@"+10枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];
    plus10Btn.tag = 10;
    
    UIBarButtonItem *plus100Btn = [[[UIBarButtonItem alloc] initWithTitle:@"+100枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];
    plus100Btn.tag = 100;
    
    UIBarButtonItem *minus10Btn = [[[UIBarButtonItem alloc] initWithTitle:@"-10枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];
    minus10Btn.tag = -10;
    
    UIBarButtonItem *minus100Btn = [[[UIBarButtonItem alloc] initWithTitle:@"-100枚" style:UIBarButtonItemStyleBordered target:self action:@selector(barBtnDidPush:)] autorelease];
    minus100Btn.tag = -100;
    
    NSArray *items = [NSArray arrayWithObjects:plus10Btn, plus100Btn, minus10Btn, minus100Btn, nil];
    [toolBar setItems:items animated:NO];
    
    [self.view addSubview:toolBar];
}

- (void)barBtnDidPush:(id)sender
{
    i += [sender tag];
    NSLog(@"%d", i);
}

条件分岐もなくなり、これだと数字に修正があった場合でもtagの数値を変更するだけで簡単に対応できるようになりましたね。

特に、1つのViewで複数のUIAlertViewを使いたい場合などに使う場合の常套手段のようで、わざわざメンバ変数を用意する必要もなくなります。
最初から知っておけば無駄なコードを書かずに済むので、iOSアプリを開発しようと思っている人は是非とも覚えておいてください。

いかがでしたでしょうか。
Androidアプリを作ってた時もありましたが、普段HTMLコーディング(CSS・JavaScript含む)ばっかりやっている私でも空き時間を利用して3ヶ月程度でiOSアプリをリリースすることができました。
WEBクリエイターでアプリのアイデアがある人はどんどん開発にチャレンジしてみてはどうでしょう。

ちなみによく言われる、デベロッパー登録で日本語がうんぬんでつまずくってのがありませんでした。
覚悟して構えてた分、かなり拍子抜けでしたが、そういった面でもかなり開発に対するハードルは低くなってるんじゃないでしょうか。

この記事をブックマーク・シェアする

この記事に関連する記事

カテゴリ

コメント

コメントを残す

コメント*

コメントリンクを nofollow free に設定することも出来ます。

誤字・脱字やリンク切れなどお気づきの点がございましたら@loop0429までよろしくお願いします。

この記事の先頭へ