自己紹介

自分の写真
最近、iphoneアプリをリリースしました。
UxU
無料アプリですので、是非遊んで下さい。 第二弾アプリ:工場夜景写真集 今後も色々なアプリをリリースしていく予定です。
次は、コスプレ or 漫画 or 騎乗日記

2011年2月21日月曜日

NSStringでもクラッシュする場合がある!? =iOS開発=

通常、NSStringを使う場合は、releaseを自動的に行うのですが,

例)
NSString* img1 = [NSString stringWithFormat:@"%@",IMG_AVATER_HAIR_FRONT1];

上記の変数をループで乱発させるとメモリ不足で落ちる場合があります
で、どのように解決するかというと

NSString* img1 = [[NSString alloc]initWithFormat:@"%@",IMG_AVATER_HAIR_FRONT1]];
[img1 release];

としても良いのですが、全てのNSStringに対して行うのは、非効率なので何か良い方法
はないかと探したところ、NSAutoreleasePoolというクラスがあり、

  NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSString* img1 = [NSString stringWithFormat:@"%@",IMG_AVATER_HAIR_FRONT1];
:
:
[pool release];
とすることで、間に挟んだautoreleaseする変数を一括でリリースしてくれます。
よって、メモリがなくなり落ちるという事が解消できます。

2011年2月17日木曜日

EXC_BAD_ACCESSと出た場合の対処方法

NSZombieEnabled

EXC_BAD_ACCESSは良く目にする不正終了メッセージの一つです。

そこで、実行可能ファイルの実行時引数に次のオプションを追加します。

NSZombieEnabled:YES

上記オプションを付けることで、何処でエラーしたのかをある程度教えてくれます。

NSDebugEnabled:YES

上記も同様に追加しておきましょう。


2011年2月16日水曜日

ジオコーディング実装方法 =iphone開発=

iphoneの標準フレームワークでは、逆ジオコーディングは用意されているが
正ジオコーディングがない。

ただ、標準MAPアプリでは、地域名検索が可能である。
何かないかな?と探していたところ[gmgeocoder]というフレームワークがありましたので、
ご紹介します。

ただし、これはネット接続が必要となりますので、ネットワーク接続していない場合は、
エラーとしてあげるなどの考慮は必要ですが、まぁまぁ使えます。

http://code.google.com/p/gmgeocoder/

ちなみに、DLするにはSubvertionが必要です。
svn checkout http://gmgeocoder.googlecode.com/svn/trunk/」でDLできます。


基本的には、文字入力するので、SearchBarと一緒に使います。

//searchBar
if(geocoderSearchBar==nil)
{
geocoderSearchBar = [[[UISearchBar alloc] init] retain];
geocoderSearchBar.frame = CGRectMake(0, 0, self.view.bounds.size.width, 0);
geocoderSearchBar.delegate = self;
geocoderSearchBar.barStyle = UIBarStyleDefault;
geocoderSearchBar.translucent = YES;
geocoderSearchBar.showsScopeBar = YES;
geocoderSearchBar.placeholder =@"検索したい地域を入力して下さい";
[geocoderSearchBar sizeToFit];
[self.view addSubview:geocoderSearchBar];
}

//UISearchBarDelegate


- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
TRACE();
keyboradChk = YES;
[geocoderSearchBar setShowsCancelButton:YES animated:YES];
if (theGeocoder){
[theGeocoder cancel];
[theGeocoder release];
theGeocoder = nil;
}
//具体的には、下の部分がgmgeocoderの実装部分です。
theGeocoder = [[GMGeocoder alloc] initWithAddress:searchBar.text];
theGeocoder.delegate = self;
[theGeocoder start];
}


- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
[geocoderSearchBar setShowsCancelButton:NO animated:YES];
[geocoderSearchBar resignFirstResponder];
}





上記では、ジオコーディングについて
書きましたが、iPhone&android対応する為のコーディングを
地図情報関連を中心に書いた本があります。
オススメですので、一読下さい。

App Store について

□アプリは 3G でダウンロード可能なサイズに

3G でダウンロード可能な 20MB 以内に納める。

□App Store のランキングアルゴリズム

当日の売上×8 + 1日前の売上×5 + 2日前の売上×5 + 3日前の売上×2 のスコアで決定されるらしい。

よって、プロモーション/キャンペーンは期間を集中させたほうが有利です。


例えば、

1.アプリ内のイベントがある場合は、その日をキーに色々なレビューサイトへ投稿

2.値下げを行う

3. TwitterやFacebookでユーザがお得に感じる文面を投稿して喚起させる

カスタムUINavigationBar

UINavigationBarに画像などを組み込みする方法

//色を変更(アプリに合う色合いにする)
[[self.navigationController navigationBar] setTintColor:[UIColor colorWithRed:0.4 green:0.1 blue:0.1 alpha:1]];

//背景画像(横320px)を変更
UINavigationBar *naviBar = [self.navigationController navigationBar];
UIImage *img = [[UIImage imageNamed:@"navigation.png"] stretchableImageWithLeftCapWidth:0 topCapHeight:1];
UIImageView *imgView = [[[UIImageView alloc]initWithImage:img]retain];

imgView.frame = naviBar.bounds;
imgView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
imgView.layer.zPosition = -FLT_MAX;
[naviBar insertSubview:imgView atIndex:0];
[imgView release];

2011年2月8日火曜日

iphone,androidでヒットアプリを出す為にやらなければいけない事

私が感じた事を以下に記します。
決して、これをやれば当たるというものではございません。
ただ、これだけは【やるべき】と感じた事を並べます。
-----------------------------------------------------

[話題性]
■今、存在しないものを提供し、周りに広めたくなるようなユーザ体験を提供する
- マーケットで検索する(現状、無いことを確認してから製作に取り組む)
- 便利な仕掛 or 面白い体験
- 毎日、何気なく行っている行動にアプリを通すと有効な行動になるような仕掛
⇒通勤、仕事、デスクワーク、睡眠、食事、身支度、掃除、洗濯、散歩、買物、TV、インターネット

[実現]
■思い立ったら、吉日。
- 直に、企画書にまとめて、廻りの反応を見る。
- そして、即実行する。

[競合]
■どんなアプリがあり、何が評価されているのか調査
- 同じカテゴリ、同じ系統のアプリを無料/有料問わず調査する。

⇒ 機能をブラッシュUPしてMYアプリに組み込めるか検討する。


[宣伝]
■何処に何を仕掛けるか?
- レビューサイト ⇒ マーケット
- YouTube動画CM ⇒ マーケット or サポートサイト
- 口コミSNS(Twitter,Facebook) ⇒ マーケット
- アフリエイト広告 ⇒ マーケット
- サーチエンジン(キーワード検索) ⇒ サポートサイト[SEO/SEM対策]
- ビラ配り ⇒ サポートサイト or マーケット
- マス媒体 ⇒ 費用対効果を考えると厳しい戦略かも?

[継続]
■毎日起動すると、ラッキーな仕掛を用意しているか?
⇒ 占い、健康、ポイント、アイテム、普段何気なく毎日行っている行動と連動してイベントを起こす

■VerUpをリリース時から計算に入れておくこと
⇒ ver1.3(3回)までは、月1回ペースで上げる事。

2011年2月5日土曜日

スマートフォンについて

1. スマートフォンって?
⇒「電話機能以外の機能を持つ世界共通の仕組みを持つ携帯の俗称です」
 ちなみに、日本の携帯は、iモード(NTTドコモが提供するメールとインターネットを閲覧できるサービス)1999年からスタート開始しました。
 そこで、世界共通ではなく、日本独自に開発され進化を遂げたサービスという事でガラパゴス(独自進化)・ケータイと
     自虐的に言われております。あまりに自虐だった為に、最近では「フィーチャー(特化)フォン」というようになっています。
 OSで言うと、iOS(Apple), Android(Google), Symbian(Nokia), BlackBerry(RIM), Windows Phone(マイクロソフト)が入っているケータイを
     スマートフォンと呼ばれております。

2. 台数 及び ガラケー(フィーチャーフォン)との比較
⇒2010/12 
Android:33.3億台
    Symbian:31.0億台
iOS:16.2億台
RIM:14.6億台
Windows Phone:3.1億台


3. アプリについて
⇒ここからは、AndroidとiOSについてだけの話しに変えます。
     というより、他のOSは日本ではビジネスになりませんので、割愛させて頂きます。

Android:
------------------
アプリ数:100,000以上 (2011/02/03現在)
マーケット:複数乱立している(google Market, au market gmo market, amazon appstore)
レビューサイト:androider(月間:1000万PV), androLib(月間:700万PV), androidnavi(月間:380万PV)

■Androidマーケットの有料アプリ販売はまだ厳しい
- 有料アプリの76%は販売本数50未満、値付けの最頻値は0.99ドル、キャンセル率20-30%

取分:開発者80% / google20%
market登録:25ドル

iPhone:
-----------------
アプリ数:350,000以上(2011/02/03現在)(DL数:100億本突破)
マーケット:app storeのみ
レビューサイト:AppBank (月間:200万PV), Meet-I(月間:160万PV)

取分:開発者70% / apple30%
Developer登録:\10,500円

4. アプリ開発について

android:
-------------------------
言語:Java もしくは AIR(Flash)
開発環境:主にeclipse
開発機:Mac/Windows両方


iOS:
-------------------------
言語:Objective-c
  開発環境:Xcode
  開発機:Mac OS ver10.5以上

5. 今後
⇒「台数は、Android。 サービスはiPhone」

今後、このままの体制で進むとAndroid端末が増えていくと思われます。
但し、アプリ売上と台数では、マッチしていないのが現状です。
今年から、Appleの方針が転換され、1国1キャリア制を敷いていましたが、
    それを辞めて、複数のキャリアに販売を展開する方針を採ってきましたので、
    台数を増やしますし、サービスも拡大する事が予想されております。
GoogleとAppleが台数が増え、特にAndroidは驚異的なスピードで台数を増やしていくでしょう。
よって、ガラパゴスケータイの台数は減り続ける事になるでしょう。
但し、現状そして未来・・・AndroidでNo.1のメーカーが何処が握るかが鍵となるでしょう。
今のまま、混沌としているうちは、台数だけ増えるだけで、サービスが固定化されず
iPhoneの方がビジネスしやすい&使いやすいという流れのままになると思います。
正直、Android/iPhone両方持っておりますし、Androidは複数台所持しておりますが、
開発以外では使いません。
驚きの体験は、現状のAndroid端末では味わうことが難しいでしょう。
使えば、分かります。その違いが。驚くほどに。