2010-12-27

本を書きました (iOS 4プログラミングブック 第5章/第10章)


(http://twitpic.com/3k6c7o より)

iOS 4プログラミングブック』です。2011年1月27日発売です。

■第5章 マルチスレッド
■第10章 ユニバーサル対応

以上の内容を70ページくらい書かせていただきました。

第5章ではiOS 4で追加されたBlocks、Grand Central Dispatch (GCD)を詳細に説明させていただきました(正確にはBlocksはiOS3.2からですけども)。よくありがちな、こういう機能がありますよ、という軽い紹介ではなく、これ以上ないくらい深追いして書いてしまいました。深追いストにも満足の仕上がりだと思います。Blocksは類書がすでにありますが、Grand Central Dispatchに関しては、少なくとも現時点では、他に類を見ない内容ではないかと思っております。

(追記 2011/1/6)
Blocksの説明に26ページ、Grand Central Dispatch(GCD)の説明に31ページ使っています。

また第10章では、iOS 4だけでなくiOS 3や、複数のデバイスの同時対応方法を書かせていただきました。これまた、こうすればいいんです、みたいなありがちな話で終わるのではなく、なんでこうするのか、どうなるのか、まで深追いしております。これまた深追いストにも満足の仕上がりです。

なお第5章 Blocks、Grand Central Dispatchですが、実はiOS 4限定の話ではなくて、Mac OS Xプログラミングでも通用する話です。Mac App Storeを狙っている方にも第5章を読んでいただければな、と思います。

さらに言えば、FreeBSD(http://wiki.freebsd.org/GCD)、Linux(http://lists.macosforge.org/pipermail/libdispatch-dev/2010-July/000397.html)でもBlocks、Grand Central Dispatchが使えるわけですから、FreeBSDやLinuxをご使用の方も是非読んでいただければ幸いです。





(追記)
編集担当のはっちゃん(@hacchan)です。
写真の白見本ですが、会社のレーザープリンターで出力したカバーなので、ちょっと貧素に写っていますが、実物はマッドPP加工されて、もっとかっちょ良くなる予定です。
仕上がりを楽しみにお待ち下さいませ~(^-^)


とのことですので、持ってるだけでうれしい本にもなりそうです! お待ちくださいませ!

2010-12-24

libfreenectをiOS用にビルドしてみる

まずiOS SDK 4.2用にIOKitのヘッダを準備。


$ sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/IOKit.framework/Headers /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/Frameworks/IOKit.framework


libusbとlibfreenectのソース取得とパッチ


$ ftp -o - "http://git.libusb.org/?p=libusb.git;a=snapshot;h=7da756e09fd97efad2b35b5cee0e2b2550aac2cb;sf=tgz;js=1"|tar xzvf -
$ git clone git://github.com/OpenKinect/libfreenect.git
$ cd libusb-7da756e
$ patch -p1 < ../libfreenect/platform/osx/libusb-osx-kinect.diff


libusb configureとビルド

configure-iphone.sh をファイルに保存


$ sh autogen.sh
$ sh configure-iphone.sh
$ make


libfreenectのビルド


$ cd ../libfreenect/src
$ ln -s ../../libusb-7da756e/libusb ../include/libusb-1.0
$ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 -march=armv6 -miphoneos-version-min=3.1.3 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk -I../include -c *.c
$ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar rcu libfreenect.a *.o


libusb-7da756e/libusb/.libs/libusb-1.0.aと、libfreenect/src/libfreenect.aの出来上がり。

まだ実行ファイルとしてlinkしてませんので何か足りないかもしれません。



言うまでもないことですが、App Storeの審査には通りません。

2010.12.27 追記
iPad 4.2.1だと、Kinectは消費電力が大きすぎる、というエラーで接続できませんでした。iPad 3.2に戻すこともできず。

2010-12-22

MacVim-KaoriYa 20101222

MacVim-KaoriYa 20101222版をリリースしました。

http://code.google.com/p/macvim-kaoriya/

http://macvim-kaoriya.googlecode.com/files/macvim-kaoriya-20101222.dmg

MacVim-KaoriYaのMacVimメニューの「アップデートを確認」よりアップデートをお試しくださいませ。

Vim 7.3.87、MacVim Snapshot 56、香り屋パッチ 20101218ベースです。

q:後、echo 1などを実行しても、実行結果が消えてしまっていたのですが、MacVim Snapshot 56より修正されています。お試し下さいませ。

Entitlements.plist

iOS SDK 4.2を使う場合は、たとえAdHoc用のビルドでも、通常Entitlements.plistは不要。

XcodeがEntitlements.plistを自動生成してくれるからです。

build/プロジェクト名.build/構成名-iphoneos/ターゲット名.build/ターゲット名.xcent

に、Technical Q&A QA1710 Figure 4と同じEntitlements.plistが生成されます。

へたに自分で作るとエラーを喰らいます。ビルド設定「コード署名権限(CODE_SIGN_ENTITLEMENTS)」を削除しましょう。


で、「通常不要」ということは、必要とする場合があるわけですが、

Technical Q&A QA1710
IMPORTANT: An Entitlements file is generally only needed when building for Ad Hoc Distribution or enabling Keychain data sharing. If neither of these is true, delete the entry in Code Signing Entitlements. This will resolve the error.


前述通りAdHoc用ビルドだとしても自動生成されますから、自分でEntitlements.plistを用意しなければならないという場合は、Keychain data sharingのときだけ、ということになります。その場合は、必ずXcodeの「ファイル追加」で生成しましょう。追加>新規ファイル>Code Signing>Entitlementsです。

(調査の経緯は私のtweets 15時〜)

2010-12-20

cocos2d for iPhone 本3冊

iPhone、iPad用の2Dゲームを作るならcocos2d for iPhoneで決まり、と言っても過言ではないですが、そのcocos2d、最近連続して本が出版されてますよ。


Learn iPhone and iPad Cocos2D Game Development
APRESSからPDF版をクーポン使って買うのがお得。
特色: Game Center組み込み方法

Learning Cocos2D
出版予定は2011年5月。Safari Book onlineでrough cut PDF版を買えます。随時アップデートされて、最終的に製品版に。買うなら今。
特色: Advanced Topics (まだ書かれてませんが...)

Cocos2d for iPhone 0.99 Beginner's Guide
packtpubからPDF版を買えば15% off
特色: OpenFeint組み込み方法


以上全部英語ですけども。日本語の本だと、丸々cocos2dの本はまだないですが、以下の本でちょっとだけ扱ってますね。


iPhoneのオモチャ箱 iPhone SDKプログラミング

iPhone SDK開発のレシピ 113個のレシピで学ぶiPhoneアプリ開発の極意


ちなみに私がプログラムを担当したヌカカの結婚、テロメアの帽子、カルシノの贈り物もcocos2dを使ってますよ。

2010-12-14

MacVim-KaoriYa 20101214

MacVim-KaoriYa 20101214版をリリースしました。

http://code.google.com/p/macvim-kaoriya/

http://macvim-kaoriya.googlecode.com/files/macvim-kaoriya-20101214.dmg

MacVim-KaoriYaのMacVimメニューの「アップデートを確認」よりアップデートをお試しくださいませ。

Vim 7.3.81、香り屋パッチ 20101209ベースです。

Ruby 1.8/1.9同時対応になりました。MacPortsでRuby1.9をいれた場合、以下の設定でRuby 1.9を使用できます。


let $RUBY_DLL="/opt/local/lib/libruby.1.9.dylib"


Python 3.1にも対応しています。


let $PYTHON3_DLL="/opt/local/Library/Frameworks/Python.framework/Versions/3.1/Python"


pathogenも入れておきましたので、.vimrcに以下の行を追加するだけで使用できます。


call pathogen#runtime_append_all_bundles()