<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
   <channel>
      <title>Hatena::Group::Iphone-dev::Feed</title>
      <description>Pipes Output</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=TssmX7bb2xGYLar_l7okhQ</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=TssmX7bb2xGYLar_l7okhQ&amp;_render=rss&amp;page=2" />
      <pubDate>Sun, 27 May 2012 13:34:41 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/hatena-group-iphone-dev" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="hatena-group-iphone-dev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>「iOS SDKプログラミング・iPhoneアプリ開発入門の記事まとめリンク集」を参考にする前にアップルの翻訳済み公式ドキュメントを読もう</title>
         <link>http://iphone-dev.g.hatena.ne.jp/laiso/20120524/1337881266</link>
         <description>&lt;div class="section"&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/japanese.html"&gt;iOS Developer Library (developer.apple.com)&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;OS、SDKの進歩が数ヶ月単位でどんどん更新されていくぐらいはやいので、数年前の入門記事を全くの初心者が参考にしてもつまづくことのが多い。&lt;/p&gt;
			&lt;p&gt;また、ブログ記事などと違ってOS、SDKの更新には追従して更新され続ける。まあ即翻訳されるわけじゃないけどそれでも正確な情報が得られる可能性は他より高い。&lt;/p&gt;
			&lt;p&gt;なのでアップルの翻訳済み公式ドキュメントを読みましょう。&lt;/p&gt;
			&lt;p&gt;と言ってもたくさんあってどれから読んだらいいのかわからないと思うので、いくつかピックアップして紹介します。&lt;/p&gt;
			&lt;p&gt;その前に、&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&amp;topic=Sample%20Code"&gt;Sample Code (developer.apple.com)&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;実はドキュメントよりサンプルコードを実際に触ってみることの方が学習効率が高いことが開発者達の中でもよく知られています。Topic など参考に自分の興味のありそうなキーワードのあるアプリケーションのソースコードをどんどんダウンロードしてゆきましょう。全体的なUIKitを利用した基盤の構成はほぼどれも一緒なのでどれでも勉強になるはずです。また、Date でソートして新しめのものから見ていくと良いです。&lt;/p&gt;
			&lt;dl&gt;
				&lt;dt&gt;iOSアプリケーションプログラミングガイド&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhoneAppProgrammingGuide.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhoneAppProgrammingGuide.pdf&lt;/a&gt;&lt;/dd&gt;
				&lt;dt&gt;iOSテクノロジーの概要&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhoneOSTechOverview.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhoneOSTechOverview.pdf&lt;/a&gt;&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;p&gt;入門者用に用意された、最初に読むべきドキュメントです。わからない所はトピックごと飛し、興味あるところだけ読んでいけばいいと思います。&lt;/p&gt;
			&lt;dl&gt;
				&lt;dt&gt;初めての iOSアプリケーション&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhone101.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhone101.pdf&lt;/a&gt;&lt;/dd&gt;
				&lt;dt&gt;2つ目のiOSアプリケーション：ストーリーボード&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/SecondiOSAppTutorial.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/SecondiOSAppTutorial.pdf&lt;/a&gt;&lt;/dd&gt;
				&lt;dt&gt;3つ目のiOSアプリケーション：iCloud&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/iCloud101.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/iCloud101.pdf&lt;/a&gt;&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;p&gt;チュートリアル形式のドキュメントです。開発しながら学習できるのでより実践的です。&lt;/p&gt;
			&lt;dl&gt;
				&lt;dt&gt;Objective-Cプログラミング言語&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf&lt;/a&gt;&lt;/dd&gt;
				&lt;dt&gt;Objective-Cプログラミングの概念&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/CocoaEncyclopedia.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/CocoaEncyclopedia.pdf&lt;/a&gt;&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;p&gt;iOSアプリケーション開発に使うプログラミング言語Objective-C自体をとりあげているドキュメントです。既にRubyやPHPなど他のプログラミング言語のユーザーであるなら上記も興味深いでしょう。iPhoneアプリ開発がプログラミングとしてははじめて、という人は今とくに読んでおく必要はありません。&lt;/p&gt;
			&lt;dl&gt;
				&lt;dt&gt;iOS View Controllerプログラミングガイド&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/ViewControllerPGforiOS.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/ViewControllerPGforiOS.pdf&lt;/a&gt;&lt;/dd&gt;
				&lt;dt&gt;iOS Table Viewプログラミングガイド&lt;/dt&gt;
				&lt;dd&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/TableView_iPhone.pdf"&gt;https://developer.apple.com/jp/devcenter/ios/library/documentation/TableView_iPhone.pdf&lt;/a&gt;&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;p&gt;iOS SDK でアプリケーションを作成する際に利用することになるUIKit フレームワークについてのトピックです。とりわけ、View Controller・Table Viewは頻繁に使う可能性が高い重要なトピックなので優先するといいでしょう。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; &lt;a rel="nofollow" class="keyword" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/keyword/FAQ"&gt;FAQ&lt;/a&gt;&lt;/h4&gt;
			&lt;dl&gt;
				&lt;dt&gt;Q. もっとそれ以前の、開発環境の構成とか開発者登録の方法とか日本語の公式ドキュメントってないの？&lt;/dt&gt;
				&lt;dd&gt; A. &lt;a rel="nofollow" target="_blank" href="http://dotinstall.com/lessons/basic_ios"&gt;iOSプログラミングの基礎 - ドットインストール&lt;/a&gt; などはどうでしょうか。ビデオチュートリアルでなかなか評判が良いです。&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;dl&gt;
				&lt;dt&gt;Q. そもそもまとめ記事ってクリップ欲を満すことが目的なので言う程参考にされてないよ&lt;/dt&gt;
				&lt;dd&gt; A. マジかよ……&lt;/dd&gt;
			&lt;/dl&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 24 May 2012 17:41:06 +0000</pubDate>
      </item>
      <item>
         <title>[ios][vim][tdd] vim-quickrun + GHUnit でTDD</title>
         <link>http://iphone-dev.g.hatena.ne.jp/tokorom/20120520/1337542304</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;VimmerなiOSプログラマの自分にとってはVim上でコーディングからユニットテストの実行/確認までできたら最高です。&lt;/p&gt;
			&lt;p&gt;ということで、vim-quickrunを使ってVim上でTDDできるようにした記録を残します。&lt;/p&gt;
			&lt;h4&gt; 参考記事&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://www.karakaram.com/vim/phpunit-location-list/"&gt;VimでPHPUnitの実行結果をシンプルに表示するプラグインを書いた | karakaram-blog&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;h4&gt; あらかじめインストールしておくもの&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; vim-quickrun v0.6.0dev &lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f1" name="fn1" title="https://github.com/thinca/vim-quickrun/tree/v0.6.0dev"&gt;*1&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
				&lt;li&gt; GHUnit &lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f2" name="fn2" title="https://github.com/gabriel/gh-unit"&gt;*2&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;GHUnitについては&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://akisute.com/2012/01/jenkins-ios-ghunit.html"&gt;A-Liaison BLOG: Jenkins を iOS アプリ開発に導入してみた (GHUnit編)&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;が分かりやすいです。&lt;/p&gt;
			&lt;p&gt;ここを参考にCUIからテストが実行できるところまで設定をしておく必要があります。&lt;/p&gt;
			&lt;p&gt;VimでTDDするにはこのGHUnitの &lt;b&gt;CUIから特定のテストを実行できる&lt;/b&gt; というのが重要になります。&lt;/p&gt;
			&lt;p&gt;また、CUIでGHUnitのテストを実行した場合の &lt;b&gt;どこがエラーになっているのかが一目でわかりづらい&lt;/b&gt; というデメリットもvim-quickrunで解決します。&lt;/p&gt;
			&lt;h4&gt; やったこと&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; vim-quickrunにGHUnit用のoutputterを追加&lt;/li&gt;
				&lt;li&gt; Objective-Cのテストコードでquickrunしたときはその追加したoutputterを使うように設定&lt;/li&gt;
			&lt;/ul&gt;
			&lt;h4&gt; 実行結果のイメージ&lt;/h4&gt;
			&lt;p&gt;&lt;b&gt;■ テスト失敗&lt;/b&gt;&lt;/p&gt;
			&lt;p&gt;こんなかんじに失敗したテストがレッドで表示されます。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20120521042646" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20120521/20120521042646.png" alt="f:id:tokorom:20120521042646p:image" title="f:id:tokorom:20120521042646p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;その後、失敗したテストの場所に自動でカーソルが移動します&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f3" name="fn3" title="&amp;#x003053;&amp;#x003053;&amp;#x00306f;Xcode&amp;#x003088;&amp;#x00308a;&amp;#x004fbf;&amp;#x005229;&amp;#x00304b;&amp;#x003082;&amp;#x003002;&amp;#x003002;&amp;#x003002;"&gt;*3&lt;/a&gt;&lt;/span&gt;。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20120521042738" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20120521/20120521042738.png" alt="f:id:tokorom:20120521042738p:image" title="f:id:tokorom:20120521042738p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;b&gt;■ テスト成功&lt;/b&gt;&lt;/p&gt;
			&lt;p&gt;こんなかんじにグリーンバーが表示されます。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20120521042737" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20120521/20120521042737.png" alt="f:id:tokorom:20120521042737p:image" title="f:id:tokorom:20120521042737p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;b&gt;■ ビルドエラー&lt;/b&gt;&lt;/p&gt;
			&lt;p&gt;おまけで、ビルドエラーのときもエラー箇所に自動でカーソルが移動します。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20120521042739" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20120521/20120521042739.png" alt="f:id:tokorom:20120521042739p:image" title="f:id:tokorom:20120521042739p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;h4&gt; vim-quickrunに追加したoutputter&lt;/h4&gt;
			&lt;p&gt;上記参考記事とvim-quickrunにはじめから入っているoutputterの &lt;b&gt;quickfix.vim&lt;/b&gt; をベースとして以下のようなoutputterを作成しました。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
let s:save_cpo = &amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;;cpo
set cpo&amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;;vim

let s:outputter = quickrun#outputter#buffered#new()
let s:outputter.config = {
&amp;#92; }

function! s:outputter.finish(session)
  let data = &lt;span class="synStatement"&gt;self&lt;/span&gt;._result
  lclose
  &lt;span class="synStatement"&gt;if&lt;/span&gt; stridx(data, '** BUILD SUCCEEDED **') &amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;; &lt;span class="synConstant"&gt;0&lt;/span&gt;
    &lt;span class="synConstant"&gt;&amp;quot; Success&lt;/span&gt;
&lt;span class="synConstant"&gt;    let message = matchstr(data, 'Executed .*)&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;#92;.&lt;/span&gt;&lt;span class="synConstant"&gt;')&lt;/span&gt;
&lt;span class="synConstant"&gt;    if 0 == strlen(message)&lt;/span&gt;
&lt;span class="synConstant"&gt;      let message = '** ALL GREEN **'&lt;/span&gt;
&lt;span class="synConstant"&gt;    endif&lt;/span&gt;
&lt;span class="synConstant"&gt;    highlight GHUnitSuccess term=reverse ctermbg=darkgreen guibg=darkgreen&lt;/span&gt;
&lt;span class="synConstant"&gt;    echohl GHUnitSuccess | echo message | echohl None&lt;/span&gt;
&lt;span class="synConstant"&gt;  else&lt;/span&gt;
&lt;span class="synConstant"&gt;    &amp;quot;&lt;/span&gt; Failed
    try
      &lt;span class="synStatement"&gt;if&lt;/span&gt; data =~ '&amp;#92;vFile&amp;#92;:[^:]+Line&amp;#92;:'
        set errorformat=%E%.%#File:&amp;#92; %f,%C%.%#Line:&amp;#92; %l,%Z%.%#Reason:&amp;#92; %m
        let message = matchstr(data, '&amp;#92;zsFailed tests.*&amp;#92;zeCommand ')
        &lt;span class="synStatement"&gt;if&lt;/span&gt; &lt;span class="synConstant"&gt;0&lt;/span&gt; == strlen(message)
          let message = '** FAILED **'
        endif
      &lt;span class="synStatement"&gt;else&lt;/span&gt;
        set errorformat=%f:%l:%*[^:]:&amp;#92; %m
        let message = '** BUILD FAILED **'
      endif
      cgetexpr &lt;span class="synStatement"&gt;self&lt;/span&gt;._result
      cwindow
      cc
      &lt;span class="synStatement"&gt;for&lt;/span&gt; winnr &lt;span class="synType"&gt;in&lt;/span&gt; range(&lt;span class="synConstant"&gt;1&lt;/span&gt;, winnr(&lt;span class="synConstant"&gt;'$'&lt;/span&gt;))
        &lt;span class="synStatement"&gt;if&lt;/span&gt; getwinvar(winnr, '&amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;;buftype') ==# 'ghunit'
          call setwinvar(winnr, 'quickfix_title', 'quickrun: ' .
          &amp;#92;   join(a:session.commands, ' &amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;;&amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;; '))
          &lt;span class="synStatement"&gt;break&lt;/span&gt;
        endif
      endfor
      highlight GHUnitFailed term=reverse ctermbg=darkred guibg=darkred
      echohl GHUnitFailed | echo message | echohl None
    finally
    endtry
  endif
endfunction

function! quickrun#outputter#ghunit#new()
  &lt;span class="synStatement"&gt;return&lt;/span&gt; deepcopy(s:outputter)
endfunction

let &amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;;cpo = s:save_cpo
&lt;/pre&gt;

			&lt;p&gt;やっているのは大枠&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; GHUnitの実行結果が &lt;b&gt;テスト成功&lt;/b&gt; / &lt;b&gt;テスト失敗&lt;/b&gt; / &lt;b&gt;ビルドエラー&lt;/b&gt; のどのステータスかを判断&lt;/li&gt;
				&lt;li&gt; その実行結果によりerrorformatを差し替え&lt;/li&gt;
				&lt;li&gt; 実行結果の中から表示用メッセージを拾い、テスト成功ならグリーンで、テスト失敗/ビルドエラーならレッドで表示&lt;/li&gt;
				&lt;li&gt; QuickFix&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;といったことです。&lt;/p&gt;
			&lt;p&gt;このoutputterはgithub&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f4" name="fn4" title="https://github.com/tokorom/vim-quickrun-ghunit"&gt;*4&lt;/a&gt;&lt;/span&gt;に置いてあります。&lt;/p&gt;
			&lt;h4&gt; .vimrc に追加した項目&lt;/h4&gt;
			&lt;p&gt;最後に、これを実行するために.vimrcに追記したのが以下になります。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&amp;quot; ファイル名の最後がTest.mだったら objc.test というファイルタイプにする
autocmd BufWinEnter,BufNewFile *Test.m setfiletype objc.test

&amp;quot; quickrunの設定を初期化
let g:quickrun_config = {}
&amp;quot; quickrunのどのファイルタイプでも適用する設定
let g:quickrun_config[&amp;#39;*&amp;#39;] = {&amp;#39;split&amp;#39;: &amp;#39;below&amp;#39;}
&amp;quot; ファイルタイプがobjc.testの場合、make test を実行してその結果をghunit用のoutputterで出力する設定
let g:quickrun_config[&amp;#39;objc.test&amp;#39;] = {&amp;#39;command&amp;#39;: &amp;#39;make&amp;#39;, &amp;#39;cmdopt&amp;#39;: &amp;#39;test&amp;#39;, &amp;#39;outputter&amp;#39;: &amp;#39;ghunit&amp;#39;}

&amp;quot; Space, q でquickrunする（これは普段使っている設定にしてください）
silent! map &amp;#60;Space&amp;#62;q &amp;#60;Plug&amp;#62;(quickrun)
&amp;quot; Space, Space, q で今開いているテストケースだけquickrunする（ファイル名がテストクラス名と一致している前提です）
silent! map &amp;#60;expr&amp;#62; &amp;#60;Space&amp;#62;&amp;#60;Space&amp;#62;q &amp;#39;:QuickRun -args &amp;quot;TEST=&amp;#39; . expand(&amp;quot;%:t:r&amp;quot;) . &amp;#39;&amp;quot;&amp;#60;CR&amp;#62;&amp;#39;
&lt;/pre&gt;

			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/tokorom/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/share" class="twitter-share-button"&gt;ツイートする&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn1" name="f1"&gt;*1&lt;/a&gt;：&lt;a rel="nofollow" target="_blank" href="https://github.com/thinca/vim-quickrun/tree/v0.6.0dev"&gt;https://github.com/thinca/vim-quickrun/tree/v0.6.0dev&lt;/a&gt;&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn2" name="f2"&gt;*2&lt;/a&gt;：&lt;a rel="nofollow" target="_blank" href="https://github.com/gabriel/gh-unit"&gt;https://github.com/gabriel/gh-unit&lt;/a&gt;&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn3" name="f3"&gt;*3&lt;/a&gt;：ここはXcodeより便利かも。。。&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn4" name="f4"&gt;*4&lt;/a&gt;：&lt;a rel="nofollow" target="_blank" href="https://github.com/tokorom/vim-quickrun-ghunit"&gt;https://github.com/tokorom/vim-quickrun-ghunit&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 20 May 2012 19:31:44 +0000</pubDate>
      </item>
      <item>
         <title>iOS Dev Center のサンプルコードとドキュメントの更新を受け取るフィード作った</title>
         <link>http://iphone-dev.g.hatena.ne.jp/laiso/20120518/1337337961</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://gyazo.com/c133f777d6680977adcccaf763c5c434"&gt;&lt;img src="http://gyazo.com/c133f777d6680977adcccaf763c5c434.png"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://pipes.yahoo.com/pipes/pipe.info?_id=2e692378a03f70e68eeaefbd75927624"&gt;Pipes: Apple Developer Center iOS Sample Code&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://pipes.yahoo.com/pipes/pipe.info?_id=265d351456e157e65ba1df00baf8c10d"&gt;Pipes: Apple Developer Center iOS Documentation Update&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;Yahoo! Pipes 製です(サービス終了リスクが……)。&lt;/p&gt;
			&lt;p&gt;どうぞご利用ください。&lt;/p&gt;
			&lt;h4&gt; 追記&lt;/h4&gt;
			&lt;p&gt;ところで今気付いたんだけど翻訳済みドキュメント専用のRSSフィードもあった&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/rss/adcjapan.rss"&gt;https://developer.apple.com/jp/rss/adcjapan.rss&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 18 May 2012 10:46:01 +0000</pubDate>
      </item>
      <item>
         <title>UIBarButtonItemのsetBackgroundImageで、UIBarButtonItemStyleDoneとそれ以外で別々の画像を指定する方法</title>
         <link>http://iphone-dev.g.hatena.ne.jp/ktakayama/20120508/1336459616</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;を調べていたんですけど、どうも良くわかんなかったので、method swizzling で強引にやってみました。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://gist.github.com/2633081"&gt;https://gist.github.com/2633081&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt; &lt;/p&gt; 
			&lt;p&gt;setStyle:が呼び出されない場合もあるので、最初に[UIBarButtonItem appearance]でノーマル画像を指定しています。&lt;/p&gt;
			&lt;p&gt;これで、たとえばUIViewControllerのeditButtonItemで「編集」時と「完了」時で別々の画像が使われるようになります。&lt;/p&gt;
			&lt;p&gt;もっと簡単にできる方法があったら、ぜひ教えてくださいまし。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 08 May 2012 06:46:56 +0000</pubDate>
      </item>
      <item>
         <title>自由な色を選択できるカラーピッカーILColorPicker</title>
         <link>http://iphone-dev.g.hatena.ne.jp/ktakayama/20120507/1336403464</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;カラーピッカー用のクラスは色々ありますが、i単語帳の開発ではこちらを利用しました。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/jawngee/ILColorPicker"&gt;https://github.com/jawngee/ILColorPicker&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;カードの配色を選択する画面で使用しています。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/ktakayama/20120507213154" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/ktakayama/20120507/20120507213154.png" alt="f:id:ktakayama:20120507213154p:image:w160" title="f:id:ktakayama:20120507213154p:image:w160" class="hatena-fotolife" width="160"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;あんまり色とか詳しくないので合ってるかわかんないんですけど、光度だとか色相だとか言うのを選択していく感じなんでしょうか。ILColorPickerViewクラスを使うと、これら２つのピッカーを自動的に縦とか横とかに並べて配置してくれます。&lt;/p&gt;
			&lt;p&gt;さらに、それぞれのピッカーは「ILSaturationBrightnessPickerView」と「ILHuePickerView」というクラスになっていて、単なるUIViewなので好きな場所に好きな大きさで配置できます。便利です。ILColorPickerViewの配置が気に入らない人は、個別に使うといいと思います。ILHuePickerViewのdelegateにILSaturationBrightnessPickerViewのインスタンスを入れるのがミソです。ILColorPickerView見りゃすぐわかります。&lt;/p&gt;
			&lt;p&gt;ライセンスがパブリックドメインなので、なんの気兼ねもなく使えるのが何より素晴らしいです。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 07 May 2012 15:11:04 +0000</pubDate>
      </item>
      <item>
         <title>手軽にレート機能が作れるJSFavStarControl</title>
         <link>http://iphone-dev.g.hatena.ne.jp/ktakayama/20120502/1335931574</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;指を動かすとそれに追従して星の数が増えたり減ったりするUI、iPodアプリなんかで見かけるようないわゆるレーティングのためのUIを実現するためのクラスがJSFavStarControlです。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/jasarien/JSFavStarControl"&gt;https://github.com/jasarien/JSFavStarControl&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;i単語帳で動作しているイメージがあるので、動きが想像できない人はご覧ください。ちっちゃいですけど…。すんません。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://youtu.be/-BN8U0dYu6c?t=1m10s"&gt;http://youtu.be/-BN8U0dYu6c?t=1m10s&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;UIControlを継承しているので、UIButtonとかのようにイベント駆動します。例えばこんなんするとレートが変更されるたびにupdateRatingが呼び出されます。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
[star addTarget:&lt;span class="synStatement"&gt;self&lt;/span&gt; action:&lt;span class="synStatement"&gt;@selector&lt;/span&gt;(updateRating:) forControlEvents:UIControlEventValueChanged];
&lt;/pre&gt;

			&lt;p&gt;ライセンスがパブリックドメインなので、なんの気兼ねもなく使えるのが何より素晴らしいです。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 02 May 2012 04:06:14 +0000</pubDate>
      </item>
      <item>
         <title>アプリ内ブラウザを簡単に組み込むための THWebViewController</title>
         <link>http://iphone-dev.g.hatena.ne.jp/ktakayama/20120501/1335882960</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;っていうのがありまして、&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/jp/app/cutie-rabbit-photos/id479409344?mt=8"&gt;癒しネコ画像&lt;/a&gt; なんかで使わせてもらっています。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/tokuhirom/20120107/1325914765"&gt;汎用の WebViewController をくみこむための THWebViewController っていうのをでっちあげた - ”&amp;gt;&amp;lt;xmp&amp;gt;TokuLog 改メ tokuhirom’s blog&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;URLをツイートする機能とかを入れたので、forkして反映しました。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/ktakayama/THWebViewController/tree/develop"&gt;https://github.com/ktakayama/THWebViewController/tree/develop&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;ほかにも、iTunesのリンクでAppStore開けるようにしたり、iPadの場合にボタン同士の間隔が広くなりすぎないようにしています。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 01 May 2012 14:36:00 +0000</pubDate>
      </item>
      <item>
         <title>iAdが日本対応になってたのね…</title>
         <link>http://iphone-dev.g.hatena.ne.jp/Magical-Soft/20120420/1334905911</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;最近忙しくてアプリ開発おろそかにしてたら、iAdの残高が増えてたので何事？とおもったら、日本でも広告してたのか。&lt;/p&gt;
			&lt;p&gt;まぁ累計1000円程度しか広告収入はありませんが…。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 20 Apr 2012 07:11:51 +0000</pubDate>
      </item>
      <item>
         <title>[cocos2d]cocos2dでSenTestingKitをつかったUnitTestを行う場合の注意点とか</title>
         <link>http://iphone-dev.g.hatena.ne.jp/hao_yayoi/20120417/1334722606</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;誰かがもう本に書いてしまっていそうな内容ですが、気にしない。&lt;/p&gt;
			&lt;p&gt;cocos2dのprojectをSenTestingKitを使った自動テストに掛けた場合、テスト以前の想定外のエラー等が発生するケースがあります。それらのケース全てに対応できるかどうかは不明ですが、ある程度のカバーは可能になるであろうと思われる手順を以下に。&lt;/p&gt;
			&lt;h4&gt;Build用に追加設定を行う&lt;/h4&gt;
			&lt;p&gt;UnitTestを行う場合、ProjectのTargetに「Add Target」から「Cocoa Touch Unit Testing bundle」を指定するわけですが、これだけでは正常にテストできません。&lt;/p&gt;
			&lt;ol&gt;
				&lt;li&gt;追加したTargetのBuild Phaseから、「Compile Sources」にcocos2dのライブラリ（.mと.c）を一通りと、開発しているアプリのソース（.m)を一通り追加します。&lt;/li&gt;
				&lt;li&gt;Build Settingsから、「Other Linker Flags」に「-lz」と入れます。&lt;/li&gt;
				&lt;li&gt;Build Phaseの 「Link Binary With Libraries」に以下を追加します。（開発しているアプリの同じ構成＋SenTestingKit）
				&lt;ul&gt;
					&lt;li&gt;AudioToolBox.framework&lt;/li&gt;
					&lt;li&gt;AVFoundation.framework&lt;/li&gt;
					&lt;li&gt;QuartzCore.framework&lt;/li&gt;
					&lt;li&gt;OpenAL.framework&lt;/li&gt;
					&lt;li&gt;OpenGLES.framework&lt;/li&gt;
					&lt;li&gt;CoreGraphics.framework&lt;/li&gt;
					&lt;li&gt;SenTestingKit.framework&lt;/li&gt;
					&lt;li&gt;UIKit.framework&lt;/li&gt;
					&lt;li&gt;Foundation.framework&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
			&lt;/ol&gt;
			&lt;p&gt;基本は、開発しているTargetと同じ構成にします。&lt;/p&gt;
			&lt;h4&gt;Test時にGL_VENDOR等がnullにならないようにする&lt;/h4&gt;
			&lt;p&gt;test時にwindowを生成していないことが原因です。ccMacros.h にある CC_DIRECTOR_INIT() を呼び出します。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
#import &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;;SenTestingKit/SenTestingKit.h&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;;
&lt;span class="synPreProc"&gt;#import &lt;/span&gt;&lt;span class="synConstant"&gt;&amp;quot;ccMacros.h&amp;quot;&lt;/span&gt;

&lt;span class="synStatement"&gt;@interface&lt;/span&gt; GOKTBase : SenTestCase
{
     UIWindow *window;
}
&lt;span class="synStatement"&gt;@end&lt;/span&gt;

&lt;span class="synStatement"&gt;@implementation&lt;/span&gt; TestBase

&lt;span class="synIdentifier"&gt;- &lt;/span&gt;(&lt;span class="synType"&gt;void&lt;/span&gt;)setUp
{
    [&lt;span class="synStatement"&gt;super&lt;/span&gt; setUp];
    CC_DIRECTOR_INIT();
}

&lt;span class="synIdentifier"&gt;- &lt;/span&gt;(&lt;span class="synType"&gt;void&lt;/span&gt;)tearDown
{
    CC_DIRECTOR_END();
    [&lt;span class="synStatement"&gt;super&lt;/span&gt; tearDown];
}

&lt;span class="synStatement"&gt;@end&lt;/span&gt;
&lt;/pre&gt;

			&lt;p&gt;テスト用に上記のような内容のベースクラスをはさんでしまうのも手です。&lt;/p&gt;
			&lt;p&gt;これで、テスト自体はコケることなく実行されるようになります。&lt;/p&gt;
			&lt;h4&gt;cocos2dの一部ソースコードをTest Targetでも問題なく動くように修正する&lt;/h4&gt;
			&lt;p&gt;CCSpriteなどを使ったファイルにて、CCTextureCacheにイメージを追加しようとして失敗するケースがあります。これは、Main BundleのパスがアプリとUnitTestで異なることをcocos2d側では考慮されていない為です。(参考：&lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/3067015/ocunit-nsbundle"&gt;OCUnit &amp;amp; NSBundle&lt;/a&gt;）&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;CCFileUtils.m&lt;/li&gt;
			&lt;/ul&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synIdentifier"&gt;+&lt;/span&gt;(NSString*) fullPathFromRelativePath:(NSString*)relPath resolutionType:(ccResolutionType*)resolutionType
{
	NSAssert(relPath != &lt;span class="synConstant"&gt;nil&lt;/span&gt;, &lt;span class="synConstant"&gt;@&amp;quot;CCFileUtils: Invalid path&amp;quot;&lt;/span&gt;);
	
	NSString *fullpath = &lt;span class="synConstant"&gt;nil&lt;/span&gt;;
	
	&lt;span class="synComment"&gt;// only if it is not an absolute path&lt;/span&gt;
	&lt;span class="synStatement"&gt;if&lt;/span&gt;( ! [relPath isAbsolutePath] ) {

		&lt;span class="synComment"&gt;// pathForResource also searches in .lproj directories. issue #1230&lt;/span&gt;
		NSString *file = [relPath lastPathComponent];
		NSString *imageDirectory = [relPath stringByDeletingLastPathComponent];
&lt;span class="synIdentifier"&gt;-              &lt;/span&gt;fullpath = [[NSBundle mainBundle] pathForResource:file     
+		fullpath = [[NSBundle bundleForClass:[CCFileUtils class]] pathForResource:file
												   ofType:&lt;span class="synConstant"&gt;nil&lt;/span&gt;
											  inDirectory:imageDirectory];

		
	}

&lt;/pre&gt;

			&lt;p&gt;これでCCTextureCacheで問題が発生することはなくなります。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 18 Apr 2012 04:16:46 +0000</pubDate>
         <category>cocos2d</category>
      </item>
      <item>
         <title>GameCenterとNSOperation</title>
         <link>http://iphone-dev.g.hatena.ne.jp/horigood/20120412/1334231676</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;自分用の覚え書き。&lt;/p&gt;
			&lt;p&gt;GameCenterにアクセスする時にNSOperationでタスクを実行していると、認証がうまくおこなわれない。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 12 Apr 2012 11:54:36 +0000</pubDate>
      </item>
      <item>
         <title>.Sched3リリースしました。</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kenhama/20120328</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;久しぶりの投稿ですが、宣伝です。&lt;/p&gt;
			&lt;p&gt;.Sched3をリリースしました。（.Sched2からの無償バージョンアップです。）&lt;/p&gt;
			&lt;p&gt;メジャーバージョンアップ記念ということで期間限定セールします！&lt;/p&gt;
			&lt;p&gt;紹介ムービー&lt;/p&gt;
			&lt;p&gt;(vimeo貼れてないみたいなので、URLはこちら&lt;a rel="nofollow" target="_blank" href="http://http://vimeo.com/39105449"&gt;http://http://vimeo.com/39105449&lt;/a&gt; )&lt;/p&gt;
			&lt;p&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=39105449&amp;#38;server=vimeo.com&amp;#38;show_title=1&amp;#38;show_byline=1&amp;#38;show_portrait=1&amp;#38;color=00ADEF&amp;#38;fullscreen=1" type="application/x-shockwave-flash" width="601" height="338"&gt;&lt;/iframe&gt;&lt;/p&gt; 			&lt;br&gt;

			&lt;p&gt;詳しい情報は、&lt;a rel="nofollow" target="_blank" href="http://blog.kjapps.com/2012/03/28/sched-3-sched2/"&gt;http://blog.kjapps.com/2012/03/28/sched-3-sched2/&lt;/a&gt;　を参照ください。&lt;/p&gt;
			&lt;p&gt;よろしくお願いします！！&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 27 Mar 2012 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Dashcode や以前のiOS SDK、Xcodeバージョンは別途ダウンロードできる</title>
         <link>http://iphone-dev.g.hatena.ne.jp/laiso/20120323/1332512404</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;最新Xcodeで /Developer 以下がクリーンされたけど&lt;/p&gt;
			&lt;p&gt;Dashcode とか見当らない……&lt;/p&gt;
			&lt;p&gt;で、ここにある&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/downloads/index.action"&gt;https://developer.apple.com/downloads/index.action&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://gyazo.com/29a6ba22179ead2a2a6518d08e77a233"&gt;&lt;img src="http://gyazo.com/29a6ba22179ead2a2a6518d08e77a233.png"&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 23 Mar 2012 14:20:04 +0000</pubDate>
      </item>
      <item>
         <title>iOS 向けTDD/BDDフレームワークやモックフレームワークの現状</title>
         <link>http://iphone-dev.g.hatena.ne.jp/laiso/20120324/1332505862</link>
         <description>&lt;div class="section"&gt;
			&lt;h4&gt; はじめに&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/laiso/20120111/1326280021"&gt;iOS アプリ開発向け受け入れテスト/結合テスト/機能テストフレームワークのまとめ&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/laiso/20120323/1332430491"&gt;URLリクエストを指定した結果に書き換えるテスト用ライブラリを作った&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;iOS 向けのユニットテスト環境にひき続き関心があり。ある程度の知識がたまってきたので整理した。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; テストフレームワークの組み合わせとか&lt;/h4&gt;
			&lt;p&gt;今現在iOS 向け開発でモックやマッチャーも含めて、ユニットテストを行なおうとするならだいたい使うのはこんなパターン&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; SenTestingKit(SDK標準)
				&lt;ul&gt;
					&lt;li&gt; OCHamcreast, Expecta&lt;/li&gt;
					&lt;li&gt; OCMock, OCMockito, LRMocky&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt; GHUnit
				&lt;ul&gt;
					&lt;li&gt; OCHamcreast, Expecta&lt;/li&gt;
					&lt;li&gt; OCMock, OCMockito, LRMocky&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt; Cedar
				&lt;ul&gt;
					&lt;li&gt; OCHamcreast(内包してる)&lt;/li&gt;
					&lt;li&gt; OCMock(内包してる)&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt; Kiwi
				&lt;ul&gt;
					&lt;li&gt; KWMatchers(自前)&lt;/li&gt;
					&lt;li&gt; KWMock(自前)&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt; Specta
				&lt;ul&gt;
					&lt;li&gt; Expecta(内包してる), OCHamcrest&lt;/li&gt;
					&lt;li&gt; OCMock(内包してる)&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;GHUnit 以外はOCUnitサポートが入っていて、内部的にSenTestingKitのテストケースを実行しているのでXcode上からCommand-U で実行できる。CI 用のコマンドラインからの実行や、JUnit 互換のレポート出力などには今回は触れない。&lt;/p&gt;			&lt;br&gt;

			&lt;h5&gt; モック・マッチャーフレームワーク&lt;/h5&gt;
			&lt;p&gt;モック・マッチャーフレームワーク自体の話はまた別の機会にするとして、サイトだけリストアップしておきます。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://ocmock.org/"&gt;OCMock&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://code.google.com/p/hamcrest/"&gt;OCHamcrest&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/petejkim/expecta"&gt;Expecta&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/jonreid/OCMockito"&gt;OCMockito&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/lukeredpath/LRMocky"&gt;LRMocky&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h4&gt; 寸評&lt;/h4&gt;
			&lt;h5&gt; SenTestingKit&lt;/h5&gt;
			&lt;ul&gt;
				&lt;li&gt; Xcode4 からセットアップ、初期設定してくれるので用意するまでが楽&lt;/li&gt;
				&lt;li&gt; 使っている人が多いのでわからない時に質問や検索して教えてもらえる&lt;/li&gt;
				&lt;li&gt; アップルが公式にサポートしているのでSDK アップデートしても基本的に使い続けられる&lt;/li&gt;
				&lt;li&gt; 最新ソース公開されてない？&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;なので保守的に安定して使えるフレームワークであると言える。以下にアップルの公式ドキュメント翻訳がある&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/jp/devcenter/ios/library/documentation/Xcode/Conceptual/ios_development_workflow/#135-Unit_Testing_Applications/unit_testing_applications.html"&gt;iOS開発ガイド: アプリケーションの単体テスト (developer.apple.com)&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;ちなみに、個人的には過去にiTunes App Store に申請したバイナリにSenTestingKit.framework をリンクしてしまいアップルレビュワーにリジェクトをされるという経験を何回かしており、憎しみを抱いている。&lt;/p&gt;			&lt;br&gt;

			&lt;h5&gt; GHUnit&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/gabriel/gh-unit/"&gt;gabriel/gh-unit (github.com)&lt;/a&gt;&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; アプリケーションの中にテストアプリケーションを埋め込むという柔軟な発想のフレームワーク&lt;/li&gt;
				&lt;li&gt; 特定のテストメソッドだけを実行、ということができるので大規模コードベースでも安心&lt;/li&gt;
				&lt;li&gt; ここ5ヶ月ほど更新されてない(&lt;a rel="nofollow" target="_blank" href="https://github.com/gabriel"&gt;ガブくんどこいってもうたんや……&lt;/a&gt;)&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://johnboiles.s3.amazonaws.com/ghunittestview.png"&gt;View をキャプチャして画像同士で検証&lt;/a&gt;といったクールな方法も用意している&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://www.slideshare.net/kishikawakatsumi/ios-unit-test-10571218"&gt;Katsumi Kishikawa さんもオススメ&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; OCUnit 形式の実行をサポートしていないので開発中にCommand-U でガシガシテスト実行できない&lt;/li&gt;
			&lt;/ul&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/jarinosuke0808/20120228/unit_testing_with_ghunit_and_ocmock"&gt;GHUnitとOCMockでUnit Test効率化 - ～けものみちを目指して～Only the Paranoid Survive&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://sanematsu.wordpress.com/2012/01/04/objective- - and-ghunit-and-ocunit/"&gt;Objective-C, GHUnit and OCUnit « 實松アウトプット&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h5&gt; Cedar&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/pivotal/cedar"&gt;pivotal/cedar (github.com)&lt;/a&gt;&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://www.pivotaltracker.com/"&gt;Pivotal Tracker&lt;/a&gt; でお馴染の &lt;a rel="nofollow" target="_blank" href="http://pivotallabs.com/"&gt;Pivotal Labs&lt;/a&gt; のイケてるエンジニアたちによって開発されている&lt;/li&gt;
				&lt;li&gt; アンチ車輪の再発明的というか既にある外部モジュールなどをうまく組合せて構成されている&lt;/li&gt;
				&lt;li&gt; 企業で作っている &amp; 内包・依存しているプロジェクトが多いので頭数的に、それだけ開発速度も早い。が調整もたいへんだろうと予想される&lt;/li&gt;
				&lt;li&gt; マクロとかObjective-C++ でのメタプログラミング(?)ばなどが混在しており黒魔術的で、うまくいかなかった時に内部構造を追うのがたいへん&lt;/li&gt;
				&lt;li&gt; 非同期処理を含むコードのテストをどうやるのかがわからない……&lt;/li&gt;
			&lt;/ul&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://tech-gym.com/2012/01/objective-c/630.html"&gt;iOSで使えるBDDスタイルのテスティングフレームワーク「cedar」の導入方法 | Technology-Gym&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h5&gt; Kiwi&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/allending/Kiwi"&gt;allending/Kiwi (github.com)&lt;/a&gt;&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; iOS 向け。Mac OS X 向けの開発はサポートしていない&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/allending/Kiwi/wiki/Asynchronous-Testing"&gt;非同期処理のサポート&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; モックオブジェクト用のクラスも内蔵している&lt;/li&gt;
				&lt;li&gt; カスタムのマッチャーを作成するのも簡単&lt;/li&gt;
			&lt;/ul&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://tech-gym.com/2012/01/objective-c/652.html"&gt;もう一つのBDDスタイルのiOSテスティングフレームワーク「Kiwi」の導入方法 | Technology-Gym&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h5&gt; Specta&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/petejkim/specta"&gt;petejkim/specta (github.com)&lt;/a&gt;&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; 01/2012 に公開されたばかりのプロジェクト&lt;/li&gt;
				&lt;li&gt; mainループ→UIApplicationDelegate で実行するわけではなさそうなのでUIKit 系のテストはできない？&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h4&gt; タイプ別診断&lt;/h4&gt;
			&lt;p&gt;使ってる開発者の数(シェア)だと&lt;/p&gt;
			&lt;p&gt;SenTestingKit &amp;gt; GHUnit &amp;gt; Cedar = Kiwi &amp;gt; Specta&lt;/p&gt;
			&lt;p&gt;ぐらいだけど、成熟したWeb開発に比べてそもそもTDD/BDD自体がそんなにやっている人がいない……&lt;/p&gt;
			&lt;p&gt;それを踏まえて「こういう人にはこれがおすすめ」というのを記します。&lt;/p&gt;
			&lt;p&gt;"A -&amp;gt; B -&amp;gt; C "というのは試してみる順番です。&lt;/p&gt;			&lt;br&gt;

			&lt;dl&gt;
				&lt;dt&gt;ユニットテスト自体をよくわからず、やったことがない&lt;/dt&gt;
				&lt;dd&gt; SenTestingKit -&amp;gt; GHUnit -&amp;gt; Kiwi&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;dl&gt;
				&lt;dt&gt;他のプログラミング言語環境などでxUnit 系のツールを使っている&lt;/dt&gt;
				&lt;dd&gt; SenTestingKit -&amp;gt; GHUnit -&amp;gt; Kiwi&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;dl&gt;
				&lt;dt&gt;OS X 向けのアプリケーションも開発している&lt;/dt&gt;
				&lt;dd&gt; SenTestingKit -&amp;gt; GHUnit -&amp;gt; Cedar&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;dl&gt;
				&lt;dt&gt;他のプログラミング言語環境などでBDD スタイルのテストツールを使っている&lt;/dt&gt;
				&lt;dd&gt; Kiwi -&amp;gt; Cedar -&amp;gt; Specta&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;dl&gt;
				&lt;dt&gt;開発中にCommand-U でガシガシテストしたい&lt;/dt&gt;
				&lt;dd&gt; SenTestingKit -&amp;gt; Kiwi -&amp;gt; Cedar&lt;/dd&gt;
			&lt;/dl&gt;

			&lt;dl&gt;
				&lt;dt&gt;巨大なコードや非同期呼び出し満載の複雑なライブラリをメンテしている&lt;/dt&gt;
				&lt;dd&gt; GHUnit -&amp;gt; もしくはテストターゲットを分割するのがいいかもしれない&lt;/dd&gt;
			&lt;/dl&gt;
			&lt;br&gt;

			&lt;h4&gt; まとめ&lt;/h4&gt;
			&lt;p&gt;Cedar, Kiwi, Specta のBDDスタイルあたりだとシェアはしばらくCedar とKiwi が横並び状態ではあったんだけど、開発の勢い(あいまいだ)では個人的には最近——といっても1ヶ月ぐらいはKiwi がちょっと抜けてきた印象。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/us/book/test-driving-ios-development/id502345143?mt=11"&gt;Kiwi を取り扱った電子書籍も出てる(US向けiBooksストア)&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;ただ自分が使ってるうちではなんかの拍子で突然テストランナーぶっ壊れたり(テスト成功するけど、テストコード走ってないとか)してターゲット再作成したり。非同期処理でうまくいかなかったりもした。&lt;/p&gt;
			&lt;p&gt;他にGoogle のCocoa 向け開発チームが提供している&lt;a rel="nofollow" target="_blank" href="http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting"&gt;GTMUnitTest&lt;/a&gt; とかもあったんだけ、これはSenTestingKit がまだiOS向けでに標準サポートされていない時に使いやすくする目的でものなので、最近はチェックしていないし。新たに使い出す人もあんまりいなそう。&lt;/p&gt;
			&lt;p&gt;あと初期iPhone3G時代に速攻でリリースされたことが印象に残っている内国産の&lt;a rel="nofollow" target="_blank" href="https://github.com/katsuyoshi/iunittest"&gt;iUnitTest&lt;/a&gt; も開発が続いている。&lt;/p&gt;
			&lt;p&gt;BDDスタイルのものは、ここで3つあげたけど。ただ、RSpec の恍惚が忘れられないRuby プログラマ兼iOSアプリ開発者たちによって日々新たなツールが生産し続けられているので将来的にはどれが流行っているかは正直わからない。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 23 Mar 2012 12:31:02 +0000</pubDate>
      </item>
      <item>
         <title>URLリクエストを指定した結果に書き換えるテスト用ライブラリを作った</title>
         <link>http://iphone-dev.g.hatena.ne.jp/laiso/20120323/1332430491</link>
         <description>&lt;div class="section"&gt;
&lt;pre class="syntax-highlight"&gt;
  NSURL* url = [NSURL URLWithString:&lt;span class="synConstant"&gt;@&amp;quot;http://example.com/api/hi.json&amp;quot;&lt;/span&gt;];
  NSString* fakeResponse = &lt;span class="synConstant"&gt;@&amp;quot;{&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;#92;&amp;quot;&lt;/span&gt;&lt;span class="synConstant"&gt;title&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;#92;&amp;quot;&lt;/span&gt;&lt;span class="synConstant"&gt;: &lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;#92;&amp;quot;&lt;/span&gt;&lt;span class="synConstant"&gt;Hello, 世界!&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;#92;&amp;quot;&lt;/span&gt;&lt;span class="synConstant"&gt;}&amp;quot;&lt;/span&gt;;
  [URLRaider order:url body:fakeResponse];
  
  NSURLRequest* request = [NSURLRequest requestWithURL:url];
  NSData* responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&lt;span class="synConstant"&gt;nil&lt;/span&gt; error:&lt;span class="synConstant"&gt;nil&lt;/span&gt;];
  
  NSString* responseText = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
  STAssertEqualObjects(responseText, fakeResponse, &lt;span class="synConstant"&gt;nil&lt;/span&gt;);
  STAssertEqualObjects(responseData, [fakeResponse dataUsingEncoding:NSUTF8StringEncoding], &lt;span class="synConstant"&gt;nil&lt;/span&gt;);

  [URLRaider purge];
&lt;/pre&gt;

			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/laiso/URLRaider"&gt;laiso/URLRaider (github.com)&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;URLRaider:order:body でURL とレスポンスのテキストを指定するだけ。&lt;/p&gt;
			&lt;p&gt;URLRaider:purge でオーダーしたルールを忘れる&lt;/p&gt;
			&lt;p&gt;使いどころとしては&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; リモートのWeb APIからデータを取ってきてその結果を元にhogeするんだけど、Web API まだない&lt;/li&gt;
				&lt;li&gt; 特定のWeb サービスが提供しているAPI の結果にアプリケーションの動作が依存してる……&lt;/li&gt;
				&lt;li&gt; オフラインでテストしたい&lt;/li&gt;
				&lt;li&gt; 外部リソース呼び出しが多くてテストランナーdone に時間がかかる&lt;/li&gt;
				&lt;li&gt; 開発中にUIWebView のレスポンスをローカルのHTMLにしてデバッグ&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;など&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; 使う&lt;/h4&gt;
&lt;pre&gt;
    git clone https://github.com/laiso/URLRaider.git
&lt;/pre&gt;

			&lt;p&gt;とくに依存するフレームワークとかないので、URLRaider/URLRaider/ ディレクトリ以下のクラスファイルをそのままプロジェクトにインポートするのがいいでしょう(あっ、そう言えばすっかりARC側の住人になっていたのでARC無効のプロジェクトでどうなるか試していない)。&lt;/p&gt;
			&lt;p&gt;サンプルアプリが以下にあります。サードパーティのライブラリなどを利用しているので最初にgit-submodule で取得してください。&lt;/p&gt;
&lt;pre&gt;
    git submodule update --init
    open Examples/Examples.xcodeproj
&lt;/pre&gt;
			&lt;br&gt;

			&lt;h4&gt; どのような実装か&lt;/h4&gt;
			&lt;p&gt;method swizzling 的なことをしているわけでもない。Cocoa 標準のNSURLProtocol の拡張でリクエストを乗っ取ってメモリ上に登録したテキストに置き換えているだけ。なのでURLリクエスト(&lt;a rel="nofollow" target="_blank" href="http://,"&gt;http://,&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="https://,"&gt;https://,&lt;/a&gt; file://, ftp:// ? 全部確認したわけではない) の動的置き換えに特化した。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Concepts/URLOverview.html#//apple_ref/doc/uid/20001834-155857"&gt;URL Loading System Programming Guide - Protocol Support&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://gist.github.com/1038034"&gt;Using method swizzling and blocks to test Class methods in Objective-C. — Gist&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;「モックライブラリで代用できないの？」と最初は思ってて、&lt;a rel="nofollow" target="_blank" href="http://ocmock.org/"&gt;OCMock&lt;/a&gt; とかCocoa の世界にもあるんだけど、そもそもモックとかスタブとかスパイとかフェイクとか依存性の注入とか。この辺のテスト用語周辺がよくわかんなくて、自分が思う「テスト用にHTTPリクエストの結果を置き換え」という最小の問題解決がなかなかできずにいたので(これは定義でいうとスタブの範疇っぽい)、必要最小限のものを作ってみた感じ。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/devbankh/201002"&gt;モックとスタブの違い - [lib]&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;抽象化されたモックオブジェクトベースのものと比べると、ランタイムの低レベルの部分なのでObjective-C ベースのいろんなサードパーティのライブラリにも効果が適用されることとかが良さげ。プロジェクトのExamples アプリケーションでは。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsurlconnection_Class/Reference/Reference.html"&gt;NSURLConnection&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html"&gt;UIWebView&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://allseeing-i.com/ASIHTTPRequest/"&gt;ASIHTTPRequest &lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://restkit.org/"&gt;RestKit&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;で動作確認をしている(&lt;a rel="nofollow" target="_blank" href="https://github.com/laiso/URLRaider/tree/master/Examples"&gt;https://github.com/laiso/URLRaider/tree/master/Examples&lt;/a&gt; 参照) 。&lt;a rel="nofollow" target="_blank" href="https://github.com/AFNetworking/AFNetworking/"&gt;AFNetworking&lt;/a&gt; はー、忘れてた。あとでやってみます。&lt;/p&gt;
			&lt;p&gt;ただ、ほぼ自分用なので実験的なモジュール扱いだと思う。iOS アプリケーションのテストでしたまだ試していない。&lt;/p&gt;
			&lt;p&gt;ロードマップ として考えられるのは例えば&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; MIME type やレスポンスの文字エンコーディングなどの諸情報を設定できたり&lt;/li&gt;
				&lt;li&gt; テキスト以外のデータ、フォーマットやバイナリを返すようにしたり&lt;/li&gt;
				&lt;li&gt; 特定のマッチするURLのパス以下を MyApp.app/www/example.com/*.html のバンドルリソースを返すとか(&lt;a rel="nofollow" target="_blank" href="http://coderepos.org/share/wiki/CocProxy"&gt;CocProxy&lt;/a&gt; みたいな用途)&lt;/li&gt;
				&lt;li&gt; purge とかいちいちしなくてblocks オブジェクトをAPI に渡せばいいのかもしれない&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;ぐらい&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; Fakeリクエスト系&lt;/h4&gt;
			&lt;p&gt;他のプログラミング言語環境の似たような動作するモジュールないかなと探してた過程。この手のものはFakeリクエストと呼ばれるみたい。ただ今回のはCocoa のNSURLProtocol で置き換えているだけで、リクエスト自体は本物だよなー(結果は偽物だけど)と思ったので採用しなかった&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://search.cpan.org/~gozer/mod_perl-1.31/lib/Apache/FakeRequest.pm"&gt;Apache::FakeRequest (cpan.org)&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://fakeweb.rubyforge.org/"&gt;FakeWeb (rubyforge.org)&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://sinonjs.org/docs/#server"&gt;Fake XMLHttpRequest (sinonjs.org)&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h4&gt; その他参考にした情報&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/yaakaito/20120119/1326924947"&gt;iOSのテストで非同期のHTTPリクエスト結果をモックしたい - yaakaito::Blog&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/yaakaito/20120228/1330393605"&gt;iOSアプリのテストでテストコードからモック用のサーバー立てられるライブラリ作った - yaakaito::Blog&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 22 Mar 2012 15:34:51 +0000</pubDate>
      </item>
      <item>
         <title>[iAlbumPlayer] iAlbumPlayer-2.4.0 をリリースしました。</title>
         <link>http://iphone-dev.g.hatena.ne.jp/sawat/20120204/1328372013</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20110915010529" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20110915/20110915010529.png" alt="f:id:sawat:20110915010529p:image" title="f:id:sawat:20110915010529p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/jp/app/ialbumplayer/id322962704?mt=8"&gt;AppStoreへ&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20120205005833" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20120205/20120205005833.png" alt="f:id:sawat:20120205005833p:image" title="f:id:sawat:20120205005833p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;今回の新機能はプレイリスト等の選択画面に「履歴」タブを追加しました。 &lt;/p&gt;
			&lt;p&gt;最近15件までの選択されたプレイリスト、アーティスト、ジャンルを記憶します。 &lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20120205010925" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20120205/20120205010925.png" alt="f:id:sawat:20120205010925p:image" title="f:id:sawat:20120205010925p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;前回の2.3.0アップデートではここの更新をサボってしまいましたが、変更点は以下のとおりでした。&lt;/p&gt;
			&lt;p&gt;バージョン 2.3.0 &lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;新機能 
				&lt;ul&gt;
					&lt;li&gt; アルバム再生/ソート順に「年」を追加しました。iTunesの「年」の情報に従って、古いアルバムから順に再生します。 &lt;/li&gt;
					&lt;li&gt; アルバム再生/プレイリスト再生の設定を追加しました。プレイリスト指定時のアルバム再生を「プレイリストに含まれる曲のみ」か「アルバム全体」かを選べるようになりました。 &lt;/li&gt;
					&lt;li&gt;動作/自動ロック抑制の選択肢に「充電中はロックしない」を追加しました。 &lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt;仕様変更 
				&lt;ul&gt;
					&lt;li&gt;「設定」アプリによる設定変更を廃止しました。アプリ内の設定画面を使用してください。 &lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt;バグ修正 
				&lt;ul&gt;
					&lt;li&gt;一時停止中にアプリを起動して、アプリ内の再生ボタンを押下した際に、一時停止個所からではなくアルバムの最初から再生されてしまうバグを修正しました。&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;今回のジャケ写は&lt;/p&gt;
			&lt;div class="hatena-asin-detail"&gt;
  &lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/B005LA8VZ0/hatena-hamazou-22/"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41iLRckm9PL._SL160_.jpg" class="hatena-asin-detail-image" alt="JPN(&amp;#x00901a;&amp;#x005e38;&amp;#x0076e4;)" title="JPN(&amp;#x00901a;&amp;#x005e38;&amp;#x0076e4;)"&gt;&lt;/a&gt;
  &lt;div class="hatena-asin-detail-info"&gt;
    &lt;p class="hatena-asin-detail-title"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/B005LA8VZ0/hatena-hamazou-22/"&gt;JPN(通常盤)&lt;/a&gt;&lt;/p&gt;
    &lt;ul&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;アーティスト:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/Perfume" class="okeyword"&gt;Perfume&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;出版社/メーカー:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%C6%C1%B4%D6%A5%B8%A5%E3%A5%D1%A5%F3%A5%B3%A5%DF%A5%E5%A5%CB%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A5%BA" class="okeyword"&gt;徳間ジャパンコミュニケーションズ&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;発売日:&lt;/span&gt; 2011/11/30&lt;/li&gt;
                                                      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;メディア:&lt;/span&gt; CD&lt;/li&gt;
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;購入&lt;/span&gt;: 7人 &lt;span class="hatena-asin-detail-label"&gt;クリック&lt;/span&gt;: 126回&lt;/li&gt;
      &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/B005LA8VZ0"&gt;この商品を含むブログ (117件) を見る&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div class="hatena-asin-detail-foot"&gt;&lt;/div&gt;
&lt;/div&gt;

			&lt;p&gt;です。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/sawat/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 04 Feb 2012 16:13:33 +0000</pubDate>
         <category>iAlbumPlayer</category>
      </item>
      <item>
         <title>iOS4用アプリをiOS5のライブラリでコンパイルするときは</title>
         <link>http://iphone-dev.g.hatena.ne.jp/Magical-Soft/20120108/1326016510</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;Frameworkを一旦プロジェクトから削除してもう一度登録しましょう。&lt;/p&gt;
			&lt;p&gt;というか、これに行き着くまでに時間がかかったorz&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 08 Jan 2012 09:55:10 +0000</pubDate>
      </item>
      <item>
         <title>あれぇ？</title>
         <link>http://iphone-dev.g.hatena.ne.jp/Magical-Soft/20120106/1325833674</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;態を鍛えるですが、IOS5に対応しようとしているのですが、なぜか&lt;/p&gt;
			&lt;p&gt;UIDocument.hの中でNSFilePresent を参照しようとしてコンパイルが通りません。&lt;/p&gt;
			&lt;p&gt;誰か助けて～（ぉ&lt;/p&gt;
			&lt;p&gt;ちなみにUDIDを使っちゃいけなくなったため、ランキングサイトは閉じることにします。&lt;/p&gt;
			&lt;p&gt;便利だったのに（汗&lt;/p&gt;
			&lt;p&gt;twitter APIはこれから調べます。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 06 Jan 2012 07:07:54 +0000</pubDate>
      </item>
      <item>
         <title>[debug] uncaught exceptionが発生した場所を確認する</title>
         <link>http://iphone-dev.g.hatena.ne.jp/tokorom/20111225/1324834977</link>
         <description>&lt;div class="section"&gt;
			&lt;h4&gt; uncaught exception でアプリリセット&lt;/h4&gt;
			&lt;p&gt;uncaught exceptionで&lt;b&gt;main.m&lt;/b&gt;の&lt;b&gt;UIApplicationMain&lt;/b&gt;のところでリセットが発生しているときに、以下のようなログが出て、&lt;/p&gt;
&lt;pre&gt;
2011-12-26 02:14:41.837 test&amp;#91;64894:f803] &amp;#42;&amp;#42;&amp;#42; Terminating app due to uncaught exception &amp;#39;NSRangeException&amp;#39;, reason: &amp;#39;&amp;#42;&amp;#42;&amp;#42; -&amp;#91;__NSArrayI objectAtIndex:]: index 1 beyond bounds &amp;#91;0 .. 0]&amp;#39;
&amp;#42;&amp;#42;&amp;#42; First throw call stack:
(0x12e2052 0x1896d0a 0x12ce674 0x4a7f7 0x2ab7 0x22d9d6 0x22e8a6 0x23d743 0x23e1f8 0x231aa9 0x21cffa9 0x12b61c5 0x121b022 0x121990a 0x1218db4 0x1218ccb 0x22e2a7 0x22fa9b 0x27d9 0x1fc5)
&lt;/pre&gt;

			&lt;p&gt;「で、けっきょくこのExceptionどこで発生してんねん」と思ってしまうことがあります&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f1" name="fn1" title="&amp;#x00305d;&amp;#x003082;&amp;#x00305d;&amp;#x003082;&amp;#x003053;&amp;#x00306e;Exception&amp;#x00306e;&amp;#x00767a;&amp;#x00751f;&amp;#x005834;&amp;#x006240;&amp;#x003092;&amp;#x003059;&amp;#x003050;&amp;#x00306b;&amp;#x007279;&amp;#x005b9a;&amp;#x003067;&amp;#x00304d;&amp;#x00308b;&amp;#x0065b9;&amp;#x006cd5;&amp;#x003092;&amp;#x0065e2;&amp;#x0077e5;&amp;#x00306e;&amp;#x00304b;&amp;#x00305f;&amp;#x00306f;&amp;#x00662f;&amp;#x00975e;&amp;#x0030d5;&amp;#x0030a9;&amp;#x0030ed;&amp;#x0030fc;&amp;#x00304a;&amp;#x009858;&amp;#x003044;&amp;#x003057;&amp;#x00307e;&amp;#x003059;m(_ _)m"&gt;*1&lt;/a&gt;&lt;/span&gt;。&lt;/p&gt;
			&lt;p&gt;ふつーにぱっと見で認識できるスタックトレースとか出してくれればいいのにねって。&lt;/p&gt;
			&lt;h4&gt; exception をキャッチしてデバッグ表示&lt;/h4&gt;
			&lt;p&gt;それなら、uncaughtなexceptionをキャッチしてあげようということで、UIApplicationMainのところをtry/catchで囲ってデバッグ表示を追加してみました。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synType"&gt;int&lt;/span&gt; main(&lt;span class="synType"&gt;int&lt;/span&gt; argc, &lt;span class="synType"&gt;char&lt;/span&gt; *argv[])
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  &lt;span class="synType"&gt;int&lt;/span&gt; retVal;
  &lt;span class="synStatement"&gt;@try&lt;/span&gt; {
    retVal = UIApplicationMain(argc, argv, &lt;span class="synConstant"&gt;nil&lt;/span&gt;, NSStringFromClass([AppDelegate class]));
  }
  &lt;span class="synStatement"&gt;@catch&lt;/span&gt; (NSException *exception) {
    NSLog(&lt;span class="synConstant"&gt;@&amp;quot;&lt;/span&gt;&lt;span class="synSpecial"&gt;%@&lt;/span&gt;&lt;span class="synConstant"&gt;&amp;quot;&lt;/span&gt;, [exception callStackSymbols]); &lt;span class="synComment"&gt;//&amp;amp;#60; ★1&lt;/span&gt;
    &lt;span class="synStatement"&gt;@throw&lt;/span&gt; exception; &lt;span class="synComment"&gt;//&amp;amp;#60; ★2&lt;/span&gt;
  }
  &lt;span class="synStatement"&gt;@finally&lt;/span&gt; {
    [pool release];
  }
  &lt;span class="synStatement"&gt;return&lt;/span&gt; retVal;
}
&lt;/pre&gt;

			&lt;h5&gt; ★1&lt;/h5&gt;
			&lt;p&gt;どうもiOS4.0から、NSExceptionに&lt;b&gt;callStackSymbols&lt;/b&gt;という便利メソッドが追加されたようなのでそれを利用。&lt;/p&gt;
			&lt;p&gt;そうすると、uncaughtなexceptionをキャッチして、以下ようにそのexceptionが発生するまでの経緯がログ出力されます。&lt;/p&gt;
&lt;pre&gt;
2011-12-26 02:27:18.933 test&amp;#91;65600:f803] (
	0   CoreFoundation                      0x012e206e __exceptionPreprocess + 206
	1   libobjc.A.dylib                     0x01896d0a objc_exception_throw + 44
	2   CoreFoundation                      0x012ce674 -&amp;#91;__NSArrayI objectAtIndex:] + 196
	3   test                                0x0004a6e7 -&amp;#91;RootViewController init] + 215
	4   test                                0x000029a7 -&amp;#91;AppDelegate application:didFinishLaunchingWithOptions:] + 567
	5   UIKit                               0x0022d9d6 -&amp;#91;UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1292
	6   UIKit                               0x0022e8a6 -&amp;#91;UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 508
	7   UIKit                               0x0023d743 -&amp;#91;UIApplication handleEvent:withNewEvent:] + 1027
	8   UIKit                               0x0023e1f8 -&amp;#91;UIApplication sendEvent:] + 68
	9   UIKit                               0x00231aa9 _UIApplicationHandleEvent + 8196
	10  GraphicsServices                    0x021cffa9 PurpleEventCallback + 1274
	11  CoreFoundation                      0x012b61c5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
	12  CoreFoundation                      0x0121b022 __CFRunLoopDoSource1 + 146
	13  CoreFoundation                      0x0121990a __CFRunLoopRun + 2218
	14  CoreFoundation                      0x01218db4 CFRunLoopRunSpecific + 212
	15  CoreFoundation                      0x01218ccb CFRunLoopRunInMode + 123
	16  UIKit                               0x0022e2a7 -&amp;#91;UIApplication _run] + 576
	17  UIKit                               0x0022fa9b UIApplicationMain + 1175
	18  test                                0x0000258b main + 187
	19  test                                0x00001d65 start + 53
)
&lt;/pre&gt;

			&lt;p&gt;これを見れば「RootViewControllerのinitメソッド内にダメなコードがあるんだね」ということがすぐに分かるようになります。&lt;/p&gt;
			&lt;h5&gt; ★2&lt;/h5&gt;
			&lt;p&gt;ちなみにexceptionをキャッチしっぱなしだとアプリ的には異常がなかったという扱いになってしまうので、同じexceptionをそのままthrowしておきます。&lt;/p&gt;
			&lt;h4&gt; DEBUGビルド時にだけこれを有効に&lt;/h4&gt;
			&lt;p&gt;DEBUGビルド時にだけこれを有効にしたい場合には、以下のように「#ifdef DEBUG」で囲ってやるのが良いかもしれません。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synType"&gt;int&lt;/span&gt; main(&lt;span class="synType"&gt;int&lt;/span&gt; argc, &lt;span class="synType"&gt;char&lt;/span&gt; *argv[])
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  &lt;span class="synType"&gt;int&lt;/span&gt; retVal;
&lt;span class="synPreProc"&gt;#ifdef DEBUG&lt;/span&gt;
  &lt;span class="synStatement"&gt;@try&lt;/span&gt; {
&lt;span class="synPreProc"&gt;#endif&lt;/span&gt;
    retVal = UIApplicationMain(argc, argv, &lt;span class="synConstant"&gt;nil&lt;/span&gt;, NSStringFromClass([AppDelegate class]));
&lt;span class="synPreProc"&gt;#ifdef DEBUG&lt;/span&gt;
  }
  &lt;span class="synStatement"&gt;@catch&lt;/span&gt; (NSException *exception) {
    NSLog(&lt;span class="synConstant"&gt;@&amp;quot;&lt;/span&gt;&lt;span class="synSpecial"&gt;%@&lt;/span&gt;&lt;span class="synConstant"&gt;&amp;quot;&lt;/span&gt;, [exception callStackSymbols]);
    &lt;span class="synStatement"&gt;@throw&lt;/span&gt; exception;
  }
  &lt;span class="synStatement"&gt;@finally&lt;/span&gt; {
&lt;span class="synPreProc"&gt;#endif&lt;/span&gt;
    [pool release];
&lt;span class="synPreProc"&gt;#ifdef DEBUG&lt;/span&gt;
  }
&lt;span class="synPreProc"&gt;#endif&lt;/span&gt;
  &lt;span class="synStatement"&gt;return&lt;/span&gt; retVal;
}
&lt;/pre&gt;

			&lt;h4&gt; ARCを利用する場合&lt;/h4&gt;
			&lt;p&gt;ARCを利用する場合はもうちょっとシンプルにできる。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synType"&gt;int&lt;/span&gt; main(&lt;span class="synType"&gt;int&lt;/span&gt; argc, &lt;span class="synType"&gt;char&lt;/span&gt; *argv[])
{
  &lt;span class="synType"&gt;int&lt;/span&gt; retVal;
  @autoreleasepool {
&lt;span class="synPreProc"&gt;#ifdef DEBUG&lt;/span&gt;
    &lt;span class="synStatement"&gt;@try&lt;/span&gt; {
&lt;span class="synPreProc"&gt;#endif&lt;/span&gt;
      retVal = UIApplicationMain(argc, argv, &lt;span class="synConstant"&gt;nil&lt;/span&gt;, NSStringFromClass([AppDelegate class]));
&lt;span class="synPreProc"&gt;#ifdef DEBUG&lt;/span&gt;
    }
    &lt;span class="synStatement"&gt;@catch&lt;/span&gt; (NSException *exception) {
      NSLog( &lt;span class="synConstant"&gt;@&amp;quot;&lt;/span&gt;&lt;span class="synSpecial"&gt;%@&lt;/span&gt;&lt;span class="synConstant"&gt;&amp;quot;&lt;/span&gt;, [exception callStackSymbols] );
      &lt;span class="synStatement"&gt;@throw&lt;/span&gt; exception;
    }
&lt;span class="synPreProc"&gt;#endif&lt;/span&gt;
  }
  &lt;span class="synStatement"&gt;return&lt;/span&gt; retVal;
}
&lt;/pre&gt;

			&lt;h4&gt; でも、こんなごちゃごちゃ書かなくてもよいかもしれない&lt;/h4&gt;
			&lt;p&gt;ちなみに、uncaught exceptionを制御するための「NSSetUncaughtExceptionHandler」といった関数もあるようで、こちらを使えばもっとスマートな方法があるかもしれません&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f2" name="fn2" title="&amp;#x003053;&amp;#x003061;&amp;#x003089;&amp;#x003082;&amp;#x0065e2;&amp;#x0077e5;&amp;#x00306e;&amp;#x00304b;&amp;#x00305f;&amp;#x00662f;&amp;#x00975e;&amp;#x0030d5;&amp;#x0030a9;&amp;#x0030ed;&amp;#x0030fc;&amp;#x003092;&amp;#x00304a;&amp;#x009858;&amp;#x003044;&amp;#x003057;&amp;#x00307e;&amp;#x003059;"&gt;*2&lt;/a&gt;&lt;/span&gt;。&lt;/p&gt;
			&lt;p&gt;もう眠くなったのと、↑でも特に困らなかったので今日はここまで。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/tokorom/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/share" class="twitter-share-button"&gt;ツイートする&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn1" name="f1"&gt;*1&lt;/a&gt;：そもそもこのExceptionの発生場所をすぐに特定できる方法を既知のかたは是非フォローお願いしますm(_ _)m&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn2" name="f2"&gt;*2&lt;/a&gt;：こちらも既知のかた是非フォローをお願いします&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 25 Dec 2011 17:42:57 +0000</pubDate>
         <category>debug</category>
      </item>
      <item>
         <title>[iAlbumPlayer] iAlbumPlayer-2.2.0 をリリースしました。</title>
         <link>http://iphone-dev.g.hatena.ne.jp/sawat/20111217/1324108359</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20110915010529" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20110915/20110915010529.png" alt="f:id:sawat:20110915010529p:image" title="f:id:sawat:20110915010529p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/jp/app/ialbumplayer/id322962704?mt=8"&gt;AppStoreへ&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20111217164452" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20111217/20111217164452.png" alt="f:id:sawat:20111217164452p:image" title="f:id:sawat:20111217164452p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;すでにおとといになってしまいましたが、iAlbumPlayerのアップデートをリリースしました。&lt;/p&gt;
			&lt;p&gt;変更点は以下の通りです。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;新機能
				&lt;ul&gt;
					&lt;li&gt;アプリ内で設定変更ができるようになりました。右下の歯車アイコンをタップしてください。 &lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt;仕様変更 
				&lt;ul&gt;
					&lt;li&gt;プレイリスト指定時にはアルバム全曲ではなく、プレイリストに含まれる曲のみを再生するようにしました。 &lt;/li&gt;
					&lt;li&gt;アーティスト一覧画面をアルバムアーティスト毎で表示するように変更しました。(iOS5以降のみ) &lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt;バグ修正 
				&lt;ul&gt;
					&lt;li&gt;iOS5で非正方形のアートワークが正方形に引き延ばされて表示されるバグを修正しました。 &lt;/li&gt;
					&lt;li&gt;ボタン等の配置が崩れるバグを修正しました。 &lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt;その他、細かい修正をしました。&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;アプリ内の設定画面を入れたのでいろいろ拡張しやすくなりました。次のアップデートで活用しまーす。&lt;/p&gt;
			&lt;p&gt;今回のジャケ写は&lt;/p&gt;
			&lt;div class="hatena-asin-detail"&gt;
  &lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/B005DIBJ2M/hatena-hamazou-22/"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/518PMlUX6UL._SL160_.jpg" class="hatena-asin-detail-image" alt="&amp;#x0030ce;&amp;#x0030eb;&amp;#x0030cb;&amp;#x0030eb;&amp;#x0030fb;&amp;#x005c11;&amp;#x005e74;&amp;#x003088;&amp;#x006211;&amp;#x00306b;&amp;#x005e30;&amp;#x00308c;" title="&amp;#x0030ce;&amp;#x0030eb;&amp;#x0030cb;&amp;#x0030eb;&amp;#x0030fb;&amp;#x005c11;&amp;#x005e74;&amp;#x003088;&amp;#x006211;&amp;#x00306b;&amp;#x005e30;&amp;#x00308c;"&gt;&lt;/a&gt;
  &lt;div class="hatena-asin-detail-info"&gt;
    &lt;p class="hatena-asin-detail-title"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/B005DIBJ2M/hatena-hamazou-22/"&gt;ノルニル・少年よ我に帰れ&lt;/a&gt;&lt;/p&gt;
    &lt;ul&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;アーティスト:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%A4%E4%A4%AF%A4%B7%A4%DE%A4%EB%A4%A8%A4%C4%A4%B3%A5%E1%A5%C8%A5%ED%A5%AA%A1%BC%A5%B1%A5%B9%A5%C8%A5%E9" class="okeyword"&gt;やくしまるえつこメトロオーケストラ&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;出版社/メーカー:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%A5%AD%A5%F3%A5%B0%A5%EC%A5%B3%A1%BC%A5%C9" class="okeyword"&gt;キングレコード&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;発売日:&lt;/span&gt; 2011/10/05&lt;/li&gt;
                                                      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;メディア:&lt;/span&gt; CD&lt;/li&gt;
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;購入&lt;/span&gt;: 9人 &lt;span class="hatena-asin-detail-label"&gt;クリック&lt;/span&gt;: 582回&lt;/li&gt;
      &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/B005DIBJ2M"&gt;この商品を含むブログ (101件) を見る&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div class="hatena-asin-detail-foot"&gt;&lt;/div&gt;
&lt;/div&gt;

			&lt;p&gt;です。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/sawat/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 17 Dec 2011 07:52:39 +0000</pubDate>
         <category>iAlbumPlayer</category>
      </item>
      <item>
         <title>[UIKit] MacアプリでもUIKitを使ってみる with Chameleon</title>
         <link>http://iphone-dev.g.hatena.ne.jp/tokorom/20111127/1322444527</link>
         <description>&lt;div class="section"&gt;
			&lt;h4&gt; Chameleon&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://chameleonproject.org/"&gt;Chameleon - UIKit for Mac development&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;このChameleonを使うとMacアプリの開発でもUIKitを使えるようになるとのこと。&lt;/p&gt;
			&lt;p&gt;前々から気になっていたので少し試してみた。&lt;/p&gt;
			&lt;p&gt;Chameleon自体は&lt;a rel="nofollow" target="_blank" href="https://github.com/BigZaphod/Chameleon"&gt;BigZaphod/Chameleon - GitHub&lt;/a&gt;からダウンロード可能。&lt;/p&gt;
			&lt;p&gt;また、Chameleonを試用した本記事のソースコード一式は&lt;a rel="nofollow" target="_blank" href="https://github.com/tokorom/ChameleonUIKitDemo"&gt;tokorom/ChameleonUIKitDemo - GitHub&lt;/a&gt;からダウンロード可能。&lt;/p&gt;
			&lt;p&gt;今回は、UIViewControllerで画面を１つ作り、そこにUIImageViewやUIButtonを貼りつけて動かしてみるところまで実験。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; まずはプロジェクトにChameleonを取り込む&lt;/h4&gt;
			&lt;p&gt;&lt;b&gt;※上記サイトからあらかじめChameleonをダウンロードしておくこと&lt;/b&gt;&lt;/p&gt;
			&lt;p&gt;まずはXcodeで空のMacアプリのプロジェクトを作成する。&lt;/p&gt;
			&lt;p&gt;そのプロジェクトにChameleonの中の&lt;b&gt;UIKit.xcodeproj&lt;/b&gt;だけ追加する。&lt;/p&gt;
			&lt;p&gt;次に、Build Phasesの&lt;b&gt;Link Binary With Libraries&lt;/b&gt;に&lt;b&gt;UIKit.framework&lt;/b&gt;を追加する。&lt;/p&gt;
			&lt;p&gt;↓このあたりの実施後の画面が↓になります↓&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20111128103910" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20111128/20111128103910.png" alt="f:id:tokorom:20111128103910p:image" title="f:id:tokorom:20111128103910p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; UIKitを他のコードから使えるようにimport&lt;/h4&gt;
			&lt;p&gt;■ChameleonUIKitDemo-Prefix.pch&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 
			&lt;p&gt;プロジェクトの中にはじめからあるプリコンパイル済みヘッダで、上記のように&lt;/p&gt;
			&lt;p&gt;UIKit/UIKit.h&lt;/p&gt;
			&lt;p&gt;UIKit/UIKitView.h&lt;/p&gt;
			&lt;p&gt;をimportしておく。&lt;/p&gt;
			&lt;p&gt;もちろん、各ソースコードから個別にimportしても構わない。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; UIKit用のAppDelegateを作っておく&lt;/h4&gt;
			&lt;p&gt;■ChameleonAppDelegate.h&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 
			&lt;p&gt;■ChameleonAppDelegate.m&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 			&lt;br&gt;

			&lt;p&gt;ここは普段のiOS用アプリ開発とほぼ同じでOK！&lt;/p&gt;
			&lt;p&gt;唯一違うのは、windowやViewControllerのautoresizingMaskを明示的に指定するコードを追加するくらい。&lt;/p&gt;
			&lt;p&gt;UIViewControllerがそのまま使えるというのは素晴らしい！&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; はじめに表示するRootViewControllerを作っておく&lt;/h4&gt;
			&lt;p&gt;ここはiOS用アプリ開発と全く同じ！&lt;/p&gt;
			&lt;p&gt;ここではUIImageViewとUIButtonを追加している。&lt;/p&gt;
			&lt;p&gt;※必要な画像はあらかじめプロジェクトに追加しておくこと&lt;/p&gt;
			&lt;p&gt;■RootViewController.h&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 
			&lt;p&gt;■RootViewController.m&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 			&lt;br&gt;

			&lt;h4&gt; Mac用のAppDelegateをUIKit用AppDelegateに接続&lt;/h4&gt;
			&lt;p&gt;■AppDelegate.h&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 
			&lt;p&gt;■AppDelegate.m&lt;/p&gt;
			&lt;p&gt;&lt;/p&gt; 			&lt;br&gt;

			&lt;p&gt;ここでは、UIKitViewと先ほど作成したChameleonAppDelegate（UIKit用のAppDelegate）を追加する。&lt;/p&gt;
			&lt;p&gt;UIKitViewは後ほどInterface Builderで接続するためIBOutletを付けておく。&lt;/p&gt;
			&lt;p&gt;そして、&lt;b&gt;applicationDidFinishLaunching&lt;/b&gt;の中で、UIKit用AppDelegateに移管するため、&lt;b&gt;UIKitView&lt;/b&gt;のインスタンスに対して&lt;b&gt;launchApplicationWithDelegate&lt;/b&gt;をコールして引数にUIKit用AppDelegateのインスタンスを指定する。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; Interface Builder で最後の仕上げ&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20111128104037" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20111128/20111128104037.png" alt="f:id:tokorom:20111128104037p:image" title="f:id:tokorom:20111128104037p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;最後に、Interface Builderで&lt;b&gt;MainMenu.xib&lt;/b&gt;を開き、WindowsのメインViewにUIKitViewを追加する。&lt;/p&gt;
			&lt;p&gt;UIKitViewというオブジェクトはツール上は存在しないので、代わりに&lt;b&gt;Custom View&lt;/b&gt;というのを貼り付ける。&lt;/p&gt;
			&lt;p&gt;そして、そのClass名を&lt;b&gt;UIKitView&lt;/b&gt;に変更する。&lt;/p&gt;
			&lt;p&gt;※このあたりは↑のスクリーンキャプチャのとおりです&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;これができたら、そのUIKitViewをApp Delegateに作っておいたOutlet（&lt;b&gt;chameleonView&lt;/b&gt;）に接続する。&lt;/p&gt;
			&lt;p&gt;以上で完了。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; ビルド＆ラン！&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20111128103636" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20111128/20111128103636.png" alt="f:id:tokorom:20111128103636p:image" title="f:id:tokorom:20111128103636p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;実行してみたところ&lt;b&gt;UIImageView&lt;/b&gt;も&lt;b&gt;UIButton&lt;/b&gt;もきっちり動き、ボタン押下のアクションも問題なくハンドリングされていました。&lt;/p&gt;
			&lt;p&gt;なかなか面白いですね！&lt;/p&gt;
			&lt;h4&gt; UIKit.frameworkをappの中に含める設定&lt;/h4&gt;
			&lt;p&gt;なお、このままだとappとして出力した後にUIKit.frameworkが見つからなくて動作しなくなってしまう。&lt;/p&gt;
			&lt;p&gt;そのため、&lt;b&gt;Builde Phases&lt;/b&gt;に&lt;b&gt;Copy Files&lt;/b&gt;という項を追加し、そこにUIKit.frameworkを設定しておく必要がある。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/tokorom/20111130030943" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/tokorom/20111130/20111130030943.png" alt="f:id:tokorom:20111130030943p:image" title="f:id:tokorom:20111130030943p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/tokorom/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/share" class="twitter-share-button"&gt;ツイートする&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 28 Nov 2011 01:42:07 +0000</pubDate>
         <category>UIKit</category>
      </item>
      <item>
         <title>iOS5って</title>
         <link>http://iphone-dev.g.hatena.ne.jp/Magical-Soft/20111017/1318837340</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;早速仲間内ウェアを改良したのですが。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:&lt;span class="synConstant"&gt;@&amp;quot;UITableViewCell&amp;quot;&lt;/span&gt;];
	&lt;span class="synStatement"&gt;if&lt;/span&gt; (cell == &lt;span class="synConstant"&gt;nil&lt;/span&gt;) {
		cell = [[UITableViewCell alloc] initWithFrame:CGRectZero];
		[cell autorelease];
	}
&lt;/pre&gt;

			&lt;p&gt;ってinitWithFrameがすっきりしちゃいました。&lt;/p&gt;
			&lt;p&gt;ほかにもiOS5だと禁止された文法が増えたような。&lt;/p&gt;
			&lt;p&gt;まぁ、PushNotification周りは変わってなかったのでよかったです。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 17 Oct 2011 07:42:20 +0000</pubDate>
      </item>
      <item>
         <title>[iOS][cocos2d] cocos2d入門書「cocos2d for iPhoneレッスンノート」を書きました</title>
         <link>http://iphone-dev.g.hatena.ne.jp/paella/20110928/1317195179</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://akio0911.net"&gt;拡張現実ライフ&lt;/a&gt;の@akio0911さんとの共著で、cocos2dの入門-初心者向けの「cocos2d for iPhoneレッスンノート」 なる本を書きました。３つのゲーム作成を通じて、cocos2dの中身や扱い方が学べるようになっている本です。&lt;/p&gt;			&lt;br&gt;

			&lt;div class="hatena-asin-detail"&gt;
  &lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4899772882/hatena-hamazou-22/"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51n6i1uC3vL._SL160_.jpg" class="hatena-asin-detail-image" alt="cocos2d for iPhone&amp;#x0030ec;&amp;#x0030c3;&amp;#x0030b9;&amp;#x0030f3;&amp;#x0030ce;&amp;#x0030fc;&amp;#x0030c8;" title="cocos2d for iPhone&amp;#x0030ec;&amp;#x0030c3;&amp;#x0030b9;&amp;#x0030f3;&amp;#x0030ce;&amp;#x0030fc;&amp;#x0030c8;"&gt;&lt;/a&gt;
  &lt;div class="hatena-asin-detail-info"&gt;
    &lt;p class="hatena-asin-detail-title"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4899772882/hatena-hamazou-22/"&gt;cocos2d for iPhoneレッスンノート&lt;/a&gt;&lt;/p&gt;
    &lt;ul&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;作者:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%B2%C3%C6%A3%B4%B2%BF%CD" class="okeyword"&gt;加藤寛人&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%BA%B4%C6%A3%BF%AD%B8%E3" class="okeyword"&gt;佐藤伸吾&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;出版社/メーカー:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%C8%A5%EB%A5%BA" class="okeyword"&gt;ラトルズ&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;発売日:&lt;/span&gt; 2011/09/22&lt;/li&gt;
                                                      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;メディア:&lt;/span&gt; 単行本（ソフトカバー）&lt;/li&gt;
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;購入&lt;/span&gt;: 6人 &lt;span class="hatena-asin-detail-label"&gt;クリック&lt;/span&gt;: 91回&lt;/li&gt;
      &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/4899772882"&gt;この商品を含むブログ (7件) を見る&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div class="hatena-asin-detail-foot"&gt;&lt;/div&gt;
&lt;/div&gt;
			&lt;br&gt;

			&lt;p&gt;cocos2dの本と言えば「&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/4844330411"&gt;cocos2dで作る iPhone＆iPadゲームプログラミング&lt;/a&gt;」&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/paella/#f1" name="fn1" title="&amp;#x003053;&amp;#x003061;&amp;#x003089;&amp;#x003067;&amp;#x003082;&amp;#x003001;&amp;#x0076e3;&amp;#x004fee;&amp;#x003068;&amp;#x003057;&amp;#x003066;&amp;#x00307b;&amp;#x003093;&amp;#x00306e;&amp;#x005c11;&amp;#x003057;&amp;#x00304a;&amp;#x00624b;&amp;#x004f1d;&amp;#x003044;&amp;#x003055;&amp;#x00305b;&amp;#x003066;&amp;#x003082;&amp;#x003089;&amp;#x003044;&amp;#x00307e;&amp;#x003057;&amp;#x00305f;"&gt;*1&lt;/a&gt;&lt;/span&gt;が有名ですが、その中にない情報もいくつか載っています。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;たとえば、書籍としてはあまり紹介されることのない高性能サウンドエンジン：CocosDenshionについて、基本の使い方からサウンドのフェードイン/フェードアウトエフェクトを簡単に扱う方法などを説明しています。また、使いこなせるとすごく役立つイージングアクションの丁寧な説明が載っているのもポイントです。Flashコンテンツによくあるような、物体の滑らかな移動を使いこなせるわけですね。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;cocos2dは、iOS上で動く2Dゲームエンジンとしてはかなり強力なものであるにも関わらず、高速で使い勝手もよいフレームワークです（執筆している最中、何度もそのことを再認識しました）。世界中の開発者も使っているエンジンを使って、いっしょに楽しいアプリを作りませんか？&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;サンプルコードのダウンロードなど、サポートページは&lt;a rel="nofollow" target="_blank" href="http://www.rutles.net/books/288.html"&gt;こちら&lt;/a&gt;です。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; リンク&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://akio0911.net/archives/7887"&gt;iOSゲームアプリ開発の入門書！「cocos2d for iPhoneレッスンノート」を執筆しました！＆予約開始！ &amp;#8211; 拡張現実ライフ&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/Seasons/20110907/1315385809"&gt;cocos2d入門向けとして最適!! 「cocos2d for iPhoneレッスンノート」が発売されるぞぉ〜〜！！ - Seasons.NET&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/nakamura001/20110907/1315412598"&gt;2冊目の日本語のcocos2d本「cocos2d for iPhoneレッスンノート」 - 強火で進め&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="http://xionchannel.blogspot.com/2011/09/cocos2d-for-iphone.html"&gt;xionchannel@software: cocos2d for iPhone レッスンノート レビュー&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;

		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/paella/#fn1" name="f1"&gt;*1&lt;/a&gt;：こちらでも、監修としてほんの少しお手伝いさせてもらいました&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 28 Sep 2011 07:32:59 +0000</pubDate>
      </item>
      <item>
         <title>今までに購入したiOS開発本</title>
         <link>http://iphone-dev.g.hatena.ne.jp/sawat/20110914/1316016776</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;-&amp;gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/sawat/20110914/1316015167"&gt; 今までに購入したiOS開発本 - sawatの日記&lt;/a&gt;&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/sawat/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 14 Sep 2011 16:12:56 +0000</pubDate>
      </item>
      <item>
         <title>[iAlbumPlayer] iAlbumPlayer-2.0.0をリリースしました。</title>
         <link>http://iphone-dev.g.hatena.ne.jp/sawat/20110914/1316016775</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20110915010529" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20110915/20110915010529.png" alt="f:id:sawat:20110915010529p:image" title="f:id:sawat:20110915010529p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/jp/app/ialbumplayer/id322962704?mt=8"&gt;AppStoreへ&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;変更点は以下の通りです。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; アプリのアイコンと起動画面のイメージを変更しました。 &lt;/li&gt;
				&lt;li&gt; アーティスト選択画面にインデックスを追加しました。 &lt;/li&gt;
				&lt;li&gt; 画面を左右にスワイプして前や次のアルバムを選択する操作を追加しました。 &lt;/li&gt;
				&lt;li&gt; 細かいバグ修正。&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;前回のアップデートからずいぶん間が開いてしまいましたが、今は結構アプリ作りたいモードなので近いうちにまたバージョンアップするかも。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/sawat/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 14 Sep 2011 16:12:55 +0000</pubDate>
         <category>iAlbumPlayer</category>
      </item>
      <item>
         <title>[SongsInfo] SongsInfo バージョン 2.0.0をリリースしました。</title>
         <link>http://iphone-dev.g.hatena.ne.jp/sawat/20110831/1314749609</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/sawat/20110408010001" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sawat/20110408/20110408010001.png" alt="f:id:sawat:20110408010001p:image" title="f:id:sawat:20110408010001p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/jp/app/songsinfo/id428766423?mt=8"&gt;AppStoreへ&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;今回のアップデートでは以下の機能を追加しています。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; 項目の並び替え&lt;/li&gt;
				&lt;li&gt; アートワークの拡大表示&lt;/li&gt;
				&lt;li&gt; 曲情報をTwitterに投稿&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;あと、曲を選択するボタンの位置とアイコンを変更しました。左下の音符マークのフォルダをタップしてください。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/sawat/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 31 Aug 2011 00:13:29 +0000</pubDate>
         <category>SongsInfo</category>
      </item>
      <item>
         <title>VimでのiOSアプリ開発に便利なsnippetsファイル作りました</title>
         <link>http://iphone-dev.g.hatena.ne.jp/tokorom/20110709/1310230092</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;VimでのiOSアプリ開発生活を快適にするために、&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; Foundation.framework&lt;/li&gt;
				&lt;li&gt; UIKit.framework&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;のクラス、メソッドなどをヘッダーファイル&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f1" name="fn1" title="iOS4.3&amp;#x00306e;SDK&amp;#x00306e;&amp;#x003082;&amp;#x00306e;"&gt;*1&lt;/a&gt;&lt;/span&gt;から抜いてVim用のsnippetsファイルを作成しました。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;snipMate.vim や neocomplcache で利用できる見込み&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f2" name="fn2" title="&amp;#x00624b;&amp;#x005143;&amp;#x003067;&amp;#x00306f;snipMate.vim&amp;#x00306e;&amp;#x00307b;&amp;#x003046;&amp;#x003067;&amp;#x003057;&amp;#x00304b;&amp;#x0030c1;&amp;#x0030a7;&amp;#x0030c3;&amp;#x0030af;&amp;#x003057;&amp;#x003066;&amp;#x00307e;&amp;#x00305b;&amp;#x003093;"&gt;*2&lt;/a&gt;&lt;/span&gt;です。&lt;/p&gt;
			&lt;p&gt;もし必要なかたがいらっしゃいましたら&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; &lt;a rel="nofollow" target="_blank" href="https://github.com/tokorom/ios-vim-snippets"&gt;https://github.com/tokorom/ios-vim-snippets&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;からダウンロードをお願いします。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;例えば、pushViewController:animated: のsnippetは、&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
snippet pushViewController:animated:
	&lt;span class="synStatement"&gt;pushViewController&lt;/span&gt;:${&lt;span class="synConstant"&gt;1&lt;/span&gt;:(UIViewController*)viewController} animated:${&lt;span class="synConstant"&gt;2&lt;/span&gt;:(&lt;span class="synType"&gt;BOOL&lt;/span&gt;)animated}
&lt;/pre&gt;

			&lt;p&gt;のように定義されており、どのメソッドも引数のところがプレースホルダになっています&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f3" name="fn3" title="&amp;#x005168;&amp;#x0090e8;&amp;#x0030c1;&amp;#x0030a7;&amp;#x0030c3;&amp;#x0030af;&amp;#x003057;&amp;#x003066;&amp;#x003044;&amp;#x00308b;&amp;#x00308f;&amp;#x003051;&amp;#x003067;&amp;#x00306f;&amp;#x00306a;&amp;#x003044;&amp;#x00306e;&amp;#x003067;&amp;#x004e0d;&amp;#x005099;&amp;#x00306f;&amp;#x003042;&amp;#x00308b;&amp;#x00304b;&amp;#x003082;"&gt;*3&lt;/a&gt;&lt;/span&gt;。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;なお、スニペット名をメソッドの名前そのままにして長いので、neocomplcasheによるスニペット補完の利用が推奨されます&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#f4" name="fn4" title="&amp;#x0030b9;&amp;#x0030cb;&amp;#x0030da;&amp;#x0030c3;&amp;#x0030c8;&amp;#x0088dc;&amp;#x005b8c;&amp;#x003092;&amp;#x004f7f;&amp;#x003046;&amp;#x00306a;&amp;#x003089;&amp;#x00751f;&amp;#x00306e;&amp;#x0030e1;&amp;#x0030bd;&amp;#x0030c3;&amp;#x0030c9;&amp;#x00540d;&amp;#x00306e;&amp;#x00307e;&amp;#x00307e;&amp;#x00306e;&amp;#x00307b;&amp;#x003046;&amp;#x00304c;&amp;#x004fbf;&amp;#x005229;&amp;#x003060;&amp;#x003068;&amp;#x00601d;&amp;#x003044;&amp;#x00307e;&amp;#x003059;"&gt;*4&lt;/a&gt;&lt;/span&gt;。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://vim-users.jp/2009/07/hack-49/"&gt;Vim-users.jp - Hack #49: 自動補完を活用する　後編&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;p&gt;以下、自分用メモ。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; 各フレームワークのtagsの作成&lt;/h4&gt;
			&lt;p&gt;例えば、Foundation.frameworkとUIKit.frameworkのtagsを作成する場合、&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
$ ctags &lt;span class="synSpecial"&gt;-R&lt;/span&gt; &lt;span class="synSpecial"&gt;--language-force=ObjC&lt;/span&gt; /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.&lt;span class="synConstant"&gt;3&lt;/span&gt;.sdk/System/Library/Frameworks/Foundation.framework/Headers /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.&lt;span class="synConstant"&gt;3&lt;/span&gt;.sdk/System/Library/Frameworks/UIKit.framework/Headers
&lt;/pre&gt;

			&lt;p&gt;とする。&lt;/p&gt;
			&lt;p&gt;ObjCに対応したctagsを利用する必要あり。&lt;/p&gt;
			&lt;p&gt;他のフレームワークのやつも欲しければ、ヘッダーファイルが入っているフォルダのパスを加えればOK。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; tagsからsnippetsファイルを作成&lt;/h4&gt;
			&lt;p&gt;今回は、rubyでスクリプトを書いて対応。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; tags2vimsnippets.rb &lt;/li&gt;
			&lt;/ul&gt;
&lt;pre class="syntax-highlight"&gt;
inputFileName = &lt;span class="synIdentifier"&gt;ARGV&lt;/span&gt;[&lt;span class="synConstant"&gt;0&lt;/span&gt;]
outputFileName = &lt;span class="synIdentifier"&gt;ARGV&lt;/span&gt;[&lt;span class="synConstant"&gt;1&lt;/span&gt;]

result = []
snippets = []
&lt;span class="synIdentifier"&gt;IO&lt;/span&gt;.foreach( inputFileName ) {|&lt;span class="synIdentifier"&gt;l&lt;/span&gt;|
    result = l.scan(&lt;span class="synSpecial"&gt;/&lt;/span&gt;&lt;span class="synConstant"&gt;^[+-]([:a-zA-Z0-9_-]+).*&amp;#92;/&amp;#92;^[+-] &amp;#92;([^)]*&amp;#92;)([^;]+);&lt;/span&gt;&lt;span class="synSpecial"&gt;/&lt;/span&gt;)
    &lt;span class="synStatement"&gt;if&lt;/span&gt; !result.empty?
        &lt;span class="synStatement"&gt;next&lt;/span&gt; &lt;span class="synStatement"&gt;if&lt;/span&gt; &lt;span class="synConstant"&gt;6&lt;/span&gt; &amp;amp;&lt;span class="synComment"&gt;#62; result[0][0].length &lt;/span&gt;
        snippets.push( sprintf(&lt;span class="synSpecial"&gt;&amp;quot;&lt;/span&gt;&lt;span class="synConstant"&gt;snippet %s&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;quot;&lt;/span&gt;, result[&lt;span class="synConstant"&gt;0&lt;/span&gt;][&lt;span class="synConstant"&gt;0&lt;/span&gt;]) )
        t = result[&lt;span class="synConstant"&gt;0&lt;/span&gt;][&lt;span class="synConstant"&gt;1&lt;/span&gt;]
        t = t.gsub(&lt;span class="synSpecial"&gt;'&lt;/span&gt;&lt;span class="synConstant"&gt; *&lt;/span&gt;&lt;span class="synSpecial"&gt;'&lt;/span&gt;, &lt;span class="synSpecial"&gt;'&lt;/span&gt;&lt;span class="synConstant"&gt;*&lt;/span&gt;&lt;span class="synSpecial"&gt;'&lt;/span&gt;).gsub(&lt;span class="synSpecial"&gt;'&lt;/span&gt;&lt;span class="synConstant"&gt; (&lt;/span&gt;&lt;span class="synSpecial"&gt;'&lt;/span&gt;, &lt;span class="synSpecial"&gt;'&lt;/span&gt;&lt;span class="synConstant"&gt;(&lt;/span&gt;&lt;span class="synSpecial"&gt;'&lt;/span&gt;)
        count = &lt;span class="synConstant"&gt;0&lt;/span&gt;
        &lt;span class="synStatement"&gt;while&lt;/span&gt; &lt;span class="synSpecial"&gt;/&lt;/span&gt;&lt;span class="synConstant"&gt;([^{][^0-9]+?:)(&amp;#92;(.+?&amp;#92;)[^() ]+)&lt;/span&gt;&lt;span class="synSpecial"&gt;/&lt;/span&gt; =~ t
            count = count + &lt;span class="synConstant"&gt;1&lt;/span&gt;
            t = t.sub(&lt;span class="synSpecial"&gt;/&lt;/span&gt;&lt;span class="synConstant"&gt;([^{][^0-9]+?:)(&amp;#92;(.+?&amp;#92;)[^() ]+)&lt;/span&gt;&lt;span class="synSpecial"&gt;/&lt;/span&gt;, sprintf(&lt;span class="synSpecial"&gt;'&lt;/span&gt;&lt;span class="synConstant"&gt;&amp;#92;1${%d:&amp;#92;2}&lt;/span&gt;&lt;span class="synSpecial"&gt;'&lt;/span&gt;, count))
            &lt;span class="synStatement"&gt;break&lt;/span&gt; &lt;span class="synStatement"&gt;if&lt;/span&gt; &lt;span class="synConstant"&gt;64&lt;/span&gt; &amp;amp;&lt;span class="synComment"&gt;#60; count&lt;/span&gt;
        &lt;span class="synStatement"&gt;end&lt;/span&gt;
        snippets.push( sprintf(&lt;span class="synSpecial"&gt;&amp;quot;&amp;#92;t&lt;/span&gt;&lt;span class="synConstant"&gt;%s&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;quot;&lt;/span&gt;, t) )
        &lt;span class="synStatement"&gt;next&lt;/span&gt;
    &lt;span class="synStatement"&gt;end&lt;/span&gt;
    result = l.scan(&lt;span class="synSpecial"&gt;/&lt;/span&gt;&lt;span class="synConstant"&gt;^([:a-zA-Z0-9_]+)&lt;/span&gt;&lt;span class="synSpecial"&gt;/&lt;/span&gt;)
    &lt;span class="synStatement"&gt;if&lt;/span&gt; !result.empty?
        &lt;span class="synStatement"&gt;next&lt;/span&gt; &lt;span class="synStatement"&gt;if&lt;/span&gt; &lt;span class="synConstant"&gt;6&lt;/span&gt; &amp;amp;&lt;span class="synComment"&gt;#62; result[0][0].length &lt;/span&gt;
        snippets.push( sprintf(&lt;span class="synSpecial"&gt;&amp;quot;&lt;/span&gt;&lt;span class="synConstant"&gt;snippet %s&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;quot;&lt;/span&gt;, result[&lt;span class="synConstant"&gt;0&lt;/span&gt;][&lt;span class="synConstant"&gt;0&lt;/span&gt;]) )
        snippets.push( sprintf(&lt;span class="synSpecial"&gt;&amp;quot;&amp;#92;t&lt;/span&gt;&lt;span class="synConstant"&gt;%s&lt;/span&gt;&lt;span class="synSpecial"&gt;&amp;quot;&lt;/span&gt;, result[&lt;span class="synConstant"&gt;0&lt;/span&gt;][&lt;span class="synConstant"&gt;0&lt;/span&gt;]) )
    &lt;span class="synStatement"&gt;end&lt;/span&gt;
}

snippets.uniq!

out = open( outputFileName, &lt;span class="synSpecial"&gt;'&lt;/span&gt;&lt;span class="synConstant"&gt;w&lt;/span&gt;&lt;span class="synSpecial"&gt;'&lt;/span&gt; )
snippets.each {|&lt;span class="synIdentifier"&gt;k&lt;/span&gt;|
    out.puts k
}
out.close
&lt;/pre&gt;

			&lt;p&gt;このスクリプトに先ほど作ったtagsファイルを渡してやる。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
$ ruby tags2vimsnippets.rb tags objc.snippets
&lt;/pre&gt;

			&lt;p&gt;これでsnippetsファイル完成。&lt;/p&gt;
			&lt;p&gt;変な部分があったら正規表現を見直す必要あり。&lt;/p&gt;
			&lt;p class="share-button sectionfooter"&gt;&lt;a rel="nofollow" target="_blank" href="http://b.hatena.ne.jp/entry/http://iphone-dev.g.hatena.ne.jp/tokorom/%23" class="hatena-bookmark-button" title="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;"&gt;&lt;img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="&amp;#x003053;&amp;#x00306e;&amp;#x0030a8;&amp;#x0030f3;&amp;#x0030c8;&amp;#x0030ea;&amp;#x0030fc;&amp;#x003092;&amp;#x00306f;&amp;#x003066;&amp;#x00306a;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030de;&amp;#x0030fc;&amp;#x0030af;&amp;#x00306b;&amp;#x008ffd;&amp;#x0052a0;" width="20" height="20" style="border:none;"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/share" class="twitter-share-button"&gt;ツイートする&lt;/a&gt;&lt;/p&gt; 

		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn1" name="f1"&gt;*1&lt;/a&gt;：iOS4.3のSDKのもの&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn2" name="f2"&gt;*2&lt;/a&gt;：手元ではsnipMate.vimのほうでしかチェックしてません&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn3" name="f3"&gt;*3&lt;/a&gt;：全部チェックしているわけではないので不備はあるかも&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/tokorom/#fn4" name="f4"&gt;*4&lt;/a&gt;：スニペット補完を使うなら生のメソッド名のままのほうが便利だと思います&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 09 Jul 2011 16:48:12 +0000</pubDate>
      </item>
      <item>
         <title>iTunesのファイル共有でユーザに見せたくないファイルを隠す</title>
         <link>http://iphone-dev.g.hatena.ne.jp/horigood/20110408/1302269211</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;CoreDataを使ったアプリでiTunesの「ファイル共有」を使ってCSVファイルの読み書きをしたい、って場合。&lt;/p&gt;
			&lt;p&gt;ファイル共有そのものは、info.plistに Application supports iTunes file sharing キーを加えてチェックするだけなので簡単なんだけど、このままだとデータベース本体にもユーザが自由にアクセスできてしまう。&lt;/p&gt;
			&lt;p&gt;で、どうしようかって悩んでたとき、これを解決するための議論が、ここ&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/nakamura001/20100902/1283442536"&gt;http://d.hatena.ne.jp/nakamura001/20100902/1283442536&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;のコメント欄でされてて、ひじょうにありがたかった。&lt;/p&gt;
			&lt;p&gt;内容を要約すると、&lt;/p&gt;
			&lt;p&gt;『Documents ディレクトリ内のファイルはファイル共有で丸見えになるので、ファイルを隠したければ  Libraryディレクトリ内に PrivateDocuments ってディレクトリを作りなさいよ』&lt;/p&gt;
			&lt;p&gt;ってこと。&lt;/p&gt;
			&lt;p&gt;今回のアプリでこの方法を使わせてもらったので、そのコードを書いておく。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;Xcodeで新規プロジェクトを作成する際にUse CoreData をチェックしてやれば、データベース保存先のディレクトリを呼び出すメソッドが自動的に作成される。&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
 (NSURL *)applicationDocumentsDirectory {
    return [NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
&lt;/pre&gt;&lt;/p&gt;
			&lt;p&gt;ので、これを書き換えてやればいい。&lt;/p&gt;
			&lt;p&gt;実際にやってみると、Library ディレクトリに直接書き込んじゃっても問題なさそうだったんだけど、念のため ガイドライン通りにプライベイトディレクトリを作った。&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
 (NSURL *)applicationDocumentsDirectory {
	
	NSFileManager *fileManager = [NSFileManager defaultManager];
	NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
	NSString *libraryDirectory = [paths objectAtIndex:0];
	NSString *privateDocs = [libraryDirectory stringByAppendingPathComponent:@"PrivateDocuments"];
	BOOL exists = [fileManager fileExistsAtPath:privateDocs];
	if (!exists)
	{
		exists = [fileManager createDirectoryAtPath:privateDocs withIntermediateDirectories:YES attributes:nil error:NULL];
	}
	
	return [NSURL fileURLWithPath:privateDocs];
}
&lt;/pre&gt;&lt;/p&gt;
			&lt;p&gt;これで、iTunesのファイル共有ウィンドウにデータベースは表示されなくなる。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 08 Apr 2011 13:26:51 +0000</pubDate>
      </item>
      <item>
         <title>アプリ内課金ができなくなってた</title>
         <link>http://iphone-dev.g.hatena.ne.jp/horigood/20110228/1298902499</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ライセンスの更新、アグリーメントの更新など、Appleからのアラートが表示されるたびにきちんと対応していたつもりだったのですが、どうやら見落としがあったらしく、突然、アプリ内課金が処理されなくなってしまいました。&lt;/p&gt;
			&lt;p&gt;いろいろ調べて回った結果、Contracts, Tax, and Bankingの中に一つ未決の項目があるのを発見。これをサブミットしてから２時間ほどたったところで、何とか課金が正常に行われるようになりました。&lt;/p&gt;
			&lt;p&gt;セールスリポートを見る限り、異常が起こったのはここ２、３日の間らしいのですが、その間も無料アプリの公開や開発用プロビジョニングファイルの作成などは問題なく行えていたため、まったく異常には気づきませんでした。たまたまユーザさんからのメールで事態を把握できましたが、もしそれが無かったら、いったい何日放置することになったのかと思うとゾッとします。&lt;/p&gt;
			&lt;p&gt;皆さんもどうぞお気をつけ下さい。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 28 Feb 2011 14:14:59 +0000</pubDate>
      </item>
      <item>
         <title>Cocos2dへSquirrelを組み込み</title>
         <link>http://iphone-dev.g.hatena.ne.jp/saika_makoto/20110214/1297704680</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;RPGに使う敵AIには組み込みスクリプトが必要なんじゃなかろうか？&lt;/p&gt;
			&lt;p&gt;ということでCocos2dのテンプレートにSquirrelを組込んでみることにしてみた。&lt;/p&gt;
			&lt;h4&gt; ダウンロード＆展開&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt; ダウンロード &lt;a rel="nofollow" target="_blank" href="http://code.google.com/p/squirrel/downloads/list"&gt;http://code.google.com/p/squirrel/downloads/list&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;調べてみると3.0 betaが出てるようだ。&lt;/p&gt;
			&lt;p&gt;ひとまず squirrel_3_0_beta3.tar.gz をダウンロードして使ってみることにする。&lt;/p&gt;
			&lt;p&gt;ダウンロードしたファイルを解凍すると、以下の画像の様にフォルダのアクセス権がロックされてて中を見る事ができない。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/saika_makoto/20110215013508" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/saika_makoto/20110215/20110215013508.png" alt="f:id:saika_makoto:20110215013508p:image" title="f:id:saika_makoto:20110215013508p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;フォルダを選択して Command + i でフォルダ情報を表示し、everyone に読み／書き権限を設定する。このままだと下位のフォルダの権限は変更されないため、下のギアアイコンから「内包している項目に適用」を選択して全てのフォルダ権限を変更する。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/saika_makoto/20110215013509" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/saika_makoto/20110215/20110215013509.png" alt="f:id:saika_makoto:20110215013509p:image" title="f:id:saika_makoto:20110215013509p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;これで使用準備完了。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; Cocos2dプロジェクトへの組み込み&lt;/h4&gt;
			&lt;p&gt;Cocos2dから生成されるテンプレートのlibsフォルダの下に先ほど展開したSQUIRREL3フォルダをコピーする。&lt;/p&gt;
			&lt;p&gt;そして、cocos2d Sourcesフォルダ内に新規にSQUIRREL3グループを作成し、更にその中に以下の表の様なグループを作成しファイルをドラッグ＆ドロップで追加する。&lt;/p&gt;

			&lt;table&gt;
				&lt;tr&gt;&lt;td&gt;グループ名&lt;/td&gt;&lt;td&gt;コピーするファイル&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt; SQUIRREL3/include &lt;/td&gt;&lt;td&gt; libs/SQUIRREL3/include 内の全ファイル &lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt; SQUIRREL3/squirrel &lt;/td&gt;&lt;td&gt; libs/SQUIRREL3/squirrel 内の全ファイル &lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt; SQUIRREL3/sqstdlib &lt;/td&gt;&lt;td&gt; libs/SQUIRREL3/sqstdlib 内のsqstdrex_old.cppを除いた全ファイル &lt;/td&gt;&lt;/tr&gt;

			&lt;/table&gt;
			&lt;p&gt;sqstdrex_old.cppを入れておくとコンパイル時にエラーになるので外した。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/saika_makoto/20110215015129" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/saika_makoto/20110215/20110215015129.png" alt="f:id:saika_makoto:20110215015129p:image" title="f:id:saika_makoto:20110215015129p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;最後にヘッダファイルの検索パスに libs/SQUIRREL3/include を追加する。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/saika_makoto/20110215015130" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/saika_makoto/20110215/20110215015130.png" alt="f:id:saika_makoto:20110215015130p:image" title="f:id:saika_makoto:20110215015130p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;これで組み込みは完了。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt; Object-CからSquirrelスクリプトの呼び出し&lt;/h4&gt;
			&lt;p&gt;テストするスクリプトはこんなカンジ。&lt;/p&gt;
			&lt;p&gt;仮に test.nut とでも名付けようか。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
        function foo(i, f, s) 
        { 
            print(&lt;span class="synConstant"&gt;&amp;quot;Called foo(), i=&amp;quot;&lt;/span&gt;+i+&lt;span class="synConstant"&gt;&amp;quot;, f=&amp;quot;&lt;/span&gt;+f+&lt;span class="synConstant"&gt;&amp;quot;, s='&amp;quot;&lt;/span&gt;+s+&lt;span class="synConstant"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;); 
        } 
&lt;/pre&gt;

			&lt;p&gt;ここからはCの実装になる。&lt;/p&gt;
			&lt;p&gt;最初にVMマシンを生成する。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
HSQUIRRELVM v = sq_open(&lt;span class="synConstant"&gt;1024&lt;/span&gt;);  &lt;span class="synComment"&gt;//1024はコールスタックサイズ&lt;/span&gt;
&lt;/pre&gt;

			&lt;p&gt;続いて、エラーレポートやprintの出力先関数を登録する。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
sqstd_seterrorhandlers(v);
sq_setprintfunc(v, printfunc, printfunc); &lt;span class="synComment"&gt;//sets the print function&lt;/span&gt;
&lt;/pre&gt;

			&lt;p&gt;プリント関数は以下のようになる。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
        &lt;span class="synType"&gt;void&lt;/span&gt; printfunc(HSQUIRRELVM v, &lt;span class="synType"&gt;const&lt;/span&gt; SQChar *s, ...) 
        { 
                &lt;span class="synType"&gt;va_list&lt;/span&gt; arglist; 
                va_start(arglist, s); 
                scvprintf(s, arglist); 
                va_end(arglist); 
        } 
&lt;/pre&gt;

			&lt;p&gt;続いて、VMマシンにスクリプトファイルを読み込ませる。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
sq_pushroottable(v);
sqstd_dofile(v, &lt;span class="synConstant"&gt;&amp;quot;test.nut&amp;quot;&lt;/span&gt;, &lt;span class="synConstant"&gt;0&lt;/span&gt;);
&lt;/pre&gt;

			&lt;p&gt;読み込みに成功したら、スクリプト内関数のfoo()を呼出してみよう。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synType"&gt;void&lt;/span&gt; call_foo(HSQUIRRELVM v, &lt;span class="synType"&gt;int&lt;/span&gt; n,&lt;span class="synType"&gt;float&lt;/span&gt; f,&lt;span class="synType"&gt;const&lt;/span&gt; SQChar *s)
{
    &lt;span class="synType"&gt;int&lt;/span&gt; top = sq_gettop(v); &lt;span class="synComment"&gt;//saves the stack size before the call&lt;/span&gt;
    sq_pushroottable(v); &lt;span class="synComment"&gt;//pushes the global table&lt;/span&gt;
    sq_pushstring(v,_SC(&lt;span class="synConstant"&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;),-&lt;span class="synConstant"&gt;1&lt;/span&gt;);
    &lt;span class="synStatement"&gt;if&lt;/span&gt;(SQ_SUCCEEDED(sq_get(v,-&lt;span class="synConstant"&gt;2&lt;/span&gt;))) { &lt;span class="synComment"&gt;//gets the field 'foo' from the global table&lt;/span&gt;
        sq_pushroottable(v); &lt;span class="synComment"&gt;//push the 'this' (in this case is the global table)&lt;/span&gt;
        sq_pushinteger(v,n); 
        sq_pushfloat(v,f);
        sq_pushstring(v,s,-&lt;span class="synConstant"&gt;1&lt;/span&gt;);
        sq_call(v,&lt;span class="synConstant"&gt;4&lt;/span&gt;,&lt;span class="synConstant"&gt;0&lt;/span&gt;); &lt;span class="synComment"&gt;//calls the function &lt;/span&gt;
    }
    sq_settop(v,top); &lt;span class="synComment"&gt;//restores the original stack size&lt;/span&gt;
}
&lt;/pre&gt;

			&lt;p&gt;かなり端折って説明してしまったので、より詳細な解説を知りたい人は以下の資料を参考にしてみてください。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; 参考資料：&lt;a rel="nofollow" target="_blank" href="http://wiki.squirrel-lang.org/default.aspx/SquirrelWiki/EmbeddingGettingStarted.html"&gt;http://wiki.squirrel-lang.org/default.aspx/SquirrelWiki/EmbeddingGettingStarted.html&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;h4&gt; SquirrelスクリプトからC関数の呼び出し&lt;/h4&gt;
			&lt;p&gt;ついでにスクリプトからC関数を呼出す方法。&lt;/p&gt;
			&lt;p&gt;、、、眠いので詳細は後ほど。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; 参考資料：&lt;a rel="nofollow" target="_blank" href="http://wiki.squirrel-lang.org/default.aspx/SquirrelWiki/SquirrelCallToCpp.html"&gt;http://wiki.squirrel-lang.org/default.aspx/SquirrelWiki/SquirrelCallToCpp.html&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h4&gt; SquirrelとPythonの比較&lt;/h4&gt;
			&lt;p&gt;組み込みスクリプトの候補としてPythonも考えたがソースコード量が多い点がネックとなり、今回は見送りました。&lt;/p&gt;

			&lt;table&gt;
				&lt;tr&gt;&lt;td&gt; 種類 &lt;/td&gt;&lt;td&gt; コードサイズ &lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt; Python &lt;/td&gt;&lt;td&gt; ヘッダ＋ソースで２MB程度 &lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt; Squirrel &lt;/td&gt;&lt;td&gt; ヘッダ＋ソースで５００KB程度 &lt;/td&gt;&lt;/tr&gt;

			&lt;/table&gt;
			&lt;p&gt;２MBもあったらゲーム本体のソースより多くなりそうな気がする。。。&lt;/p&gt;			&lt;br&gt;
			&lt;br&gt;

			&lt;h4&gt; 組み込み済みのプロジェクト&lt;/h4&gt;
			&lt;p&gt;今回の説明のためにCocos2dのテンプレートにSquirrelを組込んでみたサンプル。&lt;/p&gt;
			&lt;p&gt;HelloWorldScene.mの-(id) initからtest.nutをロードしてfoo()関数を呼出しています。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://files.me.com/penguin.dream/pzk5zm"&gt;https://files.me.com/penguin.dream/pzk5zm&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;※リンクは３ヶ月間のみ有効です。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 14 Feb 2011 17:31:20 +0000</pubDate>
      </item>
      <item>
         <title>[AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法</title>
         <link>http://iphone-dev.g.hatena.ne.jp/paella/20110210/1297354542</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ムービーを撮影しているときにデータをフレーム毎に処理したい場合、AVCaptureVideoDataOutputクラスを使用します。しかしこのクラス、他と違ってsupportsVideoOrientationプロパティに全てNOを返すようです(4.2で確認)。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synStatement"&gt;for&lt;/span&gt; (AVCaptureConnection *connection &lt;span class="synType"&gt;in&lt;/span&gt; videoWriterOutput_.connections) {
    &lt;span class="synStatement"&gt;if&lt;/span&gt; (connection.supportsVideoOrientation) {
        &lt;span class="synComment"&gt;// ここに入ってこない！&lt;/span&gt;
        connection.videoOrientation = orientation;
    }
}
&lt;/pre&gt;

			&lt;p&gt;ですので、そのままAVAssetWriter&amp;AVAssetWriterInputでムービーファイルを作成すると、縦に持っていようが逆さまに持っていようが横向き(ホームボタンが右)のムービーが出来上がってしまいます。そんな見にくいムービーは要りません。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;これを解決するには、AVAssetWriterInputクラスのtransformプロパティを使います。縦方向のムービーにしたい場合のコードは以下のとおりです。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
assetWriter_ = [[AVAssetWriter assetWriterWithURL:saveLocationURL
                     fileType:AVFileTypeQuickTimeMovie
                     error:&amp;amp;#&lt;span class="synConstant"&gt;38&lt;/span&gt;;error] retain];

NSDictionary *outputSettings = &lt;span class="synConstant"&gt;NULL&lt;/span&gt;;
outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                     AVVideoCodecH264, AVVideoCodecKey,
                     [NSNumber numberWithInt:(&lt;span class="synType"&gt;int&lt;/span&gt;)frameSize.width], AVVideoWidthKey,
                     [NSNumber numberWithInt:(&lt;span class="synType"&gt;int&lt;/span&gt;)frameSize.height], AVVideoHeightKey,
                     &lt;span class="synConstant"&gt;nil&lt;/span&gt; ];
videoWriterInput_ = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
                     outputSettings:outputSettings] retain];
[videoWriterInput_ setExpectsMediaDataInRealTime:YES];

&lt;span class="synComment"&gt;// 縦方向で録画するように変換行列を指定&lt;/span&gt;
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, frameSize.width/&lt;span class="synConstant"&gt;2&lt;/span&gt;, frameSize.height/&lt;span class="synConstant"&gt;2&lt;/span&gt;);
transform = CGAffineTransformRotate(transform, &lt;span class="synConstant"&gt;90&lt;/span&gt;/&lt;span class="synConstant"&gt;180.0f&lt;/span&gt;*PI); &lt;span class="synComment"&gt;// ここでorientationを指定&lt;/span&gt;
&lt;span class="synComment"&gt;//transform = CGAffineTransformScale(transform, 1.0, -1.0); // ← 間違い。左右反転してしまいます&lt;/span&gt;
transform = CGAffineTransformScale(transform, &lt;span class="synConstant"&gt;1.0&lt;/span&gt;, &lt;span class="synConstant"&gt;1.0&lt;/span&gt;);
videoWriterInput_.transform = transform;
[assetWriter_ addInput:videoWriterInput_];
&lt;/pre&gt;

			&lt;p&gt;AVAssetWriter&amp;AVAssetWriterInputの初期化処理も自分メモ気味に書いてありますが、メインはtransformプロパティのところです。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;これで無事に縦方向で保存されます。&lt;/p&gt;
			&lt;p&gt;良かった良かった。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 10 Feb 2011 16:15:42 +0000</pubDate>
      </item>
      <item>
         <title>[書籍] iOS4プログラミングブックの書評</title>
         <link>http://iphone-dev.g.hatena.ne.jp/paella/20110208/1297136141</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;FastEverをはじめとしたステキなアプリを開発していて、札幌にて精力的な活動を続けていらっしゃる &lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/frnk/"&gt;id:frnk&lt;/a&gt; さんが、書籍「iOS4プログラミングブック」の&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/frnk/20110208/1297133398"&gt;書評を書いてくれました&lt;/a&gt;。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;　　&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/frnk/"&gt;frnk*blog&lt;/a&gt;&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;元々は「この本を使って、またステキなアプリを作ってくださいね」という下心全開でお送りしたのですが、書評まで書いていただいて嬉しい限りです。&lt;/p&gt;
			&lt;p&gt;さらには文中にて、&lt;/p&gt;			&lt;br&gt;

			&lt;blockquote&gt;
			&lt;p&gt;アプリ開発本を書くということは、読んだアプリ作者のためだけでなく、&lt;/p&gt;
			&lt;p&gt;そのユーザーさん全てのメリットになることなんだなあ、と改めて思いました。&lt;/p&gt;
			&lt;/blockquote&gt;			&lt;br&gt;

			&lt;p&gt;という、私たちが考えていたことを見透かすようなコメントまで書いてくれています。アプリ開発に対して何かをするということは、その先にいるユーザーに対してのおもてなしを提供することに他なりません。この本で開発者が楽をするのではなく、ユーザーが楽しめるにはということをずっと意識して書いていたのです。&lt;/p&gt;
			&lt;p&gt;さすがfrnkさん、ありがとうございます。&lt;/p&gt;			&lt;br&gt;

			&lt;div class="hatena-asin-detail"&gt;
  &lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329766/hatena-hamazou-22/"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51uBscIjG8L._SL160_.jpg" class="hatena-asin-detail-image" alt="iOS4&amp;#x0030d7;&amp;#x0030ed;&amp;#x0030b0;&amp;#x0030e9;&amp;#x0030df;&amp;#x0030f3;&amp;#x0030b0;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;" title="iOS4&amp;#x0030d7;&amp;#x0030ed;&amp;#x0030b0;&amp;#x0030e9;&amp;#x0030df;&amp;#x0030f3;&amp;#x0030b0;&amp;#x0030d6;&amp;#x0030c3;&amp;#x0030af;"&gt;&lt;/a&gt;
  &lt;div class="hatena-asin-detail-info"&gt;
    &lt;p class="hatena-asin-detail-title"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329766/hatena-hamazou-22/"&gt;iOS4プログラミングブック&lt;/a&gt;&lt;/p&gt;
    &lt;ul&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;作者:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%C8%AA%B7%BD%CA%E5" class="okeyword"&gt;畑圭輔&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%B2%C3%C6%A3%B4%B2%BF%CD" class="okeyword"&gt;加藤寛人&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%BA%E4%CB%DC%B0%EC%BC%F9" class="okeyword"&gt;坂本一樹&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%C6%A3%C0%EE%B9%A8%C7%B7" class="okeyword"&gt;藤川宏之&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%B9%E2%B6%B6%B7%BC%BC%A3%CF%BA" class="okeyword"&gt;高橋啓治郎&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%B2%AD%C5%C4%C3%CE%C9%A7" class="okeyword"&gt;沖田知彦&lt;/a&gt;,&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%CC%F8%DF%B7%BE%BA" class="okeyword"&gt;柳澤昇&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;出版社/メーカー:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%D7%A5%EC%A5%B9%A5%B8%A5%E3%A5%D1%A5%F3" class="okeyword"&gt;インプレスジャパン&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;発売日:&lt;/span&gt; 2011/01/27&lt;/li&gt;
                                                      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;メディア:&lt;/span&gt; 単行本（ソフトカバー）&lt;/li&gt;
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;購入&lt;/span&gt;: 23人 &lt;span class="hatena-asin-detail-label"&gt;クリック&lt;/span&gt;: 811回&lt;/li&gt;
      &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/4844329766"&gt;この商品を含むブログ (30件) を見る&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div class="hatena-asin-detail-foot"&gt;&lt;/div&gt;
&lt;/div&gt;

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 08 Feb 2011 03:35:41 +0000</pubDate>
      </item>
      <item>
         <title>Cocos2dのCCSprite覚え書き</title>
         <link>http://iphone-dev.g.hatena.ne.jp/saika_makoto/20110201/1296578007</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;Cocos2dでよくお世話になるCCSpriteについて覚え書き。&lt;/p&gt;
			&lt;h4&gt;画像ファイルからCCSpriteを生成する&lt;/h4&gt;
&lt;pre class="syntax-highlight"&gt;
CCSprite *sprite = [CCSprite spriteWithFile:@&lt;span class="synConstant"&gt;&amp;quot;my_texture.png&amp;quot;&lt;/span&gt;];
[self addChild:sprite];
&lt;/pre&gt;

			&lt;h4&gt;CCTexture2DからCCSpriteを生成する&lt;/h4&gt;
			&lt;p&gt;画像のサイズは２の階乗になってなくてもOK。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
NSString *imgPath = @&lt;span class="synConstant"&gt;&amp;quot;my_texture.png&amp;quot;&lt;/span&gt;;
CCTexture2D *tex = [[CCTextureCache sharedTextureCache] addImage:imgPath];
CCSprite *sprite = [CCSprite spriteWithTexture:tex rect:CGRectMake(&lt;span class="synConstant"&gt;0&lt;/span&gt;,&lt;span class="synConstant"&gt;0&lt;/span&gt;,width,height)];
[self addChild:sprite];
&lt;/pre&gt;

			&lt;h4&gt;CCSpriteを半透明にする&lt;/h4&gt;
&lt;pre class="syntax-highlight"&gt;
CCSprite *sprite = [CCSprite spriteWithFile:@&lt;span class="synConstant"&gt;&amp;quot;my_texture.png&amp;quot;&lt;/span&gt;];
[sprite setOpacity:&lt;span class="synConstant"&gt;128&lt;/span&gt;];     &lt;span class="synComment"&gt;// 50% alpha (0〜255)&lt;/span&gt;
[self addChild:sprite];
&lt;/pre&gt;

			&lt;h4&gt;子階層のCCNodeを全て破棄する&lt;/h4&gt;
			&lt;p&gt;第一引数をYESにすると、actionとcallbackもリムーブされる。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
[self removeAllChildrenWithCleanup:YES];
&lt;/pre&gt;
			&lt;br&gt;
			&lt;br&gt;

			&lt;ol&gt;
				&lt;li&gt;参考資料：&lt;a rel="nofollow" target="_blank" href="http://www.cocos2d-x.org/embedded/cocos2d-x/d4/de7/classcocos2d_1_1_c_c_sprite.html"&gt;http://www.cocos2d-x.org/embedded/cocos2d-x/d4/de7/classcocos2d_1_1_c_c_sprite.html&lt;/a&gt;&lt;/li&gt;
			&lt;/ol&gt;

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 01 Feb 2011 16:33:27 +0000</pubDate>
      </item>
      <item>
         <title>beanstalkのSVN履歴操作</title>
         <link>http://iphone-dev.g.hatena.ne.jp/saika_makoto/20110129/1296279738</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ストレージ容量がいっぱいになってしまった場合の解決策があったのであわせてメモ。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;解決策３点&lt;/p&gt;
			&lt;ol&gt;
				&lt;li&gt;プランをアップグレードする&lt;/li&gt;
				&lt;li&gt;リポジトリをエクスポートし（バックアップのため）元のリポジトリを削除。ワーキングコピーから不要なファイルを消してインポートしなおす。&lt;/li&gt;
				&lt;li&gt; "svndumpfilter"を使って履歴を編集する。&lt;/li&gt;
			&lt;/ol&gt;			&lt;br&gt;

			&lt;p&gt;２の方法は過去の履歴が完全に消えてしまうためリビジョン１から出直す事になる。&lt;/p&gt;
			&lt;p&gt;"svndumpfilter"を使う場合は、削除されたファイルの履歴のみ消すことができる。&lt;/p&gt;
			&lt;p&gt;"svndumpfilter"の使い方：&lt;a rel="nofollow" target="_blank" href="http://help.beanstalkapp.com/kb/basics-11/how-can-i-permanently-remove-files-from-a-repository"&gt;http://help.beanstalkapp.com/kb/basics-11/how-can-i-permanently-remove-files-from-a-repository&lt;/a&gt;。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;参考資料：&lt;a rel="nofollow" target="_blank" href="http://help.beanstalkapp.com/kb/account-billing/exceeding-account-storage"&gt;http://help.beanstalkapp.com/kb/account-billing/exceeding-account-storage&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 29 Jan 2011 05:42:18 +0000</pubDate>
      </item>
      <item>
         <title>SVNホスティングサービス比較</title>
         <link>http://iphone-dev.g.hatena.ne.jp/saika_makoto/20110129/1296276210</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;そろそろソースをバージョン管理しようと、プライベートで管理できるようなSVNホスティングサービスを探してみました。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;結論から先に言うと&lt;/p&gt;
			&lt;p&gt;【容量と値段のコストパフォーマンス】&lt;/p&gt;
			&lt;p&gt;xp-dev＞beanstalk＞unfuddle&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;【使いやすさ】&lt;/p&gt;
			&lt;p&gt;beanstalk＞＞unfuddle＞＞xp-dev&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;趣味で月々数百円程度で使いたいならxp-devが有力候補。&lt;/p&gt;
			&lt;p&gt;「仕事でバッチリ使うから１０００円以上払ってもいいぜ」って人にはbeanstalkがオススメ。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt;実際に使ってみた感想&lt;/h4&gt;
			&lt;h5&gt;xp-dev&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.xp-dev.com/"&gt;http://www.xp-dev.com/&lt;/a&gt;&lt;/p&gt;

			&lt;table&gt;
				&lt;tr&gt;&lt;td&gt;プラン&lt;/td&gt;&lt;td&gt;料金&lt;/td&gt;&lt;td&gt;容量&lt;/td&gt;&lt;td&gt;プロジェクト数&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;FREE&lt;/td&gt;&lt;td&gt;ー&lt;/td&gt;&lt;td&gt;２００M&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Pro Small&lt;/td&gt;&lt;td&gt;５＄／月&lt;/td&gt;&lt;td&gt;１G&lt;/td&gt;&lt;td&gt;無制限&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Pro Medium&lt;/td&gt;&lt;td&gt;１５＄／月&lt;/td&gt;&lt;td&gt;４G&lt;/td&gt;&lt;td&gt;無制限&lt;/td&gt;&lt;/tr&gt;
			&lt;/table&gt;
			&lt;p&gt;ガチ技術者が作ったカンジのSVNホスティングサービス。&lt;/p&gt;
			&lt;p&gt;日本語表示、日本語ファイル名も問題なく対応。&lt;/p&gt;
			&lt;p&gt;フリーで試せて有料のプランも安いサービス。リポジトリのダンプもDLできる。&lt;/p&gt;
			&lt;p&gt;ただ管理ページの使い勝手がいまいちで、英語が苦手な人は立ち往生するかも。&lt;/p&gt;
			&lt;p&gt;Wikiなどが完備されているが少々分かりずらい。&lt;/p&gt;
			&lt;p&gt;コストパフォーマンス重視の英語OKな技術者向け。&lt;/p&gt;			&lt;br&gt;

			&lt;h5&gt;unfuddle&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://unfuddle.com/"&gt;http://unfuddle.com/&lt;/a&gt;&lt;/p&gt;

			&lt;table&gt;
				&lt;tr&gt;&lt;td&gt;プラン&lt;/td&gt;&lt;td&gt;料金&lt;/td&gt;&lt;td&gt;容量&lt;/td&gt;&lt;td&gt;プロジェクト数&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;FREE&lt;/td&gt;&lt;td&gt;ー&lt;/td&gt;&lt;td&gt;２００M&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Micro&lt;/td&gt;&lt;td&gt;９＄／月&lt;/td&gt;&lt;td&gt;５１２M&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Compact&lt;/td&gt;&lt;td&gt;２４＄／月&lt;/td&gt;&lt;td&gt;２G&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
			&lt;/table&gt;
			&lt;p&gt;日本語表示、日本語ファイル名も問題なく対応。&lt;/p&gt;
			&lt;p&gt;xp-devより管理画面が親切。SVNサービスの他にプロジェクト単位の管理も行える。&lt;/p&gt;
			&lt;p&gt;Wikiなども分かりやすく完備されているので、その点は便利。&lt;/p&gt;
			&lt;p&gt;評判はいいけど、有料化しても容量が５１２Mなのはちょっと心細い。&lt;/p&gt;			&lt;br&gt;

			&lt;h5&gt;beanstalk&lt;/h5&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://beanstalkapp.com/"&gt;http://beanstalkapp.com/&lt;/a&gt;&lt;/p&gt;

			&lt;table&gt;
				&lt;tr&gt;&lt;td&gt;プラン&lt;/td&gt;&lt;td&gt;料金&lt;/td&gt;&lt;td&gt;容量&lt;/td&gt;&lt;td&gt;プロジェクト数&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Tryal&lt;/td&gt;&lt;td&gt;ー&lt;/td&gt;&lt;td&gt;１００M&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Brons&lt;/td&gt;&lt;td&gt;１５＄／月&lt;/td&gt;&lt;td&gt;３G&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
				&lt;tr&gt;&lt;td&gt;Silver&lt;/td&gt;&lt;td&gt;２５＄／月&lt;/td&gt;&lt;td&gt;６G&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;/tr&gt;
			&lt;/table&gt;
			&lt;p&gt;日本語表示、日本語ファイル名も問題なく対応。&lt;/p&gt;
			&lt;p&gt;管理ページがとてもよくできていて、英語が苦手な人でも十分使えるだろう。&lt;/p&gt;
			&lt;p&gt;Wikiなどの機能がないけど、よほど大規模開発にならなければいらない。&lt;/p&gt;
			&lt;p&gt;お値段だけがちょっと高いけどその価値のあるサービス。&lt;/p&gt;			&lt;br&gt;
			&lt;br&gt;

			&lt;p&gt;長くつきあうならbeanstalkが良さそうかなぁ。&lt;/p&gt;
			&lt;p&gt;１００M使いきるまでトライアルしてみよう。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 29 Jan 2011 04:43:30 +0000</pubDate>
      </item>
      <item>
         <title>はてなグループでアクセス解析</title>
         <link>http://iphone-dev.g.hatena.ne.jp/saika_makoto/20110126/1296057052</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;はてなダイアリーでははてなカウンタ（有料）という解析ツールが使えるらしいが、グループでは使えないらしい。&lt;/p&gt;
			&lt;p&gt;そこで、はてなグループでGoogle Analyticsのアクセス解析が行えないか調査してみました。&lt;/p&gt;
			&lt;p&gt;ウェブはあまり詳しくないので間違っている所があるかもしれませんが、覚え書きに日記に書いておきます。&lt;/p&gt;
			&lt;p&gt;もし間違っている点があれば後日修正します。&lt;/p&gt;			&lt;br&gt;

			&lt;ul&gt;
				&lt;li&gt;Google Analytics&lt;a rel="nofollow" target="_blank" href="http://www.google.com/analytics/"&gt;http://www.google.com/analytics/&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;Google Analyticsはgmailアカウントがあれば利用できます。&lt;/p&gt;
			&lt;p&gt;はてなグループの詳細設定でScriptタグを記述するとタグがエスケープされてしまうが、Googleガジェットを設置することはできるそうです。&lt;/p&gt;
			&lt;p&gt;以下がアクセス解析を行うGoogleがジェットコード。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;;?xml version=&lt;span class="synConstant"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span class="synConstant"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;?&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;Module&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
 &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;ModulePrefs title=&lt;span class="synConstant"&gt;&amp;quot;Google Analytics for whatever-you-want&amp;quot;&lt;/span&gt;&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
  &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;Require feature=&lt;span class="synConstant"&gt;&amp;quot;analytics&amp;quot;&lt;/span&gt;/&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
 &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;/ModulePrefs&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
 &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;Content type=&lt;span class="synConstant"&gt;&amp;quot;html&amp;quot;&lt;/span&gt;&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;![CDATA[
  &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;script&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;_IG_Analytics(&lt;span class="synConstant"&gt;&amp;quot;UA-XXXXXXX-X&amp;quot;&lt;/span&gt;, &lt;span class="synConstant"&gt;&amp;quot;/whatever-you-want&amp;quot;&lt;/span&gt;)&lt;span class="synError"&gt;;&lt;/span&gt;&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;/script&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;]]&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
 &amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;/Content&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;/Module&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;&lt;span class="synError"&gt;;&lt;/span&gt;
&lt;/pre&gt;

			&lt;ol&gt;
				&lt;li&gt;UA-XXXXXXX-X の部分を自分のGoogle AnalyticsのIDに、whatever-you-wantの部分を自分のブログIDにしたファイルを作成します。&lt;/li&gt;
				&lt;li&gt;ファイル名は仮に analytics.xml とします。（各自ご自由に！）&lt;/li&gt;
				&lt;li&gt;保存したファイルをインターネットでアクセスできるサーバにアップします。&lt;/li&gt;
			&lt;/ol&gt;
			&lt;p&gt;コードはhfuさんのブログに記載されていたものを参考にしました。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;参考資料&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/hfu/20071010/1192078147"&gt;http://d.hatena.ne.jp/hfu/20071010/1192078147&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;次にそのガジェットのXMLを読み込むコードを詳細設定のフッダに追記する。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;;script src=&lt;span class="synConstant"&gt;&amp;quot;http://gmodules.com/ig/ifr?url=http://whatever-you-want/analytics.xml&amp;amp;#38;amp;&amp;amp;#38;amp;synd=open&amp;amp;#38;amp;w=250&amp;amp;#38;amp;h=30&amp;amp;#38;amp;title=&amp;amp;#38;amp;border=0&amp;amp;#38;amp;output=js&amp;quot;&lt;/span&gt;&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;;&amp;amp;#&lt;span class="synConstant"&gt;60&lt;/span&gt;;/script&amp;amp;#&lt;span class="synConstant"&gt;62&lt;/span&gt;;
&lt;/pre&gt;

			&lt;p&gt;whatever-you-want/のパスはさきほどのGoogleガジェットのXMLファイルをアップした場所を指定してください。&lt;/p&gt;
			&lt;p&gt;アクセス解析の結果は１〜２時間おきに反映されるらしいです。&lt;/p&gt;
			&lt;p&gt;明日の朝チェックしてみて、うまく動作してるといいなぁ。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 26 Jan 2011 15:50:52 +0000</pubDate>
      </item>
      <item>
         <title>cocos2dがインストールできないときは</title>
         <link>http://iphone-dev.g.hatena.ne.jp/horigood/20101214/1292342572</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;"/Users/****/templates/file-templates/CCNode class" failed: No such file or directory (2)"とかいうエラーが出て、cocos2dがインストールできない。&lt;/p&gt;
			&lt;p&gt;ネットで調べると、&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
$cd /Users/****/Downloads/cocos2d-iphone-0.99.5-rc1 
&lt;/pre&gt;&lt;/p&gt;
			&lt;p&gt;のようにして、事前にカレントディレクトリを指定してやれってあるけど、それでもやっぱりエラーが出る。&lt;/p&gt;
			&lt;p&gt;...という、私と同じ状況にハマってしまったら....&lt;/p&gt;
			&lt;p&gt;スクリプトファイル install-templates.sh に、直接ディレクトリを打ち込んじゃいましょう。&lt;/p&gt;
			&lt;p&gt;スクリプト内の&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
copy_files "cocos2d" "$LIBS_DIR"
&lt;/pre&gt;&lt;/p&gt;
			&lt;p&gt;のようになっている箇所すべての第１引数の前にcocos2dフォルダのディレクトリを足してやります。つまり&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
copy_files "/Users/****/Downloads/cocos2d-iphone-0.99.5-rc1/cocos2d" "$LIBS_DIR"
&lt;/pre&gt;&lt;/p&gt;
			&lt;p&gt;のようにしてやると、エラー無くインストールが完了します。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;さっき入れたばかりなので検証は十分とは言えませんが、とりあえずサンプルプロジェクトは３つとも正常に動いてます。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 14 Dec 2010 16:02:52 +0000</pubDate>
      </item>
      <item>
         <title>Xib2Jsを公開</title>
         <link>http://iphone-dev.g.hatena.ne.jp/daoki2/20100322/1269256080</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;Packager for iPhoneで非Objective-Cでの開発はやっぱり楽だなぁと思いつつも、最近はTitanium Mobileという開発環境に手を出してます。&lt;/p&gt;
			&lt;p&gt;これは、JavaScriptで記述したコードをObjective-Cに変換して、iPhone SDKでコンパイルするみたいなのですが、開発にMacを必要とするものの、出来上がったアプリは自分のiPhone 3Gでも結構サクサク動作するので、なかなか気に入ってます。&lt;/p&gt;
			&lt;p&gt;GUIもJavaScriptでコーディングして行かなければならないので、ちょいと面倒と思い、InterfaceBuilderの.xibファイルからJavaScriptを自動生成するツールを作りました。&lt;/p&gt;
			&lt;p&gt;Titaniumにご興味のある方は、是非触ってみてください。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blog.frogonmobile.com/apps/xib2js/"&gt;http://blog.frogonmobile.com/apps/xib2js/&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 22 Mar 2010 11:08:00 +0000</pubDate>
      </item>
      <item>
         <title>LIVECLOCKをリリースしました</title>
         <link>http://iphone-dev.g.hatena.ne.jp/daoki2/20100223/1266943392</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;長らく、ご無沙汰しておりました。&lt;/p&gt;
			&lt;p&gt;ようやく、初めてのiPhoneアプリであるLIVECLOCKをリリースすることができました。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/jp/app/liveclock/id357370123?mt=8"&gt;http://itunes.apple.com/jp/app/liveclock/id357370123?mt=8&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;画面のバックグラウンドでライフゲームを実行するシンプルな時計のアプリケーションなのですが、実はPackager for iPhoneを使って開発しております。&lt;/p&gt;
			&lt;p&gt;Flash CS5はまだPrivate Betaリリースなので、詳細は書けないのですが、本当にFlashアプリがそのままiPhoneアプリとして動きます。自分は、Objective-Cのキモイの壁は乗り越えているつもりですが、やはりActionScriptでの開発は相当簡単に感じました。&lt;/p&gt;
			&lt;p&gt;無料のアプリケーションですので、iPhone上でのFlashアプリにご興味がございましたら、是非ダウンロードしてみてください。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 23 Feb 2010 16:43:12 +0000</pubDate>
      </item>
      <item>
         <title>[CoreData]CoreDataの構成</title>
         <link>http://iphone-dev.g.hatena.ne.jp/hao_yayoi/20100111/1263187501</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;サンプルのCoreDataBooksを弄くり通して移植とか試みた結果、どこがどうなってるのかようやく把握できた感じなのでメモ。&lt;/p&gt;
			&lt;h4&gt;そもそも何故分かりづらいのか&lt;/h4&gt;
			&lt;p&gt;CoreDataはSQliteをObjective-Cのみで操作できることにメリットがあるわけですが、その操作を行うためのクラス名、取り扱い方に問題があります。&lt;/p&gt;
			&lt;h5&gt;イメージしずらいネーミング&lt;/h5&gt;
			&lt;p&gt;各クラスの解説を読むと判明しますが、実際には他の言語で使われているDBとの接続を行うための各種クラスと、CoreData関連クラスがやってることには、あまり違いはありません。ただ、それらのクラスと余りに剥離したネーミングというのが一つ。&lt;/p&gt;
			&lt;h5&gt;複数のDBの接続を同時に取り扱っている&lt;/h5&gt;
			&lt;p&gt;もう一つは、あくまでCoreDataは「複数のDBとそれらDBとの接続情報」をひとまとめにした代物であるため、他の言語でのDBと同じ感覚で取り扱うとズレが生じるということ。&lt;/p&gt;
			&lt;h5&gt;TableView専用というわけではないNSFetchedResultsController&lt;/h5&gt;
			&lt;p&gt;さらにもう一つ、NSFetchedResultsController自体はCoreDataから取得したデータの配列をキャッシュしているコントローラであり、別にUITableViewController専用のオブジェクトではない、ということ。&lt;/p&gt;
			&lt;h4&gt;CoreDataのコンテキスト構成&lt;/h4&gt;
			&lt;p&gt;コンテキスト以下の構成図を貼ってみます。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/hao_yayoi/20100111130810" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/h/hao_yayoi/20100111/20100111130810.png" alt="f:id:hao_yayoi:20100111130810p:image" title="f:id:hao_yayoi:20100111130810p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;NSManagedObjectModel
				&lt;ul&gt;
					&lt;li&gt;他の言語での、DBのColumnとRelationShip指定に相当。&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
				&lt;li&gt;NSPersisitentStore
				&lt;ul&gt;
					&lt;li&gt;実DBとの接続を担当。&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;ColumnもといEntityを追加したい場合にはNSManagedObjectModelへの操作、接続するDBを増やしたい場合にはNSPersistentStoreを追加するといった形です。&lt;/p&gt;
			&lt;h5&gt;NSPersistantStore追加の際の実DBファイル&lt;/h5&gt;
			&lt;p&gt;接続するDBを増やす場合にはNSPersistentStoreを追加するわけですが、実体のファイルもその際に自動で生成されています。&lt;/p&gt;
			&lt;h4&gt;データ追加&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/hao_yayoi/20100111135826" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/h/hao_yayoi/20100111/20100111135826.png" alt="f:id:hao_yayoi:20100111135826p:image" title="f:id:hao_yayoi:20100111135826p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;NSEntityDescriptionで追加先のEntityを指定すると生成されるオブジェクト（レコード相当)に値を入れて保存、という流れです。DBへのレコード追加をSQLを直接触れずに行う形です。&lt;/p&gt;
			&lt;h4&gt;データの読み込み&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/hao_yayoi/20100111141156" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/h/hao_yayoi/20100111/20100111141156.png" alt="f:id:hao_yayoi:20100111141156p:image" title="f:id:hao_yayoi:20100111141156p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;NSFetchedResultsControllerを生成した時点で、データの取得ができ上がるため、あとは取得したデータの配列からインデックスを指定して取得という流れ。&lt;/p&gt;
			&lt;h4&gt;まとめ&lt;/h4&gt;
			&lt;p&gt;NSManagedObjectContextを構成する際の煩雑さも原因だと思うので、NSManagedObjectContextまでの生成過程を一つのクラスにして分離したほうが、なにかと分かりやすいかと思います。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://gist.github.com/267080"&gt;CoreDataManager&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;あと、これらを一つ一つ確かめていくとどこかで同じ構成をみたような感覚があったのですが、Perlにおける&lt;a rel="nofollow" target="_blank" href="http://search.cpan.org/~frew/DBIx-Class-0.08115/lib/DBIx/Class.pm"&gt;DBIx::Class&lt;/a&gt;がそれでした。どんな感じなのかは、&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://e8y.net/mag/011-dbix-class/"&gt;use DBIx::Class; - 今日のCPANモジュール&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;を読むと分かりやすいと思います。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 11 Jan 2010 05:25:01 +0000</pubDate>
         <category>CoreData</category>
      </item>
      <item>
         <title>キリトリカメラ！バージョンアップ！！</title>
         <link>http://iphone-dev.g.hatena.ne.jp/gravity-loves-time/20100108/1262958173</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;gravity loves timeのiPhoneアプリ「キリトリカメラ」がバージョン2.0.0にアップデートされました！&lt;/p&gt;
			&lt;p&gt;今回はメジャーバージョンアップ!!&lt;/p&gt;
			&lt;p&gt;目玉は「ファインダー機能」がつきました！！&lt;/p&gt;
			&lt;p&gt;思い通りのフレーミングが出来るようになりましたので、&lt;/p&gt;
			&lt;p&gt;正方形や16:9はもちろん、シネマサイズの写真撮影を楽しんでください！&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blog.gravity-loves-time.com/2010/01/07/multi_aspect_cam_v200_verup/"&gt;http://blog.gravity-loves-time.com/2010/01/07/multi_aspect_cam_v200_verup/&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 08 Jan 2010 13:42:53 +0000</pubDate>
      </item>
      <item>
         <title>.Sched Version.1.00 リリース!</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kenhama/20091206</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ようやく、.SchedのVer.1.00がリリースされました。&lt;/p&gt;
			&lt;p&gt;ご要望の多かった、週５日表示と７日表示の切り替えに対応しました。&lt;/p&gt;
			&lt;p&gt;月次表示画面での、週５日表示と７日表示の違いはこんな感じです。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kenhama/20091206192018" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kenhama/20091206/20091206192018.png" alt="f:id:kenhama:20091206192018p:image" title="f:id:kenhama:20091206192018p:image" class="hatena-fotolife"&gt;&lt;/a&gt;　&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kenhama/20091206192019" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kenhama/20091206/20091206192019.png" alt="f:id:kenhama:20091206192019p:image" title="f:id:kenhama:20091206192019p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;表示の縦の長さを画面いっぱいまで表示するように調整したところ、かなり視認性があがったかと思います。よく見るとわかるかと思いますが、各イベントタイトルの前に、時刻を表示するようにしました（表示しない設定も可能）。（左側のイメージは、週の開始を月曜日に設定した状態です。）&lt;/p&gt;
			&lt;p&gt;週次の場合は、こんな感じになります。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kenhama/20091206192016" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kenhama/20091206/20091206192016.png" alt="f:id:kenhama:20091206192016p:image" title="f:id:kenhama:20091206192016p:image" class="hatena-fotolife"&gt;&lt;/a&gt;　&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kenhama/20091206192015" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kenhama/20091206/20091206192015.png" alt="f:id:kenhama:20091206192015p:image" title="f:id:kenhama:20091206192015p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;（右側のイメージの吹き出しは、次のVersionでリリース予定の機能です。長押しすると吹き出しが表示され、離すとその日時で新規予定の追加ができる機能です。）&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;そのほかにも、ご要望の多かった以下に対応してます。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; 開始曜日の設定（日曜or月曜)&lt;/li&gt;
				&lt;li&gt; 表示するカレンダーの選択&lt;/li&gt;
				&lt;li&gt; 起動時のメニュー表示ON/OFF&lt;/li&gt;
				&lt;li&gt; 起動時の自動同期のON/OFF&lt;/li&gt;
				&lt;li&gt; offlineでのイベント追加／修正&lt;/li&gt;
				&lt;li&gt; 検索機能&lt;/li&gt;
				&lt;li&gt; 特定の月にジャンプする機能（上部バーをタップ）&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;その他にも細かに、以下のような更新が入ってます。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; WeekViewでの初期表示時刻指定&lt;/li&gt;
				&lt;li&gt; 日曜日と土曜日の背景色変更設定機能&lt;/li&gt;
				&lt;li&gt; MonthViewの１日枠の縦長さ調整設定機能(fixed,strech)&lt;/li&gt;
				&lt;li&gt; 日時表示言語の選択（英語、System）&lt;/li&gt;
				&lt;li&gt; WeekViewで現在時刻を赤ラインで表示&lt;/li&gt;
				&lt;li&gt; WeekViewでのフリック感度調整&lt;/li&gt;
				&lt;li&gt; EventViewのデザイン見直し&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;p&gt;次のVersionでは、以下の機能をリリースします。（実装を終え、Apple審査待ちです。）&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; 予定のコピペ&lt;/li&gt;
				&lt;li&gt; 横画面(週表示)での予定の追加／修正&lt;/li&gt;
				&lt;li&gt; その他、細々と機能追加／見直しあり。&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;引き続き機能強化を行っていきますので、ご要望があれば、ぜひkjapp(at)kjapp.180r.comまでご連絡ください。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 05 Dec 2009 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>[iPhone]シンメトリー。67,695円分の１。一軍アプリに！！</title>
         <link>http://iphone-dev.g.hatena.ne.jp/gravity-loves-time/20091127/1259326786</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;アプリ、アクセサリのレビューと、iPhoneにまつわるまとめ記事をお届けするサイト。&lt;/p&gt;
			&lt;p&gt;「iPhone.goodegg.jp」さんのサイトで&lt;/p&gt;
			&lt;p&gt;『iPhoneと過ごした500日まとめ(67,695円分の1軍アプリ達)』&lt;/p&gt;
			&lt;p&gt;といったエントリーがアップされています。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blog.gravity-loves-time.com/2009/11/27/500days/"&gt;なんとシンメトリーがホーム画面、スタメンアプリとして紹介されています！&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 27 Nov 2009 12:59:46 +0000</pubDate>
         <category>iPhone</category>
      </item>
      <item>
         <title>KatokichiSoftのiPhoneApp</title>
         <link>http://iphone-dev.g.hatena.ne.jp/paella/20120101/1257866188</link>
         <description>&lt;div class="section"&gt;
			&lt;h4&gt; あなたの演奏を応援するために作りました。&lt;/h4&gt;
			&lt;p&gt;“&lt;a rel="nofollow" target="_blank" href="http://cielo.rojo.jp/p/metronome_jp.html"&gt;Metronome PRO&lt;/a&gt;”&lt;/p&gt;
			&lt;h4&gt; 黒歴史ソフトですが、初心忘れるべからずの気持ちで&lt;/h4&gt;
			&lt;p&gt;“&lt;a rel="nofollow" target="_blank" href="http://cielo.rojo.jp/p/Mosquito_Attack_jp.html"&gt;Mosquito Attack&lt;/a&gt;”&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;ちなみにふつうのはてなダイアリーでもブログを書いています。&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/paella/"&gt;こちら&lt;/a&gt;ですので、あわせてどうぞ。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 10 Nov 2009 15:16:28 +0000</pubDate>
      </item>
      <item>
         <title>Three20でUndocumented APIが使われている件</title>
         <link>http://iphone-dev.g.hatena.ne.jp/takuma104/20091106/1257516194</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/joehewitt/three20/"&gt;Three20&lt;/a&gt;というすばらしいiPhone向けオープンソースライブラリがありますが、これがどうも、Undocumented APIを含んでしまっているようです。Three20のコードを含んだアプリをAppStoreに提出したのですが、この件でRejectをくらいました。作者様にはさきほどメールしておいたのですが、いちおうどこがまずそうなのかをとりいそぎということで。&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
&lt;span class="synStatement"&gt;@implementation&lt;/span&gt; UITouch (TTCategory)
 
&lt;span class="synIdentifier"&gt;- &lt;/span&gt;(&lt;span class="synType"&gt;id&lt;/span&gt;)initInView:(UIView *)view location:(CGPoint)location {
  &lt;span class="synStatement"&gt;if&lt;/span&gt; (&lt;span class="synStatement"&gt;self&lt;/span&gt; = [&lt;span class="synStatement"&gt;super&lt;/span&gt; init]) {
    _tapCount = &lt;span class="synConstant"&gt;1&lt;/span&gt;;
    _locationInWindow = location;
    _previousLocationInWindow = location;
 
    UIView *target = [view.window hitTest:_locationInWindow withEvent:&lt;span class="synConstant"&gt;nil&lt;/span&gt;];
    _view = [target retain];
    _window = [view.window retain];
    _phase = UITouchPhaseBegan;
    _touchFlags._firstTouchForView = &lt;span class="synConstant"&gt;1&lt;/span&gt;;
    _touchFlags._isTap = &lt;span class="synConstant"&gt;1&lt;/span&gt;;
    _timestamp = [NSDate timeIntervalSinceReferenceDate];
  }
  &lt;span class="synStatement"&gt;return&lt;/span&gt; &lt;span class="synStatement"&gt;self&lt;/span&gt;;
}
 
&lt;span class="synIdentifier"&gt;- &lt;/span&gt;(&lt;span class="synType"&gt;void&lt;/span&gt;)changeToPhase:(UITouchPhase)phase {
  _phase = phase;
  _timestamp = [NSDate timeIntervalSinceReferenceDate];
}
 
&lt;span class="synStatement"&gt;@end&lt;/span&gt;
&lt;/pre&gt;

			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/joehewitt/three20/blob/master/src/UIViewAdditions.m#L47-64"&gt;http://github.com/joehewitt/three20/blob/master/src/UIViewAdditions.m#L47-64&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;の黄色くハイライトされたあたりです。このUITouchクラスのメンバ変数にはcategoryを使うとアクセスできてしまいますが、これはやはりまずそうです。&lt;/p&gt;
			&lt;p&gt;こういったOpen Sourceのコードを使う上では、ライセンス上、AS ISになっていますので、コード作者ではなく、もちろん使う側に責任があります。使う上ではこういったリスクもあります。&lt;/p&gt;
			&lt;p&gt;おそらく今後もこういったことは起きないとも限らないので、ビルドしたあと、そのバイナリを静的に解析して、そのアプリでUndocumented APIやPrivate APIが使われていないかどうかをチェックするツールが欲しいなあと思ったのですが(たぶんAppleも審査時にこういう方法で試験しているものと思います)、こういったものって、存在するんでしょうか? &lt;/p&gt;
			&lt;p&gt;もしないとすると、とりあえず作ろうと思っています。多分、PublicなFrameworkのヘッダをすべてスキャンして、使えるAPIのリストを作り、なおかつビルド後のバイナリからclass-dump-xなど経由ですべての使用しているAPIのリストをとり、その差分を取ることで、これが可能な気もしています。が、できるのかなあ。。もしこの辺の情報お持ちの方おられましたら、@takuma104 あたりまでコメントお願いできればと思います。&lt;/p&gt;
			&lt;p&gt;(追記)&lt;/p&gt;
			&lt;p&gt;Three20のこの件は、すでに既出の話題だったのを教えていただきました。うーん、、御本人はレスしてないかあ。とりあえず fork してこの辺のコードを削除してpull request送るとかなんでしょかね。こういう場合。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/6d5046771539d139"&gt;http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/6d5046771539d139&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 06 Nov 2009 14:03:14 +0000</pubDate>
      </item>
      <item>
         <title>.Sched (本命アプリようやくリリース。)</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kenhama/20091025/1256462127</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;その後、半年かかってしまいましたが、本命のアプリがようやくリリースできました。&lt;/p&gt;
			&lt;p&gt;審査に１ヶ月くらいかかりました。&lt;/p&gt;
			&lt;p&gt;.Schedは、Google Calendarと同期可能なカレンダーアプリケーションです。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kenhama/20091025181334" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kenhama/20091025/20091025181334.png" alt="f:id:kenhama:20091025181334p:image" title="f:id:kenhama:20091025181334p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;詳しくはこちら。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://kjapp.180r.com/sched"&gt;http://kjapp.180r.com/sched&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;youtubeの動画はこちら&lt;/p&gt;
			&lt;p&gt;&lt;embed src="http://www.youtube.com/v/bkvLSIZg4tg&amp;hl=ja&amp;fs=1&amp;" type="application/x-shockwave-flash" width="560" height="340"&gt;&lt;/iframe&gt;&lt;/p&gt; 
			&lt;p&gt;よろしくお願いします。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 25 Oct 2009 09:15:27 +0000</pubDate>
      </item>
      <item>
         <title>[iPhone]ムック本「iPhoneカメラアプリ完全ガイド」</title>
         <link>http://iphone-dev.g.hatena.ne.jp/gravity-loves-time/20091024/1256353084</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;gravity loves timeのiPhoneアプリ「&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312268285&amp;mt=8"&gt;キリトリカメラ&lt;/a&gt;」が&lt;/p&gt;
			&lt;p&gt;「iPhoneカメラアプリ完全ガイド」というムック本で紹介されました。&lt;/p&gt;
			&lt;p&gt;&lt;br&gt;&lt;/p&gt;
			&lt;p&gt;なんと&lt;/p&gt;
			&lt;p&gt;「写真のプロが選ぶインストール必須の超オススメアプリ!／本格写真アプリ編」&lt;/p&gt;
			&lt;p&gt;の一つです！！&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blog.gravity-loves-time.com/2009/10/22/perfect_camera_guidebook/"&gt;http://blog.gravity-loves-time.com/2009/10/22/perfect_camera_guidebook/&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 24 Oct 2009 02:58:04 +0000</pubDate>
         <category>iPhone</category>
      </item>
      <item>
         <title>[perl][push]Catalyst用Apple Push Notification Serviceモジュール</title>
         <link>http://iphone-dev.g.hatena.ne.jp/hao_yayoi/20091010/1255194475</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;perlのMVCフレームワークCatalyst用モジュールとして、Catalyst::View::APNSを書いてみました。githubに上げてます。作成完了したらCPANに申請の予定。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/haoyayoi/Catalyst-View-APNS"&gt;Catalyst::View::APNS&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;掲示板とかでメールによる通知とかもありますが、Pushで通知とかもあってもよさそうなものです。Catalystに触れる事が多くなったので、せめてCatalystだけでもそれをお手軽にしたいと思いました。CPAN申請が完了したら改めて書く事にします。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 10 Oct 2009 17:07:55 +0000</pubDate>
      </item>
      <item>
         <title>[xcode][clang]ビルド時にClangを自動で実行させる</title>
         <link>http://iphone-dev.g.hatena.ne.jp/hao_yayoi/20091003/1254577529</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;現行の最新Xcodeは、ソースコードの静的解析を行うClangがメニューから実行できるようになっています。逐一設定実行する手間が省けて助かる事間違い無しなんですが、毎回clangのために余計な操作をするのは本当面倒です。&lt;/p&gt;
			&lt;p&gt;余り知られていませんが、このClangも自動で実行できるようになっています。デフォルトで実行がONになっていれば良いとは思うんですが、多分それだと初学者の壁が只管高くなるとかそんな具合だと思います。&lt;/p&gt;
			&lt;h4&gt;設定方法&lt;/h4&gt;
			&lt;ol&gt;
				&lt;li&gt;Xcodeのメニューから、「プロジェクト-&amp;gt;プロジェクト設定を編集」の順に選択します。&lt;/li&gt;
				&lt;li&gt;ビルドオプションの「静的アナライザを実行」にチェックをいれます。&lt;/li&gt;
			&lt;/ol&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/hao_yayoi/20091003224520" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/h/hao_yayoi/20091003/20091003224520.png" alt="f:id:hao_yayoi:20091003224520p:image" title="f:id:hao_yayoi:20091003224520p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 03 Oct 2009 13:45:29 +0000</pubDate>
      </item>
      <item>
         <title>[iPhone]開発のポイント：シンメトリー (1)</title>
         <link>http://iphone-dev.g.hatena.ne.jp/gravity-loves-time/20090928/1254149901</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;シンメトリーの開発ポイントを書き留めてみました。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blog.gravity-loves-time.com/2009/09/28/point_of_dev_symmetry_1/"&gt;http://blog.gravity-loves-time.com/2009/09/28/point_of_dev_symmetry_1/&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 28 Sep 2009 14:58:21 +0000</pubDate>
         <category>iPhone</category>
      </item>
      <item>
         <title>[iphone][google][terms]YouTube API を使った有料 iPhone アプリは利用規約違反（だと思う）追記有り</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kusakari/20090817/1250509258</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ちょっとアイデアをもらったので YouTube API を使った有料アプリを作ろうかと思って調べていたら、&lt;del datetime="2009-08-18T10:44:45+09:00"&gt;規約違反になりそうだったので、方向転換して無料アプリで出すことを考えています&lt;/del&gt;規約違反ではなさそうです。追記をご覧下さい。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;&lt;del datetime="2009-08-18T10:44:45+09:00"&gt;Google Maps API を使った有料アプリも規約違反になる可能性が高い&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/kusakari/#f1" name="fn1" title="&amp;#x004e00;&amp;#x0090e8;&amp;#x00306e;&amp;#x0030e6;&amp;#x0030fc;&amp;#x0030b6;&amp;#x0030fc;&amp;#x003057;&amp;#x00304b;&amp;#x005229;&amp;#x007528;&amp;#x003067;&amp;#x00304d;&amp;#x00306a;&amp;#x003044;&amp;#x003068;&amp;#x003044;&amp;#x003046;&amp;#x0090e8;&amp;#x005206;&amp;#x003067;&amp;#x005f15;&amp;#x003063;&amp;#x00304b;&amp;#x00304b;&amp;#x00308b;&amp;#x00306e;&amp;#x003067;&amp;#x00306f;&amp;#x00306a;&amp;#x003044;&amp;#x00304b;&amp;#x003068;&amp;#x008003;&amp;#x003048;&amp;#x003066;&amp;#x003044;&amp;#x00307e;&amp;#x003059;"&gt;*1&lt;/a&gt;&lt;/span&gt;ので注意した方が良さそうです。&lt;/p&gt;
			&lt;p&gt;ただし、最新の英語の利用規約をじっくり読んだわけではないので間違っている可能性もあります。&lt;/del&gt;&lt;/p&gt;
			&lt;p&gt;ということで、Google に限らず公開 API を利用して有料アプリを考えている方は、まずは利用規約を確認した方が良いと思います。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt;参考&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://itpro.nikkeibp.co.jp/article/MAG/20080317/296429/"&gt;実は商業サイトにとって制約が多いYouTubeの拡張API - CNETニュース：ITpro&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://code.google.com/intl/ja/apis/maps/faq.html#tos_commercial"&gt;よくある質問 - Google Maps API - Google Code&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;h4&gt;最新の利用規約&lt;/h4&gt;
			&lt;ul&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://code.google.com/intl/ja/apis/maps/terms.html"&gt;Google Maps-Google Earth APIs Terms of Service - Google Maps API - Google Code&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://code.google.com/intl/ja-JP/apis/youtube/terms.html"&gt;Terms of Service - YouTube APIs and Tools - Google Code&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;			&lt;br&gt;

			&lt;h4&gt;追記 2009/08/18&lt;/h4&gt;
			&lt;p&gt;helmok さんよりコメント欄で規約違反にはならなさそうだと教えて頂きました。&lt;/p&gt;
			&lt;p&gt;詳細は helmok さんの記事をご覧下さい。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/helmok/20090818/1250558706"&gt;iPhone用有料アプリにおけるYouTube API/MapKitの使用可否について - helmokの日記&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/kusakari/#fn1" name="f1"&gt;*1&lt;/a&gt;：一部のユーザーしか利用できないという部分で引っかかるのではないかと考えています&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 17 Aug 2009 11:40:58 +0000</pubDate>
      </item>
      <item>
         <title>[iphone]GenderChanger v1.2 リリース</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kusakari/20090708/1247020026</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090326204407" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090326/20090326204407.jpg" alt="f:id:kusakari:20090326204407j:image" title="f:id:kusakari:20090326204407j:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;7月1日に申請したアップデートが本日 Ready for Sale!&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/kusakari/#f1" name="fn1" title="&amp;#x004eca;&amp;#x0056de;&amp;#x00306e;&amp;#x004fee;&amp;#x006b63;&amp;#x00306f;&amp;#x00898b;&amp;#x00305f;&amp;#x0076ee;&amp;#x00306e;&amp;#x0030d0;&amp;#x0030b0;&amp;#x0030d5;&amp;#x0030a3;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030b9;&amp;#x00306e;&amp;#x00307f;&amp;#x003067;&amp;#x003059;&amp;#x003002;"&gt;*1&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
			&lt;p&gt;1週間（5営業日）でリリースということで、通常の審査ペースに戻ったのではないかと思います。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;GenderChanger はピッチ変換ソフトなので、iPhone OS 3.0 の「iPod Library へのアクセス」機能にかなり期待していました。&lt;/p&gt;
			&lt;p&gt;しかし、期待は裏切られました。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://objective-audio.jp/2009/07/iphone-os-30.html"&gt;「Touch the Wave」 の作者の方&lt;/a&gt;も書かれていますが、音楽ファイルへの直接アクセスはできません。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;ちなみに、曲を選ぶときは UIImagePickerController を使う要領で、MPMediaPickerController というクラスを使います。&lt;/p&gt;
		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/kusakari/#fn1" name="f1"&gt;*1&lt;/a&gt;：今回の修正は見た目のバグフィックスのみです。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 08 Jul 2009 02:27:06 +0000</pubDate>
         <category>iphone</category>
      </item>
      <item>
         <title>[iphone][appstore]「写真でもぐらたたき」v1.3リリース</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kusakari/20090629/1246242385</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;「写真でもぐらたたき」は叩いて良いもぐら、叩いてはだめなもぐらの顔を、写真で選択して遊ぶもぐらたたきゲームです。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;iPhone OS 3.0 で UIImagePickerController の構造と UI が変更されたことに伴い、写真選択画面でのマーカーがでなくなり、写真の中心もずれてしまったので、バージョンアップしました。&lt;/p&gt;
			&lt;p&gt;実はこのアプリは、米国の某社から Apple 経由で権利を侵害しているという警告を受け、日本でのみの販売に切り替えています。会社の iPhone アプリは6月11日に3本同時に AppStore に申請したのですが、このアプリだけ先にリリースされました。これは販売が日本だけというのも関係しているのだと思います。18日（12営業日）でリリース。&lt;/p&gt;
			&lt;p&gt;ということで、日本だけをターゲットにしているアプリであれば、販売を日本だけにしておくと（おそらく）審査期間が短くなります。&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/kusakari/#f1" name="fn1" title="&amp;#x008ca9;&amp;#x0058f2;&amp;#x003092;&amp;#x0065e5;&amp;#x00672c;&amp;#x003060;&amp;#x003051;&amp;#x00306b;&amp;#x003057;&amp;#x003066;&amp;#x00304a;&amp;#x003044;&amp;#x003066;&amp;#x003001;&amp;#x005be9;&amp;#x0067fb;&amp;#x00901a;&amp;#x003063;&amp;#x00305f;&amp;#x003089;&amp;#x005168;&amp;#x004e16;&amp;#x00754c;&amp;#x00306b;&amp;#x005909;&amp;#x0066f4;&amp;#x003068;&amp;#x00304b;&amp;#x003082;&amp;#x003067;&amp;#x00304d;&amp;#x00308b;&amp;#x00306e;&amp;#x003060;&amp;#x00308d;&amp;#x003046;&amp;#x00304b;&amp;#x002026;&amp;#x003002;&amp;#x003084;&amp;#x00308a;&amp;#x00307e;&amp;#x00305b;&amp;#x003093;&amp;#x003051;&amp;#x003069;&amp;#x003002;"&gt;*1&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
			&lt;h4&gt;ゲーム画像&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20081127123642" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20081127/20081127123642.jpg" alt="f:id:kusakari:20081127123642j:image" title="f:id:kusakari:20081127123642j:image" class="hatena-fotolife"&gt;&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090409123521" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090409/20090409123521.png" alt="f:id:kusakari:20090409123521p:image" title="f:id:kusakari:20090409123521p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/kusakari/#fn1" name="f1"&gt;*1&lt;/a&gt;：販売を日本だけにしておいて、審査通ったら全世界に変更とかもできるのだろうか…。やりませんけど。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 29 Jun 2009 02:26:25 +0000</pubDate>
      </item>
      <item>
         <title>[diary]アップデート申請から25日間（18営業日）で Ready for Sale</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kusakari/20090624/1245817118</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;5/31 にアップデート申請したアプリが 6/24 に Ready for Sale。&lt;/p&gt;
			&lt;p&gt;カメラアプリなので UIImagePickerController を使ったアプリが吸い込まれるという、カメラアプリブラックホールに吸い込まれたかと思って心配したのですが、結局審査に時間がかかっていただけのようです。&lt;/p&gt;
			&lt;p&gt;ということで美味しさが大幅アップした &lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=315099381&amp;mt=8"&gt;DeliCam&lt;/a&gt; v1.1 をよろしくお願いします。&lt;/p&gt;			&lt;br&gt;

			&lt;h4&gt;比較画像&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090624223303" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090624/20090624223303.jpg" alt="f:id:kusakari:20090624223303j:image:w180" title="f:id:kusakari:20090624223303j:image:w180" class="hatena-fotolife" width="180"&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090624223535" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090624/20090624223535.jpg" alt="f:id:kusakari:20090624223535j:image:w180" title="f:id:kusakari:20090624223535j:image:w180" class="hatena-fotolife" width="180"&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090624223559" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090624/20090624223559.jpg" alt="f:id:kusakari:20090624223559j:image:w180" title="f:id:kusakari:20090624223559j:image:w180" class="hatena-fotolife" width="180"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090624230509" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090624/20090624230509.jpg" alt="f:id:kusakari:20090624230509j:image:w200" title="f:id:kusakari:20090624230509j:image:w200" class="hatena-fotolife" width="200"&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kusakari/20090624230606" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kusakari/20090624/20090624230606.jpg" alt="f:id:kusakari:20090624230606j:image:w200" title="f:id:kusakari:20090624230606j:image:w200" class="hatena-fotolife" width="200"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;h4&gt;参考&lt;/h4&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.apptoiphone.com/2009/06/iphone30_23.html"&gt;iPhoneあっぷ使ってみた: iPhone3.0に対応できていないカメラアプリ&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 24 Jun 2009 04:18:38 +0000</pubDate>
         <category>diary</category>
      </item>
      <item>
         <title>W-8BENのつづき</title>
         <link>http://iphone-dev.g.hatena.ne.jp/daoki2/20090321/1237603497</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;最近、公私ともに忙しく、アプリも完成間近なのに、全然iPhoneを触る時間が取れません(泣&lt;/p&gt;
			&lt;p&gt;ところで、W-8BENに関して、ちょっとだけ続きです。&lt;/p&gt;
			&lt;p&gt;iTunes Connectで情報を登録すると、間もなくAppleからW-8BENの用紙がE-mailで送られてくると思いますが、あれにサインしてPDFに取り込める環境をお持ちでしたら、わざわざエアメールで送る必要はなく、来たE-mailのアドレスに添付して送り返せば受け取ってもらえますよ。&lt;/p&gt;
			&lt;p&gt;時間もお金も節約できますので、これからご登録される方はご参考までに。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 21 Mar 2009 02:44:57 +0000</pubDate>
      </item>
      <item>
         <title>初アプリリリース!! 24 Photo Clock</title>
         <link>http://iphone-dev.g.hatena.ne.jp/kenhama/20090301</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;しばらく放置になってしまいましたが、初アプリリリースできました。&lt;/p&gt;
			&lt;p&gt;審査期間は一週間程度。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305610027&amp;mt=8"&gt;24 Photo Clock&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305610027&amp;mt=8" class="http-image"&gt;&lt;img src="http://img.f.hatena.ne.jp/images/fotolife/k/kenhama/20090301/20090301150714.png" class="http-image" alt="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305610027&amp;mt=8"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/kenhama/20090301150713" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/k/kenhama/20090301/20090301150713.png" alt="f:id:kenhama:20090301150713p:image" title="f:id:kenhama:20090301150713p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;			&lt;br&gt;
			&lt;br&gt;

			&lt;p&gt;と思ったら、ネタも機能も完全にかぶってるアプリが出てる。。。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 28 Feb 2009 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>iPhoneアプリを開発する前に先ずMacの使い方を覚えるところから始めよう。</title>
         <link>http://iphone-dev.g.hatena.ne.jp/ikkou/20090226/p1</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ここに至るまでの経緯。&lt;/p&gt;
			&lt;p&gt;2009/02/18&lt;/p&gt;
			&lt;p&gt;何を思ったのかiPhoneを衝動買い。1週間後にiPhoneの実質値下げが発表されて泣く。&lt;/p&gt;
			&lt;p&gt;2009/02/24&lt;/p&gt;
			&lt;p&gt;何故かiPhoneアプリ開発をしてみたくなる。iPhone SDKプログラミング大全を購入。一緒にMacFanも買った。&lt;/p&gt;
			&lt;div class="hatena-asin-detail"&gt;
  &lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4048676067/hatena-hamazou-22/"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41YEg%2Bvu8KL._SL160_.jpg" class="hatena-asin-detail-image" alt="&amp;#x0081ea;&amp;#x004f5c;&amp;#x0030a2;&amp;#x0030d7;&amp;#x0030ea;&amp;#x003092;App Store&amp;#x003067;&amp;#x004e16;&amp;#x00754c;&amp;#x00306b;&amp;#x005411;&amp;#x003051;&amp;#x003066;&amp;#x008ca9;&amp;#x0058f2;&amp;#x003067;&amp;#x00304d;&amp;#x00308b;!! iPhone SDK&amp;#x0030d7;&amp;#x0030ed;&amp;#x0030b0;&amp;#x0030e9;&amp;#x0030df;&amp;#x0030f3;&amp;#x0030b0;&amp;#x005927;&amp;#x005168; (MacPeople Books)" title="&amp;#x0081ea;&amp;#x004f5c;&amp;#x0030a2;&amp;#x0030d7;&amp;#x0030ea;&amp;#x003092;App Store&amp;#x003067;&amp;#x004e16;&amp;#x00754c;&amp;#x00306b;&amp;#x005411;&amp;#x003051;&amp;#x003066;&amp;#x008ca9;&amp;#x0058f2;&amp;#x003067;&amp;#x00304d;&amp;#x00308b;!! iPhone SDK&amp;#x0030d7;&amp;#x0030ed;&amp;#x0030b0;&amp;#x0030e9;&amp;#x0030df;&amp;#x0030f3;&amp;#x0030b0;&amp;#x005927;&amp;#x005168; (MacPeople Books)"&gt;&lt;/a&gt;
  &lt;div class="hatena-asin-detail-info"&gt;
    &lt;p class="hatena-asin-detail-title"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4048676067/hatena-hamazou-22/"&gt;自作アプリをApp Storeで世界に向けて販売できる!! iPhone SDKプログラミング大全 (MacPeople Books)&lt;/a&gt;&lt;/p&gt;
    &lt;ul&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;作者:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%CC%DA%B2%BC%C0%BF" class="okeyword"&gt;木下誠&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;出版社/メーカー:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%B9%A5%AD%A1%BC%A1%A6%A5%E1%A5%C7%A5%A3%A5%A2%A5%EF%A1%BC%A5%AF%A5%B9" class="okeyword"&gt;アスキー・メディアワークス&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;発売日:&lt;/span&gt; 2009/01/06&lt;/li&gt;
                                                      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;メディア:&lt;/span&gt; 大型本&lt;/li&gt;
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;購入&lt;/span&gt;: 28人 &lt;span class="hatena-asin-detail-label"&gt;クリック&lt;/span&gt;: 802回&lt;/li&gt;
      &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/4048676067"&gt;この商品を含むブログ (71件) を見る&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div class="hatena-asin-detail-foot"&gt;&lt;/div&gt;
&lt;/div&gt;

			&lt;div class="hatena-asin-detail"&gt;
  &lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/B001Q45D10/hatena-hamazou-22/"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51cdwDibDYL._SL160_.jpg" class="hatena-asin-detail-image" alt="Mac Fan (&amp;#x0030de;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030d5;&amp;#x0030a1;&amp;#x0030f3;) 2009&amp;#x005e74; 03&amp;#x006708;&amp;#x0053f7; [&amp;#x0096d1;&amp;#x008a8c;]" title="Mac Fan (&amp;#x0030de;&amp;#x0030c3;&amp;#x0030af;&amp;#x0030d5;&amp;#x0030a1;&amp;#x0030f3;) 2009&amp;#x005e74; 03&amp;#x006708;&amp;#x0053f7; [&amp;#x0096d1;&amp;#x008a8c;]"&gt;&lt;/a&gt;
  &lt;div class="hatena-asin-detail-info"&gt;
    &lt;p class="hatena-asin-detail-title"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/B001Q45D10/hatena-hamazou-22/"&gt;Mac Fan (マックファン) 2009年 03月号 [雑誌]&lt;/a&gt;&lt;/p&gt;
    &lt;ul&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;出版社/メーカー:&lt;/span&gt; &lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/keyword/%CB%E8%C6%FC%A5%B3%A5%DF%A5%E5%A5%CB%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A5%BA" class="okeyword"&gt;毎日コミュニケーションズ&lt;/a&gt;&lt;/li&gt;
      
      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;発売日:&lt;/span&gt; 2009/01/29&lt;/li&gt;
                                                      &lt;li&gt;&lt;span class="hatena-asin-detail-label"&gt;メディア:&lt;/span&gt; 雑誌&lt;/li&gt;
      &lt;li&gt; &lt;span class="hatena-asin-detail-label"&gt;クリック&lt;/span&gt;: 2回&lt;/li&gt;
      &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/asin/B001Q45D10"&gt;この商品を含むブログ (3件) を見る&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div class="hatena-asin-detail-foot"&gt;&lt;/div&gt;
&lt;/div&gt;

			&lt;p&gt;2009/02/25&lt;/p&gt;
			&lt;p&gt;夏まで今の会社にいるか分からないのに夏ボ一括でMacBook(竹)を衝動買い。&lt;/p&gt;
			&lt;p&gt;とりあえずiPhone SDKを入れてサンプルコードを開いてみる。うん。わからない。&lt;/p&gt;
			&lt;p&gt;2009/02/26&lt;/p&gt;
			&lt;p&gt;Macの使い方がわからない。←今ココ&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;根本的な操作方法を把握するところから始めます＞＜&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 25 Feb 2009 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Reject DB for iPhone Developerを公開しました</title>
         <link>http://iphone-dev.g.hatena.ne.jp/daoki2/20090125/1232873651</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;fladdictさんが集めてくださったリジェクトの事例をデータベース化し、サイトとして公開しました。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-rejectdb.appspot.com/"&gt;http://iphone-rejectdb.appspot.com/&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;以下に情報をご提供していただいた皆様の情報を使用させていただいております。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://q.hatena.ne.jp/1231517350"&gt;http://q.hatena.ne.jp/1231517350&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;表現を少し変更したり、重複する事例は適宜まとめさせていただいてますので、何か問題等がございましたらデータを修正/削除させていただきますので、ご連絡をいただけると幸いです。&lt;/p&gt;
			&lt;p&gt;また、今後はこちらの方のサイトに、審査でリジェクトされた場合は事例をご登録いただけると幸いです。&lt;/p&gt;
			&lt;p&gt;では、よろしくお願いいたします。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 25 Jan 2009 08:54:11 +0000</pubDate>
      </item>
      <item>
         <title>16進数変換</title>
         <link>http://iphone-dev.g.hatena.ne.jp/CueNarga/20081123</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;a なら 10 b なら 11 と変換とか…どーすんだ？と思って調べてたら&lt;/p&gt;
			&lt;p&gt;力つきた（汗&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;ま、それなら rangeOfString でどーとでもなる。&lt;/p&gt;
			&lt;p&gt;逆は…？10 なら a 11 なら b&lt;/p&gt;
			&lt;p&gt;なんかあんのかな？　使わないけど知っておかねばなぁ&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 22 Nov 2008 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>touch系 #3</title>
         <link>http://iphone-dev.g.hatena.ne.jp/CueNarga/20081122</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;電話をかけると Touch させてくれる人が自宅等に来るんですよね。&lt;/p&gt;
			&lt;p&gt;こちらも嫌いじゃないです…（汗&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;さて、 Touch 系メソッドについて無知すぎる感がアリアリですが、聞くは一時の恥精神で&lt;/p&gt;
			&lt;p&gt;いってみましょう。&lt;/p&gt;
			&lt;p&gt;touchesEnded などで…&lt;/p&gt;
&lt;pre class="syntax-highlight"&gt;
	&lt;span class="synComment"&gt;// 2本指タッチテスト&lt;/span&gt;
	NSSet *allTouches = [event allTouches];
	&lt;span class="synStatement"&gt;switch&lt;/span&gt; ([allTouches count]) {
		&lt;span class="synStatement"&gt;case&lt;/span&gt; &lt;span class="synConstant"&gt;1&lt;/span&gt;: {
			&lt;span class="synStatement"&gt;break&lt;/span&gt;;
		}
		&lt;span class="synStatement"&gt;case&lt;/span&gt; &lt;span class="synConstant"&gt;2&lt;/span&gt;: {
			
		[mesArray removeObjectAtIndex:&lt;span class="synConstant"&gt;0&lt;/span&gt;];
		[mesArray addObject:&lt;span class="synConstant"&gt;@&amp;quot;22 TWO FINGER 22&amp;quot;&lt;/span&gt;];
			&lt;span class="synStatement"&gt;break&lt;/span&gt;;
		}
		&lt;span class="synStatement"&gt;default&lt;/span&gt;:{
		}
	}
	&lt;span class="synComment"&gt;// 2本指タッチテスト end&lt;/span&gt;
&lt;/pre&gt;

			&lt;p&gt;こおすっと2本指のタップが取れる。&lt;/p&gt;
			&lt;p&gt;んで、つらつらっと UITouch Class Reference を見てみると気になる記述が…&lt;/p&gt;
			&lt;p&gt;UITouchSwipedRight&lt;/p&gt;
			&lt;p&gt;ん？　これで「右よ！」みたいなん取れるのかな？&lt;/p&gt;
			&lt;p&gt;試してないけど。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 21 Nov 2008 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>setNeedsDisplay</title>
         <link>http://iphone-dev.g.hatena.ne.jp/CueNarga/20081121</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;Array を保持しておく時に retain さえしときゃ良いんだ…&lt;/p&gt;
			&lt;p&gt;というユルユルな感じで配列を確保してました。&lt;/p&gt;
			&lt;p&gt;描画でも同じノリでいきましょう。&lt;/p&gt;
			&lt;p&gt;掴んでるレイヤーに対して　setNeedsDisplay　これ。&lt;/p&gt;
			&lt;p&gt;とりあえず描いたらコレ　setNeedsDisplay&lt;/p&gt;
			&lt;p&gt;お茶のお供に　setNeedsDisplay&lt;/p&gt;
			&lt;p&gt;気になるあの娘に　setNeedsDisplay&lt;/p&gt;
			&lt;p&gt;（GO-BANG'S の CD のようだが、お若い方にはわかるまい）&lt;/p&gt;
			&lt;p&gt;Touch系メソッドの中で描画してて、なんか遅れるなーと思ってたんですが、再描画すれば&lt;/p&gt;
			&lt;p&gt;良かったんですね。&lt;/p&gt;
			&lt;p&gt;[self setNeedsDisplay];&lt;/p&gt;
			&lt;p&gt;こんな風に。&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;色々な方がアプリをリリースする中、まだまだ開発進捗は 10% 程ですね。&lt;/p&gt;
			&lt;p&gt;週末プログラマには辛い試練だ。だが耐えよう。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 20 Nov 2008 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>そろそろiPhoneアプリ開発ネタを書いていこうかな</title>
         <link>http://iphone-dev.g.hatena.ne.jp/akio0911/20081117/1226940645</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;今はTransitionのサンプルを読んでいます。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 17 Nov 2008 16:50:45 +0000</pubDate>
      </item>
      <item>
         <title>CGContextSetLineWidth</title>
         <link>http://iphone-dev.g.hatena.ne.jp/CueNarga/20081116</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;CGContextSetLineWidth(context, 1.0);&lt;/p&gt;
			&lt;p&gt;とやってれば、1ドット(1pxiel)の線やら矩形やらが描けると思ってた。&lt;/p&gt;
			&lt;p&gt;が、&lt;/p&gt;
			&lt;p&gt;スクリーンショットをマジマジと見ていたら違った。&lt;/p&gt;
			&lt;p&gt;CGContextMoveToPoint や CGContextAddLineToPoint では 0.5 単位の指定が必要らしい。&lt;/p&gt;
			&lt;p&gt;なんぞこれ…&lt;/p&gt;
			&lt;p&gt;ちなみに、愛媛でも色々あって、自分の実家だと&lt;/p&gt;
			&lt;p&gt;なんなんこれ… となる。ま、どーでもいいんだけどｗ&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 15 Nov 2008 15:00:00 +0000</pubDate>
      </item>
      <item>
         <title>[pending contract]住所の文字化けの修正依頼メール文面(参考)</title>
         <link>http://iphone-dev.g.hatena.ne.jp/takuma104/20081021/1224569663</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/takuma104/20081006/1223242939"&gt;AppStoreへの提出アプリがPending Contractで嵌らない為の最低条件は何か? - Takuma104.m - iPhoneアプリ開発グループ&lt;/a&gt;に関連して。&lt;/p&gt;
			&lt;p&gt;僕は、iTSPayments@apple.comとdevcontracts@apple.comそれぞれに以下のような文面でメールしたら住所が英語になりました。(ただし、どちらとも返事がなかった)また、iTunes株式会社からもその前に住所問い合わせのメールがあったので、いまいち意味あるかわからないんですが。。&lt;/p&gt;
			&lt;p&gt;英語はちょっと自信ないですがｗ，もしよろしければ、なにかの参考まで。&lt;/p&gt;
&lt;pre&gt;
To whom it may concern,

I&amp;#39;m a iPhone Developer Program member.

I&amp;#39;m asking for pending contract problem.
I&amp;#39;ve been in pending contract problem for more then three weeks.

I don&amp;#39;t know that it relate to the issue, I found some bugs
in Contact Info &amp;#34;Company (Legal Entity) Address&amp;#34;.
It seems my address is unreadable.
(It might be Japanese Character.)


The following currently displayed.
--
??? ?????? ????
City:??????
State/Province:???
Zip/Postal Code:100-0000
Country:Japan


The following is correct info.
--
#301 hogehoge
City: Ohta-ku
State/Province: Tokyo
Zip/Postal Code:100-0000
Country:Japan


Would you please fix it?

Best regards,

---
Takuma Mori &amp;#60;takuma@104.net&amp;#62;
#301 hogehoge, Ohta-ku Tokyo, Japan
Person ID: &amp;#42;&amp;#42;&amp;#42;&amp;#42;&amp;#42;
Application Name: &amp;#42;&amp;#42;&amp;#42;&amp;#42;&amp;#42;&amp;#42;
Apple ID: &amp;#42;&amp;#42;&amp;#42;&amp;#42;&amp;#42;&amp;#42;

&lt;/pre&gt;

		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 21 Oct 2008 06:14:23 +0000</pubDate>
      </item>
      <item>
         <title>AppStoreへの提出アプリがPending Contractで嵌らない為の最低条件は何か?</title>
         <link>http://iphone-dev.g.hatena.ne.jp/takuma104/20081006/1223242939</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://f.hatena.ne.jp/takuma104/20080924073425" class="hatena-fotolife"&gt;&lt;img src="http://cdn-ak.f.st-hatena.com/images/fotolife/t/takuma104/20080924/20080924073425.png" alt="f:id:takuma104:20080924073425p:image" title="f:id:takuma104:20080924073425p:image" class="hatena-fotolife"&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;いま僕のアプリ(NatsuLiphone)は、FreeAppとして提出しているにもかかわらず、&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/takuma104/20080915/1221511082"&gt;3週間以上Pending Contractの刑を食っているという謎な状況&lt;/a&gt;になっています。&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/takuma104/#f1" name="fn1" title="Pending Contract&amp;#x00554f;&amp;#x00984c;&amp;#x00306b;&amp;#x003064;&amp;#x003044;&amp;#x003066;&amp;#x00306f;&amp;#x003001;[http://fladdict.net/blog/2008/10/eternalpendingcontract.html:title=fladdict&amp;#x003055;&amp;#x003093;&amp;#x00306e;&amp;#x00307e;&amp;#x003068;&amp;#x003081;]&amp;#x00304c;&amp;#x005206;&amp;#x00308a;&amp;#x003084;&amp;#x003059;&amp;#x003044;&amp;#x00304b;&amp;#x003068;&amp;#x00601d;&amp;#x003044;&amp;#x00307e;&amp;#x003059;"&gt;*1&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
			&lt;p&gt;iTunes Connect の "Contracts, Tax, &amp; Banking Information" の "Your Contracts In Process" 部分のスクリーンショットはこんな感じで、Free Applicationのところの "Setup Complete" がグリーンになっていないことが分ります。&lt;/p&gt;
			&lt;p&gt;&lt;img src="http://gyazo.com/4d85b45a7dc693ec6e3e7b0f5e6a1ed1.png"&gt;&lt;/p&gt;
			&lt;p&gt;週末Twitterで、実際にFreeアプリケーションをAppStoreでリリースされている方に状況とかを確認してみたのですが、総合すると、どうやら問題は、&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;&lt;b&gt;アプリの審査終了時点(Ready for Saleメールが来た段階)で、"Contracts, Tax, &amp; Banking Information"画面の、Paid ApplicationのContact InfoのEditで見れる"Company (Legal Entity) Address"が化けないで(??とかにならないで)表示されている&lt;/b&gt;&lt;/p&gt;			&lt;br&gt;

			&lt;p&gt;というのが1つの条件になるようです。また、名前の部分も僕の場合「琢磨 Mori」などとなっていますが、これは問題にならないようです。&lt;span class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/takuma104/#f2" name="fn2" title="&amp;#x00306a;&amp;#x00305c;&amp;#x00304b;&amp;#x003068;&amp;#x003044;&amp;#x003046;&amp;#x003068;&amp;#x003001;[http://rejaw.com/tools:title=Rejaw for iPhone]&amp;#x00306a;&amp;#x003069;&amp;#x00304c;&amp;#x003001;&amp;#x003053;&amp;#x003053;&amp;#x00304c;&amp;#x006f22;&amp;#x005b57;&amp;#x00306e;&amp;#x00307e;&amp;#x00307e;&amp;#x00516c;&amp;#x00958b;&amp;#x003055;&amp;#x00308c;&amp;#x003066;&amp;#x003044;&amp;#x00308b;&amp;#x00305f;&amp;#x003081;&amp;#x003067;&amp;#x003059;"&gt;*2&lt;/a&gt;&lt;/span&gt; ということで、ここの住所部分が文字化けしている人は、アプリを申請する前にでも、iTSPayments @ apple.com もしくは、 devcontracts @ apple.com にメールするなりして修正してもらったのを確認してから提出するのが良いと思われます。また7/11以前にDev Programsに加入できた人は、どうやらここの住所はiTunes Storeの情報ではない(?)ようなので、7/11以降に加入した人が対象になっているものと思われます。&lt;/p&gt;
			&lt;p&gt;それで、結局僕のほうは、これが2日前に修正されたわけなのですが、一向にまだPending Contract状態のままです。もしかすると、いまのこの状態から、このPending Contractを解除する人が仕事をちゃんとしていないのではないか、という余計な邪推もできます。今週動きがなかったら、また電話するなりしてみようと思います。&lt;/p&gt;
		&lt;/div&gt;
		&lt;div class="footnote"&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/takuma104/#fn1" name="f1"&gt;*1&lt;/a&gt;：Pending Contract問題については、&lt;a rel="nofollow" target="_blank" href="http://fladdict.net/blog/2008/10/eternalpendingcontract.html"&gt;fladdictさんのまとめ&lt;/a&gt;が分りやすいかと思います&lt;/p&gt;
			&lt;p class="footnote"&gt;&lt;a rel="nofollow" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/takuma104/#fn2" name="f2"&gt;*2&lt;/a&gt;：なぜかというと、&lt;a rel="nofollow" target="_blank" href="http://rejaw.com/tools"&gt;Rejaw for iPhone&lt;/a&gt;などが、ここが漢字のまま公開されているためです&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 05 Oct 2008 21:42:19 +0000</pubDate>
      </item>
      <item>
         <title>[sound]iPhoneで音を鳴らす４つの方法</title>
         <link>http://iphone-dev.g.hatena.ne.jp/bricklife/20081003/1223024206</link>
         <description>&lt;div class="section"&gt;
			&lt;h4&gt;System Sound Services&lt;/h4&gt;
			&lt;p&gt;短いサウンドファイルを鳴らすときに一番簡単&lt;/p&gt;
			&lt;p&gt;実例：Metronome&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/iphone_dev/20080624/1214311422"&gt;http://d.hatena.ne.jp/iphone_dev/20080624/1214311422&lt;/a&gt;&lt;/p&gt;
			&lt;h4&gt;Audio Queue Services&lt;/h4&gt;
			&lt;p&gt;音量とか複数音源とかループとかを制御するなら（バッファーキュー＆コールバック方式）&lt;/p&gt;
			&lt;p&gt;実例：SpeakHere&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://decomo.info/cocoa/wiki/%E7%BF%BB%E8%A8%B3%E6%96%87%E7%AB%A0:%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA:audio_queue_service%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89:%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB"&gt;http://decomo.info/cocoa/wiki/%E7%BF%BB%E8%A8%B3%E6%96%87%E7%AB%A0:%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA:audio_queue_service%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89:%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB&lt;/a&gt;&lt;/p&gt;
			&lt;h4&gt;Audio UnitのRemote IO&lt;/h4&gt;
			&lt;p&gt;レイテンシーが気になる場合その１。OSに統合されているオーディオ機能&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://ja.wikipedia.org/wiki/Audio_Units"&gt;http://ja.wikipedia.org/wiki/Audio_Units&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://d.hatena.ne.jp/iphone_dev/20080604/1212568727"&gt;http://d.hatena.ne.jp/iphone_dev/20080604/1212568727&lt;/a&gt;&lt;/p&gt;
			&lt;h4&gt;OpenAL 1.1&lt;/h4&gt;
			&lt;p&gt;レイテンシーが気になる場合その２。クロスプラットフォームのオーディオAPI&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://ja.wikipedia.org/wiki/OpenAL"&gt;http://ja.wikipedia.org/wiki/OpenAL&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://openal.org/"&gt;http://openal.org/&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.dss.nifs.ac.jp/ito/memo/openal01.html"&gt;http://www.dss.nifs.ac.jp/ito/memo/openal01.html&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://memeplex.blog.shinobi.jp/Category/4/"&gt;http://memeplex.blog.shinobi.jp/Category/4/&lt;/a&gt;&lt;/p&gt;
			&lt;h4&gt;オマケ：iPhoneを振動させる&lt;/h4&gt;
			&lt;p&gt;System Sound Services（AudioToolbox/AudioServices.h）の AudioServicesPlaySystemSoundを使う&lt;/p&gt;
			&lt;p&gt;AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 03 Oct 2008 08:56:46 +0000</pubDate>
         <category>sound</category>
      </item>
      <item>
         <title>[NDA]iPhone SDK の NDA の廃止を嘆願する署名運動が行われています</title>
         <link>http://iphone-dev.g.hatena.ne.jp/takuma104/20080825/1219654052</link>
         <description>&lt;div class="section"&gt;
			&lt;p&gt;ここで行われているようです。&lt;/p&gt;
			&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.ipetitions.com/petition/iPhoneNDA/index.html"&gt;http://www.ipetitions.com/petition/iPhoneNDA/index.html&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;さっそく僕も署名しました。&lt;a rel="nofollow" class="keyword" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/keyword/NDA"&gt;NDA&lt;/a&gt;自体は廃止してもらったほうが良いとは思いますが、全廃じゃなくても、個人的には以下の3つが出来るようになれば良いと考えているので、そのように署名コメントしてみました。&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt; iPhone SDKについて書かれた本が自由に出版できること&lt;/li&gt;
				&lt;li&gt; &lt;a rel="nofollow" class="keyword" target="_blank" href="http://iphone-dev.g.hatena.ne.jp/keyword/NDA"&gt;NDA&lt;/a&gt;締結者同士の無制限の情報交換を可能にすること(オンライン・オフライン問わず)&lt;/li&gt;
				&lt;li&gt; iPhone SDK用に自分達が書いたコードが自由に公開できること&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;なおこの署名サイト iPetitions は、署名すると、「iPetitionsサイト維持のために、募金してくれ画面」が出ますが、任意でないようで実は任意です。募金しないでも、署名自体は行われますので、ご注意ください。&lt;/p&gt;
		&lt;/div&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 25 Aug 2008 08:47:32 +0000</pubDate>
         <category>NDA</category>
      </item>
   </channel>
</rss><!-- fe3.yql.bf1.yahoo.com compressed/chunked Sun May 27 13:34:41 UTC 2012 -->

