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()

2010-11-22

MacVim-KaoriYa 20101122

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

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

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

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

Vim 7.3.63、香り屋パッチ 20101118ベースです。今回は、さらにMacVim-KaoriYaだけの改善がいくつかあります。


■変更点


■netrw scp 要パスワード時にダイアログ表示追加
:e scp://リモートホスト名/パス によりscpを使ってリモートホストのファイルを開くことができますが、今までのバージョンではパスワードの入力が必要だった場合開くことができませんでした。本バージョンより、パスワード入力のためのダイアログが表示されるようになります。scpの機能(SSH_ASKPASS)とシェルスクリプト(macvim-askpass)により実現されています。

■実験的レンダラの文字コード変換失敗時例外対策
実験的レンダラ使用時に、:makeなどの外部プログラム実行時にUTF-8以外の文字列を表示しようとした場合、MacVimが突然終了してしまう不具合がありましたが、本バージョンでは、そのような文字列部分を無視するように対策しました。:makeなどの外部プログラム実行の際は、表示結果をiconvなどでUTF-8に変換することをオススメします。

■IM on/off切り替え時のCursorIM即時反映
IM on/off切替時のイベントを監視するように変更しました。.gvimrcに

highlight CursorIM guibg=Purple guifg=NONE
のように設定することで、IM on/off状態によりカーソルの色を変更することができます。なお本変更はすでにMacVimに取り込まれています。

vimproc shared libraryのみ同梱
VimShell pluginに必要となるvimproc pluginのうち、ビルドが必要なproc.soだけ同梱しました。同梱されているのはproc.soのみとなりますので、他のplugin同様vimproc plugin自体(vimスクリプト部分)のインストールが必要となります。

■実験版プロポーショナルフォント表示対応
実験的にプロポーショナルフォントを使用できるようにしてみました。あくまで実験ですので、カーソル位置がおかしいなどの不具合が含まれています。

  • 「実験的レンダラを使用する」のチェックを外す(実験的レンダラでは使用できません)
  • プロポーショナルフォントを指定する
  • プロポーショナルフォントを使用する設定をON

例:

set guifontwide=
set guifont=AppleGothic\ Regular:h14
set macproportionalfont


■Ruby 1.8/1.9両対応
両対応予定でした... 7.3.058の変更によりRuby 1.9のdynamic loadingができなくなりました。対応検討中です。

2010-11-02

MacVim-KaoriYa 20101102

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

本バージョンではデフォルトでRuby拡張が使用できません。.vimrcに以下の行を追加する必要があります。

let $RUBY_DLL="/usr/lib/libruby.dylib"


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

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

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

Vim 7.3.47ベースで、MacVim snapshot 55相当です(MacVimのChangeLog)。

Vimのバグ修正(skk.vimでのCTRL-Gでアプリケーション終了など)が含まれています。

2010-10-08

「カルシノの贈り物」



私がプログラムを担当しているiPhone/iPad用科学絵本アプリ「カルシノの贈り物」が発売されました!


カルシノの贈り物 無料版
カルシノの贈り物


「カルシノの贈り物」はムームー 森川幸人さん作の科学絵本です。小難しい話をわかりやすくてかわいい絵本にまとめあげています。ほぼ日で立ち読みもできますよ!

前作「ヌカカの結婚」「テロメアの帽子」も面白いです!


ヌカカの結婚 無料版
ヌカカの結婚
テロメアの帽子 無料版
テロメアの帽子


プログラム的には前作から一新。わりと根幹部分をC++からObjective-Cに移行。でもIMP cache使いまくりで速度維持(ってまったくもって速度気にする部分じゃないんですけども)。かなり気持ちいい仕上がりになっております。ソースコード的に。あ、もちろん、触って気持ちいいアプリにもなってますよ! いつ読んでいるかわからないロード時間とか(3Gではちょっともたつくところもありますが...)。画面が一瞬黒くなるとか画面が止まったまま操作できないとか一切ありません!

ぜひダウンロードの上お楽しみくださいませ。

2010-10-07

MacVim-KaoriYa 20101005

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

本バイナリはMac OS X 10.4 tiger 非対応となります。 ビルドすることで10.4でも動作します(http://code.google.com/p/macvim-kaoriya/wiki/Building)

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

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

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

Vim 7.3.19ベースで、MacVim snapshot 55相当です(MacVimのChangeLog)。

2010-08-17

MacVim-KaoriYa 20100817

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

本バイナリはMac OS X 10.4 tiger 非対応となります。 ビルドすることで10.4でも動作します(http://code.google.com/p/macvim-kaoriya/wiki/Building)


20100816版がMac OS X 10.5 Leopardで起動しない不具合を修正しました。

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

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

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

Leopardの方ですでにアップデート済みの方は申し訳ありませんが、手動でdmgをダウンロードしMacVim.appを上書きコピーしてくださいませ。

2010-08-16

MacVim-KaoriYa 20100816

Mac OS X 10.5 Leopardで動作しないことが判明しました。Leopardを使用されている方は20100817版をお待ちくださいませ。

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

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

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

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


  • Vim 7.3ベース
  • MacVim snapshot 53ベース


となっております。

20090802版からのアップデートでは、Mac OS X 10.4 tiger 非対応となっていることにご注意くださいませ(Sparkleの設定により10.4では自動アップデートしないようになっております)。

2010-08-13

MacVim-KaoriYa 20100813

MacVim-KaoriYa 20100813版をテスト用にリリースしました。

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

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

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


  • Vim 7.3e BETAベース
  • MacVim snapshot 52.7ベース


となっております。

2010-07-27

MacVim-KaoriYa 20100805

MacVim-KaoriYa 20100805版をテスト用にリリースしました。

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

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

今回はSparkleによる自動アップデートが可能なはずですので、MacVim-KaoriYaのMacVimメニューの「アップデートを確認」よりアップデートをお試しくださいませ。



となっております。

2010-06-14

MacVim-KaoriYa 20100614

MacVim-KaoriYa 20100614版をテスト用にリリースしました。

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

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



となっております。

MacVimのgit repository移動にともない、MacVim-KaoriYaもgithubに移行しました。この際、今までの履歴を捨てて移行してしまいましたので、動作や日本語リソースがおかしいことも考えられます。気付いたことがありましたら教えてくださいませ。また開発環境更新によりLeopard(10.5)での動作確認を行えておりません。こちらも動作した/しないなど教えていただけますと幸いです。

ぜひテストにご協力くださいませ。

2010-04-02

iPhoneアプリ作りました



私がプログラムを担当したiPhone用初アプリが発売開始されました!

http://www.muumuu.com/apps/

■ヌカカの結婚 英語版 無料版
http://itunes.apple.com/jp/app/nukakas-marriage-free/id364591545?mt=8

■ヌカカの結婚 英語版
http://itunes.apple.com/app/nukakas-marriage/id364576997?mt=8

■ヌカカの結婚 日本語版 無料版
http://itunes.apple.com/jp/app/id364593647?mt=8

■ヌカカの結婚 日本語版
http://itunes.apple.com/jp/app/id364585889?mt=8

iPhone用絵本アプリです。全編アニメーションおよびナレーション付きです。

cocos2d for iPhone v0.99.0を使用しています。

起動時間、起動時タイトルへの奇麗なつなぎ、データロードを意識させない、などなどこだわって作っております。
(起動時間はもうちょっとがんばれそうですが...)

iPhone, iPod touch, iPad をお持ちの方はまずは無料版をお試しくださいませ!

2010-03-30

MacVim-KaoriYa 20100330

20100330版をテストリリースしました。

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

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



となっております。

お試しくださいませ。

2010-03-15

MacVim-KaoriYa 20100315

MacVim-KaoriYa 20100311版はperl,rubyで問題があるため、20100315版をテストリリースしました。

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

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



となっております。

if_rubyにwin32用の関数が混入、およびif_perlに5.10.0用に5.10.1以降の関数が混入(これはオリジナルから)してました。
(if_ruby,if_perl,if_python自体をdll,shared library,dylib化してもらいたいものです...)

お試しくださいませ。

2010-03-11

MacVim-KaoriYa 20100311

MacVim-KaoriYa 20100311版をテストリリースしました。

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

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



となっております。

またSnow Leopardの実験的レンダラかつIMインライン入力時に、IM変換中の文節のアンダーラインを太くしました。

お試しくださいませ。

2010-02-25

AndroidソースコードをNexus One向けにビルドする

Nexus Oneのboot loaderのunlockとか、recovery imageとかはこちらをどうぞ。

http://forum.xda-developers.com/showthread.php?t=611829
http://forum.xda-developers.com/showthread.php?t=623496


■Androidのソースコードを準備
eclair branchを使用します。
http://source.android.com/download
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair


■cyanogenさんのNexus One用vendor repositoryを取得
$ cd $MYDROID
$ git clone git://github.com/cyanogen/android_vendor_cyanogen.git vendor/cyanogen
$ git clone git://github.com/cyanogen/android_vendor_google_passion.git vendor/google/passion
$ git clone git://github.com/koush/android_vendor_motorola_sholes-open.git vendor/motorola/sholes-open


■Nexus Oneからproprietaryなファイルを抽出
$ (cd vendor/google/passion; ./extract-files.sh)

発売開始直後のversionだとファイルが足らず失敗します。最新版に上げて実行します。


■環境変数設定(毎回必要)
$ source build/envsetup.sh
$ lunch cyanogen_passion-eng

PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1
TARGET_PRODUCT=cyanogen_passion
TARGET_BUILD_VARIANT=eng
など表示されれば成功


■make
$ make


■fastboot
$ fastboot flash boot boot.img
$ fastboot flash userdata userdata.img
$ fastboot flash system system.img



以上。Mapsとか入れる場合は extract-google-files.sh して CYANOGEN_WITH_GOOGLE=1 で。

2010-02-10

MacVim-KaoriYa 20100210

MacVim-KaoriYa 20100210版をテストリリースしました。

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

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

実験的レンダラ(Core Text)使用時のvsplit描画不具合と、ウインドウズーム時に一瞬白くなるのが治っているようです。


  • Vim 7.2.350
  • Vim日本語ドキュメント 20100207のスナップショット


お試しくださいませ。

2010-01-25

MacVim-KaoriYa 20100125

MacVimがひさびさにVimをmergeしたので、MacVim-KaoriYaも追従して、20100125版としてテストリリースしました。

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

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



お試しくださいませ。