<?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>Sooey &#187; cocoa</title>
	<atom:link href="http://old-journal.sooey.com/tag/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://old-journal.sooey.com</link>
	<description></description>
	<lastBuildDate>Fri, 04 Dec 2009 08:44:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bowtie&#8217;s PowerSearch</title>
		<link>http://old-journal.sooey.com/2008/12/28/892/</link>
		<comments>http://old-journal.sooey.com/2008/12/28/892/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 18:01:24 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/?p=892</guid>
		<description><![CDATA[PowerSearch: Only in Bowtie

BowtieというMac OS X用のイカしたiTunesコントローラがあって、テーマをHTMLベースで手軽に作ることができるため、まだベータ版にも関わらずThemeコミュニティが盛り上がっている。

このBowtieの持つ検索機能がかなり優秀で、手元の704アーティスト・9404曲というライブラリでも一瞬で検索が完了する。その性能に感動していたら、ちょうど開発者のブログに「世のiTunesコントローラはどれも検索機能がバギーで遅い。それは何故かというと…」というエントリがあったので、読んでみた次第。

まず、iTunesの持つ検索機能をそのまま使おうとすると、Apple Eventオブジェクトを投げてやりとりすることになるが、これはかなり遅い。検索リクエストのたびにiTunesと通信したりするとレスポンスがよろしくないので、アプリによってはあらかじめiTunesから情報を取得しておいて自前の検索処理を走らせるらしいのだが、それでも速度はともかくメモリ消費量は増えてしまう。

そこでBowtieでは、plist(iTunes Music Library.xml)とPredicateを使ったPowerSearchという仕組みを考案して使っている。Predicateは、CoreDataを使ったデータ構造に対するクエリ言語のようなもので（【コラム】ダイナミックObjective-C (116) デザインパターンをObjective-Cで &#8211; Interpreter (2)）、具体的には起動時もしくはiTunesライブラリの変更時にplistを内部表現に変換し、検索の際は独自に拡張したPredicateを使って結果を取得するようになる（他の方式に比べてメモリ消費がどうなのかは読み取れなかった）。

これにより、Bowtie内では以下のように曲のメタデータに対する検索が容易に行えるようになり、

(artist contains[cd] "u2") AND (name contains[cd] "where the stre")

ユーザーレベルでは、検索フォームに

@U2 + "where the stre"

と入力すればスムーズに絞り込み検索が行えるようになる。

スクリーンショットを見るとわかるように、アーティスト、アルバム、楽曲で異なるプレフィクスを指定するようになっているのもポイントで、これによって検索対象のフィールドを大幅に絞り込むことができ、とても高速なレスポンスが実現できている（もちろんプレフィクス無しで入力してもまともな速度で結果を返してくれる）。

CoreDataの設計にあらためて感動した。ちゃんとCocoaプログラミングしよう。

おまけ

ターミナルから以下のコマンドを実行してBowtieを再起動することで、検索ウィンドウの見栄えを変えることができる。

defaults write net.mattpat.Bowtie searchMode HUD
defaults write net.mattpat.Bowtie searchMode Aqua
]]></description>
			<content:encoded><![CDATA[<p class="cut">
<a href="http://www.flickr.com/photos/sooey/3140890803/" title="bowtie by junojp, on Flickr"><img src="http://farm4.static.flickr.com/3240/3140890803_c769e82b5e_o.png" width="408" height="279" alt="bowtie" /></a>
</p>

<p><a href="http://www.mattpat.net/2008/12/24/powersearch-only-in-bowtie/">PowerSearch: Only in Bowtie</a></p>

<p><a href="http://bowtieapp.com/">Bowtie</a>というMac OS X用のイカしたiTunesコントローラがあって、テーマをHTMLベースで手軽に作ることができるため、まだベータ版にも関わらずThemeコミュニティが盛り上がっている。</p>

<p>このBowtieの持つ検索機能がかなり優秀で、手元の704アーティスト・9404曲というライブラリでも一瞬で検索が完了する。その性能に感動していたら、ちょうど開発者のブログに「世のiTunesコントローラはどれも検索機能がバギーで遅い。それは何故かというと…」というエントリがあったので、読んでみた次第。</p>

<p>まず、iTunesの持つ検索機能をそのまま使おうとすると、Apple Eventオブジェクトを投げてやりとりすることになるが、これはかなり遅い。検索リクエストのたびにiTunesと通信したりするとレスポンスがよろしくないので、アプリによってはあらかじめiTunesから情報を取得しておいて自前の検索処理を走らせるらしいのだが、それでも速度はともかくメモリ消費量は増えてしまう。</p>

<p>そこでBowtieでは、plist(iTunes Music Library.xml)とPredicateを使ったPowerSearchという仕組みを考案して使っている。Predicateは、CoreDataを使ったデータ構造に対するクエリ言語のようなもので（<a href="http://journal.mycom.co.jp/column/objc/116/index.html">【コラム】ダイナミックObjective-C (116) デザインパターンをObjective-Cで &#8211; Interpreter (2)</a>）、具体的には起動時もしくはiTunesライブラリの変更時にplistを内部表現に変換し、検索の際は独自に拡張したPredicateを使って結果を取得するようになる（他の方式に比べてメモリ消費がどうなのかは読み取れなかった）。</p>

<p>これにより、Bowtie内では以下のように曲のメタデータに対する検索が容易に行えるようになり、</p>

<pre><code>(artist contains[cd] "u2") AND (name contains[cd] "where the stre")
</code></pre>

<p>ユーザーレベルでは、検索フォームに</p>

<pre><code>@U2 + "where the stre"
</code></pre>

<p>と入力すればスムーズに絞り込み検索が行えるようになる。</p>

<p class="cut">
<a href="http://www.flickr.com/photos/sooey/3140975339/" title="Bowtie's PowerSearch by junojp, on Flickr"><img src="http://farm4.static.flickr.com/3088/3140975339_8a6697c55d_o.png" width="479" height="436" alt="Bowtie's PowerSearch" /></a>
</p>

<p>スクリーンショットを見るとわかるように、アーティスト、アルバム、楽曲で異なるプレフィクスを指定するようになっているのもポイントで、これによって検索対象のフィールドを大幅に絞り込むことができ、とても高速なレスポンスが実現できている（もちろんプレフィクス無しで入力してもまともな速度で結果を返してくれる）。</p>

<p>CoreDataの設計にあらためて感動した。ちゃんとCocoaプログラミングしよう。</p>

<h3>おまけ</h3>

<p>ターミナルから以下のコマンドを実行してBowtieを再起動することで、検索ウィンドウの見栄えを変えることができる。</p>

<pre><code>defaults write net.mattpat.Bowtie searchMode HUD
defaults write net.mattpat.Bowtie searchMode Aqua
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2008/12/28/892/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript debugger Drosera</title>
		<link>http://old-journal.sooey.com/2006/06/29/105/</link>
		<comments>http://old-journal.sooey.com/2006/06/29/105/#comments</comments>
		<pubDate>Thu, 29 Jun 2006 03:42:42 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/2006/06/29/105/</guid>
		<description><![CDATA[Introducing Drosera。WebKitベースのJavaScriptデバッガがWebKitのソースツリーに入りました。HTML+JavaScriptで書かれた部分が9割以上を占めているようです。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://webkit.opendarwin.org/blog/?p=61">Introducing Drosera</a>。WebKitベースのJavaScriptデバッガがWebKitのソースツリーに入りました。HTML+JavaScriptで書かれた部分が9割以上を占めているようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2006/06/29/105/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高橋メソッドプレゼンツール TMPresents.app</title>
		<link>http://old-journal.sooey.com/2005/11/05/21/</link>
		<comments>http://old-journal.sooey.com/2005/11/05/21/#comments</comments>
		<pubDate>Sat, 05 Nov 2005 09:24:33 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/2005/11/05/21/</guid>
		<description><![CDATA[RubyCocoa で書かれた高橋メソッドによるプレゼンツール TMPresents.app 0.2 がリリースされました。
]]></description>
			<content:encoded><![CDATA[<p><a class="img" href="http://www.flickr.com/photos/sooey/211549213/" title="Photo Sharing"><img src="http://static.flickr.com/88/211549213_b4c30e1bfe_t.jpg" width="100" height="79" alt="TMPresents.app" /></a></p>

<p>RubyCocoa で書かれた高橋メソッドによるプレゼンツール <a href="http://homepage3.nifty.com/kimuraw/proj/tmpresents.html">TMPresents.app 0.2</a> がリリースされました。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2005/11/05/21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QuickLite 1.5 Beta</title>
		<link>http://old-journal.sooey.com/2004/09/01/347/</link>
		<comments>http://old-journal.sooey.com/2004/09/01/347/#comments</comments>
		<pubDate>Wed, 01 Sep 2004 02:53:22 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/2004/09/01/347/</guid>
		<description><![CDATA[SQLiteをCocoaでラップしてMac OS X(Objective-C)から容易に利用できるようにしたライブラリQuickLiteがリリースされました。ライセンスは独自のもののようですが、そんなにヘンな条件は付いていないので扱いやすいのではないかと思います。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sqlite.org/">SQLite</a>をCocoaでラップしてMac OS X(Objective-C)から容易に利用できるようにしたライブラリ<a href="http://www.webbotech.com/">QuickLite</a>がリリースされました。ライセンスは独自のもののようですが、そんなにヘンな条件は付いていないので扱いやすいのではないかと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2004/09/01/347/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
