03 2 / 2012
技術
オススメされたんで読んでみたんですが、あぁなるほど、と思うことしきり。
一番キタところ。
私の取引先のT印刷所は、機械二台、家族だけの零細企業である。その印刷機の一つは、今ではおそらく博物館にしかないと思われる、俗にチャンドラという印刷機で、Tさんはそれをもう半世紀も使っている。いわば印刷機の三八式歩兵銃である。だがこのT印刷所の”技術”は、高性能総自動化最新式印刷機で刷った印刷物よりはるかに立派であり、T印刷所ファンの出版社は多い。
しかしTさんがもっているのは、正確にいえば個人のもつ”芸”であっても、客体化できる”技術”ではない。いわばTさんの技術は”武芸”と同じような”印刷芸”であって、正確には、氏から離れて、それだけを系統的に多くの人が同時に学びうる、体系的技術ではない。またこの”芸”は、チャンドラだけで生かされるもので、氏がチャンドラですばらしい印刷をするから、高性能総自動化最新式印刷機ならもっとすばらしい印刷ができるかといえば、そうではないのである。
たとえば。なんか、いろいろ頑張って実装していたゲームエンジンがあるとして。そこにUnityさんがやって来ました。Hi! って言いながら。そしたら、いままで実装してきたものが要らなくなっちゃいました。てへ。
何を言うか、0から作ることが技術力維持につながるし(コモディティからの脱却ですよ)、もしその会社が買収されたらどうするんだ(RenderWareとか懐かしいですね!)、あれでは痒いところに手が届かないじゃないかウチのこれならこうすればこんなに凄いことができる、云々。反論いただくまでもなく、いくらでも理由を聞いたことがありますので大丈夫です。
ということで、特に結論なく終わります。
Permalink 2 notes
24 11 / 2011
初心者向け『エキスパートObjective-Cプログラミング 〜iOS/OS Xのメモリ管理とマルチスレッド〜』読書ガイド
なかなか好評で売れております!
『エキスパートObjective-Cプログラミング 〜iOS/OS Xのメモリ管理とマルチスレッド〜』
電子書籍版、紙書籍版 両方購入していただいた方も多数いらっしゃいまして、大変感謝しております! ありがとうございます!
しかし、この本、ちょっとばかり前提とする知識が多めかもしれません。
そこで、初心者向け読書ガイド、というか、読み飛ばしガイドを作って見ました。
- 1.2.3 alloc/retain/release/deallocの実装
- 1.2.4 Appleによる実装
- 1.2.6 autoreleaseの実装
- 1.2.7 Appleによる実装
- 1.4 ARCの実装
- 2.3 Blocksの実装 (注:「2.3.8 Blockによる循環参照」は読んでください!)
- 3.3 Grand Central Dispatchの実装
これらの章は、読み飛ばしちゃってくださいませ。こういう難しめのところも含めて、全体的にわかりやすく書いたつもりではあるのですが、さすがに実装部分はC/C++の前提知識なしで読むのは難しいのが否めません。
ということで、まずはARC,Blocks,GCDの肝となる部分だけ読んで身につけていただいて、実装に関する知識が増えるとともに、読み飛ばした部分をちょっとづつ読んで理解を深めていっていただければと思います。
18 11 / 2011
『エキスパートObjective-Cプログラミング 〜iOS/OS Xのメモリ管理とマルチスレッド〜』
紙書籍版ついに発売されました!
そして、電子書籍版も正式版公開されました!
Amazonでは、『詳解 Objective-C 2.0 改訂版』と一緒に購入されているそうですよ!
まさに、願ったり叶ったりという組み合わせです。
Objective-Cを真に理解したい方は、是非この組み合わせでご購入いただければ幸いです。
電子書籍版、紙書籍版ともに無事発売されました! 関係者の方々、ご協力ありがとうございます!
14 11 / 2011
今週金曜日発売! 『エキスパートObjective-Cプログラミング 〜iOS/OS Xのメモリ管理とマルチスレッド〜』
筆者である私自身が、Amazonからオススメされてしまうくらいの良書ですよw!
実際、私が書いたことを忘れれば、本屋でぱらっと内容見たら即買いするレベルの内容です。
筆者自身がいちばんの読者。eat one’s own dog foodですね!
いよいよ11/18日発売です!
Permalink 1 note
28 10 / 2011
『エキスパートObjective-Cプログラミング 〜iOS/OS Xのメモリ管理とマルチスレッド〜』
エキスパートっぽい感じの表紙来ました!
『エキスパートObjective-Cプログラミング 〜iOS/OS Xのメモリ管理とマルチスレッド〜』
2011年11月18日発売予定です!
Permalink 1 note
20 10 / 2011
Objective-C
Objective-Cを学ぶのに一番良い本は、『詳解 Objective-C 2.0 改訂版』だと考えています。この本を理解するためには、C/C++などの他の言語の知識も必要ですが、それはまた別の本で学べば良いかと思います。1つの本で全部網羅しようとしたら、アガサ・クリスティーの限定本みたいにえらいことになるでしょうし。
さて、この『詳解 Objective-C 2.0 改訂版』ですが、レビューを拝借させていただくと、
■非常に良い本かと思います。(Blockについては書かれてますが、GCDについては書かれていません), 2011/2/17
ただ、Grand Central Dispatch(GCD) などでも使われている Block については詳しく解説されてますが、GCD については全く書かれていません。期待していましたが、残念です。
(この著者の方で) 補足版のような形で GCD の本がでることを期待します。
なんて書かれていました。はい。その「補足版のようなGCDの本」出ます。残念ながら「(この筆者の方)」ではないですが、Blocks、Grand Central Dispatch(GCD)について、この本以上に詳しくて深いと自負する本を執筆しました。
『エキスパートObjective-Cプログラミング -iOS/OS Xのメモリ管理とマルチスレッド-』
2011年11月18日発売予定です(ちなみに、電子書籍版はすでに発売されています)。たとえば、
- Blocksで自動変数がキャプチャされるけど、なんでそもそもリードオンリーなの?
- __blockだと書き換えできるけど、いったい何が起こっているの?
- Blockで使ったオブジェクトがなんだかリリースされないんだけど?
なんて疑問を解決することができます。もちろんGCDについても、こんなのを身につけられます。
- dispatch_asyncとdispatch_syncの違い
- Serial Dispatch QueueとConcurrent Dispatch Queueの違い
- Main Dispatch Queueの使いどころ
- Global Dispatch Queueと自分で作ったConcurrent Dispatch Queueの使いどころ
そして、iOS 5、OS X Lion用SDKから新しく導入されたAutomatic Reference Counting (ARC)も理解できますし、それと同時に、Objective-Cのメモリ管理もマスターできます。
本棚の『詳解 Objective-C 2.0 改訂版』の隣には、是非『エキスパートObjective-Cプログラミング -iOS/OS Xのメモリ管理とマルチスレッド-』を置いちゃってくださいませ。
Permalink 3 notes
15 10 / 2011
『エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド』
iOS/OS Xアプリケーション開発者向けに、かなりマニアックな本を書きました。
『エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド』
というタイトルで、ARC、Blocks、Grand Central Dispatchを事細かに説明している本です。
達人出版会さんにて絶賛販売中です! (http://tatsu-zine.com/books/objc)
自分で絶賛とか言ってますが、どのくらい絶賛かと言いますと、
■ARCに関する記述を読んだ。めっちゃ詳しい。詳しすぎるくらいだ。Objective-CというかCocoaのメモリ管理について知りたければこれ!!
■『エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド』私も読んでます。 ADCのドキュメントより役に立つ読み物は貴重
このように、大変ありがたい言葉を頂いております! ありがとうございます!
また、現在の販売形態は電子書籍ですが、紙でも出版されます! (『エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド』β版を公開しました) いつ出版されるのか、残念ながらまだ言えません!
Amazonで予約開始されました! http://amzn.to/ngnnU1
そのかわり、詳細な目次を公開させていただきます。購入の参考にしてみてくださいませ!
■Automatic Reference Counting
■Automatic Reference Countingとは何か?
■メモリ管理 / 参照カウント
■概要
■メモリ管理の考え方
■自分が生成したオブジェクトの所有者は、自分である
■自分が生成していないオブジェクトも、所有することができる
■自分が所有しているオブジェクトが必要なくなったら、解放する
■自分が所有してないオブジェクトを解放してはならない
■alloc/retain/release/deallocの実装
■Appleによる実装
■autorelease
■autoreleaseの実装
■Appleによる実装
■ARCのルール
■概要
■メモリ管理の考え方
■所有修飾子
■__strong修飾子
■__weak修飾子
■__unsafe_unretained修飾子
■__autoreleasing修飾子
■ルール
■retain/release/retainCount/autoreleaseは使用できない
■NSAllocateObject/NSDeallocateObjectは使用できない
■メモリ管理に関するメソッド命名規則を守る
■明示的にdeallocを呼び出せない
■NSAutoreleasePoolのかわりに@autoreleasepoolブロックを使用する
■ゾーン(NSZone)は使用できない
■オブジェクト型変数は、C言語の構造体(struct/union)のメンバになれない
■「id」と「void *」は明示的にキャストする
■プロパティ
■配列
■ARCの実装
■__strong修飾子
■__weak修飾子
■__autoreleasing修飾子
■参照カウント
■Blocks
■Blocks概要
■Blocksとは何か?
■Blocksの仕様
■Block構文
■Block型変数
■自動変数値のキャプチャ
■__block指定子
■キャプチャした自動変数
■Blocksの実装
■Blockの実態
■自動変数値のキャプチャ
■__block指定子
■Blockの記憶域
■__block変数の記憶域
■オブジェクトのキャプチャ
■__block変数とオブジェクト
■Blockによる循環参照
■copy/release
■Grand Central Dispatch
■Grand Central Dispatch概要
■Grand Central Dispatchとは何か?
■マルチスレッドプログラミング
■Grand Central DispatchのAPI
■Dispatch Queue
■dispatch_queue_create
■Main Dispatch Queue / Global Dispatch Queue
■dispatch_set_target_queue
■dispatch_after
■Dispatch Group
■dispatch_barrier_async
■dispatch_sync
■dispatch_apply
■dispatch_suspend / dispatch_resume
■Dispatch Semaphore
■dispatch_once
■Dispatch I/O
■Grand Central Dispatchの実装
■Dispatch Queue
■Dispatch Source
■コラム: ゾーン
■コラム: Objective-C メソッド呼び出しの高速化
■コラム: NSAutoreleasePoolオブジェクトをautorelease
■コラム: __strong修飾子/__weak修飾子
■コラム: Objective-Cのオブジェクトと、Core Foundationオブジェクト
■コラム: オブジェクトの即時解放
■コラム: allowsWeakReference/retainWeakReferenceメソッド
■コラム: C++のthis、Objective-Cのself
Permalink 10 notes
02 9 / 2011
「波に揉まれるiPhone 4」と「魚とともに泳ぐiPhone 4」
もちろん、素のiPhone 4だと即死です。LifeProof iPhone 4 ケースを付けてます。
Apple純正バンパーより太いかな、くらいの印象で、2メートル防水とか、耐衝撃とかその他。タッチパネル部分は、タッチできるようにパカパカしますけど。あと水中ではタッチできません。それでもスゴく良いです。
普段も付けっぱなしでいるかどうか考え中。以前のように自転車乗りまくってればジャージの背中ポケットに入れとけるように(汗まみれ)、付けっぱなしでしょうけども。脱着は50回程度しか持たないので、毎日のように着け外しするのはやめといた方が無難。
Permalink 1 note
11 8 / 2011
Vim/MacVimとの関わり
http://mattn.kaoriya.net/software/vim/20110810203558.htm
http://www.kaoriya.net/blog/201108/20110811
触発されちゃいました。
1994年〜1998年あたりは、emacs,mule,elvis,jvimあたりをウロウロしてました。Emacs Lispいじって、これで私もLisper、とか(お恥ずかしい)
1999年頃はitojunさんがメンテされてたnvi-m17nで、NetBSDのpackageにしたり http://bit.ly/ppejy0。
2000年からVimにswitch http://bit.ly/mUEFAc kaoriyaさんと同じくシンタックスハイライトに衝撃を受けたのがきっかけです。
主にNetBSDやLinux distribution上で使っていましたが、2004年からMac OS X派閥に転向。Vimは主に自前ビルド。
2007年頃、Mac OS XでVimにKaoriYaパッチをあててビルドするPrivatePortfile/Vimを配布開始 http://bit.ly/peCKyq
主にTerminal.app, iTerm.appで使うことを前提にメンテしてたものの、Mac OS X Carbon GUI、vim-cocoa、MacVimなどが便利なときもあることに気づき対応を拡大。その後、マルチウインドウが使えるMacVimに主軸を移動。
2009年 Portfileだけでpatchを当て続けるのに限界を感じ、MacVim-KaoriYaを開始 http://bit.ly/oDvI4e 主に日本語を扱う上での不都合に対するパッチをMacVimに送りつけつつも、MacVim-KaoriYaはMacVim-KaoriYaで独自の進化を施しちゃったり。
独自の進化といっても、Vimscriptの実行に影響ある部分はほとんどないです(むしろ、たとえばif_rubyがRuby 1.8とRuby 1.9どちらか一方dynamic linkできちゃったりする)。
Vim, MacVim, MacVim-KaoriYa の違い http://bit.ly/gFvNLX
MacVimといっても実は単なるガワで、実体はVimなのです(psしてみるとVimが動いていることがわかりますですよ)。たしかに描画周りはまだncursesと差はあります。不具合もあると思います。何かありましたら、ぜひフィードバックを!
Permalink 2 notes
08 8 / 2011
Android NDKでOpenAL
Android NDKで、OpenAL software implementationを使うことができます。
■Android 2.3 (API level 9) 以上専用アプリになっていい場合
- http://repo.or.cz/w/openal-soft.git
- opensl.c OpenSL ES APIを使ってOpenALを実装
- app native code→OpenAL API→OpenSL ES API→native AudioTrack→mediaserver process
■Android 2.2 (API level 8) 以下にも対応させたい場合
- http://repo.or.cz/w/openal-soft/android.git
- android.c NDKでaudioが直接使えないため、JNI経由でJavaのAudioTrackを使用
- app native code→OpenAL API→JNI→Java AudioTrack→native AudioTrack→mediaserver process
■マルチプラットフォームゲームエンジンのUnigine EngineでもAndroidでOpenAL使用可能のようです
- http://unigine.com/devlog/2011/07/21/90
- Added OpenAL support for Android.
01 8 / 2011
MacVim-KaoriYa 20110801版
http://code.google.com/p/macvim-kaoriya/ 20110801版リリースしました。MacVimのメニューから「アップデートを確認」してみてくださいませ。
10.6 Snow Leopard、10.7 Lion 対応版です。10.5 Leopard非対応となります。
MacVim snapshot61のfeature「Lionフルスクリーン対応」が使用できます。
Permalink 3 notes
25 7 / 2011
MacVim-KaoriYa 20110725版
http://code.google.com/p/macvim-kaoriya/
20110725版リリースしました。MacVimのメニューから「アップデートを確認」してみてくださいませ。 Lion フルスクリーン対応は、MacVimにて開発が進んでいるようです。
22 7 / 2011
How to install Xcode 4.1 in the specific folder where you want
- Install Xcode 4.1 from Mac App Store.
- Launch the installer directly and install as usual.
$ open /Applications/Install\ Xcode.app/Contents/Resources/Xcode.mpkg
Permalink 1 note
21 7 / 2011
Enable PowerPC toolchain on Xcode 4.1
$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /usr/bin/powerpc-apple-darwin11-cpp-4.2.1 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /usr/bin/powerpc-apple-darwin11-gcc-4.2.1 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /usr/bin/powerpc-apple-darwin11-g++-4.2.1 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-cpp-4.2.1 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-gcc-4.2.1 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-g++-4.2.1 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/powerpc-apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc
#/bin/sh IOSUSR=/Developer/Platforms/iPhoneOS.platform/Developer/usr PPC10=$IOSUSR/bin/powerpc-apple-darwin10 PPC11=/usr/bin/powerpc-apple-darwin11 GCCVER=4.2.1 sudo ln -s $IOSUSR/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin sudo ln -s $IOSUSR/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin sudo ln -s $PPC10-cpp-$GCCVER $PPC11-cpp-$GCCVER sudo ln -s $PPC10-gcc-$GCCVER $PPC11-gcc-$GCCVER sudo ln -s $PPC10-g++-$GCCVER $PPC11-g++-$GCCVER sudo ln -s $PPC10-cpp-$GCCVER /Developer$PPC11-cpp-$GCCVER sudo ln -s $PPC10-gcc-$GCCVER /Developer$PPC11-gcc-$GCCVER sudo ln -s $PPC10-g++-$GCCVER /Developer$PPC11-g++-$GCCVER sudo ln -s $IOSUSR/lib/gcc/powerpc-apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc
gcc-4.2 only.
“-isysroot /Developer/SDKs/MacOSX10.6.sdk” option is required, 10.7 SDK drops to support PowerPC at all.
Permalink 3 notes
15 7 / 2011
Git videos
- “Video: Git: Tips and Tricks for Ruby Teams” http://bit.ly/o7MRHz
Gitの基本的な使い方など
- “Git Tips” http://bit.ly/pNXNs3
Gitのあまり見かけない部分のTips
Permalink 1 note



