<?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>ku &#187; iPhone</title>
	<atom:link href="http://ido.nu/kuma/category/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://ido.nu/kuma</link>
	<description></description>
	<lastBuildDate>Fri, 04 Jun 2010 00:26:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>inteiten &#8211; teiten.org powered mobile fixed-point observation utility</title>
		<link>http://ido.nu/kuma/2009/07/01/inteiten-inteiten-is-a-free-lifeslice-iphone-app/</link>
		<comments>http://ido.nu/kuma/2009/07/01/inteiten-inteiten-is-a-free-lifeslice-iphone-app/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 13:26:35 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[logging]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1560</guid>
		<description><![CDATA[teitenのdescriptionにはTeiten is a free social fixed-point observation utility.と書いてあるけど、カメラが動かないようではいけない。カメラが動かないのならば自分が動かなければいけない。
自分も今ではjavascriptとObjective-Cばかり書いているけれど、学生の頃にはPHPやperlでプログラムを書いてた。ちょうど、今のソフトバンクモバイルの前のボーダフォンの前のJ-PHONEという会社がカメラがついているケータイを初めて出したころ。シャープの栄光はここから始まった。いまではどんなケータイにもカメラがついているけど、出た頃はみんなケータイにカメラがついてるからってどうしろというんだ、と思ってた。数字はよく覚えてないけど、そのカメラは30万画素とかで96&#215;72ピクセル、できあがるJPGファイルのサイズが10KBもないようなものだった。
ある日La Hortensia Azulのサイトで、画像つき掲示板みたいなのを作りたい、という話があった。そのころは今では過去のものになりつつあるMovableTypeみたいな伝統的ブロギングプラットホームもなかったので(あった？)、そういうものなしにサイトをデジカメ写真+テキストで更新しようと思ったらHTML+FTPで何とかしなければいけなくて結構な手間をかけないとできなかった。そのときに、その何に使うのかよくわからないケータイのカメラで写真を撮ってメールで送ることで、画像付き掲示板が作れるんじゃないかと思った。ケータイならHTML+FTPと違って誰でも使えるし。
これはいいんじゃないかと思って、後でヤプース！という、ケータイで写真を添付してメールで送ればサイトが更新される、というサービスを作った。今はどこのブログにもついている機能だけど、当時は大塚日記とあともうひとつ、なんだったっけ&#8230; 忘れちゃったけど自分の知ってる限りではふたつしかなかった。昔の話だから。
そういうサービスをやっていたので、ケータイではひたすら写真を撮っていた。今は自宅のベッドと職場の机との間を行ったり来たりしているだけだけど、その頃は学生だったのでおかねさえあればわりといろいろなところに行けた。行ったところで気になったものがあれば写真で撮って送っていた。初めて終電を逃したときに、この状況をリアルタイムでサーバに遅れるのに気がついたときには興奮した。今自分で書いていて、そんなあたりまえのことで、と思ったけど。今ならTwitterで普通にやってることもそのころやろうと思うとなかなか難しかった。誰も自分が常に見ているべきタイムラインなんてものも持っていなかったから書いたところで見てもらえなかったし。今なら誰でも、つまらないミーティングの隅に座っているときは&#8221;ミーティングがつまらない&#8221;とTwitterにpostする。それと同じように、自分もどんなときでも写真を撮ってpostしたいときには写真を撮ってpostしたかった。ミーティング中とか関係ないのと同じように。でもやっぱり電車の中で撮ったりすると周りの人が気にする。自分は何も撮ったらまずいものを撮ってるわけじゃないからわざわざ気にしないでほしい。だからケータイを買い換えたらまずバラしてスピーカをはずして音が出ないようにしてた。一度だけ、いつものようにスピーカを外してガワを閉じたら電波が入らなくなっていて焦ったことがあって、それ以来面倒になってやめちゃったけど。その電波が入らなくなるかと思ったケータイの構造の複雑さにびびったのもある。
そのころにライフスライスを知った。最近はTwitter上で子煩悩パパっぷりをみせつけてくれるヒマナイヌのkawaiさんの作品。細かいコンセプトとかは知らないんだけれど、10分に一度自動的に写真を撮ってくれるデジカメで(30分だったかも)、あとでPCに繋いで写真を取り出して並べればその日一日が見えてくる、というもので、それだけでもうロガーの血が流れている人にはたまらないデバイスだ。自分がライフスライスのことを知ったときにはもうライフスライスは手に入らなかった。なんでも記録しておきたくてしょうがない人が世の中にはわりといて、そしてそれはだいたい男なので記録することに執着するのは男だけなのだと思う。とにかくずっとライフスライスのようなものがほしかった。
3年か4年前、ボーダフォンのV702NK/V702NK2(Nokia6630)でならpythonでアプリが書けて、当然のようにカメラを操作できて写真が撮れることを知ったときにはすぐにヤフオクで落札してきてマイライフスライスを作った。しかも、なぜかアプリからだとシャッター音が出なかった。日本独自仕様だったのかな。6630はヤフオクで買ってもライフスライスよりもかなり高かったけど、そのぶん格段に画質がいいしMMCカードを刺せたのでいくらでも写真を撮れてさらにBluetoothまで繋がるというハイテクライフスライスを作れた。そのpythonコードも写真もどこかにいってしまって見つけられないけど、わりと面白かった。ただ、自分的にはやっぱりリアルタイムでサーバに送りたかった。今見たものは今送りたい。でもボーダフォンのパケット定額プランは、アプリのパケット通信は定額の枠外だったので、とてもリアルタイムにサーバに送ることなんでできなかった。
それで、そんな自分から言わしてもらえれば、teitenはもったい。せっかく、やっと、いろんな人があきらめてきたものが今すべてそろっているのに、なぜカメラを固定しなければいけないのか。iPhoneアプリであれば通信も定額、カメラも使いたい放題、AppStoreで販売もできる。審査パスできるのか知らないけど。とにかく、長年の夢であったリアルタイムライフスライス、自分が今、目にしているものを同時に多数の人に見せることができる環境があるのに、なぜカメラが自分が見ている方向ではなく、自分を向いているのか。自分はそれが許せなかった。だからNorio Nomuraさんのiphonetestのコードを夏ライオン for iPhoneの裏側にくっつけて暇をつぶせるようにして、自動的に写真をteitenに送り込むものを作った。ゴールデンウィークの終わりくらい。いまならそんなことしなくてもnotificationでいけるのかもしれない。

これで自分のteitenは自分の外にあるカメラではなく、自分というカメラのteitenになった。自分は一度目にしたものはもう自分のものだと思ってる。もちろん、学生の頃に盗撮、というほどではないけれど、盗撮だと言われかねないことをやっていたから、何人も、その承諾なしに、みだりにその容ぼう・姿態を撮影されない自由を有し、警察官が、正当な理由もないのに、個人の容ぼう等を撮影することは、憲法一三条の趣旨に反し許されないという判例があるのは知ってる。でももうみんないつだってケータイを持っていて、そのカメラがCCDの電荷をメモリに移動させているかどうかなんてわからない。自分みたいなどうしても記録を残したいロガーがアプリをつくって常にバックグラウンドでカメラに写ったものをメモリに書き込み続けているかもしれない。だから自分は逆にいつだって、人が持っているケータイは自分を撮影してるんじゃないか、と思って怯えている。思ってないけど。たまに姿勢がいい人が顔の真正面までケータイを持ち上げて見ているときにはそう思う。あのケータイは俺のことを撮影している、と。iPhoneはストラップをつけるのがめんどうだったから、地面ばっかり写ってたけど、Nokiaの6630でやっていたときはストラップで首から下げていて使っていた。そのNokiaのケータイの裏でずっとpythonのコードが写真を撮影してメモリに書き込み続けているけれど、そのことはメニューにあのpythonの気持ちのよくないヘビのアイコンが出ていて、それがなんかよくわかんないスクリプトを実行していて、そのスクリプトはカメラからデータを読み出してメモリに書き込みまくっている、ということは、pythonのコードが読めないとわからない。そう思うと、ケータイのカメラが動いていないなんて誰にわかるだろうか？動いていないように見えても実は裏でアプリがカメラに写ったデータをflickrにアップロードしまくってるかもしれない。
Memory Plus 生ログ &#8211; 気紛 &#8211; きまぐれ -を読んでくれたら、最先端のちょっとおかしいロガーたちはそのようなことを当たり前のように考えて(奇異の目で見られることをも厭わずに)やっているっていうのもわかる。
だから、少し前にTumblrに流れてきたanalog &#124; 赤の他人の醜態を写メする悪意のない人々の恐ろしさを読んだときも、この話自体は犯罪で捕まるけれど(電車内で高校生の足を撮影していた人が有罪になっていて、その判決文によれば相手に羞恥を覚えさせることがいけないのだ。泥酔している男が羞恥するのかには議論の余地もあるが)、話はそう単純でもないと思った。この投稿はtumblrに誰かがquoteしているのをdashboardで読んで知った。その誰かにtumblrの他の人が書いたコメントは、無理な合理化をしようとするものも多かったが、自分はperiscopeさんが書いていた日本の社会は、すでに各個人に記録端末が行きわたっているの部分に共感を覚えた。
前述の何人も、その承諾なしに、みだりにその容ぼう・姿態を撮影されない自由を有し、警察官が、正当な理由もないのに、個人の容ぼう等を撮影することは、憲法一三条の趣旨に反し許されないという判例を根拠に、監視カメラの合法性を問う声もある。警察が設置する監視カメラはともかく、商店街などが設置する監視カメラは法的にはきわどいので、犯罪捜査に協力するためのみに映像を利用するということになっていると4年ほど前に読んだ(警視庁のPDF資料だった気がするが見つけられなかった)。しかし、全自動で常に周囲を撮影することが容易になった結果、全自動で撮影することを前提にしたサービスが生まれてきている。
先日ひとまずグーグルの「ストリートビュー」は違法にあたらず&#8211;総務省の研究会が見解:ニュース &#8211; CNET JapanということになったGoogle Street Viewはその撮影結果が無料で公開されていて公共の福祉に資するのだと抗弁することも可能だろうが、ジェイマジック、画像解析技術で屋外広告を「誰が、いつ、何人見たか」測定する新サービス:ニュース &#8211; CNET Japanのようにカメラを設置した側にしか利益のないものも現れている(これは映ったデータをリアルタイムで解析し、撮影データは保存されないから&#8221;撮影&#8221;にはあたらないのかもしれない)。

最後にteitenのオフィシャルなFlashがサーバに送信しているデータの形式だけ解析したときのこと。はじめてTwitter / IEIRI Kazuma: Shotted: hbkr http://teite &#8230;経由でteitenを見たときに、これが自分がずっと求めていたライフスライス記録サービスだと確信した。どうでもいいけどshottedじゃなくてshotだとも思った。だからあのでかいコンピューターに繋がれた可哀想なシベリアンハスキーのようなカメラではなく、自分が見ているものといつもつねに同じものを見ることができるカメラからデータを送り込めるようにする必要があった。はじめはperlでpostするスクリプトを作った。gistにteiten hacksという名前でpostしてるスクリプトだ。
teitenのオフィシャルFlashがアップロードしているデータを少し見てみればわかるんだけど、送信しているデータの最後にh=120&#038;w=160というパラメータがある。この120&#215;160というサイズはteitenで表示される写真のサイズと同じだ。これを見たときに自分はもう終わったようなものだと思った(あとでいかに自分が愚かだったかを知ることになる)。これでteitenに自分が見たもののログを送り込めると。でもteitenはそんなに甘くなかった。160&#215;120で各ピクセルをRGBの順で%02xでフォーマットしてteitenに送信してもどうしても画像が乱れる。アナログのテレビでいう走査線がずれたような画像がアップロードされてしまう。
でも、ここで学生のときにあったなんとか実験第2みたいなののパートナーだったやつから聞いた話が役に立った。彼は実験の間に、ゲームのディスクからデータを読み出してきて、そのどうなっているかわからないデータをうまいこと人間が視覚的に理解できるキャラクタのビットマップに再構成するまでの話をしてくれた。もうteitenのことは忘れよう、諦めかけたときにそのキャラクタを再構成する彼の話を思い出した。キャラクタはたしか格ゲーのキャラだった。画像が規則的にずれるときは画像の幅が間違っている、そう彼は教えてくれた。
自分は改めてteitenのFlashが送信しているデータの数を数えてみた。驚いた。160&#215;120だと19,200ピクセルのはずなのにteitenのFlashは19,481ピクセル分のデータを送信していた。いったいこれはどういうことだろう。それでも自分は19,481という数字はピクセルの数と一致しているはずだと考えて素因数分解してみた。中学校の数学で習う、ひとつの数字をそれ以上余りなく割り算できない整数にまで細かくするやつだ。教科書にも役に立つことは載っている。ただみんなそれが役に立つような場面にいることに気がつかないだけだ。素因数分解は格ゲーのビットマップやteitenの画像がずれて困るときに問題解決の糸口を与えてくれる。
素因数分解の結果を見て自分はすぐに気がついた。19,481は161&#215;121だった。コードを書き直して縦を121ピクセルにしてデータを送り直すとteitenはこちらが送ったつもりの画像を表示するようになった。h=120&#038;w=160はなんなのかとかcolorsのところはもっとバイト数節約できるんじゃないかとかそんな細かいことはどうでもよかった。
数日後、開発者向けに公開されていたiPhoneOS3.0をインストールしたら、いろいろなアドレスが変わったようでinteitenには何も映らなくなった。
というわけでgist: 138764 &#8211; GitHubみたいに書けばUIImageをteitenに送りこめるので誰か作ってください。

一度2manjiののりで書いた文章をあとからふつうに書き直して飽きたのをtakaakik.comの河上さんに会って話をしたのきっかけにもう一度書き直したものです。一部に2manjiテイストのときに入れた嘘と誇張が残っております。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://teiten.org/">teiten</a>のdescriptionには<q>Teiten is a free social fixed-point observation utility.</q>と書いてあるけど、カメラが動かないようではいけない。カメラが動かないのならば自分が動かなければいけない。</p>
<p>自分も今ではjavascriptとObjective-Cばかり書いているけれど、学生の頃にはPHPやperlでプログラムを書いてた。ちょうど、今のソフトバンクモバイルの前のボーダフォンの前のJ-PHONEという会社がカメラがついているケータイを初めて出したころ。シャープの栄光はここから始まった。いまではどんなケータイにもカメラがついているけど、出た頃はみんなケータイにカメラがついてるからってどうしろというんだ、と思ってた。数字はよく覚えてないけど、そのカメラは30万画素とかで96&#215;72ピクセル、できあがるJPGファイルのサイズが10KBもないようなものだった。</p>
<p>ある日<a href="http://hortensia-azul.com/">La Hortensia Azul</a>のサイトで、画像つき掲示板みたいなのを作りたい、という話があった。そのころは今では過去のものになりつつあるMovableTypeみたいな伝統的ブロギングプラットホームもなかったので(あった？)、そういうものなしにサイトをデジカメ写真+テキストで更新しようと思ったらHTML+FTPで何とかしなければいけなくて結構な手間をかけないとできなかった。そのときに、その何に使うのかよくわからないケータイのカメラで写真を撮ってメールで送ることで、画像付き掲示板が作れるんじゃないかと思った。ケータイならHTML+FTPと違って誰でも使えるし。</p>
<p>これはいいんじゃないかと思って、後で<a href="http:/yapeus.com/">ヤプース！</a>という、ケータイで写真を添付してメールで送ればサイトが更新される、というサービスを作った。今はどこのブログにもついている機能だけど、当時は大塚日記とあともうひとつ、なんだったっけ&#8230; 忘れちゃったけど自分の知ってる限りではふたつしかなかった。昔の話だから。</p>
<p>そういうサービスをやっていたので、ケータイではひたすら写真を撮っていた。今は自宅のベッドと職場の机との間を行ったり来たりしているだけだけど、その頃は学生だったのでおかねさえあればわりといろいろなところに行けた。行ったところで気になったものがあれば写真で撮って送っていた。初めて終電を逃したときに、この状況をリアルタイムでサーバに遅れるのに気がついたときには興奮した。今自分で書いていて、そんなあたりまえのことで、と思ったけど。今ならTwitterで普通にやってることもそのころやろうと思うとなかなか難しかった。誰も自分が常に見ているべきタイムラインなんてものも持っていなかったから書いたところで見てもらえなかったし。今なら誰でも、つまらないミーティングの隅に座っているときは&#8221;ミーティングがつまらない&#8221;とTwitterにpostする。それと同じように、自分もどんなときでも写真を撮ってpostしたいときには写真を撮ってpostしたかった。ミーティング中とか関係ないのと同じように。でもやっぱり電車の中で撮ったりすると周りの人が気にする。自分は何も撮ったらまずいものを撮ってるわけじゃないからわざわざ気にしないでほしい。だからケータイを買い換えたらまずバラしてスピーカをはずして音が出ないようにしてた。一度だけ、いつものようにスピーカを外してガワを閉じたら電波が入らなくなっていて焦ったことがあって、それ以来面倒になってやめちゃったけど。その電波が入らなくなるかと思ったケータイの構造の複雑さにびびったのもある。</p>
<p>そのころに<a href="http://www.himanainu.jp/~mt/public_html/03projects/0304lifeslice/">ライフスライス</a>を知った。最近はTwitter上で子煩悩パパっぷりをみせつけてくれる<a href="http://www.himanainu.jp/">ヒマナイヌ</a>の<a href="http://twitter.com/himanainu_kawai">kawaiさん</a>の作品。細かいコンセプトとかは知らないんだけれど、10分に一度自動的に写真を撮ってくれるデジカメで(30分だったかも)、あとでPCに繋いで写真を取り出して並べればその日一日が見えてくる、というもので、それだけでもう<a href="http://ido.nu/kuma/2007/05/22/10-years-old-internet-users/#logger">ロガー</a>の血が流れている人にはたまらないデバイスだ。自分がライフスライスのことを知ったときにはもうライフスライスは手に入らなかった。なんでも記録しておきたくてしょうがない人が世の中にはわりといて、そしてそれはだいたい男なので記録することに執着するのは男だけなのだと思う。とにかくずっとライフスライスのようなものがほしかった。</p>
<p>3年か4年前、ボーダフォンのV702NK/V702NK2(Nokia6630)でならpythonでアプリが書けて、当然のようにカメラを操作できて写真が撮れることを知ったときにはすぐにヤフオクで落札してきてマイライフスライスを作った。しかも、なぜかアプリからだとシャッター音が出なかった。日本独自仕様だったのかな。6630はヤフオクで買ってもライフスライスよりもかなり高かったけど、そのぶん格段に画質がいいしMMCカードを刺せたのでいくらでも写真を撮れてさらにBluetoothまで繋がるというハイテクライフスライスを作れた。そのpythonコードも写真もどこかにいってしまって見つけられないけど、わりと面白かった。ただ、自分的にはやっぱりリアルタイムでサーバに送りたかった。今見たものは今送りたい。でもボーダフォンのパケット定額プランは、アプリのパケット通信は定額の枠外だったので、とてもリアルタイムにサーバに送ることなんでできなかった。</p>
<p>それで、そんな自分から言わしてもらえれば、teitenはもったい。せっかく、やっと、いろんな人があきらめてきたものが今すべてそろっているのに、なぜカメラを固定しなければいけないのか。iPhoneアプリであれば通信も定額、カメラも使いたい放題、AppStoreで販売もできる。審査パスできるのか知らないけど。とにかく、長年の夢であったリアルタイムライフスライス、自分が今、目にしているものを同時に多数の人に見せることができる環境があるのに、なぜカメラが自分が見ている方向ではなく、自分を向いているのか。自分はそれが許せなかった。だから<a href="http://twitter.com/norio_nomura">Norio Nomuraさん</a>の<a href="http://github.com/norio-nomura/iphonetest/tree/master">iphonetest</a>のコードを<a href="http://github.com/takuma104/ntlniph/tree/master">夏ライオン for iPhone</a>の裏側にくっつけて暇をつぶせるようにして、自動的に写真を<a href="http://teiten.org/ku0522">teiten</a>に送り込むものを作った。ゴールデンウィークの終わりくらい。いまならそんなことしなくてもnotificationでいけるのかもしれない。</p>
<p><a href="http://teiten.org/ku0522"><img src="http://ido.nu/kuma/wp-content/uploads/2009/06/teitenslice.png" height="386" width="750" hspace="4" vspace="4" alt="Teitenslice" class="block" /></a></p>
<p>これで自分のteitenは自分の外にあるカメラではなく、自分というカメラのteitenになった。自分は一度目にしたものはもう自分のものだと思ってる。もちろん、学生の頃に盗撮、というほどではないけれど、盗撮だと言われかねないことをやっていたから、<q>何人も、その承諾なしに、みだりにその容ぼう・姿態を撮影されない自由を有し、警察官が、正当な理由もないのに、個人の容ぼう等を撮影することは、憲法一三条の趣旨に反し許されない</q>という<a href="http://www.courts.go.jp/search/jhsp0030?action_id=dspDetail&amp;hanreiSrchKbn=02&amp;hanreiNo=27377&amp;hanreiKbn=01">判例</a>があるのは知ってる。でももうみんないつだってケータイを持っていて、そのカメラがCCDの電荷をメモリに移動させているかどうかなんてわからない。自分みたいなどうしても記録を残したいロガーがアプリをつくって常にバックグラウンドでカメラに写ったものをメモリに書き込み続けているかもしれない。だから自分は逆にいつだって、人が持っているケータイは自分を撮影してるんじゃないか、と思って怯えている。思ってないけど。たまに姿勢がいい人が顔の真正面までケータイを持ち上げて見ているときにはそう思う。あのケータイは俺のことを撮影している、と。iPhoneはストラップをつけるのがめんどうだったから、地面ばっかり写ってたけど、Nokiaの6630でやっていたときはストラップで首から下げていて使っていた。そのNokiaのケータイの裏でずっとpythonのコードが写真を撮影してメモリに書き込み続けているけれど、そのことはメニューにあのpythonの気持ちのよくないヘビのアイコンが出ていて、それがなんかよくわかんないスクリプトを実行していて、そのスクリプトはカメラからデータを読み出してメモリに書き込みまくっている、ということは、pythonのコードが読めないとわからない。そう思うと、ケータイのカメラが動いていないなんて誰にわかるだろうか？動いていないように見えても実は裏でアプリがカメラに写ったデータをflickrにアップロードしまくってるかもしれない。</p>
<p><a href="http://d.hatena.ne.jp/faw/20070820">Memory Plus 生ログ &#8211; 気紛 &#8211; きまぐれ -</a>を読んでくれたら、最先端のちょっとおかしいロガーたちはそのようなことを当たり前のように考えて(奇異の目で見られることをも厭わずに)やっているっていうのもわかる。</p>
<p>だから、少し前にTumblrに流れてきた<a href="http://hidetox.com/blog/2009/04/04/unmalicious/">analog | 赤の他人の醜態を写メする悪意のない人々の恐ろしさ</a>を読んだときも、この話自体は犯罪で捕まるけれど(電車内で高校生の足を撮影していた人が有罪になっていて、その判決文によれば相手に羞恥を覚えさせることがいけないのだ。泥酔している男が羞恥するのかには議論の余地もあるが)、話はそう単純でもないと思った。この投稿はtumblrに誰かがquoteしているのをdashboardで読んで知った。その誰かにtumblrの他の人が書いたコメントは、無理な合理化をしようとするものも多かったが、自分は<a href="http://yamato.tumblr.com/post/93773141">periscope</a>さんが書いていた<q>日本の社会は、すでに各個人に記録端末が行きわたっている</q>の部分に共感を覚えた。</p>
<p>前述の<q>何人も、その承諾なしに、みだりにその容ぼう・姿態を撮影されない自由を有し、警察官が、正当な理由もないのに、個人の容ぼう等を撮影することは、憲法一三条の趣旨に反し許されない</q>という判例を根拠に、監視カメラの合法性を問う声もある。警察が設置する監視カメラはともかく、商店街などが設置する監視カメラは法的にはきわどいので、犯罪捜査に協力するためのみに映像を利用するということになっていると4年ほど前に読んだ(警視庁のPDF資料だった気がするが見つけられなかった)。しかし、全自動で常に周囲を撮影することが容易になった結果、全自動で撮影することを前提にしたサービスが生まれてきている。</p>
<p>先日ひとまず<a href="http://japan.cnet.com/news/media/story/0,2000056023,20395536,00.htm">グーグルの「ストリートビュー」は違法にあたらず&#8211;総務省の研究会が見解:ニュース &#8211; CNET Japan</a>ということになったGoogle Street Viewはその撮影結果が無料で公開されていて公共の福祉に資するのだと抗弁することも可能だろうが、<a href="http://japan.cnet.com/news/media/story/0,2000056023,20395533,00.htm">ジェイマジック、画像解析技術で屋外広告を「誰が、いつ、何人見たか」測定する新サービス:ニュース &#8211; CNET Japan</a>のようにカメラを設置した側にしか利益のないものも現れている(これは映ったデータをリアルタイムで解析し、撮影データは保存されないから&#8221;撮影&#8221;にはあたらないのかもしれない)。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/06/picture-4-29.png" height="81" width="68" hspace="4" vspace="4" alt="Picture 4-29" class="border block" /><br />
最後にteitenのオフィシャルなFlashがサーバに送信しているデータの形式だけ解析したときのこと。はじめて<a href="http://twitter.com/hbkr/status/1467624481">Twitter / IEIRI Kazuma: Shotted: hbkr http://teite &#8230;</a>経由でteitenを見たときに、これが自分がずっと求めていたライフスライス記録サービスだと確信した。どうでもいいけどshottedじゃなくてshotだとも思った。だからあのでかいコンピューターに繋がれた可哀想なシベリアンハスキーのようなカメラではなく、自分が見ているものといつもつねに同じものを見ることができるカメラからデータを送り込めるようにする必要があった。はじめはperlでpostするスクリプトを作った。gistに<a href="http://gist.github.com/91148">teiten hacks</a>という名前でpostしてるスクリプトだ。</p>
<p>teitenのオフィシャルFlashがアップロードしているデータを少し見てみればわかるんだけど、送信しているデータの最後に<code>h=120&#038;w=160</code>というパラメータがある。この120&#215;160というサイズはteitenで表示される写真のサイズと同じだ。これを見たときに自分はもう終わったようなものだと思った(あとでいかに自分が愚かだったかを知ることになる)。これでteitenに自分が見たもののログを送り込めると。でもteitenはそんなに甘くなかった。160&#215;120で各ピクセルをRGBの順で<code>%02x</code>でフォーマットしてteitenに送信してもどうしても画像が乱れる。アナログのテレビでいう走査線がずれたような画像がアップロードされてしまう。</p>
<p>でも、ここで学生のときにあったなんとか実験第2みたいなののパートナーだったやつから聞いた話が役に立った。彼は実験の間に、ゲームのディスクからデータを読み出してきて、そのどうなっているかわからないデータをうまいこと人間が視覚的に理解できるキャラクタのビットマップに再構成するまでの話をしてくれた。もうteitenのことは忘れよう、諦めかけたときにそのキャラクタを再構成する彼の話を思い出した。キャラクタはたしか格ゲーのキャラだった。画像が規則的にずれるときは画像の幅が間違っている、そう彼は教えてくれた。</p>
<p>自分は改めてteitenのFlashが送信しているデータの数を数えてみた。驚いた。160&#215;120だと19,200ピクセルのはずなのにteitenのFlashは19,481ピクセル分のデータを送信していた。いったいこれはどういうことだろう。それでも自分は19,481という数字はピクセルの数と一致しているはずだと考えて素因数分解してみた。中学校の数学で習う、ひとつの数字をそれ以上余りなく割り算できない整数にまで細かくするやつだ。教科書にも役に立つことは載っている。ただみんなそれが役に立つような場面にいることに気がつかないだけだ。素因数分解は格ゲーのビットマップやteitenの画像がずれて困るときに問題解決の糸口を与えてくれる。</p>
<p>素因数分解の結果を見て自分はすぐに気がついた。19,481は161&#215;121だった。コードを書き直して縦を121ピクセルにしてデータを送り直すとteitenはこちらが送ったつもりの画像を表示するようになった。<code>h=120&#038;w=160</code>はなんなのかとかcolorsのところはもっとバイト数節約できるんじゃないかとかそんな細かいことはどうでもよかった。</p>
<p>数日後、開発者向けに公開されていたiPhoneOS3.0をインストールしたら、いろいろなアドレスが変わったようでinteitenには何も映らなくなった。</p>
<p>というわけで<a href="http://gist.github.com/138764">gist: 138764 &#8211; GitHub</a>みたいに書けば<code>UIImage</code>をteitenに送りこめるので誰か作ってください。</p>
<div class="note">
一度<a href="http://2manji.jp/">2manji</a>ののりで書いた文章をあとからふつうに書き直して飽きたのを<a href="http://takaakik.com/">takaakik.com</a>の河上さんに会って話をしたのきっかけにもう一度書き直したものです。一部に2manjiテイストのときに入れた嘘と誇張が残っております。
</div>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/07/01/inteiten-inteiten-is-a-free-lifeslice-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>stringByAddingPercentEscapesUsingEncodingは使ってはいけない</title>
		<link>http://ido.nu/kuma/2009/06/20/never-use-stringbyaddingpercentescapesusingencoding/</link>
		<comments>http://ido.nu/kuma/2009/06/20/never-use-stringbyaddingpercentescapesusingencoding/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 17:19:13 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objectiveC]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1633</guid>
		<description><![CDATA[NSStringのstringByAddingPercentEscapesUsingEncodingは使ってはいけません。
名前からしてURLに使えない文字をエスケープしてくれることを期待できそうなが名前に反してURLに使えない文字をエスケープしないからです。
Tumblr関連アプリではiviewがはまり、tumbladdictもはまり、tumblr gearもはまった、メールアドレスに+が入っているとログインできないバグの原因は(たぶん)この思わせぶりな名前のメソッドのせいです。実際のところこのメソッドは
(0&#215;20)&#34;#%&#62;&#60;[\]^`{&#124;}
しかエスケープしません！つまりRFC2396で使用できない、もしくは予約語となっている文字である
$&#038;+,/:;=?@
をエスケープしてくれない全く使いみちのないメソッドです(たしかにドキュメントにはRFCのことには触れずにただエスケープするとしか書かれてないけど)。
解決策
Google Code SearchでCFURLCreateStringByAddingPercentEscapesを検索するとたくさん出てくる
NSString* encodeURIComponent(NSString* s) {
    return [((NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
        (CFStringRef)s,
        NULL,
        (CFStringRef)@"!*'();:@&#038;=+$,/?%#[]",
        kCFStringEncodingUTF8)) autorelease];
}

こういう方法が定石のようです。これでもエスケープすべき文字すべてをエスケープすることができるようになります。
こういうCocoaプログラマだったらいまさらみたいな常識、楽して身につける方法ないでしょうか。
]]></description>
			<content:encoded><![CDATA[<p><code>NSString</code>の<code>stringByAddingPercentEscapesUsingEncoding</code>は使ってはいけません。</p>
<p>名前からしてURLに使えない文字をエスケープしてくれることを期待できそうなが名前に反してURLに使えない文字をエスケープしないからです。<br />
Tumblr関連アプリでは<a href="http://ido.nu/kuma/iview-iphone-app-for-tumblr-ja/">iview</a>がはまり、<a href="http://tumbladdict.tumblr.com/">tumbladdict</a>もはまり、<a href="http://tumblrgear.tumblr.com/">tumblr gear</a>もはまった、<em>メールアドレスに+が入っているとログインできない</em>バグの原因は(たぶん)この思わせぶりな名前のメソッドのせいです。実際のところこのメソッドは</p>
<p><em>(0&#215;20)</em><em>&quot;</em><em>#</em><em>%</em><em>&gt;</em><em>&lt;</em><em>[</em><em>\</em><em>]</em><em>^</em><em>`</em><em>{</em><em>|</em><em>}</em></p>
<p>しかエスケープしません！つまり<a href="http://www.ietf.org/rfc/rfc2396.txt">RFC2396</a>で使用できない、もしくは予約語となっている文字である</p>
<p><em>$</em><em>&#038;</em><em>+</em><em>,</em><em>/</em><em>:</em><em>;</em><em>=</em><em>?</em><em>@</em></p>
<p>をエスケープしてくれない全く使いみちのないメソッドです(たしかにドキュメントにはRFCのことには触れずにただエスケープするとしか書かれてないけど)。</p>
<h3>解決策</h3>
<p><a href="http://www.google.com/codesearch?hl=en&amp;q=CFURLCreateStringByAddingPercentEscapes+">Google Code SearchでCFURLCreateStringByAddingPercentEscapesを検索</a>するとたくさん出てくる</p>
<pre><code>NSString* encodeURIComponent(NSString* s) {
    return [((NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
        (CFStringRef)s,
        NULL,
        (CFStringRef)@"!*'();:@&#038;=+$,/?%#[]",
        kCFStringEncodingUTF8)) autorelease];
}
</code></pre>
<p>こういう方法が定石のようです。これでもエスケープすべき文字すべてをエスケープすることができるようになります。</p>
<p>こういうCocoaプログラマだったらいまさらみたいな常識、楽して身につける方法ないでしょうか。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/06/20/never-use-stringbyaddingpercentescapesusingencoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iviewのレビュータイムライン</title>
		<link>http://ido.nu/kuma/2009/06/08/review-timeline-of-iview-first-submission/</link>
		<comments>http://ido.nu/kuma/2009/06/08/review-timeline-of-iview-first-submission/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 13:48:25 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iview]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1610</guid>
		<description><![CDATA[tumbladdictに似た見た目のtumblr用iPhoneアプリのtumblr gearがAppStoreにokを出してもらえるまでのreject理由が書いてあるtumblr gear &#8211; review timeline of tumblr gear… 2009/05/04 …&#8230;がおもしろいです。
特に
due to objectinable contents in tumblr test account.
の、followしてるひとから不適切なコンテンツがreview用のテストアカウントのdashboardに流れてきてrejectされる、というのにはうけました。自分もそういうことがないようにiviewのreview用のテストアカウントは誰もfollowしていません。
自分もiviewを一番はじめにsubmitしたときはApple側の準備不足と自分の間違いとで4回submitしてやっと通りました。アプリをreviewしてもらうためにiTunes Connect(アプリをsubmitするサイトの名前)に繋ぐとアップグレードしていたりするのを見て、むこうも今作ってるんじゃん&#8230; ほんとに7/10に立ち上がるのか？と思ったりしてました。

2007.6.28 1回目
reviewするのにテストアカウントが必要だからメールで送ってね、といわれてreject
このときはまだreviewに出すときに記入する項目にテストアカウントというのがありませんでした。
2007.7.3 2回目
はじめにログインしたときに落ちる&#038;新しくアカウントを作ってログインすると落ちるからreject
これはiviewのバグを指摘されてるわけですが、年間99ドルしか払ってないのに新しくアカウントを作ってテストしたりするような手間をかけてレビューをしている、というのに驚きました。逆に考えると、有料のアプリならそれでもいいだろうけれど、Appleの利益にならない無料のアプリを有料のアプリと同じようにAppStoreで配信させてくれる、というのはよく考えると寛大です。
2007.7.6 3回目
AppStore用のprovisioning profileじゃないやつでビルドされてる、といわれてreject
これも単純にこっちのミスですが、そんなのアップロードしたときにサーバでチェックしてrejectしたらこっちもそっちも手間が減ってハッピーじゃんか！と思ったら、いつ頃から間違ったProvisioning profileだとアップロードしたときにエラーを出すように変わっていました。
2007.7.7 4回目
Ready for sale!

こうして見てみると、この頃のレビューのサイクルは速くまわっていて、4回submitしても2週間くらいしかかかっていませんでした。7/10がAppStoreのオープンだったのでそれにあわせてレビューもフル回転させていたのかも。
Reject Database for iPhone Developerに行くと理不尽なreject理由をもっと読むことができます。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://tumbladdict.tumblr.com/">tumbladdict</a>に似た見た目のtumblr用iPhoneアプリの<a href="http://tumblrgear.tumblr.com/">tumblr gear</a>がAppStoreにokを出してもらえるまでのreject理由が書いてある<a href="http://tumblrgear.tumblr.com/post/115787554/review-timeline-of-tumblr-gear-2009-05-04">tumblr gear &#8211; review timeline of tumblr gear… 2009/05/04 …&#8230;</a>がおもしろいです。</p>
<p>特に<br />
<blockquote>due to objectinable contents in tumblr test account.</p></blockquote>
<p>の、followしてるひとから不適切なコンテンツがreview用のテストアカウントのdashboardに流れてきてrejectされる、というのにはうけました。自分もそういうことがないようにiviewのreview用のテストアカウントは誰もfollowしていません。</p>
<p>自分もiviewを一番はじめにsubmitしたときはApple側の準備不足と自分の間違いとで4回submitしてやっと通りました。アプリをreviewしてもらうためにiTunes Connect(アプリをsubmitするサイトの名前)に繋ぐとアップグレードしていたりするのを見て、むこうも今作ってるんじゃん&#8230; ほんとに7/10に立ち上がるのか？と思ったりしてました。</p>
<dl>
<dt>2007.6.28 1回目</dt>
<dd>reviewするのにテストアカウントが必要だからメールで送ってね、といわれてreject</dd>
<dd>このときはまだreviewに出すときに記入する項目にテストアカウントというのがありませんでした。</dd>
<dt>2007.7.3 2回目</dt>
<dd>はじめにログインしたときに落ちる&#038;新しくアカウントを作ってログインすると落ちるからreject</dd>
<dd>これはiviewのバグを指摘されてるわけですが、年間99ドルしか払ってないのに新しくアカウントを作ってテストしたりするような手間をかけてレビューをしている、というのに驚きました。逆に考えると、有料のアプリならそれでもいいだろうけれど、Appleの利益にならない無料のアプリを有料のアプリと同じようにAppStoreで配信させてくれる、というのはよく考えると寛大です。</dd>
<dt>2007.7.6 3回目</dt>
<dd>AppStore用のprovisioning profileじゃないやつでビルドされてる、といわれてreject</dd>
<dd>これも単純にこっちのミスですが、そんなのアップロードしたときにサーバでチェックしてrejectしたらこっちもそっちも手間が減ってハッピーじゃんか！と思ったら、いつ頃から間違ったProvisioning profileだとアップロードしたときにエラーを出すように変わっていました。</dd>
<dt>2007.7.7 4回目</dt>
<dd>Ready for sale!</dd>
</dl>
<p>こうして見てみると、この頃のレビューのサイクルは速くまわっていて、4回submitしても2週間くらいしかかかっていませんでした。7/10がAppStoreのオープンだったのでそれにあわせてレビューもフル回転させていたのかも。</p>
<p><a href="http://iphone-rejectdb.appspot.com/">Reject Database for iPhone Developerに行くと理不尽なreject理由をもっと読むことができます。</p>
<p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/06/08/review-timeline-of-iview-first-submission/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iview 1.0.0.0.20090428 リリースノート</title>
		<link>http://ido.nu/kuma/2009/05/29/iview-100020090428-release-note/</link>
		<comments>http://ido.nu/kuma/2009/05/29/iview-100020090428-release-note/#comments</comments>
		<pubDate>Thu, 28 May 2009 17:28:49 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iview]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1597</guid>
		<description><![CDATA[iviewの新しいバージョンがAppStoreに出ました。

アイコン
新しいバージョンではまずアイコンが変わりました。ある日メールを見たらオランダにあるSoflomoという会社のJustus Brunsというひとから&#8221;iviewのアイコン作ったげるよ&#8221;って書いてある素っ気ないメールが来ていて、なんだこれと思ったけど作ってもらうことにしました。正直なところはじめはtumblrと関係なくなっちゃったしあんまり気に入らなかったけど、今はすごくいいと思ってます。tumblrでreblogするアプリというより、いろんなところのいろんなのをみられるアプリになっているのでreblogアイコンはtumbladdictのようには似合わないのです。
UI
Justus Brunsは熱い男で、アイコンを作ってもらうことにしたら、スカイプのアカウントを教えろ、話がしたい、というので、skypeもいいんだけどJustus Bruns on Vimeoにあるビデオの英語が聞き取れないからメールの方がいい、と言ったのにも関わらず、数日後に熱く語るビデオが送られてきました。わかんないって言ったのにー、と思いながら見たけどやっぱり半分くらいしかわかりません。でもなんか、フリックフリックで動かすのがいい、みたいなことを言っているのはわかりました。
そのときはまだthree20を知らなかったし、だいたいフリックするよりボタン押す方が絶対見やすい、と思っていました。でもまあ試しにやってみるか、と思ってやってみたら、意外と悪くありませんでした。
まえのiviewだと画面の端にあるボタンを押さないといけなかったのでiPhoneを片手で持って使おうとすると、人にぶつかったりすると絶対iPhone落とすような不安なかんじでしか持てなかったのが、フリックだとiPhoneをしっかり手で持っていても動かせて歩きながらでも安心して使えます。あとひとにこんなの作ってますってiviewを見せると必ずフリックして、&#8221;こうやっても動かないの？&#8221;って言われるし。ボタンの方がいいんだよ！と思うけど、絶対&#8221;こんなのiPhoneじゃない&#8221;と思われてると思ってました。
でも、寝ながら使うとフリックするのって難しくて、ボタン押す方が楽だったので、歩いてないときには前と同じように使えるようTwitter / Motohiro Takayama: iview で画像をふぁぼるタップ数が3倍に増えてむーんとしているところというのといっしょに次で改善しようと思います。
スライドショー
iviewを人に見せたときに必ず言われるののもうひとつが&#8221;スライドショーできないの？&#8221;でした。だいたいスライドショーなんかはじめに何回かいじって楽しんだらもう使わないいらない機能だと思ってたけど、ひとのうちに遊びに行ったらドックに刺さってるiPhoneでスクリーンセーバーみたいなのがずっと動いてるのを見つけて、なるほどFFFFoundをスクリーンセーバーがわりにずっと流しておしゃれっこを演出っていう見せアプリを狙うのもありかなと思ってつけました。作るの簡単だし。もちろんFFFFoundじゃなくてTumblr dashboardをスライドショーにすることもできます。
キャプション
USのAppStoreのレビューだったかどこかに、なんでキャプション1行しか出ないの、みたいなのがあって、それは自分がUIViewの大きさを動的に変えたりするのに苦手意識を持っていたからだけど自分でフリック実装したらUIViewの大きさを変えるのもHTMLでdivのサイズ変えるのも変わらないくらいにしか難しくないってわかったので最大4行までキャプションが表示させることにしました。地味に気に入ってる新機能です。
Style.comのアプリ
キャプションのところはdubstronicaのひとに教えてもらったStyle.comのアプリみたいにしたかったけどデザインが決まらなかったので現状維持になりました。
このStyle.comのアプリは画像ビュワー系のアプリでは最も完成度が高いので、画像を扱うアプリを作っている方はチェックしておいて損はないです。Chanelのアプリは有名だけど意外と出来が悪いしThree2.0のやつも拡大してフリックしたときに飛んでいってくれないし(ソースはあるから自分で書けばいいけど)、あと地味だけどステータスバー非表示だとナビゲーションバーがずれる(ref. Fullscreen UIView with Status bar and Navigation Bar overlay on the top &#8211; Stack Overflow)とか(Three2.0もずれます)そういうしょうもない技術的な問題が全部解決されています。それだけでなく、見ている途中で320&#215;480全面画像広告が出てきたり、そのインプレッションを測っていたり(コードのシンボル見るとそういうのが出てきます)と、アプリのつくりも参考になります。流れてくるコンテンツも、このスーツとこのつ前のスーツなんか違うの？みたいなのとかあったりするような面白さで、さらに解像度も高くて楽しめるいいアプリです。(ref. 『Style.com』はiview好きにおススメしたいiPhoneアプリ｜拝むように弾いてくれ)

(iPhoneOS3.0だとステータスバーとナビゲーションバーが重なって表示されちゃいました)
まとめ
UIが変わって犠牲になったところもありますが、前の方がよかったところ(ボタン+1タップで操作が全部完結するところ、画面を横にできるところ)は再度取り入れていれていこうとおもいます。
あと海外のユーザから、iPhoneに写真を保存しても8枚に2枚しか保存されてない、全然保存されない、というバグがあるといわれてるのですが、自分のiPhoneだと全然起きなくて困っています。もしお手持ちのiPhoneでも起きるようでしたら@kuで教えてください！
その他
iview 0.9 screenshots
]]></description>
			<content:encoded><![CDATA[<p><a href="http://ido.nu/kuma/iview-iphone-app-for-tumblr-ja/">iview</a>の新しいバージョンがAppStoreに出ました。</p>
<p><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=283998370&#038;mt=8"><img src="http://ido.nu/kuma/wp-content/uploads/2009/05/picture-2-36.png" height="131" width="353" hspace="4" vspace="4" alt="ready" title="ready" class="border block" /></a></p>
<h3>アイコン</h3>
<p>新しいバージョンではまずアイコンが変わりました。ある日メールを見たらオランダにある<a href="http://www.soflomo.com/home">Soflomo</a>という会社のJustus Brunsというひとから&#8221;iviewのアイコン作ったげるよ&#8221;って書いてある素っ気ないメールが来ていて、なんだこれと思ったけど作ってもらうことにしました。正直なところはじめはtumblrと関係なくなっちゃったしあんまり気に入らなかったけど、今はすごくいいと思ってます。tumblrでreblogするアプリというより、<a href="http://ido.nu/kuma/2008/11/09/iview-008-wedata-support/">いろんなところのいろんなのをみられる</a>アプリになっているのでreblogアイコンは<a href="http://tumbladdict.tumblr.com/">tumbladdict</a>のようには似合わないのです。</p>
<h3>UI</h3>
<p>Justus Brunsは熱い男で、アイコンを作ってもらうことにしたら、スカイプのアカウントを教えろ、話がしたい、というので、skypeもいいんだけど<a href="http://www.vimeo.com/justus">Justus Bruns on Vimeo</a>にあるビデオの英語が聞き取れないからメールの方がいい、と言ったのにも関わらず、数日後に熱く語るビデオが送られてきました。わかんないって言ったのにー、と思いながら見たけどやっぱり半分くらいしかわかりません。でもなんか、フリックフリックで動かすのがいい、みたいなことを言っているのはわかりました。<br />
そのときはまだ<a href="http://joehewitt.com/post/the-three20-project/">three20</a>を知らなかったし、だいたいフリックするよりボタン押す方が絶対見やすい、と思っていました。でもまあ試しにやってみるか、と思ってやってみたら、意外と悪くありませんでした。<br />
まえのiviewだと画面の端にあるボタンを押さないといけなかったのでiPhoneを片手で持って使おうとすると、人にぶつかったりすると絶対iPhone落とすような不安なかんじでしか持てなかったのが、フリックだとiPhoneをしっかり手で持っていても動かせて歩きながらでも安心して使えます。あとひとにこんなの作ってますってiviewを見せると必ずフリックして、&#8221;こうやっても動かないの？&#8221;って言われるし。ボタンの方がいいんだよ！と思うけど、絶対&#8221;こんなのiPhoneじゃない&#8221;と思われてると思ってました。</p>
<p>でも、寝ながら使うとフリックするのって難しくて、ボタン押す方が楽だったので、歩いてないときには前と同じように使えるよう<a href="http://twitter.com/mootoh/status/1948214844">Twitter / Motohiro Takayama: iview で画像をふぁぼるタップ数が3倍に増えてむーんとしているところ</a>というのといっしょに次で改善しようと思います。</p>
<h3>スライドショー</h3>
<p>iviewを人に見せたときに必ず言われるののもうひとつが&#8221;スライドショーできないの？&#8221;でした。だいたいスライドショーなんかはじめに何回かいじって楽しんだらもう使わないいらない機能だと思ってたけど、ひとのうちに遊びに行ったらドックに刺さってるiPhoneでスクリーンセーバーみたいなのがずっと動いてるのを見つけて、なるほどFFFFoundをスクリーンセーバーがわりにずっと流しておしゃれっこを演出っていう見せアプリを狙うのもありかなと思ってつけました。作るの簡単だし。もちろんFFFFoundじゃなくてTumblr dashboardをスライドショーにすることもできます。</p>
<h3>キャプション</h3>
<p>USのAppStoreのレビューだったかどこかに、なんでキャプション1行しか出ないの、みたいなのがあって、それは自分が<code>UIView</code>の大きさを動的に変えたりするのに苦手意識を持っていたからだけど自分でフリック実装したら<code>UIView</code>の大きさを変えるのもHTMLで<code>div</code>のサイズ変えるのも変わらないくらいにしか難しくないってわかったので最大4行までキャプションが表示させることにしました。地味に気に入ってる新機能です。</p>
<h4>Style.comのアプリ</h4>
<p>キャプションのところは<a href="http://www.dubstronica.com/">dubstronica</a>のひとに教えてもらった<a href="http://www.style.com/">Style.com</a>の<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289380413&#038;mt=8">アプリ</a>みたいにしたかったけどデザインが決まらなかったので現状維持になりました。</p>
<p>このStyle.comのアプリは画像ビュワー系のアプリでは最も完成度が高いので、画像を扱うアプリを作っている方はチェックしておいて損はないです。Chanelのアプリは有名だけど意外と出来が悪いしThree2.0のやつも拡大してフリックしたときに飛んでいってくれないし(ソースはあるから自分で書けばいいけど)、あと地味だけどステータスバー非表示だとナビゲーションバーがずれる(ref. <a href="http://stackoverflow.com/questions/373791/fullscreen-uiview-with-status-bar-and-navigation-bar-overlay-on-the-top">Fullscreen UIView with Status bar and Navigation Bar overlay on the top &#8211; Stack Overflow</a>)とか(Three2.0もずれます)そういうしょうもない技術的な問題が全部解決されています。それだけでなく、見ている途中で320&#215;480全面画像広告が出てきたり、そのインプレッションを測っていたり(コードのシンボル見るとそういうのが出てきます)と、アプリのつくりも参考になります。流れてくるコンテンツも、このスーツとこのつ前のスーツなんか違うの？みたいなのとかあったりするような面白さで、さらに解像度も高くて楽しめるいいアプリです。(ref. <a href="http://www.dubstronica.com/dub/2009/03/stylecomiviewip.html">『Style.com』はiview好きにおススメしたいiPhoneアプリ｜拝むように弾いてくれ</a>)</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/05/img-6001.png" height="480" width="320" hspace="4" vspace="4" alt="Img 6001" class="border block" /><br />
(iPhoneOS3.0だとステータスバーとナビゲーションバーが重なって表示されちゃいました)</p>
<h3>まとめ</h3>
<p>UIが変わって犠牲になったところもありますが、前の方がよかったところ(ボタン+1タップで操作が全部完結するところ、画面を横にできるところ)は再度取り入れていれていこうとおもいます。</p>
<p>あと海外のユーザから、iPhoneに写真を保存しても8枚に2枚しか保存されてない、全然保存されない、というバグがあるといわれてるのですが、自分のiPhoneだと全然起きなくて困っています。もしお手持ちのiPhoneでも起きるようでしたら<a href="http://twitter.com/home?status=@ku">@ku</a>で教えてください！</p>
<h3>その他</h3>
<p><a href="http://ku.tumblr.com/tagged/iview09">iview 0.9 screenshots</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/05/29/iview-100020090428-release-note/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UIViewの構造を視覚化する</title>
		<link>http://ido.nu/kuma/2009/04/20/visualizing-uiviews-with-jscocoa-console/</link>
		<comments>http://ido.nu/kuma/2009/04/20/visualizing-uiviews-with-jscocoa-console/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 13:14:49 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1543</guid>
		<description><![CDATA[前にJSCocoaのiPhone用インタラクティブコンソールを作ったときには、ビューの階層構造をJSONオブジェクトとしてみられればいいやくらいにしか思っていませんでした。それが新しいiviewでUIを変更したらやっぱり視覚的に見たくなったので、UIViewの階層構造をHTMLとして見られるようにしました。
ファイル
Httpd.m
Httpd.h
console.html
使い方
JSCocoaのiPhone用インタラクティブコンソールと同じです。
[inspect view tree]を押すと、こういう状態のiPhoneのビュー構造が

Firefox上でHTMLで再現されてこうなります。

ビューのインスタンスがUIImageViewであれば画像が表示され、UILabelやUITextFieldであればテキストが表示されます。
Firebugを使えばビューの階層構造もチェックできます。

]]></description>
			<content:encoded><![CDATA[<p>前に<a href="http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/">JSCocoaのiPhone用インタラクティブコンソール</a>を作ったときには、ビューの階層構造をJSONオブジェクトとしてみられればいいやくらいにしか思っていませんでした。それが新しい<a href="http://ido.nu/kuma/iview-iphone-app-for-tumblr-ja/">iview</a>でUIを変更したらやっぱり視覚的に見たくなったので、<code>UIView</code>の階層構造をHTMLとして見られるようにしました。</p>
<h3>ファイル</h3>
<p><a href="http://ido.nu/kuma/files/Httpd.m">Httpd.m</a><br />
<a href="http://ido.nu/kuma/files/Httpd.h">Httpd.h</a><br />
<a href="http://ido.nu/kuma/files/console.html">console.html</a></p>
<h3>使い方</h3>
<p><a href="http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/">JSCocoaのiPhone用インタラクティブコンソール</a>と同じです。</p>
<p><em>[inspect view tree]</em>を押すと、こういう状態のiPhoneのビュー構造が<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2009/04/picture-6-20.png" height="770" width="414" hspace="4" vspace="4" alt="iphone screenshot" title="iphone screenshot" class="block" /><br />
Firefox上でHTMLで再現されてこうなります。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/04/picture-11-12.png" height="527" width="366" hspace="4" vspace="4" alt="reconstructed on firefox" title="reconstructed on firefox" class="border block" /><br />
ビューのインスタンスが<code>UIImageView</code>であれば画像が表示され、<code>UILabel</code>や<code>UITextField</code>であればテキストが表示されます。</p>
<p>Firebugを使えばビューの階層構造もチェックできます。<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2009/04/picture-8-14.png" height="850" width="1098" hspace="4" vspace="4" class="block" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/04/20/visualizing-uiviews-with-jscocoa-console/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Death Cab For CutieのiPhoneアプリに入っている8曲を取り出して聴く</title>
		<link>http://ido.nu/kuma/2009/02/07/death-cab-for-cutie-promotion-app-contains-8-mp3-files/</link>
		<comments>http://ido.nu/kuma/2009/02/07/death-cab-for-cutie-promotion-app-contains-8-mp3-files/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 15:25:49 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1476</guid>
		<description><![CDATA[Postal Serviceで朝を始めたところでふと先日どこかでDeath Cab For Cutieっていう単語をMashable!かどこかで見たのを思い出してtwitter検索してみたら出てきましたよ。
このアプリの目玉は、彼等の楽曲がフルレングスで8曲分入っている事でしょう。
wigglin’ bloggin’ » Death Cab for CutieのiPhoneアプリが登場

Death Cab for Cutieがはじめから終わりまで聞ける8曲入りiPhoneアプリを無料でリリースしたっていう話でした。iPhone/iPod touchなしでも、アプリをダウンロードしてきて中身を取り出せば聞けるし、アプリ起動しないと聞けないのって不便なので中身を取り出しましょう。やり方はiPhoneアプリの中身を見る方法とおんなじです。
mp3ファイルだけを取り出す
AppStoreでDeath Cab For Cutieをダウンロードします。ダウンロードしたアプリは ~/Music/iTunes/Mobile Applications に保存されているので、そこからDCfC 1.0.ipaをコピーしててきとうなところに持ってきましょう。拡張子は.ipaだけど実際にはただのzipファイルなので拡張子をzipに変えれば普通に開けます。
開くと中にPayloadというフォルダがあって、その中にアプリの本体DCFC.appが入っています。
これをFinderでパッケージの中身を開くで開けば、アプリから96kbpsのmp3ファイルを取り出せてiPhoneのアプリを動かさなくても聞けるようになります。

あとべつにこんなことしなくてもふつうにDeath Cab For Cutie :: Mediaから(違う曲だけど)5曲ダウンロードして聞けるし(おんなじ人が参加してたりする)Postal ServiceはMP3だけでなくPVもダウンロードできますよ！
もともと自分がPostal Serviceから知りました。それはまだ名前がDemocracyだったころのMiroに入っていたTelemusicvisionでDVD画質のsuch great heightsのPVが流れていたのがきっかけ。MiroはFirefoxとおんなじ仕組みをベースにRSSリーダとメディアプレイヤーとBitTorrentが一緒になってるデスクトップアプリでWindows, OSX, Linuxで動きます。ただ自分が使ってたころはちょう重くていまいちだったんですけど、そういうおもしろいプラットホーム上にPVを流しているところが印象に残りました。iPhoneアプリで曲配信、ハイテクつながり、というわけでこれをきっかけにみなさまもどうぞ。
 

 


ちょうど日本の名古屋・東京・大阪公演があるそうです(もう、すぐだけど&#8230;)。
Death Cab For Cutie / デス・キャブ・フォー・キューティー　最新情報 ワーナーミュージック・ジャパン &#8211; Warner Music Japan
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.postalservicemusic.net/">Postal Service</a>で朝を始めたところでふと先日どこかで<a href="http://www.deathcabforcutie.com/splash/">Death Cab For Cutie</a>っていう単語を<a href="http://mashable.com/">Mashable!</a>かどこかで見たのを思い出して<a href="http://pcod.no-ip.org/yats/search?query=death+cab+for+cutie&amp;lang=ja">twitter検索</a>してみたら出てきましたよ。</p>
<blockquote><p>このアプリの目玉は、彼等の楽曲がフルレングスで8曲分入っている事でしょう。<br />
<a href="http://wiggling.net/2009/02/death-cab-for-cutie%e3%81%aeiphone%e3%82%a2%e3%83%97%e3%83%aa%e3%81%8c%e7%99%bb%e5%a0%b4.html">wigglin’ bloggin’ » Death Cab for CutieのiPhoneアプリが登場</a>
</p></blockquote>
<p>Death Cab for Cutieがはじめから終わりまで聞ける8曲入りiPhoneアプリを無料でリリースしたっていう話でした。iPhone/iPod touchなしでも、アプリをダウンロードしてきて中身を取り出せば聞けるし、アプリ起動しないと聞けないのって不便なので中身を取り出しましょう。やり方は<a href="http://ido.nu/kuma/2008/08/26/how-to-iphone-binary-symbol-dump/">iPhoneアプリの中身を見る方法</a>とおんなじです。</p>
<h3>mp3ファイルだけを取り出す</h3>
<p>AppStoreで<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301783212&amp;mt=8">Death Cab For Cutie</a>をダウンロードします。ダウンロードしたアプリは <code>~/Music/iTunes/Mobile Applications</code> に保存されているので、そこから<code>DCfC 1.0.ipa</code>をコピーしててきとうなところに持ってきましょう。拡張子は<code>.ipa</code>だけど実際にはただのzipファイルなので拡張子をzipに変えれば普通に開けます。<br />
開くと中に<code>Payload</code>というフォルダがあって、その中にアプリの本体<code>DCFC.app</code>が入っています。</p>
<p>これをFinderで<em>パッケージの中身を開く</em>で開けば、アプリから96kbpsのmp3ファイルを取り出せてiPhoneのアプリを動かさなくても聞けるようになります。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/02/picture-3-35.png" height="516" width="830" hspace="4" vspace="4" class="block" /></p>
<p>あとべつにこんなことしなくてもふつうに<a href="http://www.deathcabforcutie.com/medias/">Death Cab For Cutie :: Media</a>から(違う曲だけど)5曲ダウンロードして聞けるし(おんなじ人が参加してたりする)<a href="http://www.postalservicemusic.net/">Postal Service</a>はMP3だけでなくPVもダウンロードできますよ！</p>
<p>もともと自分がPostal Serviceから知りました。それはまだ名前がDemocracyだったころの<a href="http://www.getmiro.com/">Miro</a>に入っていた<a href="http://telemusicvision.com/">Telemusicvision</a>でDVD画質の<a href="http://www.youtube.com/watch?v=hMOkfI7wCrI">such great heights</a>のPVが流れていたのがきっかけ。MiroはFirefoxとおんなじ仕組みをベースにRSSリーダとメディアプレイヤーとBitTorrentが一緒になってるデスクトップアプリでWindows, OSX, Linuxで動きます。ただ自分が使ってたころはちょう重くていまいちだったんですけど、そういうおもしろいプラットホーム上にPVを流しているところが印象に残りました。iPhoneアプリで曲配信、ハイテクつながり、というわけでこれをきっかけにみなさまもどうぞ。</p>
<p><a class="iphone-app-icon" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301783212&amp;mt=8" style="background:url('http://ido.nu/kuma/wp-content/uploads/2009/02/mzljqqxttmq100x100-75.jpg');"> </a></p>
<div style="float: left;">
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=zeromemory-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=B0017I1RH4&#038;md=1X69VDGQCMF7Z30FM082&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> <iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=zeromemory-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=B000089CJI&#038;md=1X69VDGQCMF7Z30FM082&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"<br />
></iframe>
</div>
<p><br clear="both" /></p>
<p>ちょうど日本の名古屋・東京・大阪公演があるそうです(もう、すぐだけど&#8230;)。<br />
<a href="http://wmg.jp/artist/dcfc/news.html#11674">Death Cab For Cutie / デス・キャブ・フォー・キューティー　最新情報 ワーナーミュージック・ジャパン &#8211; Warner Music Japan</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/02/07/death-cab-for-cutie-promotion-app-contains-8-mp3-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>インターネット側からiPhone上のソケットに接続できました</title>
		<link>http://ido.nu/kuma/2009/01/15/smb-allows-accessing-any-port-on-iphone/</link>
		<comments>http://ido.nu/kuma/2009/01/15/smb-allows-accessing-any-port-on-iphone/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 17:09:28 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1430</guid>
		<description><![CDATA[実は私、NokiaがNokia端末上で動くMobile Web Serverを出した時にセットでついてたMWS:Rationale &#8211; OpenSourceに今までのウェブサーバなんか全く全然インタラクティブじゃない、インタラクティブっていうのはこういうのを言うんだ！と書かれているのを読んで以来、ケータイウェブサーバウォッチャーです。
今日、帰宅途中に

  @shachi @cqa02303 photoアルバムじゃなくて、ftpやhtmlサーバを内臓したカメラアプリっていいんじゃないかと思うですよ
  Twitter / fladdict: @shachi @cqa02303 photoアルバ &#8230;

というのを読んで、そういえば今すぐ日本の携帯で動かせるウェブサーバ CeHttp &#8211; bits and bytesでためした限りはSoftbankだと外からも繋げられたから、もしかしておなじSonftbankならiPhoneもいけるかもー、と思ってためしてみたらいけましたよ！！
JSCocoaのiPhone用インタラクティブコンソールからHTTPサーバ部分だけはがして持ってきて、まずiPhoneのグローバルのIPを確認してからiPhone上でHTTPサーバを組み込んだアプリを起動してFirefoxからADSL経由で繋いだら、ふつうに外側からでも繋がりました。
おそらくiPhoneのアプリは動作している権限の関係でポート80は使えないんですが、ポート38880なんてへんなポートで外側から接続することができました。おそらく全部のポートが繋がるんじゃないでしょうか。

これを利用してHTTPで繋いだ瞬間のカメラの写真を送ってくれるお手軽ライブ(?)カメラとかが作れますよ！

補足 2009.1.15
Willcomのネットワークは、端末でポートを開けてもWillcomのネットワークの外側(インターネット側)からは接続できません。常識的に考えて端末上のポートにインターネット側から接続する必要性がなく、悪用される恐れのほうが大きいからです。でもSoftbankは違う！安全よりも価格と未来を志向しているSoftbankはつまらないセキュリティなんかよりもおもしろさを取るために、インターネット側からも端末上の全てのポートに接続できるからほかのキャリアだとできないいろんなことができるよ、という話です。

]]></description>
			<content:encoded><![CDATA[<p>実は私、NokiaがNokia端末上で動く<a href="http://research.nokia.com/research/projects/mobile-web-server/index.html">Mobile Web Server</a>を出した時にセットでついてた<a href="http://wiki.opensource.nokia.com/projects/MWS:Rationale">MWS:Rationale &#8211; OpenSource</a>に<em>今までのウェブサーバなんか全く全然インタラクティブじゃない、インタラクティブっていうのはこういうのを言うんだ！</em>と書かれているのを読んで以来、ケータイウェブサーバウォッチャーです。</p>
<p>今日、帰宅途中に</p>
<blockquote><p>
  @<a href="http://twitter.com/shachi">shachi</a> @<a href="http://twitter.com/cqa02303">cqa02303</a> photoアルバムじゃなくて、ftpやhtmlサーバを内臓したカメラアプリっていいんじゃないかと思うですよ<br />
  <a href="http://twitter.com/fladdict/status/1118359484">Twitter / fladdict: @shachi @cqa02303 photoアルバ &#8230;</a>
</p></blockquote>
<p>というのを読んで、そういえば<a href="http://labs.gmo.jp/blog/ku/2007/07/_cehttp.html">今すぐ日本の携帯で動かせるウェブサーバ CeHttp &#8211; bits and bytes</a>でためした限りはSoftbankだと外からも繋げられたから、もしかしておなじSonftbankならiPhoneもいけるかもー、と思ってためしてみたらいけましたよ！！</p>
<p><a href="http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/">JSCocoaのiPhone用インタラクティブコンソール</a>からHTTPサーバ部分だけはがして持ってきて、まずiPhoneのグローバルのIPを確認してからiPhone上でHTTPサーバを組み込んだアプリを起動してFirefoxからADSL経由で繋いだら、ふつうに外側からでも繋がりました。</p>
<p>おそらくiPhoneのアプリは動作している権限の関係でポート80は使えないんですが、ポート38880なんてへんなポートで外側から接続することができました。おそらく全部のポートが繋がるんじゃないでしょうか。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/01/picture-8-9.png" height="154" width="681" hspace="4" vspace="4" class="border block" /></p>
<p>これを利用してHTTPで繋いだ瞬間のカメラの写真を送ってくれるお手軽ライブ(?)カメラとかが作れますよ！</p>
<div class="note">
<h3>補足 2009.1.15</h3>
<p>Willcomのネットワークは、端末でポートを開けてもWillcomのネットワークの外側(インターネット側)からは接続できません。常識的に考えて端末上のポートにインターネット側から接続する必要性がなく、悪用される恐れのほうが大きいからです。でもSoftbankは違う！安全よりも価格と未来を志向しているSoftbankはつまらないセキュリティなんかよりもおもしろさを取るために、インターネット側からも端末上の全てのポートに接続できるからほかのキャリアだとできないいろんなことができるよ、という話です。
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/01/15/smb-allows-accessing-any-port-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSCocoaのiPhone用インタラクティブコンソール</title>
		<link>http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/</link>
		<comments>http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 03:12:38 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[debug]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/</guid>
		<description><![CDATA[
English version is available.

JSCocoaのページからリンクされたので日本語版をこっちにうつしました。
iviewで使っているUIViewのtransformがなかなか思い通りに操れなくて困っていて、だったらアプリにSpiderMonkeyを入れてHTTP経由で通信して試行錯誤できるよにすればいいやとUIMonkeyというのを作り始めたところで、既にそういうのがいくつかあるのをJohn Resig &#8211; JavaScript iPhone Appsで知ってショックーというかアホだったのでJSCocoaベースにちょこっと書き直しました。viewの階層構造やサイズを調べるのに便利です。

ファイルのコピー
svn checkout http://jscocoa.googlecode.com/svn/trunk/ jscocoa-read-only

してjscocoa-read-only/JSCocoa/JSCocoaの中身を全部自分のプロジェクトにコピーします。class.jsだけプロジェクトに追加した時に、ただのリソースファイルとして認識してほしいんだけどソースファイルとして認識されてしまうので、いったんclass.gifという名前でプロジェクトに追加して後から名前を変えたらうまくいきました(どうやるのが正しいんでしょう&#8230;)。
JSCocoa本体のほかにHTTPサーバのためのHttpd.m, Httpd.h, console.htmlを追加してください。console.htmlはCopy Bundle Reesourcesに入れてアプリケーションに組み込まれるようにしてください。
*_Prefix.pchの修正
JSCocoa用のヘッダファイルを追加します。
今回はインラインでUSE_JSCOCOAをdefineしていますが、デバッグビルドの時だけdefineするようにしたりすればいちいち書き換えたりする手間がなくなります。
#define USE_JSCOCOA 1

#if USE_JSCOCOA
  #define JSCocoa_iPhone
  #include "JavascriptCore.h"
#endif

main.mの修正
JSCocoaのサンプルコードiPhoneTest2とおんなじようにmain.mで初期化します。クラスHttpdは自分で作ったなんちゃってHTTPサーバです(最後参照)。
#if USE_JSCOCOA
	// Fetch JS symbols
	[JSCocoaSymbolFetcher populateJavascriptCoreSymbols];

	// Load iPhone bridgeSupport
	[[BridgeSupportController sharedController] loadBridgeSupport:[NSString stringWithFormat:@"%@/iPhone.bridgeSupport", [[NSBundle mainBundle] bundlePath]]];
	// Load js class kit
	id c = [JSCocoaController sharedController];
	[c evalJSFile:[NSString stringWithFormat:@"%@/class.js", [[NSBundle mainBundle] bundlePath]]];

	[[[Httpd alloc] initWithPort:38880] autorelease];
#endif

リンクするライブラリの追加
JSCocoaは関数呼び出しにlibffiを使っているので、プロジェクトの設定を開いてOther [...]]]></description>
			<content:encoded><![CDATA[<div class="note">
<a href="http://ido.nu/kuma/2008/11/22/jscocoa-interactive-console-for-iphone/">English version</a> is available.
</div>
<p>JSCocoaのページからリンクされたので日本語版をこっちにうつしました。</p>
<p><a href="http://ido.nu/kuma/iview-iphone-app-for-tumblr-ja/">iview</a>で使っている<code>UIView</code>の<code>transform</code>がなかなか思い通りに操れなくて困っていて、だったらアプリに<a href="https://developer.mozilla.org/ja/SpiderMonkey">SpiderMonkey</a>を入れてHTTP経由で通信して試行錯誤できるよにすればいいやと<a href="http://github.com/ku/uimonkey/tree/master">UIMonkey</a>というのを作り始めたところで、既にそういうのがいくつかあるのを<a href="http://ejohn.org/blog/iphone-javascript-apps/">John Resig &#8211; JavaScript iPhone Apps</a>で知ってショックーというかアホだったのでJSCocoaベースにちょこっと書き直しました。viewの階層構造やサイズを調べるのに便利です。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-13-5.png" height="350" width="804" hspace="4" vspace="4" class="block" /></p>
<h3>ファイルのコピー</h3>
<pre><code>svn checkout http://jscocoa.googlecode.com/svn/trunk/ jscocoa-read-only
</code></pre>
<p>して<code>jscocoa-read-only/JSCocoa/JSCocoa</code>の中身を全部自分のプロジェクトにコピーします。<code>class.js</code>だけプロジェクトに追加した時に、ただのリソースファイルとして認識してほしいんだけどソースファイルとして認識されてしまうので、いったん<code>class.gif</code>という名前でプロジェクトに追加して後から名前を変えたらうまくいきました(どうやるのが正しいんでしょう&#8230;)。</p>
<p>JSCocoa本体のほかにHTTPサーバのための<a href="http://ido.nu/kuma/files/Httpd.m">Httpd.m</a>, <a href="http://ido.nu/kuma/files/Httpd.h">Httpd.h</a>, <a href="http://ido.nu/kuma/files/console.html">console.html</a>を追加してください。<code>console.html</code>は<em>Copy Bundle Reesources</em>に入れてアプリケーションに組み込まれるようにしてください。</p>
<h3><code>*_Prefix.pch</code>の修正</h3>
<p>JSCocoa用のヘッダファイルを追加します。<br />
今回はインラインで<code>USE_JSCOCOA</code>を<code>define</code>していますが、デバッグビルドの時だけ<code>define</code>するようにしたりすればいちいち書き換えたりする手間がなくなります。</p>
<pre><code>#define USE_JSCOCOA 1

#if USE_JSCOCOA
  #define JSCocoa_iPhone
  #include "JavascriptCore.h"
#endif
</code></pre>
<h3><code>main.m</code>の修正</h3>
<p>JSCocoaのサンプルコード<code>iPhoneTest2</code>とおんなじように<code>main.m</code>で初期化します。クラス<code>Httpd</code>は自分で作ったなんちゃってHTTPサーバです(<a href="#httpd">最後</a>参照)。</p>
<pre><code>#if USE_JSCOCOA
	// Fetch JS symbols
	[JSCocoaSymbolFetcher populateJavascriptCoreSymbols];

	// Load iPhone bridgeSupport
	[[BridgeSupportController sharedController] loadBridgeSupport:[NSString stringWithFormat:@"%@/iPhone.bridgeSupport", [[NSBundle mainBundle] bundlePath]]];
	// Load js class kit
	id c = [JSCocoaController sharedController];
	[c evalJSFile:[NSString stringWithFormat:@"%@/class.js", [[NSBundle mainBundle] bundlePath]]];

	[[[Httpd alloc] initWithPort:38880] autorelease];
#endif
</code></pre>
<h3>リンクするライブラリの追加</h3>
<p>JSCocoaは関数呼び出しに<a href="http://sourceware.org/libffi/">libffi</a>を使っているので、プロジェクトの設定を開いて<em>Other linker flags</em>に<code>-lffi</code>を追加します。</p>
<h3><code>CGAffineTransform</code>の追加</h3>
<p>JSCocoaの中にiPhoneでだけ使われる構造体を定義している<code>iPhone.bridgesupport</code>というXMLファイルがあります。これに<code>CGAffineTransform</code>を追加します(<code>CGAffineTransform</code>を使わないのであれば必要ありません)。</p>
<p>せっかくXMLファイルなのに構造体メンバを&quot;で区切ってしかもそれを実体参照で書くという酷い仕様。下の行をてきとうに<code>CGSize</code>を定義している下くらいに追加します。</p>
<pre><code>&lt;struct name='CGAffineTransform' type='{CGAffineTransform=&amp;quot;a&amp;quot;f&amp;quot;b&amp;quot;f&amp;quot;c&amp;quot;f&amp;quot;d&amp;quot;f&amp;quot;tx&amp;quot;f&amp;quot;ty&amp;quot;f}'
type64='{CGAffineTransform=&amp;quot;a&amp;quot;d&amp;quot;b&amp;quot;d&amp;quot;c&amp;quot;d&amp;quot;d&amp;quot;d&amp;quot;tx&amp;quot;d&amp;quot;ty&amp;quot;d}' /&gt;
</code></pre>
<p>ヘッダファイルからマシンフレンドリーな形式で生成して実行時コストを下げるか、ヒューマンフレンドリーにして手で書きやすくするかどっちかにするべきだと思います。</p>
<h3>ブラウザで接続</h3>
<p>そうしたらあとはアプリをふつうに起動すれば <code>http://localhost:38880/</code> でアプリの中のJSCocoaに接続できるので、好きなタイミングでブラウザからJSCocoaにjsのコードを送り込んでアプリを操作できます。</p>
<p>以下<a href="http://ido.nu/kuma/iview-iphone-app-for-tumblr-ja/">iview</a>で<a href="http://images.google.com/images?q=source%3Alife">Lifeの写真</a>を表示してのテスト。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p7-1.png" height="360" width="240" hspace="4" vspace="4" alt="original" title="original" class="border block" /></p>
<p>JSCocoaではObjective-Cのクラス名、メソッド名でjsからもアクセスできるので、<code>UIApplication.sharedApplication</code>からアプリ内のオブジェクトにアクセスできます。</p>
<p>メインウインドウのアルファを<code>0.2</code>に変えると<br />
<nobr><br />
<img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p8-1.png" height="360" width="240" hspace="4" vspace="4" alt="alpha=0.2" title="alpha=0.2" class="border" /><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-12-8.png" height="336" width="779" hspace="4" vspace="4" alt="alpha=0.2" title="alpha=0.2" /></nobr><br />
背景が透けて、暗くなります。</p>
<p><code>CGAffineTransform</code>で横に3倍引き延ばしてちょっと右に100ピクセルずらすと<br />
<nobr><br />
<img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p10.png" height="360" width="240" hspace="4" vspace="4" alt="transform" title="transform"   class="border" /><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-11-9.png" height="336" width="779" hspace="4" vspace="4" alt="transform" title="transform" /><br />
</nobr><br />
こうなります。</p>
<p>こういう試行錯誤や、使ったことのないクラスを触ってみるときに、Objective-Cのコードの上でやろうと思ったら毎回コンパイルし直す必要があるので時間がかかりますがjavascriptからできると細かい調整がすごく楽です。</p>
<h3>View Tree Walk</h3>
<p><a href="http://twitter.com/takuma104">takuma104</a>さんが前に</p>
<blockquote><p>
iPhoneにWindowsでいうSpy++みたいなのがほしい。viewの階層構造がわかるやつ。<br />
<cite><a href="http://twitter.com/takuma104/status/944924047">Twitter / takuma mori: iPhoneにWindowsでいうSpy++みたいな &#8230;</a></cite>
</p></blockquote>
<p>と言われていたのを思い出して、<code>UIApplication.sharedApplication.subviews</code>からviewを列挙してjavascriptオブジェクトとしてみられるようにしてみました。HTMLで視覚的に再構築できればベストなんですけど、とりあえずFirebugのコンソールで値を確認できるようにしてみました。<em>inspect view tree</em>のリンクをクリックすると下の画面みたいにしてviewの階層構造を見ることができます。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-14-5.png" height="419" width="699" hspace="4" vspace="4" class="border block" /></p>
<h3>JSCocoa感想</h3>
<p>JSCocoaが<code>NSArray</code>を自動的にjavascriptの配列として扱ってくれるのですが、これがあんまりうまくいってないみたいで<code>length</code>の値が入ってなかったりするとか、そういう微妙に変なところを配慮してあげればわりと使えそうなかんじでした。<br />
自分が普段SpiderMonkeyにどっぷり浸かっているので<code>uneval</code>がないとかE4Xがないとか分割代入できないとかもありましたがそうでなければふつうにjavascriptです。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSCocoa interactive console for iPhone</title>
		<link>http://ido.nu/kuma/2008/11/22/jscocoa-interactive-console-for-iphone/</link>
		<comments>http://ido.nu/kuma/2008/11/22/jscocoa-interactive-console-for-iphone/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 08:59:23 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[debug]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1323</guid>
		<description><![CDATA[日本語版もあります。
I&#8217;ve been struggling with transform property of UIView for long time. at last, I&#8217;ve decided to create UIMonkey that allows to manipulate the variables by trial and error through HTTP in Javascript with SpiderMonkey. Few days after I&#8217;ve started the project, I found JSCocoa via John Resig &#8211; JavaScript iPhone Apps. I abandoned my project [...]]]></description>
			<content:encoded><![CDATA[<div class="note"><a href="http://ido.nu/kuma/2008/11/23/jscocoa-interactive-console-for-iphone-ja/">日本語版</a>もあります。</div>
<p>I&#8217;ve been struggling with <code>transform</code> property of UIView for long time. at last, I&#8217;ve decided to create <a href="http://github.com/ku/uimonkey/tree/master">UIMonkey</a> that allows to manipulate the variables by trial and error through HTTP in Javascript with SpiderMonkey. Few days after I&#8217;ve started the project, I found <a href="http://inexdo.com/JSCocoa">JSCocoa</a> via <a href="http://ejohn.org/blog/iphone-javascript-apps/">John Resig &#8211; JavaScript iPhone Apps</a>. I abandoned my project and rewrited my codes on JSCocoa.</p>
<p>Now it works on the top of JSCocoa. It&#8217;s very helpful especially for  inspecting the hierarchy  of the view tree or size of the views etc.</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-13-5.png" height="350" width="804" hspace="4" vspace="4" class="block" /></p>
<h3>How to setup</h3>
<p>Follow the steps below to setup JSCocoa interactive console.</p>
<h3>Copy the files</h3>
<p>First of all, you need to check out JSCocoa files.</p>
<pre><code>svn checkout http://jscocoa.googlecode.com/svn/trunk/ jscocoa-read-only
</code></pre>
<p>After checking out complete, copy all of files existing under <code>jscocoa-read-only/JSCocoa/JSCocoa</code> and import them into your project. </p>
<p>I got into trouble on importing <code>class.js</code>. XCode take it as an source file which is need to be compiled while I want to treat it as a simple resource file. I solved this problem by renaing it as <code>class.gif</code>, import it to the project, and rename it again as <code>class.js(please tell me the right way to do that if you know).</p>
<p>In addition to JSCocoa files, you need some files for the console. Please download and import them to your project. <a href="http://ido.nu/kuma/files/Httpd.m">Httpd.m</a>, <a href="http://ido.nu/kuma/files/Httpd.h">Httpd.h</a>, <a href="http://ido.nu/kuma/files/console.html">console.html</a>.<br />
Please remember to </code><code>console.html</code> add to the list of <em>Copy Bundle Reesources</em> to ensure the files is copied into your aplication binary file.</p>
<h3>Add header files to <code>*_Prefix.pch</code></h3>
<p>JSCocoa requires some header files.<br />
Open your <code>*_Prefix.pch</code> file and add some lines below.</p>
<pre><code>#define USE_JSCOCOA 1

#if USE_JSCOCOA
  #define JSCocoa_iPhone
  #include "JavascriptCore.h"
#endif
</code></pre>
<p>Of course, you can define <code>USE_JSCOCOA</code> in the project settings instead of hard coding in the pre-compiled header.</p>
<h3>Add some codes to your <code>main.m</code></h3>
<p>Initializing JSCocoa in the same way that of <code>iPhoneTest2</code> which is distributed with JSCocoa.<br />
Class <code>Httpd</code> is a so-called http server which is implemented in <code>Httpd.m</code> and <code>Httpd.h</code>.</p>
<pre><code>#if USE_JSCOCOA
	// Fetch JS symbols
	[JSCocoaSymbolFetcher populateJavascriptCoreSymbols];

	// Load iPhone bridgeSupport
	[[BridgeSupportController sharedController] loadBridgeSupport:[NSString stringWithFormat:@"%@/iPhone.bridgeSupport", [[NSBundle mainBundle] bundlePath]]];
	// Load js class kit
	id c = [JSCocoaController sharedController];
	[c evalJSFile:[NSString stringWithFormat:@"%@/class.js", [[NSBundle mainBundle] bundlePath]]];

	[[[Httpd alloc] initWithPort:38880] autorelease];
#endif
</code></pre>
<h3>Add libffi</h3>
<p>JSCocoa using <a href="http://sourceware.org/libffi/">libffi</a> to call Objective-C functions.<br />
OPen your project settings and add <code>-lffi</code> to <em>Other linker flags</em>.</p>
<h3>Add <code>CGAffineTransform</code>(If you need)</h3>
<p><code>iPhone.bridgesupport</code> which defines the structures used by only iPhone SDK. If you want to manipulate  <code>CGAffineTransform</code> through JSCocoa, add the difinition of <code>CGAffineTransform</code> to the file.</p>
<p><code>iPhone.bridgesupport</code> is a XML file, but it&#8217;s too annoying to write it by hand. You have to separate the members with &quot;. I think it would be nice to generate the file in machine-friendly format to decrease the run-time CPU cost or to make it more human-friendly format to allow humans to write it by hand easily.</p>
<p>Add this definition below to around the next line of that defines <code>CGSize</code>.</p>
<pre><code>&lt;struct name='CGAffineTransform' type='{CGAffineTransform=&amp;quot;a&amp;quot;f&amp;quot;b&amp;quot;f&amp;quot;c&amp;quot;f&amp;quot;d&amp;quot;f&amp;quot;tx&amp;quot;f&amp;quot;ty&amp;quot;f}'
type64='{CGAffineTransform=&amp;quot;a&amp;quot;d&amp;quot;b&amp;quot;d&amp;quot;c&amp;quot;d&amp;quot;d&amp;quot;d&amp;quot;tx&amp;quot;d&amp;quot;ty&amp;quot;d}' /&gt;
</code></pre>
<h3>Connect to JSCocoa through browser</h3>
<p>Just launching your application in the iPhone simulator and now you can connect to JSCocoa which resides in it.<br />
Open <code>http://localhost:38880/</code> and you can send any javascript code to manipulate your application through JSCocoa at any time.</p>
<p>I&#8217;ll show you some tests with <a href="http://ido.nu/kuma/iview-iphone-app-for-tumblr/">iview</a> and <a href="http://images.google.com/images?q=source%3Alife">a photo from Life magazne</a>.</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p7-1.png" height="360" width="240" hspace="4" vspace="4" alt="original" title="original" class="border block" /></p>
<p>JSCocoa allows you to access Objective-C classes and methods. So you can access the objects in your iPhone application through <code>UIApplication.sharedApplication</code>.</p>
<p>Now change the alpha value of the main window.<br />
<nobr><br />
<img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p8-1.png" height="360" width="240" hspace="4" vspace="4" alt="alpha=0.2" title="alpha=0.2" class="border" /><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-12-8.png" height="336" width="779" hspace="4" vspace="4" alt="alpha=0.2" title="alpha=0.2" /></nobr><br />
the background of the main window become transparent and the screen gets black(because background color is black).</p>
<p>Streching Y-axis three times and moving by 100pxices.<br />
<nobr><br />
<img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p10.png" height="360" width="240" hspace="4" vspace="4" alt="transform" title="transform"   class="border" /><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-11-9.png" height="336" width="779" hspace="4" vspace="4" alt="transform" title="transform" /><br />
</nobr></p>
<p>Writing in Objective-C consumes huge amount of time that using the classes you are not familiar with, adjusting animation parameters and so on. Bacause it have to be compiled. But with JSCocoa, You don&#8217;t need to compiled it, and you can bedone it thorugh trial and error without recompile. It&#8217;s very nice.</p>
<h3>View Tree Walk</h3>
<p><a href="http://twitter.com/takuma104">takuma104</a>(who is a developper of <a href="http://iphone.natsulion.org/">Natsu Lion for  iPhone</a> that is a swift, neat, <a href="http://github.com/takuma104/ntlniph/tree/master">open-source</a> twitter client) said on twitter,</p>
<blockquote><p>
iPhoneにWindowsでいうSpy++みたいなのがほしい。viewの階層構造がわかるやつ。<br />
<cite><a href="http://twitter.com/takuma104/status/944924047">Twitter / takuma mori: iPhoneにWindowsでいうSpy++みたいな &#8230;</a></cite>
</p></blockquote>
<p>It means &#8220;I need a tool for iPhone like Spy++ of Windows. Shows me hierarchy of the views&#8221;.</p>
<p>I remember the tweet  and write small code that enumerates all views from <code>UIApplication.sharedApplication.subviews</code>. You can see the geometric values through <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> console by clicking the <em>inspect view tree</em> link. I think its more useful if it reconstructs the hierarchy in the same visual HTML elements(but not implemented at this time).</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-14-5.png" height="419" width="699" hspace="4" vspace="4" class="border block" /></p>
<h3>My impression of JSCocoa</h3>
<p>JSCocoa is very useful After I got familiar with some weird behaviours like that javascript array object which is auto translated from <code>NSArray</code> by JSCocoa does not have <code>length</code>.</p>
<p>and if you unfortunately have get used to SpiderMonkey like me, it makes hard javascript coding on JSCocoa which is based on JavaScriptCore of WebKit that does not have <code>uneval</code>, E4X, destructuring assignment and so on.<br />
yes, i know its not JSCocoa&#8217;s fault.  it&#8217;s my fault who get used to the features only in SpiderMonkey  =)   </p>
<p>Great thanks for people behind JSCocoa.</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2008/11/22/jscocoa-interactive-console-for-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ImageMagickでiPhoneシミュレータのキャプチャから画面部分だけを取り出す</title>
		<link>http://ido.nu/kuma/2008/11/20/cropping-screenshot-of-iphone-simulator-with-imagemagick/</link>
		<comments>http://ido.nu/kuma/2008/11/20/cropping-screenshot-of-iphone-simulator-with-imagemagick/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 15:13:24 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1305</guid>
		<description><![CDATA[iPhoneシミュレータではiPhoneの実機のように画面部分だけのスクリーンショットを撮ることができない。Command+Shift+4でiPhoneシミュレータ自体のスクリーンショットを撮ると不要なワクの部分もついてくる。これをImageMagickで捨てる。
ImageMagickのインストール。
sudo port install ImageMagick

縦方向だけ微妙に中心からずれているので -6 で補正。
convert Picture\ 1.png -gravity Center -crop 320x480+0-6 p1.png
さらにそれを半分にしたければ
convert Picture\ 1.png -gravity Center -crop 320x480+0-6 -size 160x p2.png
これが

こうなって

半分になる。

参考
ImageMagick、正方形のサムネイルを作成する &#8211; FAX
]]></description>
			<content:encoded><![CDATA[<p>iPhoneシミュレータではiPhoneの実機のように画面部分だけのスクリーンショットを撮ることができない。<code>Command+Shift+4</code>でiPhoneシミュレータ自体のスクリーンショットを撮ると不要なワクの部分もついてくる。これをImageMagickで捨てる。</p>
<p><a href="http://www.imagemagick.org/script/index.php">ImageMagick</a>のインストール。</p>
<pre><code>sudo port install ImageMagick
</code></pre>
<p>縦方向だけ微妙に中心からずれているので <code>-6</code> で補正。</p>
<pre><code>convert Picture\ 1.png -gravity Center -crop 320x480+0-6 p1.png</code></pre>
<p>さらにそれを半分にしたければ</p>
<pre><code>convert Picture\ 1.png -gravity Center -crop 320x480+0-6 -size 160x p2.png</code></pre>
<p>これが<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2008/11/picture-1-34.png" height="770" width="414" hspace="4" vspace="4" alt="iphone simulator" title="iphone simulator" class="block" /><br />
こうなって<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p1.png" height="480" width="320" hspace="4" vspace="4" class="block" /><br />
半分になる。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2008/11/p2-4.png" height="240" width="160" hspace="4" vspace="4" class="block" /></p>
<h3>参考</h3>
<p><a href="http://d.hatena.ne.jp/brazil/20081027/1225087031">ImageMagick、正方形のサムネイルを作成する &#8211; FAX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2008/11/20/cropping-screenshot-of-iphone-simulator-with-imagemagick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
