2011/06/07

iToyPiano 1.0

iPhone アプリ「iToyPiano 1.0」をリリースしました。カラフルでファンシーなピアノ鍵盤から、レトロで可愛いトイサウンドの音階が、高音質で再生されます。価格:115円

2011/02/28

Tally Counter 1.0 Release

Tally Counter 1.0 

物の数を集計するカウンターです。
価格 ¥115
機能
1. ポートレート・ビュー:カウンター画面は一つ。
2. ランドスケープ・ビュー:カウンター画面は二つ。
3. カウントした数は、メールで送信できます。
4. カウントした数を自動で保存します。

2011/01/17

§3.7 プロパティ-iPhone SDKの教科書より

プロパティの機能を使って、メソッドを簡潔な記述にする。

@property(オプション指定) データ型 プロパティ名;

//利用するクラスのヘッダ・ファイルの読み込み
#import (Foundation/Foundation.h>

//クラスの宣言
@interface Ball:NSObject
{
//インスタンス変数の宣言
float size; //大きさ
}

//プロパティの宣言
@property float size; //オプション指定は省略

@end


クラスの実装で、@synthesizeを用いて以下の形式でプロパティの実装を指示する。

@synthesize プロパティ名;

//ヘッダ・ファイルの読み込み
#import “Ball.h”
//クラスの実装
@implementation Ball
@synthesize size;

@end

このプロパティを使うには、インスタンス名とプロパティ名を .(ドット)でつなぐ。

インスタンス名.プロパティ名

//Ballクラスのインスタンスを生成して初期化する
Ball *myBall = [[Ball alloc] init];

//sizeプロパティに値を代入
myBall.size=20.5;

//取得した値の確認
NSLog(@”myBallSize= %f”, myBallSize);

//インスタンスを解放
[myBall release];

§3.6 クラスの実装-iPhone SDKの教科書より

拡張子.mのソースコード・ファイルに書く。

#import “ヘッダ・ファイル名”
@implementation クラス名
メソッドの実装
@end

//ヘッダ・ファイルの読み込み
#import “Ball.h”

//クラスの実装
@implementation Ball

//sizeメソッドの実装
-(void)setSize:(float)newSize
{
size=mewSize;
}

@end

ヘッダ・ファイルでは宣言しなかったメソッドを実装してもよい。

Ballクラスの利用
//Ballクラスのインスタンスを生成して初期化する
Ball *myBall=[[Ball alloc] init];

//sizeの設定
[myBall setSize:10.0];

//sizeの取得
float myBallSize=[myBall size];

//取得した値の確認
NSLog(@”myBallSize= %f”, myBallSize);

//インスタンスを解放
[myBall release];

§3.5 クラスの宣言-iPhone SDKの教科書より

クラスは、クラスの宣言と実装に分けて書く。
クラスの宣言は拡張子が.hであるヘッダ・ファイルに書く。
クラスの実装は拡張子が.mであるソースコード・ファイルに書く。

Ball.h

Ball.m

ひとつのファイルにクラスと宣言と実装を書いてもよい。
ひとつのファイルで、複数のクラスを書くこともできる。

#import <ヘッダ・ファイル名>
@interface クラス名:スーパークラス名
{
インスタンス変数の宣言;
}

+(戻り値の型)クラス・メソッド;
-(戻り値の型)インスタンス・メソッド;

@end

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//利用するクラスのヘッダ・ファイルの読み込み
#import (Foundation/Foundation.h> //NSObjectクラスを宣言している

//クラスの宣言
@interface Ball:NSObject
{
//インスタンス変数の宣言
float size; //大きさ
}

//メソッドの宣言
-(float)size;
-(void)setSize:(float)newSize; //引数のある場合

@end

スーパークラスの指定は必須である。スーパークラスを必要としない場合は、NSObjectを指定する。

引数が2個以上あるメソッドであれば、キーワードと:(コロン)を置いて、2番目以降の引数の型と引数の名前を指定する。

-(戻り値の型) メソッド名;

-(戻り値の型) メソッド名: (引数の型) 引数名;

-(戻り値の型) メソッド名: (引数1の型) 引数名1 キーワード名: (引数2の型) 引数名2;

§3.4 クラスとメソッド-iPhone SDKの教科書より

メソッドには、クラス・メソッドとインスタンス・メソッドがある。

allocメソッドは、クラス・メソッド。(NSStringクラスに対して使っているから)
initメソッドは、インスタンス・メソッド。(NSStringクラスのインスタンスに対して使っているから)

プラス記号は、クラス・メソッドであることを示す。
マイナス記号は、インスタンス・メソッドであることを示す。

+ stringWithString:
- initWithString:

クラスの継承は複数回行われることも多い。

NSString : NSObject

NSObjectクラスは、ルート・クラスである。

§3.3 インスタンスの管理と自動解放-iPhone SDKの教科書より

インスタンスはリファレンス・カウンタという数値を持つ。
最初の数値は1だ。
releaseメソッドはリファレンス・カウンタの値を1減らす。
リファレンス・カウンタが0になったインスタンスは破棄され、メモリから消滅する。
リファレンス・カウンタの値を1増やすためには、retainメソッドを使う。

retain リファレンス・カウンタの値を1増やす。
release リファレンス・カウンタの値を1減らす。

autorelease インスタンスの自動解放を指定する。

name=[[[NSString alloc] initWithString:@”Masayuki”] autorelease];

§3.2 インスタンスの生成と解放-iPhone SDKの教科書より

インスタンス=[クラス名 生成メソッド];

インスタンス=[インスタンス 初期化メソッド];

インスタンス生成メソッド alloc
インスタンス初期化メソッド init

name=[NSString alloc];
name=[name init];

size=[name length];

処理が終わればインスタンスを解放する。

release インスタンスを解放すうる。

[name release];

メソッド呼び出しによってオブジェクトが戻り値として返される場合は、[ ]を多重化してメソッドを呼び出せる。

name=[[NSString alloc] init];

文字列定数を引数としてinitWithString:メソッドによって文字列を初期化すれば、指定した文字列定数と同じ文字列を持てる。

name=[[NSString alloc] initWithString:@”Masayuki”];

引数のインスタンスやメソッドをnilという記号で表せば、それは何も指定しないことを表す。
C言語ではNULLを使う。

§3.1 Objective-C言語 変数宣言とメソッド呼び出し-iPhone SDKの教科書より

変数の型 変数の名前;

変数がオブジェクトであれば、変数の型をクラスの名前とし、変数名の前に*(アスタリスク)を付ける。
クラス名 *変数の名前;

NSString *name;

どんなクラスのインスタンスでも表せる宣言として、id型を用いることもできる。
クラスが特定できる場合は、id型は使わない。id型では、変数の前にアスタリスクをつけない。

id name;

アスタリスク付きの変数は、参照する場合は変数名にアスタリスクを付けない。
文字列定数は、@を前に付け、”(ダブルクォテーション)でくくって書く。

name=@”Masayuki”;

アスタリスク付きの変数は、データを保持するのではなく、データへのポインタ(データのメモリ上の住所)を持つことを意味する。ポインタはデータを指し示すデータだ。

オブジェクトのメソッドを呼び出すためには、[ ]の中にオブジェクトをメソッドを記述する。

[オブジェクト メソッド];

変数(戻り値)=[オブジェクト メソッド];

int size=[name length];

引数を1つもつメソッドは、:(コロン)が付く。

int result=[name compare: @”Takeko”];

引数が2個以上あるメソッドであれば、キーワードと:を置いて、2番目以降の引数の型と引数の名前を指定する。

[オブジェクト メソッド名];

[オブジェクト メソッド名: (引数の型) 引数名];

[オブジェクト メソッド名:(引数1の型) 引数名1 キーワード名: (引数2の型) 引数名2];

プログラムの実行結果を確認するには、NSLog関数を用いる。

NSLog(@”文字列のサイズは %d です。”, size);

表示文字列中に指定する変数がオブジェクトであれば、%@を用いる。

NSLog(@”名前は %@ です。”, name);

§1.5 制御構造-iPhone SDKの教科書より

if(条件式)
{
   条件が満たされた場合の処理;
}
else
{
   条件が満たされなかった場合の処理;
}

== 値が等しい
!=  値が等しくない
>   値がより大きい
>= 値がより大きいか等しい(以上)
<   値がより小さい
<= 値がより小さいか等しい(以下)

value=50;
if(value>10)
{
   printf(“値は10より大きいです。\n”);
}
else
{
    printf(“値は10以下です。\n”);
}

switch(condition)
{
   case 値1:
     条件式が値1であるときの処理;
     break;
    case 値2:
    条件式が値2であるときの処理;
     break;
    default:
     条件式が上記の値のいずれでもない時の処理;
    break;
}

value=2;
switch(value)
{
   case 1:
    printf(“値は1です。\n”);
break;
case 2:
printf(“値は2です。\n”);
break;
default:
printf(“値は1でも2でもありません。\n”);
break;
}

for(初期化式; 条件式; 更新式)
{
繰り返す処理;
}

for(value=0; value<5; value++)
{
printf(“値は %d です。\n”, value);
}

§1.4 関数- iPhone SDKの教科書

戻り値=関数の名前(引数1, 引数2);

//サイン関数はsinでmath.hに宣言されている。

#include

double result;
result=sin(60.0);

result=sin(60.0*2*3.1416/360.0);

戻り値の型 関数の名前(引数1の型 引数1の名前, 引数2の型 引数2の名前)
{
return 戻り値;
}

#define PI 3.1416 // 円周率
double eadian(double deg)
{
double rad;

rad=deg*PI/180.0;
return rad; //計算結果を戻す
}

double radian(double deg); //radian関数の宣言

result=sin(radian(60.0));

result=cos(radian(60.0));

§1.3変数と演算- iPhone SDKの教科書より

変数の型 変数の名前
int              cost           ;
int              cost, result; (複数の変数宣言)

基本的なデータ型
int      整数
char     文字
float    実数(単精度浮動小数点実数)
double   実数(倍精度浮動小数点実数)

変数=値;
変数=計算式;

cost=1000;

int cost=1000;

result=cost*4;

#include
int main()
{
   int cost, result;
   cost=1000;
   result=cost*4;
   printf(“計算結果は %d です。\n”, result);
}

result=cost-100*4+200;

result=(cost-100)*4+200;

result=result+1;

result+=1;

result++;

§1.2 C言語のプログラム- iPhone SDKの教科書より

Objective-Cを学ぶには、その前提となるC言語を学ぶ必要があります。
#include                                //ヘッダ・ファイルの読み込み
int main()                                        //int 戻り値の型, main 関数名, () 引数の指定
{                                                      //ブロックの始まり
  printf(“Hello, World!”);
}                                                      //ブロックの終わり

main関数:main.cに書かれてある。

プログラムの定義や宣言:ヘッダ・ファイル(.h)に記述。
ヘッダ・ファイル:#includeによって読み込まれる。

ヘッダ・ファイルの2つの指定
1)<   >で囲む:システム的なヘッダ・ファイルとして扱われる。
2)“ “で囲む:まずソースコードファイルと同じフォルダからヘッダ・ファイルを探し、見つからないとき標準ライブラリのフォルダが検索される。

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩
iPhoneアプリを初めて開発する開発者にとって、とてもよい解説書だと思います。非常に噛み砕いて書かれてあり、サンプルも作りやすいと思います。

赤松 正行
秀和システム ( 2009-03-18 )
ISBN: 9784798022321

スマートフォンのためのHTML5アプリケーション開発ガイド―iPhone/iPad/Android対応

スマートフォンのためのHTML5アプリケーション開発ガイド―iPhone/iPad/Android対応
この本は、スマフォンのHTML5を理解したい初心者にとって、非常に分かりやすい内容だと思います。オススメです。

クジラ飛行机
ソシム ( 2010-10 )
ISBN: 9784883377282

2011/01/09

iPhoneアプリ成功の法則

iPhoneアプリ成功の法則
iPhoneアプリを誰よりも先に開発して成功を修めた開発者たちの開発ノウハウを明かした為になる一冊。どんどん増えていくiPhone Appの世界で成功を目指してリリースしていくには!?

日経BP社出版局
日経BP社 ( 2009-12-17 )
ISBN: 9784822284107