<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iOS 開発ブログ Natsu&#039;s note</title>
	<atom:link href="http://blog.natsuapps.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.natsuapps.com</link>
	<description>iOS開発日記。開発Tipsや読んだ本の紹介などなど。</description>
	<lastBuildDate>Tue, 14 May 2013 13:13:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>[Xcode][tool] ランタイムデバッガーSpark Inspectorが便利！</title>
		<link>http://blog.natsuapps.com/2013/05/spark-inspector.html</link>
		<comments>http://blog.natsuapps.com/2013/05/spark-inspector.html#comments</comments>
		<pubDate>Tue, 14 May 2013 12:41:24 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1027</guid>
		<description><![CDATA[デバッグ時にビューについての情報（重なりや位置、色など）を解析したくなることがよくあると思います。ビューの階層構造を知るための方法はいくつかありますが、先日見つけたSpark Inspectorがものすごく便利そうなので <a href='http://blog.natsuapps.com/2013/05/spark-inspector.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
デバッグ時にビューについての情報（重なりや位置、色など）を解析したくなることがよくあると思います。ビューの階層構造を知るための方法はいくつかありますが、先日見つけたSpark Inspectorがものすごく便利そうなのでご紹介します。
</p>
<p>
<a href="http://www.sparkinspector.com" title="Spark Inspector - Runtime Debugger for iOS Apps" target="_blank">Spark Inspector &#8211; Runtime Debugger for iOS Apps</a><br />
<div class="browser-shot"><a href="http://www.sparkinspector.com" target="_blank"><img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.sparkinspector.com?w=300" alt="http://www.sparkinspector.com" width="300" class="alignnone" /></a></div>
</p>
<p>
Spark InspectorはBonjourとMethod Swizzlingを利用したランタイムデバッガーです。プロジェクトにフレームワークを追加し、起動のためのコードを記述するだけで簡単に利用できます（実際には、これらの作業もアシスタントが自動で行ってくれるので、ほぼボタン一つで利用可能になります）。
</p>
<p>
できることは大きく分けて二つ。</p>
<ul>
<li>ビューの状態を2Dまたは3Dで表示する。ビューやレイヤーをリアルタイムで編集する。</li>
<li>通知センター(NSNotificationCenter)を監視する。</li>
</ul>
<p>ビューの表示だけでも（特に3Dが）かなり感動しますが、これをリアルタイムで編集できるからなおさらすごいのです。
</p>
<h3>ビューの状態表示とリアルタイム編集</h3>
<p>
思い通りに画面が表示されないとき、ビューの階層をのぞいてみたくなりませんか。重なり順が間違っていたり、frameの設定を間違えて画面外に描画されていたり、または、予期せずhiddenになっていたり、、、理由は様々ですが、見えないものをデバッグするのは大変です。
</p>
<p>
Spark Inspectorは、すべてのビューの階層構造を見せてくれます。hiddenになっているものも教えてくれますし、3D表示すれば重なり方が悪いところも見つけられるでしょう。
</p>
<p>
また、実装中に、サイズ、位置や色などを微調整したいこともあると思います。Spark Inspectorがあれば、いちいちframeを変更してビルドして実機で確認、、、などという手間とはお別れです。Spark Inspector上で変更した値が、その場で動作中の実機またはシミュレータで確認できてしまいます（実機で利用する場合には、Macと実機が同一ネットワーク上に存在する必要があります）。パラメータ調整はSpark Inspectorで行い、最終決定した値だけを実装すればいいのです。
</p>
<p>
試しに、iLoan Calcで利用してみました。ビューの階層が以下のように表示されます。ここで、右側のサイドバーからビューやCALayerの値を変更することが可能です。CALayerでは、変換行列の値を指定することで変換が可能となっています（かなり高度な使い方ですね）。</p>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/SparkInspector_ViewStack.png" alt="Spark Inspector View Stack" title="SparkInspector_ViewStack.png" border="0" width="500" height="352" />
</p>
<h3>通知センターの監視</h3>
<p>
通知センターの監視も便利です。もちろん、「誰が」「どの」通知を出したかがすぐに分かります。それと同時にStack Traceも表示されるという至れり尽くせりぶり。
</p>
<p>
通知は目に見えないので、デバッグが難しいところでもあります。それをこのように可視化してくれるというのはありがたいことですね。
</p>
<h3>利用方法</h3>
<p>プロジェクトをSpark Inspectorに対応するのは簡単です。親切にもIntegration Assistantがついているので、これを利用しましょう。</p>
<p>
メニューから&#8221;Window&#8221;->&#8221;Framework Setup Assistant&#8221;を選びます。セットアップウィザードが出てくるので、テストしたいプロジェクトを選択します。これで、必要な設定がすべて施されます。
</p>
<p>
自動で行われるのは、フレームワークの追加（SparkInspector.frameworkとlibz.dylib）と、コードの追加です。コードは、AppDelegate.m内に以下のように追加されます。#if DEBUGで区切られているのでプロダクト版に入ってしまう心配はありません。デバッグ中も常にonにしておくのではなく、必要なときだけonにしたければ、スキームでも追加すればよいでしょう。</p>
<pre class="brush: objc; highlight: [1,2,3,7,8,9,10]; title: ; notranslate">
#if DEBUG
#import &lt;SparkInspector/SparkInspector.h&gt;
#endif

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Enable the Spark Inspector
    #if DEBUG
    [SparkInspector enableObservation];
    #endif

    ...
</pre>
</p>
<p>
なお、まれにフレームワークの追加がうまくいかずにObjcのリンクエラーが出ることがあるようです（出ました）。私の場合は、フレームワーク自体はプロジェクトに追加されていたのですが、TargetのBuild Phasesにある&#8221;Link Binary With Libraries&#8221;への追加がうまくいっていませんでした。二つのフレームワークを手動で追加してあげることで、無事にビルドできました。
</p>
<h3>さいごに</h3>
<p>
ざっと使ってみただけですが色々と便利そうです。ただ、サポートフォーラムを見ても分かるように、まだバグもありそうな感じです。うまい具合に使って、余計なところではまることのないように注意したいですね。
</p>
<p>
30日間は無料で試せるのでまずはダウンロードしてみてはいかがでしょうか。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2013/05/spark-inspector.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[紹介] Objective-C警告タイプのまとめ</title>
		<link>http://blog.natsuapps.com/2013/05/warning-types.html</link>
		<comments>http://blog.natsuapps.com/2013/05/warning-types.html#comments</comments>
		<pubDate>Sat, 11 May 2013 03:40:50 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1025</guid>
		<description><![CDATA[アプリ開発時に最も苦労するのは何でしょう。多くの人がバグ取りとテストに時間を取られているのではないでしょうか。本来であれば、多くの時間はバグ取りではなく設計に費やしたいところです。 そこで役立つのがコンパイル時の警告。た <a href='http://blog.natsuapps.com/2013/05/warning-types.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
アプリ開発時に最も苦労するのは何でしょう。多くの人がバグ取りとテストに時間を取られているのではないでしょうか。本来であれば、多くの時間はバグ取りではなく設計に費やしたいところです。
</p>
<p>
そこで役立つのがコンパイル時の警告。たかが警告、されど警告。あなどれません。ここには非常に多くのヒントが隠されています。私自身、常に警告はゼロにしていますが、コンパイルオプションを変えるとまだまだほかの警告が出てきます。
</p>
<p>
この警告レベルについて、非常に分かりやすくまとめられている記事がありました。
</p>
<p>
<a href="http://oleb.net/blog/2013/04/compiler-warnings-for-objective-c-developers/" target="_blank">Compiler Warnings for Objective-C Developers &#8211; Ole Begemann</a>
</p>
<div class="browser-shot"><a href="http://oleb.net/blog/2013/04/compiler-warnings-for-objective-c-developers/" target="_blank"><img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Foleb.net%2Fblog%2F2013%2F04%2Fcompiler-warnings-for-objective-c-developers%2F?w=300" alt="http://oleb.net/blog/2013/04/compiler-warnings-for-objective-c-developers/" width="300" class="alignnone" /></a></div>
<p>
以下、概要のみまとめます。
</p>
<h3>3つの警告レベルオプション</h3>
<p>
Xcodeのプロジェクトにてデフォルトで有効になっている警告はごく一部です。これは、プロジェクトのBuild Settingsにある&#8221;Apple LLVM Compiler 4.2 Warnings &#8211; Objective C&#8221;を参照すればわかります。ここで、一つずつ設定をOn/Offしてもいいですが、もっと便利なのがコンパイルオプションを使うことです。
</p>
<p>
コンパイルオプションで警告レベルを変更するためには、Other C Flagsに&#8221;-W…&#8221;の設定を追加します（詳細は元記事参照）。
</p>
<p>
警告レベルを示すコンパイルオプション（&#8221;-W…&#8221;で指定）には、以下の3通りがあります。</p>
<ul>
<li>-Wall</li>
<li>-Wextra</li>
<li>-Weverything</li>
</ul>
<p>
ここで注意したいのが、-Wallは全ての警告を表示するわけではないということです。-Wallが対象としているのは、主な警告のうち誤指摘（警告内容が無視して問題ないもの）になりにくいもののセットのようです。例えば、符号あり／なしの値を比較した場合に表示される警告&#8221;-Wsign-compare&#8221;は（これは無視しても問題がない場合がほとんど）、-Wallのセットではなく、-Wextraのセットに含まれとのことです。
</p>
<h3>どのセットを使うか？</h3>
<p>
では、まずはどの警告セットを有効にするべきなのでしょうか。本記事の中では、&#8221;-Wall&#8221;と&#8221;-Wextra&#8221;を用いることを推奨しています。既存プロジェクトは別として、新規プロジェクトでは確かにこのくらいから初めてもいいのかもしれません。
</p>
<p>
開発を進めていくにあたり、この警告は無視して問題ないと判断した場合、#pragmaを使って除外することが可能です。
</p>
<p><pre class="brush: objc; title: ; notranslate">
#pragma clang diagnostic push
#pragma clang diagnostic ignored &quot;-Wsign-compare&quot;
#pragma clang diagnostic pop
</pre>
</p>
<p>
なお、それぞれの警告がどのような名前を持つかは、Xcodeのビルドログを見ると分かります。[-W…]と書かれているものが警告名になります（詳細は元記事参照）。
</p>
<p>
開発に慣れていない初心者の方こそ、警告レベルをあげておくとよいのではないでしょうか。デバッグ作業は理論ではなく、「経験」と「勘」が大きな役割を果たします。そのため、経験が浅ければ浅いほど難しくなってくるでしょう。バグ取りではなく、バグを入れないことに注力した方が作業がスムーズに進むはずです。google先生に聞く前に、警告レベルをあげてみてはいかがでしょうか。
</p>
<h3>関連サイト</h3>
<p>
<a href="http://clang.llvm.org/docs/UsersManual.html" target="_blank">Clang Compiler User&#8217;s Manual &#8211; Clang 3.4 documentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2013/05/warning-types.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneアプリ開発エキスパートガイド iOS 6対応：執筆いたしました</title>
		<link>http://blog.natsuapps.com/2013/03/ios6-book.html</link>
		<comments>http://blog.natsuapps.com/2013/03/ios6-book.html#comments</comments>
		<pubDate>Mon, 25 Mar 2013 00:19:29 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Collection View]]></category>
		<category><![CDATA[iOS6]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1023</guid>
		<description><![CDATA[iOS 6の新機能を解説する「iPhoneアプリ開発エキスパートガイド iOS 6対応」の執筆を一部担当させていただきました。本書は、既刊 &#8220;iOS 5 プログラミングブック&#8221;と同じ執筆陣で書き上 <a href='http://blog.natsuapps.com/2013/03/ios6-book.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>iOS 6の新機能を解説する「iPhoneアプリ開発エキスパートガイド iOS 6対応」の執筆を一部担当させていただきました。本書は、既刊 &#8220;iOS 5 プログラミングブック&#8221;と同じ執筆陣で書き上げました。</p>
<p>内容は、前回と同様に中上級者向けとなっております。アプリは作れるけれど何か物足りない、一歩前進したい、そんな風に思っている開発者の方々にぜひ読んでいただきたい一冊です。</p>
<h3>目次</h3>
<p>Chapter 01　iOS 6の新機能<br />
Chapter 02　UI Kitエッセンシャル<br />
Chapter 03　Collection View実践<br />
Chapter 04　Storyboardと状態保存<br />
Chapter 05　Auto Layout詳解<br />
Chapter 06　Passbook入門<br />
Chapter 07　AVFoudation活用<br />
Chapter 08　Bluetooth Smart実践<br />
Chapter 09　iAd組み込みガイド<br />
Chapter 10　プライバシー保護<br />
Chapter 11　モダンObjective-C
</p>
<p>詳細は、<a href="http://direct.ips.co.jp/book/Template/Goods/go_BookstempGR.cfm?GM_ID=3385&#038;SPM_ID=1&#038;CM_ID=004000G90&#038;PM_No&#038;PM_Class&#038;HN_NO=00400#mokuji" target="_blank">インプレスジャパンのサイト</a>に詳しく載っているのでこちらを参照してください（下にある「もっと詳しい内容をみる」をクリックすると詳細な目次が表示されます）。</p>
<h3>第3章 Collection View実践</h3>
<p>
この中で私は、「第3章 Collection View実践」を執筆いたしました。発売までまだ少しありますが、一足先にコレクションビューの内容を少しだけご紹介いたします。
</p>
<h4>チュートリアル形式</h4>
<p>
iOS 6で追加された機能の中で、コレクションビューの存在は大きいのではないでしょうか。コレクションビューを使うと、かなり少ないコードで簡単に見栄えのよいUIを実現できてしまいます。
</p>
<p>
そんなコレクションビューですが、クラスの関係が複雑であることと機能が多いために、どこから手を付けてよいのかよく分からないという問題に遭遇しがちだと思います。そのため本書では、チュートリアル形式で基本機能から応用機能までを一つずつ習得していけるようにしました。
</p>
<h4>実用的な題材</h4>
<p>
サンプル作成を楽しんでいただけるように、より実用的な題材として「写真」を選びました。作成するサンプルアプリでは、「写真」アプリから読み込んだ写真を、縦横、またはiPadの「写真」アプリのようにスタック状に配置します。
</p>
<p>
サンプルアプリを作成しながら新しいアプリのアイデアが浮かんでくるような、そんなチュートリアルを目指しました。
</p>
<h4>解説と実践</h4>
<p>
チュートリアル形式というと、何となくサンプルを作成して終わりにならないかが心配かもしれませんが、そうならないよう章立てを工夫してあります。
</p>
<p>
3-1では、主に関連するクラスを解説し、それぞれのクラスがどのような役割を担っているかを説明しています。全貌が見えたところで3-2の実践へと進みます。3-2では、すでに用意されているレイアウト Flow Layoutを用いて簡単なテーブルを作成していきます。
</p>
<p>
「簡単なテーブル」と言っても、コレクションビューは機能満載です。ここでは、</p>
<ul>
<li>写真を縦横に配置</li>
<li>ヘッダーの追加</li>
<li>セルの選択</li>
<li>編集（コピー、ペースト、カット）メニューの表示と実行</li>
<li>削除</li>
</ul>
<p>を順に実装していきます。実装しながら、注意点やここでは利用しなかったメソッドについて解説します。
</p>
<p>
簡単なテーブルが完成したら、次はいよいよレイアウトのカスタマイズです（これこそがコレクションビューの醍醐味！）。まず、3-3でレイアウトのカスタマイズとは何かを解説します。カスタマイズの目的とその方法を一通り眺めたら、3-4で実際にレイアウトをカスタマイズしていきます。
</p>
<p>
レイアウトのカスタマイズと一言で言っても、やりたいことに応じてとるべき手段がいく通りかあります。最短経路で目的を達成できるよう、カスタマイズの方法を一つずつ紹介していきます。
</p>
<p>
簡単なレイアウトのカスタマイズから、完全に独自のレイアウト作成まで、幅広く取り扱っています。いずれも、3-2で作成したサンプルアプリを改良していく形で進めていきますので、カスタマイズ前と後でどのように変化していくかが（コードも結果も）理解しやすいのではないかと思います。
</p>
<p>
多くの方に読んでいただけるよう、心をこめて書きました。コレクションビュー習得のお役に立てれば幸いです。
</p>
<h3>その他の章</h3>
<p>
他の執筆者の方のブログです。こちらも合わせてご参照ください。</p>
<p>Unwind/カスタム Segue, UI State Preservation:<br />
<a href="http://sonson.jp/?p=2584" target="_blank">iOS6の本を書きました | sonson@Picture&#038;Software</a></p>
<p>UIRefreshControl, iAd組み込みガイド, プライバシー:<br />
<a href="http://www.zero4racer.com/blog/1050" target="_blank">「iPhoneアプリ開発エキスパートガイド iOS 6対応」を執筆しました | Zero4Racer PRO Developer&#8217;s Blog</a></p>
<p>全体の紹介:<br />
<a href="http://katokichisoft.tumblr.com/post/45903424094/iphone-ios-6#_=_" target="_blank">書籍「iPhoneアプリ開発 エキスパートガイド iOS 6対応」を執筆しました | Katokichisoft</a>
</p>
<p>
発売は4月4日。Amazonで予約が開始されています。
</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333852/natsunhappy-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/517DK%2B-12oL._SL160_.jpg" alt="iPhoneアプリ開発エキスパートガイド iOS 6対応" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333852/natsunhappy-22/ref=nosim/" name="amazletlink" target="_blank">iPhoneアプリ開発エキスパートガイド iOS 6対応</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.03.25</div>
</div>
<div class="amazlet-detail">加藤 寛人 藤川 宏之 高丘 知央 西方 夏子 吉田 悠一 関川 雄介 <br />インプレスジャパン <br />売り上げランキング: 4,856</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333852/natsunhappy-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p></p>
<p>
かなり久々のブログ更新が宣伝になってしまい恐縮ですが、非常に内容の濃い本に仕上がっていると思います。ぜひお手に取ってみてください。
</p>
<p>
最後にこの場を借りてひとこと。昨年後半より、育児、日本への引っ越しや、体調を崩したりとプライベートに色々なことが押し寄せてきて開発業もブログ更新もやや滞っておりましたが、これからまた徐々にペースを戻していきたいと思っています。今後とも、どうぞよろしくお願いいたします。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2013/03/ios6-book.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iOS6] Collection View 基本的な使い方</title>
		<link>http://blog.natsuapps.com/2012/09/ios6-collection-view-basic.html</link>
		<comments>http://blog.natsuapps.com/2012/09/ios6-collection-view-basic.html#comments</comments>
		<pubDate>Thu, 20 Sep 2012 12:48:34 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Collection View]]></category>
		<category><![CDATA[iOS6]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1022</guid>
		<description><![CDATA[ついにiOS 6がリリースされましたね。iOS 6では、また数多くの機能が追加されました。ユーザー目線での新機能もさることながら、個人的には開発者にとって嬉しい新機能 Collection View に注目しています。  <a href='http://blog.natsuapps.com/2012/09/ios6-collection-view-basic.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
ついにiOS 6がリリースされましたね。iOS 6では、また数多くの機能が追加されました。ユーザー目線での新機能もさることながら、個人的には開発者にとって嬉しい新機能 <b>Collection View</b> に注目しています。
</p>
<h3>Collection Viewとは</h3>
<p>
Collection Viewとは、一言で言えば縦横方向にセルを並べることができるTable Viewのようなものです。UICollectionViewControllerを用いて画面を作成し、セルの中身は、UITableViewControllerと同様にDataSourceを使って指定します。
</p>
<p>
各セルのサイズは一定である必要はなく、また、セル間の最低間隔を指定しておくことで、レイアウトが自動で計算されキレイに配置されます。
</p>
<p>
かなり少ないコード量で、以下のスクリーンショットのようなUIを実現することが可能です。もちろん、デバイスの向きが変わればレイアウトも変わります（一行に表示するセルの数が変わる）。
</p>
<h4>iPhone スクリーンショット</h4>
<p>
<img src="http://blog.natsuapps.com/wp-content/uploads/CollectionView_iPhone_p.png" alt="CollectionView iPhone portrait" title="CollectionView_iPhone_p.png" border="0" width="169" height="300" style="float:left; margin:10px;" /></p>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/CollectionView_iPhone_l.png" alt="CollectionView iPhone landscape" title="CollectionView_iPhone_l.png" border="0" width="300" height="169" style="float:left; margin:10px;" /></p>
<p><br style="clear:both" /></p>
<h4>iPad スクリーンショット</h4>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/CollectionView_iPad_p.png" alt="CollectionView iPad portrait" title="CollectionView_iPad_p.png" border="0" width="240" height="320" style="float:left; margin:10px;" /></p>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/CollectionView_iPad_l.png" alt="CollectionView iPad landscape" title="CollectionView_iPad_l.png" border="0" width="320" height="240" style="float:left; margin:10px;" />
</p>
<p><br style="clear:both" /></p>
<p>
スクリーンショットを見て分かるように、デバイスの向きが変更されたときに一列に配置される写真の数が変わります。また、写真はそのとき適切な間隔をあけて配置されるというわけです。これは本当に便利。
</p>
<p>
さらにすごいことに、セルのレイアウトを自由自在に指定することもできるのです。これによって、例えばカバーフローのようなUIをごく少ないコード量で実現することも可能です。
</p>
<h3>サイズの設定</h3>
<p>
今回は、レイアウトのカスタマイズはせず、上のスクリーンショットのような画面を作成してみました。IBを使うと、記述しなくてはならないコードは本当に少なくて済みます。
</p>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/CollectionView_Size_setup.png" alt="CollectionView Size setup" title="CollectionView_Size_setup.png" border="0" width="384" height="400" style="float:left; margin-right:10px;"/><br />
まず、IBにてUICollectionViewのサイズ関連の設定を行います（iPhone用のnibファイルで説明しますが、iPadでも基本的に同様です）。スクロールの方向はデフォルトのまま縦スクロールとしました。
</p>
<p>
IBを用いると、各値の設定が簡単に行えます。各値がどのサイズを示しているかは、図中に示したとおりです。
</p>
<p><br style="clear:both" /></p>
<p>
各値は、それぞれ対応するUICollectionViewFlowLayoutのプロパティやUICollectionViewDelegateFlowLayoutのデリゲートメソッド（可変にする場合はこちらを利用）で設定することも可能です（表参照）。
</p>
<table border="1">
<tr>
<td></td>
<td>property</td>
<td>delegate</td>
</tr>
<td>Cell Size</td>
<td>itemSize</td>
<td>collectionView:layout:sizeForItemAtIndexPath:</td>
</tr>
</tr>
<td>Header Size</td>
<td>headerReferenceSize</td>
<td>collectionView:layout:referenceSizeForHeaderInSection:</td>
</tr>
</tr>
<td>Footer Size</td>
<td>footerReferenceSize</td>
<td>collectionView:layout:referenceSizeForFooter:inSection:</td>
</tr>
</tr>
<td>Min Spacing<br />(For Cells)</td>
<td>minimumInteritemSpacing</td>
<td>collectionView:layout:minimumInteritemSpacingForSectionAtIndex:</td>
</tr>
</tr>
<td>Min Spacing<br />(For Lines)</td>
<td>minimumLineSpacing</td>
<td>collectionView:layout:minimumLineSpacingForSectionAtIndex:</td>
</tr>
<tr>
<td>Section Insets</td>
<td>sectionInset</td>
<td>collectionView:layout:insetForSectionAtIndex:</td>
</tr>
</table>
<p></p>
<p>
なお、ヘッダー／フッターのサイズは、スクロール方向に応じて横幅（または高さ）が自動で調整されます。縦スクロールの場合、設定したヘッダー／フッターサイズのうち高さが利用され、横幅はセクション幅に等しくなります。逆に、横スクロールの場合は高さがセクションの高さに一致します。
</p>
<h3>セルの用意</h3>
<p>
次に、セルを作成します。ここでは、contentViewの上に一枚だけUIImageViewがあるようなセルを作成しました。セルの初期化はinitWithFrame:で行います。
</p>
<p><pre class="brush: objc; title: ; notranslate">
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.backgroundColor = [UIColor whiteColor];
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:
                                  CGRectMake(3, 3, frame.size.width - 6, frame.size.height - 6)];
                                // 枠をつけるためにimageViewのサイズを一回り小さくしておく
        
        // 可変サイズのセルに追従するようにautoresizingMaskを設定
        imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        
        [self.contentView addSubview:imageView];
        self.imageView = imageView;
    }
    return self;
}
</pre>
</p>
<p>
なお、セルは再利用されますので、セルサイズが可変の場合、サブビューのframeがセルサイズに合わせて変化するようにautoresizingMaskまたはAuto Layoutの設定をしておく必要があります。
</p>
<h3>ヘッダーの用意</h3>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/CollectionView_header.png" alt="CollectionView header" title="CollectionView_header.png" border="0" width="400" height="193" style="float:left; margin-right:10px;" /></p>
<p>
ヘッダーを用意します。今度はコードではなくIBで作成しました。背景にUIImageViewを用い、その上にタイトルを表示するためのUILabelを配置します。
</p>
<p>
上でも書いたように、縦スクロールの場合、ヘッダー（フッター）の横幅がセクション幅まで引き延ばされます。このとき、UIImageViewやUILabelが一緒に引き延ばされてしまわないよう、autoresizingMaskまたはAuto Layoutの設定を適切にしておきましょう。ここでは、Auto Layoutを使いました。
</p>
<p>
Tips: Auto Layoutを無効にしてautoresizingMaskを利用する場合、File inspectorにある&#8221;Interface Builder Document&#8221;の設定で&#8221;Use Autolayout&#8221;のチェックをはずします。
</p>
<h3>セル／ヘッダー／フッターの登録</h3>
<p>
Table Viewと同様に、Collection Viewでもセル等を再利用します。そのために、まずはセル／ヘッダー／フッターのクラスまたはnibを登録する必要があります。これは、UICollectionViewControllerのサブクラスで行います。
</p>
<p>
セルの登録は、以下のメソッドで行います。</p>
<pre class="brush: objc; title: ; notranslate">
- (void)registerClass:(Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier;
- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier;
</pre>
</p>
<p>
ヘッダー、フッターの登録は以下のメソッドで行います。</p>
<pre class="brush: objc; title: ; notranslate">
- (void)registerClass:(Class)viewClass forSupplementaryViewOfKind:(NSString *)elementKind withReuseIdentifier:(NSString *)identifier;
- (void)registerNib:(UINib *)nib forSupplementaryViewOfKind:(NSString *)kind withReuseIdentifier:(NSString *)identifier;
</pre>
<p>ここで、kindには、</p>
<pre class="brush: objc; title: ; notranslate">
UICollectionElementKindSectionHeader
UICollectionElementKindSectionFooter
</pre>
<p>のいずれかを指定します。
</p>
<p>
今回はセルはクラスを、ヘッダーはnibを指定します。</p>
<pre class="brush: objc; title: ; notranslate">
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // contentViewにcellのクラスを登録
    [self.collectionView registerClass:[CollectionCell class] forCellWithReuseIdentifier:@&amp;amp;quot;MY_CELL&amp;amp;quot;];
    
    // contentViewにheaderのnibを登録
    UINib *headerNib = [UINib nibWithNibName:@&amp;amp;quot;HeaderView&amp;amp;quot; bundle:nil];
    [self.collectionView registerNib:headerNib forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@&amp;amp;quot;MY_HEADER&amp;amp;quot;];
}
</pre>
</p>
<h3>データソース</h3>
<p>
まず、表示する写真とヘッダーのタイトルはそれぞれphotos, titlesプロパティに入っているものとします（photos, titlesはviewDidLoadで初期化しておきます）。
</p>
<p><pre class="brush: objc; title: ; notranslate">
@interface ViewController ()
@property (nonatomic, strong) NSArray *titles;
@property (nonatomic, strong) NSArray *photos;
@end
</pre>
</p>
<p>
いよいよデータソースの実装です。今回必要になるのは、</p>
<ul>
<li>アイテム数の指定（必須）</li>
<li>セルの生成（必須）</li>
<li>セクション数の指定</li>
<li>ヘッダーの生成</li>
</ul>
<p>の4つのメソッドです。
</p>
<h4>セクション数、アイテム数の指定</h4>
<p>
これはUITableViewDataSourceとそっくりです。
</p>
<p><pre class="brush: objc; title: ; notranslate">
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return [[self.photos objectAtIndex:section] count];
}
</pre>
<pre class="brush: objc; title: ; notranslate">
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return [self.photos count];
}
</pre>
</p>
<h4>セルの生成</h4>
<p>
セルはTable Viewと同様に再利用します。セルのクラスまたはnibがすでに登録されているため、dequeueReusableCellWithReuseIdentifier:forIndexPath:はnilを返すことはありません。再利用可能なセルがない場合は、登録したクラスのinitWithFrameを呼んで（nibを登録した場合はnibをロードして）新規に生成したセルを返してくれます。
</p>
<p><pre class="brush: objc; title: ; notranslate">
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    CollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@&amp;amp;quot;MY_CELL&amp;amp;quot; forIndexPath:indexPath];
    
    cell.imageView.image = [[self.photos objectAtIndex:indexPath.section] objectAtIndex:indexPath.item];
    return cell;
}
</pre>
</p>
<p>
なお、もし再利用可能なセルがある場合、cellはprepareForReuseが呼ばれたあとの状態となります。必要に応じて、セルのクラス（UICollectionViewCellのサブクラス）で、prepareForReuseをオーバーライドしておきましょう。
</p>
<h4>ヘッダーの生成</h4>
<p>
セルと同様にヘッダーも生成します。ビューはdequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:で取得します（再利用可能なビューがない場合は新規に生成されます）。このとき、elementKindには、UICollectionElementKindSectionHeader（ヘッダー）またはUICollectionElementKindSectionFooter（フッター）を指定します。
</p>
<p><pre class="brush: objc; title: ; notranslate">
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
  
    HeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@&amp;amp;quot;MY_HEADER&amp;amp;quot; forIndexPath:indexPath];
    
    headerView.label.text = [self.titles objectAtIndex:indexPath.section];
    return headerView;
}
</pre>
</p>
<h3>可変セルサイズに対応</h3>
<p>
ここまででほぼ実装は完了です。しかし、このままではセルサイズが固定のままです（IBで指定した50&#215;50のまま）。写真のサイズに応じてセルサイズを可変にしたいため、UICollectionViewDelegateFlowLayoutのメソッドを実装します。
</p>
<p><pre class="brush: objc; title: ; notranslate">
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    
    UIImage *image = [[self.photos objectAtIndex:indexPath.section] objectAtIndex:indexPath.item];
    return CGSizeMake(image.size.width / 2, image.size.height / 2);
}
</pre>
</p>
<p>
ここでは、便宜上、写真サイズの1/2をセルサイズにしていますが、特に意味はありません。好みのサイズに指定すればOKです。
</p>
<h3>まとめ</h3>
<p>
iOS 6から利用可能となったCollection Viewを使ってみました。基本的な使い方をするだけでも、かなりフレキシブルなUIが実現可能です。レイアウトをカスタマイズすれば凝ったUIも実現できます。いずれにせよ、コード量が少なくて済むところが魅力です。
</p>
<p>
質問、間違いの指摘などはツイッターでお願いします。<a href="http://twitter.com/natsun_happy/" target="_blank">@natsun_happy</a>
</p>
<h3>ソースコード</h3>
<p>
<a href="https://github.com/natsuko/CollectionViewSample" target="_blank">GitHub</a>
</p>
<h3>その他</h3>
<p>
サンプルで利用した写真は、<br />
<a href="http://www.futta.net" target="_blank">フリー写真素材 Futta.Net &#8211; 無料の風景フリー画像</a><br />
のものを利用しました。
</p>
<h3>参考資料</h3>
<ul>
<li><a href="https://developer.apple.com/videos/wwdc/2012/?id=205" target="_blank">WWDC 2012 session 205: Introducing Collection Views</a></li>
<li><a href="https://developer.apple.com/videos/wwdc/2012/?id=219" target="_blank">WWDC 2012 session 219: Advanced Collection Views and Building Custom Layouts</a></li>
<li><a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/Reference/Reference.html#//apple_ref/doc/uid/TP40012177" target="_blank">UICollectionView Class Reference</a> ほか</li>
</ul>
<p></p>
<p>「第3章 Collection View実践」としてより詳しい内容を書きました。チュートリアル形式で楽しめます。<br />
内容の紹介はこちら。<a href="http://blog.natsuapps.com/2013/03/ios6-book.html">iPhoneアプリ開発エキスパートガイド iOS 6対応：執筆いたしました</a></p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333852/natsunhappy-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/517DK%2B-12oL._SL160_.jpg" alt="iPhoneアプリ開発エキスパートガイド iOS 6対応" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333852/natsunhappy-22/ref=nosim/" name="amazletlink" target="_blank">iPhoneアプリ開発エキスパートガイド iOS 6対応</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 13.03.25</div>
</div>
<div class="amazlet-detail">加藤 寛人 藤川 宏之 高丘 知央 西方 夏子 吉田 悠一 関川 雄介 <br />インプレスジャパン <br />売り上げランキング: 4,856</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844333852/natsunhappy-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/09/ios6-collection-view-basic.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Xcode][Plug-in] UIColorの色をエディタ上で確認できるColorSenseがすごい！</title>
		<link>http://blog.natsuapps.com/2012/09/xcode-plug-in-colorsense.html</link>
		<comments>http://blog.natsuapps.com/2012/09/xcode-plug-in-colorsense.html#comments</comments>
		<pubDate>Mon, 17 Sep 2012 08:28:58 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Plug-in]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1015</guid>
		<description><![CDATA[先日ツイートもしましたが、あまりにも便利すぎるXcodeプラグインに出会ったのでこちらでもご紹介。 ColorSenseは、UIColorまたはNSColorで設定した色をエディタ上で確認したり、カラーピッカーを利用して <a href='http://blog.natsuapps.com/2012/09/xcode-plug-in-colorsense.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
先日ツイートもしましたが、あまりにも便利すぎるXcodeプラグインに出会ったのでこちらでもご紹介。
</p>
<p>
ColorSenseは、UIColorまたはNSColorで設定した色をエディタ上で確認したり、カラーピッカーを利用して直接編集することができるXcodeプラグインです。作者は、AppSales-Mobile(<a href="https://github.com/omz/AppSales-Mobile" target="_blank">github</a>)やNewsRack(<a href="http://click.linksynergy.com/fs-bin/click?id=k07A2kNgvpc&#038;subid=&#038;offerid=94348.1&#038;type=10&#038;tmpid=3910&#038;RD_PARM1=http%3A%2F%2Fitunes.apple.com%2Fapp%2Fnewsrack%2Fid288815275%3Fmt%3D8">AppStore</a>)などで有名なOmz氏です。信頼できて安心ですね。
</p>
<p>
このプラグインを入れると、例えば、[UIColor colorWithRed:green:blue:alpha]のメソッド上にカーソルを持ってきたときに、右上にその色が表示されます。</p>
<p><img src="http://blog.natsuapps.com/wp-content/uploads/ColorSense.png" alt="Xcode plug-in ColorSense" title="ColorSense.png" border="0" width="434" height="55" style="float:left;" /></p>
<p><br style="clear:both" /></p>
<p>
さらに、この色表示の部分をクリックするとカラーピッカーが出てきて、その場で色を変更できます。カラーピッカーで選んだ色が自動でコードに入っていくのです。これが本当に便利。
</p>
<p>
百聞は一見に如かず。まずはデモビデオを見てみてください。
</p>
<p>
<iframe width="640" height="390" src="http://www.youtube.com/embed/eblRfDQM0Go" frameborder="0" allowfullscreen></iframe>
</p>
<p>
インストールは簡単。<a href="https://github.com/omz/Colorsense-for-Xcode" target="_blank">github</a>からXcodeのプロジェクトごとダウンロードしてきて一度ビルドするだけです。ビルド後、プラグインは、</p>
<p>~/Library/Application Support/Developer/Shared/Xcode/Plug-ins</p>
<p>にインストールされます。アンインストールしたいときは、このフォルダから該当プラグインを削除します。
</p>
<p>
現時点では、RGB(colorWithRed:green:blue:alpha)、グレイスケール(colorWithWhite:alpha:)と色の名前を指定するメソッド(redColorなど)にのみ対応しているようです。また、値には直接数字を入力する必要があり、引数が変数になっている場合は未対応のようです（私にとっては全く問題なし）。
</p>
<p>
私はこれまで、ColorChooser(<a href="http://click.linksynergy.com/fs-bin/click?id=k07A2kNgvpc&#038;subid=&#038;offerid=94348.1&#038;type=10&#038;tmpid=3910&#038;RD_PARM1=http%3A%2F%2Fitunes.apple.com%2Fapp%2Fcolorchooser%2Fid445279824%3Fmt%3D12">MacAppStore</a>)というツールを使っていました。これは、カラーピッカーで選択した色をUIColorやNSColorのコードに変換してくれるものです。これはこれで便利だったのですが、一度コードに埋め込んだあと、手を加えたくなったときに面倒でした。今後、このColorSenseが手放せなくなりそうです。
</p>
<h4>関連リンク</h4>
<ul>
<li><a href="https://github.com/omz/Colorsense-for-Xcode" target="_blank">ColorSense: GitHub</a></li>
<li><a href="http://mobiledevelopertips.com/open-source/ios-open-source-xcode-plugin-colorsense.html" target="_blank">iOS Open Source : Xcode Plug-in ColorSense &#8211; [mobile developer:tips];</a></li>
</ul>
<p><div class='iTunesLinker-box' style='text-align:left;padding-bottom:20px;font-size:small;/zoom: 1;overflow: hidden;'>
<div class='iTunesLinker-list' style='clear: both;'>
<div class='iTunesLinker-image' style='float:left;margin:0px 12px 5px 0px;'><a href='http://click.linksynergy.com/fs-bin/stat?id=k07A2kNgvpc&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fcolorchooser%252Fid445279824%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30' target='_blank' rel='nofollow'><img src='http://a5.mzstatic.com/us/r1000/077/Purple/v4/4b/d2/80/4bd28077-556a-d9aa-ec6d-15245273b8b7/ColorChooser.100x100-75.png' width='100' style='border: none;' /></a></div>
<div class='iTunesLinker-info' style='margin-bottom: 10px'>
<div class='iTunesLinker-name' style='margin-bottom:1px;line-height:120%'><a href='http://click.linksynergy.com/fs-bin/stat?id=k07A2kNgvpc&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fcolorchooser%252Fid445279824%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30' rel='nofollow' target='_blank'>ColorChooser</a></div>
<div class='iTunesLinker-detail'>Pairote Leelaphattarakij<br />ジャンル:Developer Tools<br />価格:350円<a href='http://click.linksynergy.com/fs-bin/stat?id=k07A2kNgvpc&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fcolorchooser%252Fid445279824%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30' rel='nofollow' target='_blank'><img src='http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_appstore-sm.gif'></a></div>
<div style='font-size:80%;margin-top:5px;line-height:120%'>posted with <a href='http://ituneslinker.biz/' title='iTunes/iPhoneアプリランキングリンク作成ツール' target='_blank'>iTunesLinker</a> at 12.09.16</div>
</div>
</div>
</div>
<p><div class='iTunesLinker-box' style='text-align:left;padding-bottom:20px;font-size:small;/zoom: 1;overflow: hidden;'>
<div class='iTunesLinker-list' style='clear: both;'>
<div class='iTunesLinker-image' style='float:left;margin:0px 12px 5px 0px;'><a href='http://click.linksynergy.com/fs-bin/stat?id=k07A2kNgvpc&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fnewsrack%252Fid288815275%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30' target='_blank' rel='nofollow'><img src='http://a2.mzstatic.com/us/r1000/107/Purple/v4/fd/53/05/fd5305b5-ce55-dff5-4df2-aca8442700d3/mzl.zuwefmmw.png' width='100' style='border: none;' /></a></div>
<div class='iTunesLinker-info' style='margin-bottom: 10px'>
<div class='iTunesLinker-name' style='margin-bottom:1px;line-height:120%'><a href='http://click.linksynergy.com/fs-bin/stat?id=k07A2kNgvpc&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fnewsrack%252Fid288815275%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30' rel='nofollow' target='_blank'>NewsRack</a></div>
<div class='iTunesLinker-detail'>omz:software<br />ジャンル:ニュース<br />価格:450円<a href='http://click.linksynergy.com/fs-bin/stat?id=k07A2kNgvpc&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fnewsrack%252Fid288815275%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30' rel='nofollow' target='_blank'><img src='http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_appstore-sm.gif'></a></div>
<div style='font-size:80%;margin-top:5px;line-height:120%'>posted with <a href='http://ituneslinker.biz/' title='iTunes/iPhoneアプリランキングリンク作成ツール' target='_blank'>iTunesLinker</a> at 12.09.16</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/09/xcode-plug-in-colorsense.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Xcode][Modern Objectice-C] NSNumberリテラルとBoxed Expression Literals</title>
		<link>http://blog.natsuapps.com/2012/08/nsnumber-literals.html</link>
		<comments>http://blog.natsuapps.com/2012/08/nsnumber-literals.html#comments</comments>
		<pubDate>Wed, 22 Aug 2012 12:00:44 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Modern Objective-C]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1013</guid>
		<description><![CDATA[Xcode 4.4 (+ LLVM 4.0)からNSNumberリテラルが利用可能となりました（Modern Objective-C）。かなり便利でコード量も減らせます。 NSNumberリテラルによるオブジェクトの生成 <a href='http://blog.natsuapps.com/2012/08/nsnumber-literals.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
Xcode 4.4 (+ LLVM 4.0)からNSNumberリテラルが利用可能となりました（Modern Objective-C）。かなり便利でコード量も減らせます。
</p>
<h3>NSNumberリテラルによるオブジェクトの生成</h3>
<p>
まずは、オブジェクトの生成から。これまで、numberWithXxxまたはinitWithXxxを利用して生成していましたが、これからはNSNumberリテラルを利用して簡潔に書くことが可能です。NSNumberリテラルは、文字列リテラルと同様に@を使って表現します。
</p>
<p>
メソッドによる生成（従来の方法）</p>
<pre class="brush: objc; title: ; notranslate">
NSNumber *value;
value = [NSNumber numberWithChar:'X'];
value = [NSNumber numberWithInt:12345];
value = [NSNumber numberWithUnsignedLong:12345ul];
value = [NSNumber numberWithLongLong:12345ll];
value = [NSNumber numberWithFloat:123.45f];
value = [NSNumber numberWithDouble:123.45];
value = [NSNumber numberWithBool:YES];
</pre>
<p>NSNumberリテラルによる生成</p>
<pre class="brush: objc; title: ; notranslate">
NSNumber *value;
value = @'X';
value = @12345;
value = @12345ul;
value = @12345ll;
value = @123.45f;
value = @123.45;
value = @YES; // --- (注) または value = @(YES);
</pre>
</p>
<p>
(注) BOOL値を表現する際には、objx/objc.hの内容によってはBoxed Expression Literalsを利用する必要があります（詳細は以下）。
</p>
<h3>Boxed Expression Literals</h3>
<p>
@の後ろに()を付けることで変数や式を入れることも可能です（Boxed Expression Literals）。これにより、例えば以下のような表現も可能となります。
</p>
<p>
メソッドによる生成</p>
<pre class="brush: objc; title: ; notranslate">
NSNumber *value = [NSNumber numberWithInt:num];
NSNumber *percent = [NSNumber numberWithDouble:ratio * 100.0];
NSNumber *portrait = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
</pre>
<p>NSNumberリテラルによる生成</p>
<pre class="brush: objc; title: ; notranslate">
NSNumber *value = @(num);
NSNumber *percent = @(ratio * 100.0);
NSNumber *portrait = @(UIInterfaceOrientationPortrait);
</pre>
</p>
<h3>BOOL型の生成</h3>
<p>
オブジェクトをBOOL値から生成する場合、objc/objc.hの内容によってはBoxed Expression Literalsを利用する必要があります。これは、YES, NOの定義に依存します。iOS 5.1 SDK, MAC OSX 10.7 SDKでは、YES, NOの定義は以下のようになっています。</p>
<pre class="brush: objc; title: ; notranslate">
#define YES             (BOOL)1
#define NO              (BOOL)0
</pre>
<p>したがって、Boxed Expression Literalsを利用しないと、</p>
<pre class="brush: objc; title: ; notranslate">
value = @(BOOL)1;
</pre>
<p>となってしまい、コンパイラエラーとなります。一方で、Mac OS 10.8 SDKでは以下のような定義になっています。</p>
<pre class="brush: objc; title: ; notranslate">
#define YES             ((BOOL)1)
#define NO              ((BOOL)0)
</pre>
<p>そのため、value = @YES; というような書き方が可能となるわけです。まとめると、BOOL値からオブジェクトを生成する際には、以下のような使い分けが必要です（Xcode4.4.1現在）。</p>
<pre class="brush: objc; title: ; notranslate">
// iOS SDK 5.1, MAC OSX 10.7 SDK
value = @(YES);

// MAC OSX 10.8 SDK
value = @YES;
</pre>
</p>
<h3>まとめ</h3>
<p>
NSNumberリテラル、Boxed Expression Literalsを利用することで、NSNumber型オブジェクトの生成を簡潔に書くことができるようになります。ただし、BOOL値からの生成のように、マクロの定義によっては単純に@表記を利用しただけではエラーになることがあります。そのときは、必要に応じてBoxed Expression Literalsを使いましょう。
</p>
<p>
質問や間違い等の指摘はツイッターでお願いします。<a href="http://twitter.com/natsun_happy/" target="_blank">@natsun_happy</a>
</p>
<h3>参考資料</h3>
<ul>
<li><a href="http://clang.llvm.org/docs/ObjectiveCLiterals.html" target="_blank">Objective-C Literals</a></li>
<li><a href="http://mobiledevelopertips.com/objective-c/nsnumber-literals-in-objective-c.html" target="_blank">NSNumber Literals in Objective-C &#8211; [mobile developer:tips];</a></li>
<li>WWDC Session 405: Modern Objective-C</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/08/nsnumber-literals.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Tips][Storyboard] ダブルクリックで拡大率を変更</title>
		<link>http://blog.natsuapps.com/2012/06/tips-storyboard-zoom.html</link>
		<comments>http://blog.natsuapps.com/2012/06/tips-storyboard-zoom.html#comments</comments>
		<pubDate>Tue, 05 Jun 2012 08:30:00 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[Storyboard]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[Xcode4]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1012</guid>
		<description><![CDATA[Storyboardを使用している場合のちょっとしたTipsです。 Storyboardはとても便利なのですが、画面数が増えてくると、どこにどの画面があるのか探すのが大変ですよね。 そんなとき便利なのがダブルクリック。S <a href='http://blog.natsuapps.com/2012/06/tips-storyboard-zoom.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
Storyboardを使用している場合のちょっとしたTipsです。
</p>
<p>
Storyboardはとても便利なのですが、画面数が増えてくると、どこにどの画面があるのか探すのが大変ですよね。
</p>
<p>
そんなとき便利なのがダブルクリック。Storyboardエディタ上のどこでもいいのでダブルクリックしてみてください。拡大率が変更されます。
</p>
<p>
縮小された状態で再びダブルクリックすると、100%表示に戻ります。
</p>
<p>
ダブルクリックで縮小する際に、拡大率を何パーセントにしたいかは、あらかじめその拡大率にしてからダブルクリックすることで確定できます。文章だと分かりにくいので、以下に手順の例を示します。
</p>
<ol>
<li>手動で拡大率を25%に設定（Xcodeメニューの&#8221;Editor->Canvas->Zoom->Zoom to 25%&#8221;を選択。または、Storyboardエディタ右下に表示される拡大縮小ボタンで調整）。</li>
<li>エディタ上をダブルクリック→【拡大率100%】</li>
<li>エディタ上をダブルクリック→【拡大率25%】</li>
<li>エディタ上をダブルクリック→【拡大率100%】</li>
<li>以降、繰り返し</li>
</ol>
<p>手順1で、拡大率を12.5%にしておくと、ダブルクリックするたびに12.5%と100%を行ったり来たりします。
</p>
<p>
画面数に応じて、ダブルクリック時に縮小される比率を決めておけば、Storyboardエディタ全体を眺めたいときにとても便利です。
</p>
<p>
もちろん、キーボードショートカットを使ってもいいのですが、Storyboardエディタで操作しているときは、手がマウスにあることが多いので、個人的にはダブルクリックの方が使いやすくてお気に入りです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/06/tips-storyboard-zoom.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ご報告</title>
		<link>http://blog.natsuapps.com/2012/05/0530.html</link>
		<comments>http://blog.natsuapps.com/2012/05/0530.html#comments</comments>
		<pubDate>Wed, 30 May 2012 15:24:01 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1011</guid>
		<description><![CDATA[私事ですが、この場を借りてご報告です。 2012年4月21日、第一子となる女の子を出産いたしました。 予定日より3週間も早い出産で、出産直後はかなりバタバタしましたが、今は新しい生活にも慣れ落ち着いてきたところです。 出 <a href='http://blog.natsuapps.com/2012/05/0530.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
私事ですが、この場を借りてご報告です。
</p>
<p>
2012年4月21日、第一子となる女の子を出産いたしました。
</p>
<p>
予定日より3週間も早い出産で、出産直後はかなりバタバタしましたが、今は新しい生活にも慣れ落ち着いてきたところです。
</p>
<p>
出産に伴い、既存アプリのサポートと、先日ご紹介した<a href="http://blog.natsuapps.com/2012/05/ios5-programming-book.html">iOS5プログラミングブックの執筆</a>作業以外は、開発を一時中断しておりました。今後、徐々に再開予定です。本ブログの更新も、少しずつ頻度を増やしていく予定です。
</p>
<p>
家族が増え、日々、感じることにも変化がありました。これからも、新しい気持ちでアプリ開発と向き合っていければと思っております。しばらくは、開発業と育児を両立していく予定です。今後ともよろしくお願いいたします。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/05/0530.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS5プログラミングブック：執筆いたしました</title>
		<link>http://blog.natsuapps.com/2012/05/ios5-programming-book.html</link>
		<comments>http://blog.natsuapps.com/2012/05/ios5-programming-book.html#comments</comments>
		<pubDate>Wed, 23 May 2012 14:30:41 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[iOS 開発]]></category>
		<category><![CDATA[ARC]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[iOS5]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1010</guid>
		<description><![CDATA[&#8220;iOS 4 プログラミングブック&#8221;の続編とも言える&#8221;iOS 5 プログラミングブック&#8221;が間もなく発売されます。今回、縁あって本書の一部を執筆させていただきましたので、簡単 <a href='http://blog.natsuapps.com/2012/05/ios5-programming-book.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p style="float:left; margin-right:10px;">
<a href="http://www.amazon.co.jp/gp/product/4844332228/ref=as_li_ss_il?ie=UTF8&#038;tag=natsunhappy-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=4844332228" target="_blank"><br />
<img style="float:left; margin-right:10px;" src="http://blog.natsuapps.com/wp-content/uploads/457315_3864665576725_1281078295_3620144_934550123_o.jpg" alt="iOS5 プログラミングブック 表紙" title="457315_3864665576725_1281078295_3620144_934550123_o.jpg" border="0" width="180" height="229" /><br />
</a>
</p>
<p>
&#8220;iOS 4 プログラミングブック&#8221;の続編とも言える&#8221;iOS 5 プログラミングブック&#8221;が間もなく発売されます。今回、縁あって本書の一部を執筆させていただきましたので、簡単ですがご紹介いたします。
</p>
<p>
iOS 5 プログラミングブックは、iOS 5で追加／強化された機能を中心にまとめた中上級者向けの書籍です。
</p>
<p>
本書を企画、プロデュースしてくださった@Seasonsさんが全体の紹介をしてくださっているので、こちらも合わせてご覧ください。<br />
<a href="http://d.hatena.ne.jp/Seasons/20120519/1337445357" target="_blank">上級プログラマー必読の書。iOS5プログラミングブックついに完成！！その目次を公開します。</a>
</p>
<p><br style="clear:both;" /></p>
<p>
まずは、目次から。</p>
<ol>
<li>iCloud</li>
<li>Storyboards</li>
<li>ARC</li>
<li>Core Image</li>
<li>Core Bluetooth</li>
<li>Twitter/Accountsフレームワーク</li>
<li>iOS 5のセキュリティ</li>
<li>UIKit</li>
<li>Misc</li>
</ol>
<p>iOS 5はかなり大きな進化だったため、すべては網羅できていませんが、ユーザーにとって重要な機能、また、開発者にとって有力なツールは押さえられていると思います。
</p>
<p>
私はこの中で、3章ARCと8章UIKitの前半にあたるコンテナビューコントローラについて執筆させていただきました。
</p>
<h3>3章 ARC</h3>
<p>
3章ARCでは、本ブログでも連載したARCの解説を、さらに分かりやすく詳細にまとめてあります。ARCを使うにあたって最低限知っておくべきことを、丁寧に解説したつもりです。
</p>
<p>
特に、ARC利用時に問題となりやすい循環参照に関しては、循環参照が起きる原理とその回避策を、サンプルコードと共に示してあります。実際に循環参照が起きている状態での、Leaksによるチェック結果なども掲載してあります。もちろん、Blockによる循環参照についても解説済みです。
</p>
<p>
また、混乱しがちな3種類のBridgeキャストについても、利用シーンとサンプルを通じて丁寧に解説いたしました。
</p>
<p>
なお、ダウンロード可能なサンプルプログラムとしては、ARC未対応、ARC対応の同一プロジェクトを公開予定です。サンプルプログラム内で、ARC対応時にケアする必要があるポイントにはコメントを入れてありますので、こちらも合わせて参考にしてみてください。
</p>
<p>
ARCの利用は、開発効率をかなりあげてくれるものだと思っています。ビューコントローラなどは単純にコード量がずいぶん減りますし、また全体を通してケアレスミスも減らせるでしょう。
</p>
<p>
こんなに便利なARCを使わない手はないです。基本を押さえるために、ぜひ本書を役立てていただければと思います。
</p>
<p>
さらに、ARCに関してより詳細まで理解したい方には、「<a href="http://www.amazon.co.jp/gp/product/4844331094/ref=as_li_ss_tl?ie=UTF8&#038;tag=natsunhappy-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=4844331094" target="_blank">エキスパートObjective-Cプログラミング</a>」がおすすめです。本書では、ARCを安全かつ正確に利用すべきために知っておくべきことを、簡潔にまとめてましたが、「エキスパートObjective-Cプログラミング」では、ARCの原理まで含め、より詳細な解説がなされております。
</p>
<h3>8章 UIKit: 8-1 コンテナビューコントローラ</h3>
<p>
8章UIKitは、前半がコンテナビューコントローラ、後半がUIAppearanceとなっています。私が執筆したのは、前半部分のコンテナビューコントローラです。
</p>
<p>
コンテナビューコントローラとは、複数のビューコントローラをまとめて管理する親ビューコントローラのようなものです。例えば、UITabBarControllerやUINavigationControllerもコンテナビューコントローラにあたります。
</p>
<p>
iOS 4までは、自前のコンテナビューコントローラを作成するのは非常に手間だったのですが、iOS 5からは開発者が簡単に自前のコンテナビューコントローラを作成できるようになりました。
</p>
<p>
これによる最大のメリットは、少ないコードの追加／修正で、UIをがらりと変更することができるようになったことでしょうか。
</p>
<p>
本書内では、チュートリアル的にサンプルアプリを作成することで、コンテナビューコントローラをどのように作り、使っていくのかを解説してあります。
</p>
<p>
サンプルアプリはあえてユニバーサルアプリとしました。最初にiPhone版のアプリを完成させてしまい、その後、各ビューコントローラとNIBファイルはすべて流用して、UIのみiPad用に拡張していきます。
</p>
<p>
実際に追加するファイルはコンテナビューコントローラひとつ。変更するファイルは起動時に呼ばれるAppDelegate.mのみ。これだけの変更で、簡単に全く異なるiPad用のUIを追加することができるのです。
</p>
<p>
サンプルアプリの作成を通じて、ぜひ、コンテナビューコントローラを使うことのメリットを感じ取っていただければと思います。
</p>
<p>
余談ですが、自作アプリ<a href="http://www.natsuapps.com/iloan_calc/" target="_blank">iLoan Calc</a>をユニバーサル対応する際に、自力でコンテナビューコントローラのようなものを実装しました。当時はまだSDK 4を使用していたため、本書で解説したように簡単な実装では済まず、それはそれは苦労したことを覚えています。SDK 5から、開発者が簡単にコンテナビューコントローラを作成できるようになったことで、ユニバーサル化に限らず、UIの変更、拡張が非常に容易になったことは間違いありません。経験者として保証します（笑）。
</p>
<h3>まとめ</h3>
<p>
iOS 6がもう目前かもしれませんが、iOS 5で追加になったこれらの機能がなくなるわけではありません。iOS 5で追加になった機能の多くは、近い将来、ユーザにとって当たり前の機能になるでしょう。そのため、私たち開発者は、これらの機能の実装方法を知っておく必要があります。常に最良のアプリを提供していくために、本書を役立てていただければ幸いです。
</p>
<p>
最後に、本の執筆は今回が初めてでしたが、他の執筆者をはじめ周りの方のサポートもあり、とても楽しく書かせていただくことができました。読者の皆様にも、楽しみながら読んでいただければ嬉しいです。6月8日発売予定です。ただいまAmazonで予約受付中です。
</p>
<div class="booklink-box" style="text-align:left;padding-bottom:20px;font-size:small;/zoom: 1;overflow: hidden;">
<div class="booklink-image" style="float:left;margin:0 15px 10px 0;"><a href="http://www.amazon.co.jp/exec/obidos/asin/4844332228/natsunhappy-22/" name="booklink" rel="nofollow" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51%2B51yqE5eL._SL160_.jpg" style="border: none;" /></a></div>
<div class="booklink-info" style="line-height:120%;/zoom: 1;overflow: hidden;">
<div class="booklink-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/asin/4844332228/natsunhappy-22/" rel="nofollow" name="booklink" target="_blank">iOS5プログラミングブック</a>
<div class="booklink-powered-date" style="font-size:8pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://yomereba.com" target="_blank">ヨメレバ</a></div>
</div>
<div class="booklink-detail" style="margin-bottom:5px;">加藤 寛人,吉田 悠一,藤川 宏之,西方 夏子,関川 雄介,高丘 知央 インプレスジャパン 2012-06-08    </div>
<div class="booklink-link2" style="margin-top:10px;">
<div class="shoplinkamazon" style="display:inline;margin-right:5px"><a href="http://www.amazon.co.jp/exec/obidos/asin/4844332228/natsunhappy-22/" rel="nofollow" target="_blank" title="アマゾン" >Amazon</a></div>
<div class="shoplinkrakuten" style="display:inline;margin-right:5px"><a href="http://hb.afl.rakuten.co.jp/hgc/0f989fad.5e2e6962.0f989fae.03a9be26/?pc=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F11707844%2F%3Fscid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2Fev%2Fbook%2F" rel="nofollow" target="_blank" title="楽天ブックス" >楽天ブックス</a></div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/05/ios5-programming-book.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Clock Tuto] まなびはあそび。とけいのよみかたゲームリリース</title>
		<link>http://blog.natsuapps.com/2012/03/clocktuto_released.html</link>
		<comments>http://blog.natsuapps.com/2012/03/clocktuto_released.html#comments</comments>
		<pubDate>Fri, 16 Mar 2012 08:20:12 +0000</pubDate>
		<dc:creator>Natsu</dc:creator>
				<category><![CDATA[アプリサポート]]></category>
		<category><![CDATA[Clock Tuto]]></category>

		<guid isPermaLink="false">http://blog.natsuapps.com/?p=1008</guid>
		<description><![CDATA[昨年から関わってきたiPad用教育ゲーム、「とけいのよみかたゲーム Clock Tuto」を無事にリリースすることができました。 企画は主に@mat_jpさんが、開発は私がメインで行っています。 とにかく、勉強していると <a href='http://blog.natsuapps.com/2012/03/clocktuto_released.html' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>
昨年から関わってきたiPad用教育ゲーム、「とけいのよみかたゲーム Clock Tuto」を無事にリリースすることができました。
</p>
<p>
企画は主に<a href="http://twitter.com/mat_jp/" target="_blank">@mat_jp</a>さんが、開発は私がメインで行っています。
</p>
<p>
とにかく、勉強しているということを意識せず、遊んでいるうちに色々なことが身に付くようなゲームを作りたくて、あれこれ試行錯誤しながら、今の形にたどり着きました。まだまだ至らないところはありますが、これからも少しずつ改善していく予定です。
</p>
<p>
Clock Tutoは、落ちものゲームの一種です。上から落ちてくる時計を適切な箱に入れることで、時計の読み方を習得していきます。
</p>
<p>
最初は、子供たちにとって身近な、食事時間と起床、就寝時間から始めます。その後、ちょうどの時間、30分、15分&#038;45分と少しずつ難しくなっていき、最後は、任意の時間が読めるようになるというものです。
</p>
<p>
段階を経て進めていくうちに、自然と時計の読み方が身に付くような仕組みを心がけました。
</p>
<p>
実際、何人かの子供たちにお願いしたユーザーテストを見ていても、徐々に時計の読み方に慣れていく様子が確認できました。
</p>
<p>
今後も、子供たちに喜んでもらえるようなアプリを出していきたいと思っています。
</p>
<p>
Clock Tutoはただいまリリース記念セール中（85円）。この機会にぜひ！
</p>
<p>
<img style="float:left; padding-right:10px;" src="http://blog.natsuapps.com/wp-content/uploads/512-512.png" alt="とけいのよみかたゲーム Clock Tuto" title="512-512.png" border="0" width="100" height="100" /></p>
<p>Clock Tuto サポートサイト: <a href="http://tutoapps.com/" target="_blank">http://tutoapps.com/</a><br />
Clock Tuto ツイッターアカウント: <a href="http://twitter.com/tutoapps_jp/" target="_blank">http://twitter.com/tutoapps_jp/</a><br />
<a href="http://itunes.apple.com/jp/app/tokeinoyomikatagemu-clock/id507822658?mt=8" target="_blank"><img src="http://blog.natsuapps.com/wp-content/uploads/App_Store_Badge_EN_white_small.png" alt="App Store Badge EN white small" title="App_Store_Badge_EN_white_small.png" border="0" width="150" height="52" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.natsuapps.com/2012/03/clocktuto_released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.natsuapps.com/feed ) in 1.51064 seconds, on May 20th, 2013 at 5:16 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 20th, 2013 at 6:16 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  blog.natsuapps.com/feed ) in 0.00074 seconds, on May 20th, 2013 at 5:26 am UTC. -->