AppKiDo-for-iPhoneがリリース!
CococaプログラマならおなじみのUtility. AppKiDoのラインナップに、iPhoneアプリ開発に特化したAppKiDo for iPhoneが加わっています!! 待ってました!!!
http://homepage.mac.com/aglee/downloads
AppKiDoは、Cocoa APIのリファレンスのブラウザーです。XcodeのDocumentationのウィンドウとほとんど同じなのですが、単体のアプリケーションとして動作するため、より高速かつ簡単に使うことができます。特にクラスの継承関係をきちんと理解して表示してくれる点が非常に便利です。
どういうことかというと....
たとえば、NSMutableArrayのインスタンスメソッドを調べているとします。XcodeのDocumentationのウィンドウ、もしくはヘッダファイルを直接参照した場合、NSMutableArrayのインスタンスメソッドはすべて網羅できますよね。探しているメソッドが見つからなくて、おかしいなぁ... としばらく考えて、そのメソッドが実はNSMutableArrayのメソッドではなく、NSArrayから継承しているメソッドだった!と気づく... そんな経験をしたことはありませんか。
AppKidoならそんな悩みは無用です。NSMutableArrayのインスタンスメソッドと継承しているメソッドの両方を、またはどちらかをワンクリックで表示することができます!!
OS Xアプリの開発で重宝していたAppKiDoなんですが、いままではiPhone用のUIKitのAPIの表示には対応していませんでした(例のNDAのせいです)。先日、ようやくiPhone用のAppKiDoがリリースされ、これでXcodeのDocumentationともおさらばできそうです。
一度使い出すと手放せなくなるはず! こんなすばらしいアプリを無償で公開されている Andy Leeさんに感謝!!
http://homepage.mac.com/aglee/downloads
自作アプリをApp Storeで世界に向けて販売できる!! iPhone SDKプログラミング大全 (MacPeople Books) | |
木下 誠 アスキー・メディアワークス 2009-01-06 売り上げランキング : 55 Amazonで詳しく見る by G-Tools |
OpenGL ESの参考書
このところ、OpenGL ESをつかったグラフィックにチャレンジしてます。そのなかで参考になった資料を軽く紹介。
まず前提として、僕自身もともとOpenGLのプログラミングを2年くらいやっていたということを理解していただく必要があります。もう4, 5年以上前の話で、当時はMac OS X上をプラットフォームとして使っていました。
当時、OpenGLを始めるにあたって参考にしたのは、ずばりこの三つです。
1. GLUTによる「手抜き」OpenGL入門 (和歌山大学 システム工学部 デザイン情報学科 床井浩平さん)
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
OpenGLはMacでもWindowsでも使えるプラットフォームによらないAPIですが、描画を行うウィンドウを作ったりするために、実際にはOSのAPIを叩かざるを得ない部分もあります。GLUTはThe OpenGL Utility Toolkitの略で、そういったOSとOpenGLのあいだの煩雑な部分を代行してくれるツールきっとです。GLUTを使うことで、OpenGLの本質的な部分に集中してプログラミングが可能です。
2. NeHe Productions: OpenGL Lessons
http://nehe.gamedev.net/
なにごとも習うより慣れろ。NeHeのOpenGLサンプル集です。現在50近いレッスンが公開されています。解説も丁寧で、これを追って行くだけでOpenGLプログラミングの実際をしることができます。
3. OpenGL プログラミングガイド
OpenGLプログラミングガイド 原著第5版 | |
松田 晃一 ピアソンエデュケーション 2006-12-19 売り上げランキング : 33215 おすすめ平均 待望のバイブルついに OpenGL 2.0対応で帰ってきました お勧めです! Amazonで詳しく見る by G-Tools |
最後は有名な「赤本」です。これは上記二つで勉強した後にリファレンス代わりとして買いました。当時はたしかまだ日本語版がなく、英語版を使いましたが、概念とAPIの名前が一致するので、それほど苦ではありませんでした(例えば FrustumとglFrustum, OrthogonalとglOrtho)
4. これはおまけ
OpenGL Programming on MAC OS X: Architecture, Performance, And Integration | |
Robert P. Kuehne Addison-Wesley Pub (Sd) 2007-12-21 売り上げランキング : 22147 Amazonで詳しく見る by G-Tools |
NSOpenGLViewの使い方、QuartzとOpenGLの関係などを知るにはいいです。
で、iPhoneですが、今回 iPhone上でのOpenGLを勉強するにあたって二つのポイントがありました。
1. だいぶ忘れてしまっているので、OpenGL自体を復習したい! 笑
2. OpenGL ESとPC版のOpenGLとの違いを知りたい!
ご存知かとは思いますが、iPhoneではOpenGLから派生したモバイルデバイス用のOpenGL ES 1.x系のOpenGLが採用されています。 PCで使っていたOpenGL関数の中には使えないものがあったり、逆にOpenGL ES独自の拡張があったりするため、その差を知ることが非常に重要になります。
そこでいろいろな本を漁ってみた結果、ズバリこの本一冊でOK、自信をもってオススメできる!という本が見つかりました。それがこれです。
Mobile 3D Graphics: With OpenGL ES and M3G (Morgan Kaufmann Series in Computer Graphics) | |
Kimmo Roimela Morgan Kaufmann Pub 2008-03-31 売り上げランキング : 20703 Amazonで詳しく見る by G-Tools |
前半は、3Dグラフィックスの基礎から入ります。3次元空間の2次元平面への射影を、基本的な線形代数を使って解説します。そのあとで、レンダリング、ラスタライズといった3Dグラフィックスの基本的な流れや、ライティング、テクスチャなどはもちろん、アニメーションの基礎などのテクニックを解説します。この辺は、Direct X、OpenGLなどのAPIを問わず、役に立つ基本的な考え方を解説しているのですが、随所に「これはOpenGLではこのようなAPIで実現してます。詳しくはこの後、○○ページで」的な説明があるのが非常に実践的です。
後半はお待ちかねのOpenGL ESの解説です。PC用のOpenGLとの違いに焦点を当てた記述が多いのが特徴です。メモリやプロセッシング能力の面でいろいろと制限の多いモバイルデバイスの実情を考えて、パフォーマンスの向上、メモリ消費の低減などの最適化に比較的多くのページを割いているの見逃せません。
最後、JavaベースのAPI, M3G(Mobile 3D Graphics API for Java ME)の章がいくつかあります。こちらはまだ読んでませんが、ケータイで3Dプログラミングをするのに役に立つでしょう。
全体的に、文章もよみやすくターゲットを熟知した良書だと言えます。ただし、基礎的な考え方から最適化までをカバーしているため、一つ一つのトピックに関しての深みには欠ける感があります。ある程度OpenGLの知識のある人がOpenGL ESについて知りたい場合、もしくはこれからOpenGLを始めるきっかけとなる本と考えた方がいいでしょう。いずれにしても、上で紹介した赤本などのより網羅的な本と組みあせて読み進められることをオススメします。
最後になりましたが、OpenGL ESでAmazonなどを検索すると、次の本が一段最初に出てくるかと思います。
OpenGL ES 2.0 Programming Guide (OpenGL) | |
Aaftab Munshi Addison-Wesley Professional 2008-07-25 売り上げランキング : 7846 Amazonで詳しく見る by G-Tools |
この本はタイトルの通り OpenGL ES 2.0の解説本です。OpenGL ESには、メジャーバージョン間の下位互換性がないため、OpenGL ES 1.xを2.0のサブセットと考えることはできません。この本を買っても、iPhone上の開発にはほとんど役に立たないどころか、混乱の元になるだけなのでおすすめできません。(かくいう僕も、購入後にそのことに気づいた人間の一人です) ご注意下さい。
この記事はid: nakamura001さんの記事に触発されて書きました。参考になるポスト、ありがとうございましたー!
http://d.hatena.ne.jp/nakamura001/20081108/1226166965
最大のテクスチャサイズ
メモ: iPhoneでつかえるテクスチャの最大サイズ 1024 x 1024
GLint maxTex;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTex);
NSLog(@"max texture size: %d", maxTex);
iPhone Dev Forum Japan
iPhone Dev Forum Japan
iPhoneアプリ開発者フォーラム : iPhoneアプリケーション開発に関する技術情報の交換を目的としたフォーラム
AppleもiPhone開発者向けの公式フォーラムをスタートしたようですが、やっぱり英語でのやりとりは敷居が高いですよね。そんな僕やあなたのために、日本語のフォーラムを作ってみました。
扱うトピックは、iPhoneアプリケーションの開発と販売に関することなら何でも。
今のところ、以下のようなカテゴリーが用意されています。
- iPhone SDK
- Webアプリ開発
- 初心者コーナー (Objective-C, Xcodeの使い方)
- チュートリアル
- AppStore販売
- 雑談
フォーラムが盛り上がれば上がるほど、皆さんの開発に役に立つ日本語の開発情報が集積されることになります。
今後ともよろしくお願いします。ぜひみんなで盛り上げていきましょう!!
iPhoneをスリープさせない
一定時間、ユーザからの入力がないと、画面が消えロックされますよね。普通のアプリだと、そんなに問題にはなりませんが、ずっとスクリーンをぼーっと眺めているようなアプリ (KoiPondとかBloomとか?)だと、困ったことになります。そこで強制的にスリープさせないようにすることもできます。
[UIApplication sharedApplication].idleTimerDisabled = YES;
これだけ。Idle (何もしてない)とスリープするということで、Idle Timerと呼ばれているようですね。
スクリーンがつきっぱなしになるので、バッテリー消費などの点からいってもあんまり多用しない方がいいかと思います。
ステータスバーを隠す
ステータスバー - iPhoneのスクリーンの一番上の時刻や電波の強さがでているバー
ゲームなどでフルスクリーンが必要な場合、このステータスバーを消すことになるかと思います。ステータスバーを消すのは簡単。
[UIApplication sharedApplication].statusBarHidden = YES;
m19さんに教えていただきました。Info.plistを編集することでも同様の効果を実現できます。BooleanのUIStatusBarHiddenというキーを追加して、チェックボックスをチェックしてあげてください。こちらの場合は、アプリが起動した時点でビューがロードされる前にStatusバーが消えています。
あとは、フルスクリーンにしたいviewのサイズをスクリーンのサイズに合わせてあげればいいはず。
fullscreenView.bounds = [UIScreen mainScreen].bounds;
ただ、これだとなぜかこんな風になってしまいます。空白ができるのはなんででしょう? 不思議?
[UIScreen mainScreen].boundsのサイズは(320, 480)です。仕方ないので、これを無理矢理 (320, 500)にするとViewは埋まってくれるのですが... なんだか釈然としませんね。どなたか分かる方がいらっしゃったらぜひ教えてください。
fullscreenView.bounds = CGRectMake(0,0,320,500);