iPhone&Androidプログラミング記: iPhoneプログラミング
英語─上達しないのは努力不足が原因ではなかった!
英語が話せない…を解決する博士開発の噂の英語教材!返品保証付!

2009年06月03日

iPhoneのBluetoothでpeer to peerをやってみた

iPhoneのBluetoothでpeer to peer

次期OSのiPhone OS 3.0で追加されるAPIでBluetoothを利用したpeer to peerが出来るようになります。

当然のようにDeveloper Forumsの方で色々と書き込まれています。
なので自分でもどんな感じにやるのか見てみたいなぁと思ってやってみました。

P2Pを実装するためのFrameworkが新たに追加されており、そのFrameworkを利用するととても簡単にP2Pが可能でした。
P2P用の設定を3行くらい書いてあとはカメラを起動する時のようにSHOWってやると勝手にP2Pのための処理を始めてくれます。
あとは接続相手が見つかった時などのCallBackに適宜処理を書くだけです。

単純なP2Pの実装であればすっごく簡単に実装できてしまいます。
逆にこういう事やあんな事がしたいと思った時にはいじれる部分が少なすぎて困るという事にはなってしまうかもしれません。

反応速度はさすがはBluetoothという感じで、ほとんどラグを感じる事はなく、A端末で□を動かしてその位置情報をB端末に送ってB端末の□を移動させるという物ですが、早かったです。
まだ簡単な試作なのでどの程度の負荷があるかは実際に何か作ってみないとわかりませんが、将棋やチェスやリバーシのような物であれば全く問題にならないでしょう。

P2Pがわかる本 (なるほどナットク!)
オーム社
発売日:2005-10
発送時期:在庫あり。
ランキング:110827
おすすめ度:4.5
おすすめ度4 P2Pのビジネス適用
おすすめ度5 バランスとれた内容で、分かりやすいです。
おすすめ度4 サーバなしでどう他人に説明?


posted by ラキシス at 19:07 | Comment(0) | TrackBack(0) | iPhoneプログラミング | このブログの読者になる | 更新情報をチェックする

2009年05月28日

iPhoneアプリ開発で役立つメモリリーク等を静的解析するツール

iPhoneアプリに限った話ではないですが、メモリの管理は大切です。
メモリは無限ではなく有限なので、必要な時に確保して不要になった時は解放する必要があります。
そのメモリ管理を怠ると、解放しないまま次のメモリを確保してしまい、解放するためのポインタ情報を失ってしまったりします。
そんな事にならないようにしなければいけません。

そのメモリの確保・解放が正しく行われているかを静的に解析するための便利なツールに「clang」というものがあります。
まずは以下からツールをダウンロードします。

□ LLVM/Clang Static Analyzer
  http://clang.llvm.org/StaticAnalysis.html

現在の最新版は「checker-0.209.tar.bz2 (built May 18, 2009) 」

ダウンロードしたら解凍します。

解凍したら、解凍したファイルを「/usr/local/bin/」へコピーするのですが、普通にはFinderでそのフォルダへ移動する事はできません。
まずはFinderを開いて、上のメニューの移動から「ファルダへ移動」を選択します。
そこに「/usr/local/bin/」を入力します。
そうするとフォルダへ移動する事ができます。

フォルダへ移動できたらさっきのファイルを全てコピーします。

これでclangを使う事ができます。

そしたらターミナルを開いて、静的解析したいプロジェクトのフォルダへ移動します。

cd /Users/ユーザ名/Desktop/MyProject


ビルドしたファイルが残っていると正しく静的解析がされない事があるので、クリーニングをします。

xcodebuild clean


クリーニングが終わってから以下のコマンドを実行すると静的解析が始まります。

scan-build -o ~/Desktop/ xcodebuild


「-o ~/Desktop/」は、デスクトップに解析結果のHTMLファイルを保存するという事です。
色々なオプションがありますが、基本的には以下のようなオプションでいいかと思います。

scan-build --view -o ~/Desktop/ xcodebuild

こうすると、静的解析が終わった後に問題があればブラウザを起動してレポートを表示してくれます。
問題がなければそのまま止まります。

注意として「すべての構成のベースSDK」がDeviceになっているとコンパイラが見つからないというエラーでビルドに失敗します。
なので、Simulatorにしなければいけません。
場所はプロジェクトの情報の一般タブの下の方にあります。

上記のコマンドを毎回実行していると面倒くさいので、AppleScriptを書いておくと楽です。
例えばこんな感じです。

on run
tell application "Terminal"
activate
(do script with command "
cd /Users/MyName/Desktop/MyProject
xcodebuild clean
scan-build --view -o ~/Desktop/clang xcodebuild
")
end tell
end run


clangを使う事で80%くらいの問題は解消できます。
あとの20%はInstrumentsを使って潰していくしかないです。

posted by ラキシス at 17:04 | Comment(0) | TrackBack(0) | iPhoneプログラミング | このブログの読者になる | 更新情報をチェックする

2009年05月20日

ユメみるiPhone「クリエイターのためのiPhone SDKプログラミング」を読んでみました

ユメみるiPhone
―クリエイターのためのiPhone SDKプログラミング

を読んでみました。

Amazonでも中を少し見ることが出来るようになっていますが、目次とページ最後の索引が載っているだけで、ほとんど内容を知ることは出来ません。

全208ページの本ですが、目次を見ると開発に関する内容は160ページほどで、30ページほどはインタビュー記事になっています。

昨日はプログラマーという観点で本の評価をしてしまいましたが、よくよくタイトルを確認してみるとクリエイターのためのと書かれています。
つまり、こんなアプリがあるといいなぁとか、面白いアイディアがあるんだけど何かで形に出来ないだろうかという企画者向けの本であるという事です。

なので、プログラマーが知りたいような技術的解説は皆無だと思ってください。

クリエイターという視点で読んだ場合、とりあえずiPhoneでアプリ作るんだったら何を揃えないといけないのかとか、iPhoneアプリの開発でどんなところまでいじれるのかなどを書かれています。
図解やサンプルコードは多くなく、文章による説明が多いです。
この辺りもプログラマー向けでは無いのが感じられました。

最後のインタビュー30ページは4人のデベロッパーによる対談記事で、アプリ開発の思い出話という感じでした。

その他の技術系本の紹介に5ページほど使ってたりして、なんだかなぁという感じです。

アイディアがいっぱいたまっていてiPhoneで形にしてみたいけど、とりあえず何が必要になるかわからないという人で、お金に余裕がある人は買ってもいいのではないでしょうか。

個人的には1500円くらいだったらお勧めできるかなぁと言う内容でした。

ユメみるiPhone―クリエイターのためのiPhone SDKプログラミング
ワークスコーポレーション
発売日:2009-05
発送時期:通常2〜4週間以内に発送
ランキング:303
おすすめ度:3.5
おすすめ度2 誤字脱字
おすすめ度5 自作アプリにユメを乗せる方法が書かれている本



本屋へ行ったのは上記のユメみるiPhone―クリエイターのためのiPhone SDKプログラミングが目的ではなく、この本が無いか見に行ってきました。

プログラマのための論理パズル
難題を突破する論理思考トレーニング


ひそかに話題になっているようで、Amazonでも他のオンラインショップも在庫切れの状態です。
発行部数が少なく、本屋さんの入荷部数も少なかったのかなと思います。
本屋に行って探してみたのですが棚には見付からず、店員さんに聞いたのですが、やはり在庫切れでお取寄せになりますと言われました。

他の本屋も回って置いてなかったらお取寄せをしようと思っています。
近所の本屋で見つけられた人はラッキーですね!

プログラマのための論理パズル 難題を突破する論理思考トレーニング
オーム社
吉平 健治(翻訳)
発売日:2009-03-26
発送時期:一時的に在庫切れですが、商品が入荷次第配送します。配送予定日がわかり次第Eメールにてお知らせします。商品の代金は発送時に請求いたします。
ランキング:507
おすすめ度:5.0
おすすめ度5 ソフィスティケイテッドなパズルゲームが好きな人におすすめしたい本です。
おすすめ度5 まさに思考力の筋トレ
おすすめ度4 パズルにあって教本にあらず
おすすめ度5 パズルにより考える力を鍛える本



同じようなことが年末頃にもあり、買えずじまいになった本があります。
それが

ゲームプログラマになる前に覚えておきたい技術

セガで新人教育などをしていた人が書いた本で、ゲーム会社に入りたいなら、こういった事を勉強しておいて欲しいと言う願いで書かれた本です。

年末年始はお金を使い事が多いので年末前に本屋で見ていたのですが、年が明けてからお金に余裕があったら買おうと思って先送りにしたらすっごい注目を浴びたらしく、どこもかしこも在庫切れになってしまった本です。
在庫切れの状態が1ヶ月くらい続いたのですが、増刷され本屋には山積みになっていました。

内容もすばらしく、ボリュームもすごく多いのに4700円という激安価格!
ゲーム系の専門学校のプログラマ志望の学科では授業の教科書として使った方がいいと思う内容です。

ゲームプログラマになる前に覚えておきたい技術
秀和システム
発売日:2008-11-15
発送時期:一時的に在庫切れですが、商品が入荷次第配送します。配送予定日がわかり次第Eメールにてお知らせします。商品の代金は発送時に請求いたします。
ランキング:1558
おすすめ度:5.0
おすすめ度5 ゲームを作りたい方へ
おすすめ度5 基礎を習得して凝り固まった頭が少しほぐれました
おすすめ度5 本物の初心者向け参考書
おすすめ度5 初級プログラマが一人でゲームをつくれるようになるための本。
おすすめ度5 良書です。が、ある程度のプログラミングスキルが必要

posted by ラキシス at 15:40 | Comment(0) | TrackBack(0) | iPhoneプログラミング | このブログの読者になる | 更新情報をチェックする

2009年05月19日

AppleからApple Push Notification Serviceのテスト協力要請

またAppleからメールが届いていました。
SDKの新バージョンが出ました〜のメールかなぁと一瞬思ったのですが、Apple Push Notification Service の大容量送信テストをしたいから手伝って下さいと言うものでした。

このメールは以前にPush Notification のアプリ開発のためにSSL Certificateを取得した人に届いているようで、全てのデベロッパーに送信されているものではなさそうです。

なのでDeveroper Forumsの掲示板を覗いてみると

A:テストの協力要請来てるけどどうしてる?
B:そんなメール来てないよ?
A:×××って件名のメール来てない?
B:来てないよ。
A:コピペするからちょっと待ってな。

みたいなやり取りがあり、ちょっと面白かった。


当然の事ながらこのテストが米国向けのため、iTunes Storeに登録してるIDの所属が日本だとちょっと面倒だったりします。
しかしまぁ特に問題も無くインストール出来ました。
48時間以内にPush送信来なかったら連絡くださいとあったので、いつ来るかなぁとちょっと楽しみ。

【余談】
メールをエキサイト翻訳に通したら「U.S.English」が米国のイギリス人などと翻訳されて思わず笑ってしまった。


最近発売されたiPhone SDKの本の紹介。
最近は息抜きがてらAmazonを見る事が多くなっています(汗)

ユメみるiPhone―クリエイターのためのiPhone SDKプログラミング

とても惹きつけられるタイトルの本です。

本の説明にプログラミングをやったことが無い人でも大丈夫という事が書かれているような胡散臭い本ですが、ランキングが意外と高いので売れているのかな。
これからプログラミングを始める人もこれ1冊で技術が身につきますという文章に釣られて買った人が多いのですかね・・・

まだ読んでいないので本当にプログラミングをした事が無い人でも技術を身に付けられてしまう本かもしれません!
あとで本屋に立寄ってみようかな。
ユメみるiPhone―クリエイターのためのiPhone SDKプログラミング
ワークスコーポレーション
発売日:2009-05
発送時期:通常2〜4週間以内に発送
ランキング:179

タグ:apple
posted by ラキシス at 16:10 | Comment(0) | TrackBack(0) | iPhoneプログラミング | このブログの読者になる | 更新情報をチェックする

2009年05月15日

UIImageを戻り値として返す時に気を付けないといけない事

UIImageを戻り値として返す場合、そのUIImageが「initWith〜」の形式でallocしているのは推奨されていないようです。

例えばこんな書き方。


- (UIImage*) getImageFromNumber:(int)number
{
//画像ファイルの読み込み
return [[UIImage alloc] initWithContentsOfFile:imagePath[number]];
}


なぜダメなのかということはよく分からないのですが、allocの際にretainされるので、retainされたままreturnするのは良くないよ。
という事のようです。
iPhone OS ではガーベジコレクションが採用されていないため、メモリ管理はretainとreleaseによって行われます。
なので、この辺りには気を使わないといけないです。

で、じゃあどう書けばいいんだ?という事になります。

メソッドにはallocをしながらインスタンスを作成してくれるメソッドがあります。
メソッドの前に「+」で宣言されている物です。
allocされないのは「ー」です。

UIImageについてAPIリファレンスを検索すると「+」のメソッドがあるのが分かると思います。
「imageWith〜」で始まるメソッドです。

という事で、以下の様に書くのが正しいです。


- (UIImage*) getImageFromNumber:(int)number
{
//画像ファイルの読み込み
return [UIImage imageWithContentsOfFile:imagePath[number]];
}


なかなかメモリ管理するのは大変ですが、こういった細かい部分が品質の向上につながると思うので、きっちりやっておかないといけないですね。


2009.05.18 追記
kudaraさんからのコメントの通り、以下のようにautoreleaseを付けておけば大丈夫でした。


- (UIImage*) getImageFromNumber:(int)number
{
//画像ファイルの読み込み
return [[[UIImage alloc] initWithContentsOfFile:imagePath[number]] autorelease];
}


ご指摘ありがとうございました。

Sony Style(ソニースタイル)
posted by ラキシス at 19:10 | Comment(2) | TrackBack(0) | iPhoneプログラミング | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。