<?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>Flex、AIR、Java、Androidなど</title>
	<atom:link href="http://stachibana.biz/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://stachibana.biz</link>
	<description>主にWebアプリかAndroid、iPhoneのこと。Perl、PHPも時々。</description>
	<lastBuildDate>Sat, 28 Aug 2010 12:12:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>【iPhone】初アプリ「中古車サーチ+車種当てクイズ」をリリースしました。</title>
		<link>http://stachibana.biz/?p=1084</link>
		<comments>http://stachibana.biz/?p=1084#comments</comments>
		<pubDate>Sat, 28 Aug 2010 12:12:16 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[アプリケーション]]></category>
		<category><![CDATA[デザイン]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1084</guid>
		<description><![CDATA[ブログを書くのも久しぶり＆最近本業でも長文を書くことがほとんどないので腕が痛くなりそうですが、iPhone向けとしては初のアプリをリリースしましたので書いておきます。

以下、App Storeの説明文より引用。楽できるとこは楽しないとね。

車が好きな方、あなたの知識を試してみて下さい！
 このアプリは大きく分けて２つの機能があります。 

▼中古車の検索機能
全国で販売されている中古車を検索し、詳細情報を確認することができます。検索結果は順次読み込まれ、自由に並べ替えることができますので素早く目的の車種を探し出すことができます。
▼車種当てクイズ機能
自動車の画像を見て車種を3択から選ぶクイズを遊ぶことができます。難易度は３つに分かれておりますのでレベルを選択して遊んでください。30問解答した時点でのスコアがサーバーに送信され、ランキングで表示されます。目指せハードモードでの正解率100％！！

☆イージーモード
車の静止画が5枚表示されます。画像から車種を判断して3択から解答して下さい。

☆ノーマルモード
あなたは道路を走行していて、対向車が前方から走ってきます。その一瞬で画像から車種を判断して3択から解答して下さい。

☆ハードモード
あなたは暗いトンネルを走行していて、無灯火の対向車が前方から走ってきます。その一瞬で画像から車種を判断して3択から解答して下さい。 ハードモードで正解率100％を出せた方は間違い無く車に詳しいと自慢できるでしょう！

アプリは無料ですので車が好きな方や、小学生位までの車好きな息子さんがいらっしゃっる方は是非試してみて下さい。
私も子供の頃から車が相当好きでしたが、ハードモードで正解率100％出せる方は車屋さん以外ではそういないと思います。
ダウンロードはこちらからどうぞ。
既に得点ランキングも更新されてきています。本当うれしいです！遊んでいただきありがとうございます！
# 以下、作ってみた感想など。
Android業界の知り合いの方はご存じかもしれませんがこのアプリのアイディア自体はA3 Springに提出したこのアプリと全く同じ物です。両者の違いは学習機能とランキング位ですね。
Android(Java)、iPhone(Objective-C) 両方で同じ物を作った上での感想ですが、箇条書きにしときます。
・Objective-C自体は書き方は変わっているがやってることはJavaとそう変わらない。あくまでもこの程度のアプリだったらですが。英語読めたら案外理解はしやすいです。
・AndroidやってたらiPhoneの一画面(AndroidでいうところのActivity)単位の構成はすぐできます。Viewの子を配置して、背景画像を変えるだけ。解像度が一定な分作りやすいぐらいかも。
・難しいのはstartActivityの部分。presentModalViewControllerとかdismissModalViewControllerを使うのがAndroidやってると分かりやすいんだけど、親のViewがLinearLayoutとかじゃないので手軽にアニメーション効かせた画面推移をさせたいんなら上にViewかぶせるのが簡単だった。ゲーム画面 → 結果表示画面とか。
・得点のランキング機能はOpenFeint使うとすぐできる。でもOpenFeintはそのままだと生のクラスファイルなのでターゲットを変える度にビルドに3分くらいかかりだるい。全部できて最後に入れた方がいいかもね。
・サウンドファイルやらリソースの参照やらはAndroidとほとんど同じ。
・アニメーションはiPhoneが簡単。メソッドが充実してる。あとサンプルとなる見た目の出来が良いアプリがごろごろしてるので同じ様に作れるPhotoshopの腕があれば見た目は綺麗にできます。パクりゃいいんだから。
みたいな感じです。個人的にはAndroidでアプリ作ったことがあって、iPhoneを長く使ってて自然な挙動が分かってる方だとアイディアがあればあとはサクサク作っていけるのではないかと思います。
でも、NavigationControllerとかはちょっとくせがありそうなんでいつか使ったときにでも感想書きますね。
最後になりましたが、アプリの審査は日曜の夜提出、次の土曜日の昼にReady for Sale、3時間後にApp Storeに並びました。6日くらいです。無料だからこんなもんでしょうかね。
自分がやらずに人にお願いするのも図々しいのですが広島か岡山あたりでiPhoneアプリ開発者の勉強会＆飲み会とかあったらなあ。。。あんま趣味でとか個人でとかやってる人いないんですかねぇ。。
]]></description>
			<content:encoded><![CDATA[<p>ブログを書くのも久しぶり＆最近本業でも長文を書くことがほとんどないので腕が痛くなりそうですが、iPhone向けとしては初のアプリをリリースしましたので書いておきます。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/08/05.png"><img src="http://stachibana.biz/wp-content/uploads/2010/08/05-400x266.png" alt="" title="05" width="400" height="266" class="aligncenter size-medium wp-image-1092" /></a></p>
<p>以下、App Storeの説明文より引用。楽できるとこは楽しないとね。</p>
<div style="background-color: #f2f2f2; padding:10px">
<p>車が好きな方、あなたの知識を試してみて下さい！<br />
 このアプリは大きく分けて２つの機能があります。 </p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/08/04.png"><img src="http://stachibana.biz/wp-content/uploads/2010/08/04-400x266.png" alt="" title="04" width="400" height="266" class="aligncenter size-medium wp-image-1095" /></a><br />
▼中古車の検索機能<br />
全国で販売されている中古車を検索し、詳細情報を確認することができます。検索結果は順次読み込まれ、自由に並べ替えることができますので素早く目的の車種を探し出すことができます。</p>
<p>▼車種当てクイズ機能<br />
自動車の画像を見て車種を3択から選ぶクイズを遊ぶことができます。難易度は３つに分かれておりますのでレベルを選択して遊んでください。30問解答した時点でのスコアがサーバーに送信され、ランキングで表示されます。目指せハードモードでの正解率100％！！</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/08/03.png"><img src="http://stachibana.biz/wp-content/uploads/2010/08/03-400x266.png" alt="" title="03" width="400" height="266" class="aligncenter size-medium wp-image-1098" /></a><br />
☆イージーモード<br />
車の静止画が5枚表示されます。画像から車種を判断して3択から解答して下さい。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/08/02.png"><img src="http://stachibana.biz/wp-content/uploads/2010/08/02-400x266.png" alt="" title="02" width="400" height="266" class="aligncenter size-medium wp-image-1099" /></a><br />
☆ノーマルモード<br />
あなたは道路を走行していて、対向車が前方から走ってきます。その一瞬で画像から車種を判断して3択から解答して下さい。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/08/01.png"><img src="http://stachibana.biz/wp-content/uploads/2010/08/01-400x266.png" alt="" title="01" width="400" height="266" class="aligncenter size-medium wp-image-1100" /></a><br />
☆ハードモード<br />
あなたは暗いトンネルを走行していて、無灯火の対向車が前方から走ってきます。その一瞬で画像から車種を判断して3択から解答して下さい。 ハードモードで正解率100％を出せた方は間違い無く車に詳しいと自慢できるでしょう！</p>
</div>
<p>アプリは無料ですので車が好きな方や、小学生位までの車好きな息子さんがいらっしゃっる方は是非試してみて下さい。</p>
<p>私も子供の頃から車が相当好きでしたが、ハードモードで正解率100％出せる方は車屋さん以外ではそういないと思います。</p>
<p>ダウンロードは<a href="http://itunes.apple.com/jp/app/id388862379?mt=8">こちら</a>からどうぞ。</p>
<p>既に得点ランキングも更新されてきています。本当うれしいです！遊んでいただきありがとうございます！</p>
<p># 以下、作ってみた感想など。</p>
<p>Android業界の知り合いの方はご存じかもしれませんがこのアプリのアイディア自体はA3 Springに提出した<a href="http://stachibana.biz/?p=1023">このアプリ</a>と全く同じ物です。両者の違いは学習機能とランキング位ですね。</p>
<p>Android(Java)、iPhone(Objective-C) 両方で同じ物を作った上での感想ですが、箇条書きにしときます。</p>
<p>・Objective-C自体は書き方は変わっているがやってることはJavaとそう変わらない。あくまでもこの程度のアプリだったらですが。英語読めたら案外理解はしやすいです。<br />
・AndroidやってたらiPhoneの一画面(AndroidでいうところのActivity)単位の構成はすぐできます。Viewの子を配置して、背景画像を変えるだけ。解像度が一定な分作りやすいぐらいかも。<br />
・難しいのはstartActivityの部分。presentModalViewControllerとかdismissModalViewControllerを使うのがAndroidやってると分かりやすいんだけど、親のViewがLinearLayoutとかじゃないので手軽にアニメーション効かせた画面推移をさせたいんなら上にViewかぶせるのが簡単だった。ゲーム画面 → 結果表示画面とか。<br />
・得点のランキング機能はOpenFeint使うとすぐできる。でもOpenFeintはそのままだと生のクラスファイルなのでターゲットを変える度にビルドに3分くらいかかりだるい。全部できて最後に入れた方がいいかもね。<br />
・サウンドファイルやらリソースの参照やらはAndroidとほとんど同じ。<br />
・アニメーションはiPhoneが簡単。メソッドが充実してる。あとサンプルとなる見た目の出来が良いアプリがごろごろしてるので同じ様に作れるPhotoshopの腕があれば見た目は綺麗にできます。パクりゃいいんだから。</p>
<p>みたいな感じです。個人的にはAndroidでアプリ作ったことがあって、iPhoneを長く使ってて自然な挙動が分かってる方だとアイディアがあればあとはサクサク作っていけるのではないかと思います。</p>
<p>でも、NavigationControllerとかはちょっとくせがありそうなんでいつか使ったときにでも感想書きますね。</p>
<p>最後になりましたが、アプリの審査は日曜の夜提出、次の土曜日の昼にReady for Sale、3時間後にApp Storeに並びました。6日くらいです。無料だからこんなもんでしょうかね。</p>
<p>自分がやらずに人にお願いするのも図々しいのですが広島か岡山あたりでiPhoneアプリ開発者の勉強会＆飲み会とかあったらなあ。。。あんま趣味でとか個人でとかやってる人いないんですかねぇ。。</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1084</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DK01ハッカソンに参加しました。</title>
		<link>http://stachibana.biz/?p=1070</link>
		<comments>http://stachibana.biz/?p=1070#comments</comments>
		<pubDate>Mon, 12 Jul 2010 09:43:35 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1070</guid>
		<description><![CDATA[東広島市のSHARP東広島工場で行われたDK-01ハッカソンに参加しました。ハッカソンというのは参加者がグループを作って一日でプログラムを書き、成果物を発表するような企画です。JN-DK01はSH-10B/IS01の開発機バージョンのような端末(?)ですね。
SHARP様としても珍しい(初めて？)の企画ということでしたが、進行もスムーズで本当に楽しい一日でした。
まずJN-DK01の開発に携わった技術者の方からSHARP東広島工場や端末の説明があり、10万円近くもするJN-DK01を参加者全員にプレゼントとのうれしいお知らせ！会場からは拍手が巻き起こりました。
その後はお弁当タイム。これがまた豪華な弁当で食べきれませんでした。すみません。。

私はいつもお世話になっている@LuckOfWise氏と、とても有名な会社から参加されていたお二人とチームを組むことになり(許可をとっておりませんのでお名前は伏せておきます)、開発がスタートしました。
作るのはDK01の形状を生かしてアコーディオンなんかいいんじゃないかということで開発がスタート。当日の様子はUStreamで公開されていますのでそちらをご覧下さい。私もちょこちょこ映っています。
私は高い技術も持っておりませんしハッカソンはほぼ初めてですので勝手が分からず不安だったのですが、チームの取りまとめ、コーディングをお三方に担当して頂き動くようにはなりました。私がやったのはアイディア出しと音源ファイルをGarageBandで作っただけという(笑)
そして結果ですが、なんと優勝することができました！私はほとんど何もやってないので優勝させてもらったようなものです。本当に感謝しています。
他のチームもDK01の機能を生かした面白いアプリを作成されていて、コーディング中から発表、その後の懇親会まで本当に楽しい時間を過ごすことができました。
同じチームの方々、参加された皆様、チューターの方々、運営を担当された株式会社ブリリアントサービスの方々、そして何よりこのような機会を設けて下さったSHARP様、本当にありがとうございました！
また同じような機会があれば是非参加したいと思っています。
# DK01アコーディオンはもう少し手を加えます。今はこんな感じ。

コードはこちらにApacheライセンスで公開されています。興味のある方は見てみて下さい。IS01でも動くと思います。
]]></description>
			<content:encoded><![CDATA[<p>東広島市のSHARP東広島工場で行われた<a href="http://atnd.org/events/6016">DK-01ハッカソン</a>に参加しました。ハッカソンというのは参加者がグループを作って一日でプログラムを書き、成果物を発表するような企画です。<a href="https://sh-dev.sharp.co.jp/android/modules/jn-dk01/">JN-DK01</a>はSH-10B/IS01の開発機バージョンのような端末(?)ですね。</p>
<p>SHARP様としても珍しい(初めて？)の企画ということでしたが、進行もスムーズで本当に楽しい一日でした。</p>
<p>まずJN-DK01の開発に携わった技術者の方からSHARP東広島工場や端末の説明があり、<strong><span style="color: #ff0000;">10万円近くもするJN-DK01を参加者全員にプレゼントとのうれしいお知らせ！</span></strong>会場からは拍手が巻き起こりました。</p>
<p>その後はお弁当タイム。これがまた豪華な弁当で食べきれませんでした。すみません。。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/07/bento.jpg"><img class="aligncenter size-medium wp-image-1071" title="bento" src="http://stachibana.biz/wp-content/uploads/2010/07/bento-400x298.jpg" alt="" width="400" height="298" /></a></p>
<p>私はいつもお世話になっている<a href="http://twitter.com/LuckOfWise">@LuckOfWise</a>氏と、とても有名な会社から参加されていたお二人とチームを組むことになり(許可をとっておりませんのでお名前は伏せておきます)、開発がスタートしました。</p>
<p>作るのはDK01の形状を生かしてアコーディオンなんかいいんじゃないかということで開発がスタート。当日の様子はUStreamで公開されていますので<a href="http://ustre.am/kCrV">そちら</a>をご覧下さい。私もちょこちょこ映っています。</p>
<p>私は高い技術も持っておりませんしハッカソンはほぼ初めてですので勝手が分からず不安だったのですが、チームの取りまとめ、コーディングをお三方に担当して頂き動くようにはなりました。私がやったのはアイディア出しと音源ファイルをGarageBandで作っただけという(笑)</p>
<p>そして結果ですが、なんと優勝することができました！私はほとんど何もやってないので優勝させてもらったようなものです。本当に感謝しています。</p>
<p>他のチームもDK01の機能を生かした面白いアプリを作成されていて、コーディング中から発表、その後の懇親会まで本当に楽しい時間を過ごすことができました。</p>
<p>同じチームの方々、参加された皆様、チューターの方々、運営を担当された株式会社ブリリアントサービスの方々、そして何よりこのような機会を設けて下さったSHARP様、本当にありがとうございました！</p>
<p>また同じような機会があれば是非参加したいと思っています。</p>
<p># DK01アコーディオンはもう少し手を加えます。今はこんな感じ。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/07/dk01.jpg"><img class="aligncenter size-medium wp-image-1075" title="dk01" src="http://stachibana.biz/wp-content/uploads/2010/07/dk01-400x298.jpg" alt="" width="400" height="298" /></a></p>
<p>コードは<a href="http://code.google.com/p/dk01-hackathon/">こちら</a>にApacheライセンスで公開されています。興味のある方は見てみて下さい。IS01でも動くと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1070</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【Android】おかげさまでAutomatic Task Killerが25万ダウンロードを突破しました。</title>
		<link>http://stachibana.biz/?p=1054</link>
		<comments>http://stachibana.biz/?p=1054#comments</comments>
		<pubDate>Sun, 27 Jun 2010 10:37:52 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1054</guid>
		<description><![CDATA[今日、Automatic Task Killerが25万ダウンロードを超えました。このアプリの詳細は右上の検索窓から検索すれば出てきます。
これを機に、この一年を振り返ってみたいと思います。

Android Marketではおおまかなダウンロード数が表示されるのですが、括りが < 50 、 50 < 100 ・・・> 250000となっており、今後Automatic Task Killerのダウンロード数の表示が変わることはありません。
ここが一つの目標だったので達成できたことに感謝しつつ、ここ一年のAutomatic Task Killerに関することを残しておこうと思います。
まず、きっかけですがもうすぐ出るであろう某雑誌のインタビューに乗る徒弟のものをそのまま載せます。

開発した当時はまだ端末のスペックが低いものが多く、Androidマーケットにおいてはタスクキラーは特に人気がありました。私も使っていたのですが、生まれつきめんどくさがりでタスクを殺すことすらもめんどくさかったので自動でやっちゃえばいいじゃん、と思ったのが開発したきっかけです。

そんなこんなで既存のコードをコピペしながら3時間くらいで作ったAutomatic Task Killer。最初のバージョンは致命的なバグがあり、初回起動時に6割位の確率でクラッシュし移行起動できなくなくなるような代物でした。
当然Marketではぼろかすに言われダウンロード数も一日数十件くらいだったと思います。
私は新しい物を作るのはとても好きで寝るのも忘れて書くのですが、メンテナンスは嫌いです。というかめんどくさいんです。やらなきゃいけないのは分かってるんですが。
また、その当時は今のような規模になるようなポテンシャルがあるとは思ってもみなかったので他に受けるようなアプリを作ることの方が楽しかったのもあります。
その後、親切なユーザーの方からログを送っていただきクラッシュはしないようになり、そこからダウンロード数も徐々に上がってきました。
その後、世界中のたくさんのフォーラム、ブログ、サイト等で紹介して頂けるようになった他、書籍やビデオレビューなどでも紹介していただきダウンロード数も増え、現在平均は2000ダウンロード/日位になっています。
また、このアプリには広告を入れていたのですが、最初はAdMob社というところの広告を入れていました。その当時は収益が月に約4万円くらいで、それでも十分だったのですが5月にGoogle Adsense for mobile Applicationsのクローズドベータのテスターに選んでいただき、現在はAutomatic Task KillerにはAdsenseが入り、地区、ユーザーの方の趣向に合わせた広告が表示されます。
何となく暇だったのでAndroid Dev Phone 1を買ったのが2009年1月、その時は現在のような自分は全く想定していませんでした。
また、収益だけでなくたくさんの出会いや経験も与えてくれ、Androidをやっていて本当に良かったと思っています。
今後も何かいいアプリのアイディアがあれば作っていきますし、現在リリース中のアプリも改良していきます。
いつも使って下さっているユーザーの皆様、普段交流して下さっている皆様に感謝しつつ、初心を忘れず開発を続けていこうと思います。
]]></description>
			<content:encoded><![CDATA[<p>今日、<a href="http://www.cyrket.com/p/android/biz.stachibana.TaskKiller/">Automatic Task Killer</a>が25万ダウンロードを超えました。このアプリの詳細は右上の検索窓から検索すれば出てきます。</p>
<p>これを機に、この一年を振り返ってみたいと思います。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/06/device.png"><img src="http://stachibana.biz/wp-content/uploads/2010/06/device.png" alt="" title="device" width="320" height="480" class="aligncenter size-full wp-image-1065" /></a></p>
<p>Android Marketではおおまかなダウンロード数が表示されるのですが、括りが < 50 、 50 < 100 ・・・> 250000となっており、今後Automatic Task Killerのダウンロード数の表示が変わることはありません。</p>
<p>ここが一つの目標だったので達成できたことに感謝しつつ、ここ一年のAutomatic Task Killerに関することを残しておこうと思います。</p>
<p>まず、きっかけですがもうすぐ出るであろう某雑誌のインタビューに乗る徒弟のものをそのまま載せます。</p>
<blockquote><p>
開発した当時はまだ端末のスペックが低いものが多く、Androidマーケットにおいてはタスクキラーは特に人気がありました。私も使っていたのですが、生まれつきめんどくさがりでタスクを殺すことすらもめんどくさかったので自動でやっちゃえばいいじゃん、と思ったのが開発したきっかけです。
</p></blockquote>
<p>そんなこんなで既存のコードをコピペしながら3時間くらいで作ったAutomatic Task Killer。最初のバージョンは致命的なバグがあり、初回起動時に6割位の確率でクラッシュし移行起動できなくなくなるような代物でした。</p>
<p>当然Marketではぼろかすに言われダウンロード数も一日数十件くらいだったと思います。</p>
<p>私は新しい物を作るのはとても好きで寝るのも忘れて書くのですが、メンテナンスは嫌いです。というかめんどくさいんです。やらなきゃいけないのは分かってるんですが。</p>
<p>また、その当時は今のような規模になるようなポテンシャルがあるとは思ってもみなかったので他に受けるようなアプリを作ることの方が楽しかったのもあります。</p>
<p>その後、親切なユーザーの方からログを送っていただきクラッシュはしないようになり、そこからダウンロード数も徐々に上がってきました。</p>
<p>その後、世界中のたくさんのフォーラム、ブログ、サイト等で紹介して頂けるようになった他、書籍やビデオレビューなどでも紹介していただきダウンロード数も増え、現在平均は2000ダウンロード/日位になっています。</p>
<p>また、このアプリには広告を入れていたのですが、最初はAdMob社というところの広告を入れていました。その当時は収益が月に約4万円くらいで、それでも十分だったのですが5月にGoogle Adsense for mobile Applicationsのクローズドベータのテスターに選んでいただき、現在はAutomatic Task KillerにはAdsenseが入り、地区、ユーザーの方の趣向に合わせた広告が表示されます。</p>
<p>何となく暇だったのでAndroid Dev Phone 1を買ったのが2009年1月、その時は現在のような自分は全く想定していませんでした。</p>
<p>また、収益だけでなくたくさんの出会いや経験も与えてくれ、Androidをやっていて本当に良かったと思っています。</p>
<p>今後も何かいいアプリのアイディアがあれば作っていきますし、現在リリース中のアプリも改良していきます。</p>
<p>いつも使って下さっているユーザーの皆様、普段交流して下さっている皆様に感謝しつつ、初心を忘れず開発を続けていこうと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1054</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>【Android】TPD(Tiny Preview Dialog)を公開します。</title>
		<link>http://stachibana.biz/?p=1040</link>
		<comments>http://stachibana.biz/?p=1040#comments</comments>
		<pubDate>Sat, 29 May 2010 04:35:13 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[アプリケーション]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1040</guid>
		<description><![CDATA[TPD is application that shows some messages(Gmail on default, but can show any message if other app&#8217;s developer add a little code on theirs) on pop-up dialog.


The dialog is untouchable, so it won&#8217;t disturb your finger and running application. After you confirm the message, you can flush it by shaking your device.
When you are to [...]]]></description>
			<content:encoded><![CDATA[<p>TPD is application that shows some messages(Gmail on default, but can show any message if other app&#8217;s developer add a little code on theirs) on pop-up dialog.</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/05/top_image.png"><img src="http://stachibana.biz/wp-content/uploads/2010/05/top_image.png" alt="" title="top_image" width="265" height="314" class="aligncenter size-full wp-image-1044" /></a><br />
<span id="more-1040"></span><br />
The dialog is untouchable, so it won&#8217;t disturb your finger and running application. After you confirm the message, you can flush it by shaking your device.</p>
<p>When you are to be notified something by TPD, notification icon can be shown at the same time, tap it to launch application that developer predefined. When the TPD shows your unread Gmail messages on pop-up dialog, the icon will appear in notification bar, tap it to launch Inbox of Gmail application.</p>
<p><span style="color: #0000ff;">If you are Android Developer and want to show messages with TPD, please read later section.</span></p>
<p>You can customize dialog appearance finely in setting menu. Tap preview to check till you satisfied. Please tell me if you want additional customizable criteria. I will consider.</p>
<p>Sensibility to detect shaking, Gmail fetch Interval can be set as well. Set it if necessary.</p>
<p><strong><span style="color: #ff6600;">How it shows new Gmail</span></strong></p>
<p>After you launch this app, or after device booting completed, TPD begins monitoring you Gmail Inbox.<br />
So when TPD shows dialog? It is</p>
<p>(1) When device screen turns on<br />
(2) By the minute you set in setting menu, if screen on.</p>
<p>Monitoring paused when screen turns off, and detecting shaking runs only while pop-up dialog displayed, so it won&#8217;t drain much battery ;)</p>
<p>The last, but not the least, applications are growing up with users&#8217; opinion. I&#8217;m always glad to hear from you! Thanks again to use my app!</p>
<p><strong><span style="color: #ff0000;">日本語</span></strong></p>
<p>TPDはポップアップダイアログ上にメッセージを表示するアプリケーションです。Gmailにデフォルトで対応していますが、他アプリからの命令に応じてメッセージを表示することもできます(そのアプリケーションの開発者の方が実装を加える必要があります)。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/05/top_image.png"><img src="http://stachibana.biz/wp-content/uploads/2010/05/top_image.png" alt="" title="top_image" width="265" height="314" class="aligncenter size-full wp-image-1044" /></a></p>
<p>ダイアログはタップすることができません。そのため作業中のタスクを邪魔しません。メッセージの確認が終了し、非表示にしたい時は端末を振って下さい。ダイアログは消えます。</p>
<p>TPDがダイアログを表示する際、通知バーへアイコンを表示することも可能です。このアイコンをタップすることにより、開発者があらかじめ指定したアプリケーションを開くことが可能になります。Gmailの場合は、通知バー上のアイコンをクリックすると受信トレイが表示されます。</p>
<p><span style="color: #0000ff;">もしAndroidアプリ開発者の方で、TPDを利用してユーザーの方に通知を行いたい場合は少し下のセクションをご覧下さい。</span></p>
<p>ダイアログの見た目は細部までカスタマイズできます。納得のいくまでプレビューして下さい。他に設定したい項目がありましたらご連絡下さい。実装を検討します。</p>
<p>振りの検知の感度やGmailの取得頻度もカスタマイズできます。必要に応じてご利用下さい。</p>
<p><strong><span style="color: #ff6600;">Gmailを表示する流れ</span></strong></p>
<p>アプリケーションの開始時、もしくは端末の起動時にTPDは新着Gmailの取得タイマーを開始します。</p>
<p>ダイアログが表示されるタイミングは、</p>
<p>(1) スクリーンが表示された時<br />
(2) タイマーに設定された時間毎</p>
<p>Gmailの取得はスクリーンが消灯した時にポーズされます。また、振りの検知はダイアログが表示されている時のみ行われますのでバッテリーを浪費しません。</p>
<p>アプリケーションはユーザーの方と一緒に成長させるものだと考えています。何かありましたらお気軽にご連絡下さい。</p>
<p><strong><span style="color: #ff0000;">開発者の方へ</span></strong></p>
<p>TPDのダイアログは外部のアプリケーションからsendBroadcast()を経由して表示することができます。</p>
<p>サンプルのeclipseプロジェクトを公開しますのでインポートして見てみて下さい。startActivityForResult()は今は無効にしてますがご要望がありましたら有効にします。</p>
<p><a href="http://stachibana.biz/bin/TPDCallSample.zip">TPDCallSample.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1040</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【Android】Automatic Task Killerについて</title>
		<link>http://stachibana.biz/?p=1035</link>
		<comments>http://stachibana.biz/?p=1035#comments</comments>
		<pubDate>Mon, 17 May 2010 06:34:35 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[アプリケーション]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1035</guid>
		<description><![CDATA[
Android OSでは放っておくと意図しないアプリケーションが開いたままになることがあり、それが端末の動きのスピードを下げたり、バッテリーの消耗を招いたりすることがよくあります。このアプリケーションはそれらのアプリケーションを端末がスリープに入る際に強制終了するアプリケーションです。
簡単な設定を行えばあとは不要なタスクの心配をする必要はありません。面倒な手動でのタスク終了の機会を減らすことができます。もちろん、開発者やエキスパートの方向けに詳細な設定も可能なようになっており、以下のような設定が可能です。
・細かな通知オプション
・詳細なログの記録
・インストールされたアプリケーションの感知と自動マーク
・タスク終了の遅延、遅延時間
・目には見えない裏側のプロセスを終了
・最前面で起動中のアプリは終了しない
バグレポート、ご要望ありましたらお気軽にご連絡下さい。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://stachibana.biz/wp-content/uploads/2010/05/atk.jpg"><img src="http://stachibana.biz/wp-content/uploads/2010/05/atk-266x400.jpg" alt="" title="atk" width="266" height="400" class="aligncenter size-medium wp-image-1036" /></a></p>
<p>Android OSでは放っておくと意図しないアプリケーションが開いたままになることがあり、それが端末の動きのスピードを下げたり、バッテリーの消耗を招いたりすることがよくあります。このアプリケーションはそれらのアプリケーションを端末がスリープに入る際に強制終了するアプリケーションです。</p>
<p>簡単な設定を行えばあとは不要なタスクの心配をする必要はありません。面倒な手動でのタスク終了の機会を減らすことができます。もちろん、開発者やエキスパートの方向けに詳細な設定も可能なようになっており、以下のような設定が可能です。</p>
<p>・細かな通知オプション<br />
・詳細なログの記録<br />
・インストールされたアプリケーションの感知と自動マーク<br />
・タスク終了の遅延、遅延時間<br />
・目には見えない裏側のプロセスを終了<br />
・最前面で起動中のアプリは終了しない</p>
<p>バグレポート、ご要望ありましたらお気軽にご連絡下さい。</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1035</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>【Android】中古車検索+車種当てクイズをリリースしました。</title>
		<link>http://stachibana.biz/?p=1023</link>
		<comments>http://stachibana.biz/?p=1023#comments</comments>
		<pubDate>Tue, 11 May 2010 11:11:05 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Desire]]></category>
		<category><![CDATA[Dev Phone 1]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HT-03A]]></category>
		<category><![CDATA[Xperia]]></category>
		<category><![CDATA[アプリケーション]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1023</guid>
		<description><![CDATA[およそ3ヶ月ぶりの新アプリリリース。
今回はAndroid Application Award （A3，エーキューブ） 2010 Springに応募するために作っていたアプリを一般向けにもリリースする形です。
残念ながら現在はレイアウトを一部決めうちしていますのでXperiaでしか動かないと思うのですが(N1、Desire等でも画面が切れるとは思いますが大丈夫かもしれません)、需要があるようでしたらHT-03A等にも対応させます。
A3開催に当たってとりあえず何かは出そうと思っていたのですがもうAndroidアプリも相当数世に出ており、全く誰もやっていないことを探すのは大変でした。アイディアがかぶってしまうと私のように技術力で勝負できない人間は敵いませんので色々考えていたのですが、ターゲットを変えてみようということで膨らませ、ターゲットを子供に絞りました。
そうこうしているうちに親戚の子供がトミカが好きなのをちらっと聞いて、そこから膨らませて車の画像から車種を当てるクイズを思いつきました。
その子はまだ3歳なのですがトミカを並べてこれはハマー、これはランボルギーニ、とか言っていますので3歳〜小学校低学年の子くらいが一番やっていて楽しいかもしれませんね。
その位の子供がこのアプリを通じて文字・アルファベットを学習し、車への理解を深めてくれるようなきっかけになれればうれしいです。また、当然シンプルに中古車を検索する機能も付いておりますので大人の方でも普通にご利用頂けます。若い頃に乗っておられた車の話とか、楽しいですよね。
私も若い時は車が好きだったので車種の3択を作るときに役立ちました(笑)
以下、機能を箇条書きしておきます。大きく分けて4つのセクションがありますのでそれぞれ記載しておきます。

 ■ 中古車検索
 ・県別、車種別、ブランド別での中古車の検索
・検索結果から公式の見積もり・詳細ページへのリンク

 ■ 車種当てクイズ
 ・国産車をランダムに検索し、外観が似ている車種名３択の中から正解を選ぶクイズ
・問題となる車種の画像が最大5枚表示されるので、その写真をもとに車種名を解答します。
・問題となる車種はランダムに並べ替えされるので同じ問題が再度でることは少ないです。
・その為、問題のバリエーションが豊富で飽きが来ませんし、同じ車種でも年式の違い等で問題のバリエーションは豊富です。
・問題に解答するごとにポイントがたまります。連続正解するとさらにたくさんのポイントがたまります。
■ クイズの成績記録
・クイズの成績を記録できます。総解答数、誤解答数、最高連続正解数。
・最新の正解率を表示し、推移をグラフに表示させることができます。
・たまったポイントを確認できます。100ポイント毎にトミカを一台買ってあげる等すればモチベーションを持続させてくれるのではないでしょうか？
・間違えた問題を記録し、それをもとにWikipediaで検索したり、中古車を検索することができます。

 ■ トミカ検索
 ・楽天市場から車種名でのトミカの検索
・購入ページへのリンク
例によって今後もご意見等頂ければ色々な機能を加えていきたいと思っていますのでお気軽にご連絡下さい。ブログよりTwitterの方がリプライは早いと思います(^^) Twitterは右サイドバーに表示されていますので。
インストールはAndroid Marketからお願いします。
Androlib:中古車検索+車種当てクイズ v1.0 Application for Android &#124; Entertainment
Cyrket:中古車検索+車種当てクイズ &#8211; Cyrket
]]></description>
			<content:encoded><![CDATA[<p>およそ3ヶ月ぶりの新アプリリリース。</p>
<p>今回は<a href="http://itpro.nikkeibp.co.jp/android/aaa2010spring/index.html">Android Application Award （A3，エーキューブ） 2010 Spring</a>に応募するために作っていたアプリを一般向けにもリリースする形です。</p>
<p>残念ながら現在はレイアウトを一部決めうちしていますのでXperiaでしか動かないと思うのですが(N1、Desire等でも画面が切れるとは思いますが大丈夫かもしれません)、需要があるようでしたらHT-03A等にも対応させます。</p>
<p>A3開催に当たってとりあえず何かは出そうと思っていたのですがもうAndroidアプリも相当数世に出ており、全く誰もやっていないことを探すのは大変でした。アイディアがかぶってしまうと私のように技術力で勝負できない人間は敵いませんので色々考えていたのですが、ターゲットを変えてみようということで膨らませ、ターゲットを子供に絞りました。</p>
<p>そうこうしているうちに親戚の子供がトミカが好きなのをちらっと聞いて、そこから膨らませて車の画像から車種を当てるクイズを思いつきました。</p>
<p>その子はまだ3歳なのですがトミカを並べてこれはハマー、これはランボルギーニ、とか言っていますので3歳〜小学校低学年の子くらいが一番やっていて楽しいかもしれませんね。</p>
<p>その位の子供がこのアプリを通じて文字・アルファベットを学習し、車への理解を深めてくれるようなきっかけになれればうれしいです。また、当然シンプルに中古車を検索する機能も付いておりますので大人の方でも普通にご利用頂けます。若い頃に乗っておられた車の話とか、楽しいですよね。</p>
<p>私も若い時は車が好きだったので車種の3択を作るときに役立ちました(笑)</p>
<p>以下、機能を箇条書きしておきます。大きく分けて4つのセクションがありますのでそれぞれ記載しておきます。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/05/carsearch.png"><img class="aligncenter size-medium wp-image-1024" title="carsearch" src="http://stachibana.biz/wp-content/uploads/2010/05/carsearch-400x224.png" alt="" width="400" height="224" /></a><br />
<span style="color: #33cccc;"><strong> ■ 中古車検索</strong></span><strong><br />
</strong> ・県別、車種別、ブランド別での中古車の検索<br />
・検索結果から公式の見積もり・詳細ページへのリンク</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/05/quiz.png"><img class="aligncenter size-medium wp-image-1026" title="quiz" src="http://stachibana.biz/wp-content/uploads/2010/05/quiz-400x224.png" alt="" width="400" height="224" /></a><br />
<span style="color: #33cccc;"><strong> ■ 車種当てクイズ</strong></span><strong><br />
</strong> ・国産車をランダムに検索し、外観が似ている車種名３択の中から正解を選ぶクイズ<br />
・問題となる車種の画像が最大5枚表示されるので、その写真をもとに車種名を解答します。<br />
・問題となる車種はランダムに並べ替えされるので同じ問題が再度でることは少ないです。<br />
・その為、問題のバリエーションが豊富で飽きが来ませんし、同じ車種でも年式の違い等で問題のバリエーションは豊富です。<br />
・問題に解答するごとにポイントがたまります。連続正解するとさらにたくさんのポイントがたまります。</p>
<p><span style="color: #33cccc;"><strong>■ クイズの成績記録</strong></span><br />
・クイズの成績を記録できます。総解答数、誤解答数、最高連続正解数。<br />
・最新の正解率を表示し、推移をグラフに表示させることができます。<br />
・たまったポイントを確認できます。100ポイント毎にトミカを一台買ってあげる等すればモチベーションを持続させてくれるのではないでしょうか？<br />
・間違えた問題を記録し、それをもとにWikipediaで検索したり、中古車を検索することができます。</p>
<p><a href="http://stachibana.biz/wp-content/uploads/2010/05/tomica.png"><img class="aligncenter size-medium wp-image-1027" title="tomica" src="http://stachibana.biz/wp-content/uploads/2010/05/tomica-400x224.png" alt="" width="400" height="224" /></a><br />
<span style="color: #33cccc;"><strong> ■ トミカ検索</strong></span><strong><br />
</strong> ・楽天市場から車種名でのトミカの検索<br />
・購入ページへのリンク</p>
<p>例によって今後もご意見等頂ければ色々な機能を加えていきたいと思っていますのでお気軽にご連絡下さい。ブログよりTwitterの方がリプライは早いと思います(^^) Twitterは右サイドバーに表示されていますので。</p>
<p>インストールはAndroid Marketからお願いします。</p>
<p>Androlib:<a href="http://www.androlib.com/android.application.biz-stachibana-carquiz-DBnn.aspx">中古車検索+車種当てクイズ v1.0 Application for Android | Entertainment</a><br />
Cyrket:<a href="http://www.cyrket.com/p/android/biz.stachibana.CarQuiz/">中古車検索+車種当てクイズ &#8211; Cyrket</a></p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1023</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【Android】aidlを使ったActivityとService間のやりとりのサンプルコード</title>
		<link>http://stachibana.biz/?p=1021</link>
		<comments>http://stachibana.biz/?p=1021#comments</comments>
		<pubDate>Mon, 03 May 2010 06:35:52 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1021</guid>
		<description><![CDATA[何時間か悩んでできなかったのでTwitterでつぶやいてみたところ @esmasui さんに教えてもらいながらできるようになりました。
せっかくのなのでこちらにプロジェクトごと公開しておきます。
onCreateの中でbindServiceした後すぐにAidlに記述した関数を呼んでいたのですがこれがいけなかったようです。ServiceConnectionのonServiceConnected(ComponentName name, IBinder service)の中でIServiceConnection.Stub.asInterface(service);した後に呼んでやると無事呼べました。
このタイミングが未だによく分かってないのですがとりあえずできるようになってよかったです。しかしServiceは奥が深い。
@esmasui さんありがとうございました！
]]></description>
			<content:encoded><![CDATA[<p>何時間か悩んでできなかったのでTwitterでつぶやいてみたところ <a href="http://twitter.com/esmasui">@esmasui さん</a>に教えてもらいながらできるようになりました。</p>
<p>せっかくのなので<a href="http://stachibana.biz/bin/AidlSample.zip">こちら</a>にプロジェクトごと公開しておきます。</p>
<p>onCreateの中でbindServiceした後すぐにAidlに記述した関数を呼んでいたのですがこれがいけなかったようです。ServiceConnectionのonServiceConnected(ComponentName name, IBinder service)の中でIServiceConnection.Stub.asInterface(service);した後に呼んでやると無事呼べました。</p>
<p>このタイミングが未だによく分かってないのですがとりあえずできるようになってよかったです。しかしServiceは奥が深い。</p>
<p><a href="http://twitter.com/esmasui">@esmasui さん</a>ありがとうございました！</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1021</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DevFest 2010(京都会場)に行ってきます。</title>
		<link>http://stachibana.biz/?p=1011</link>
		<comments>http://stachibana.biz/?p=1011#comments</comments>
		<pubDate>Tue, 02 Mar 2010 04:04:12 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=1011</guid>
		<description><![CDATA[
先日解答したクイズの採点が行われ、無事に参加資格を得られたようなので京都まで日帰りで行ってきます。
Google Discussion Groupの得点が０だった方がいらっしゃるようですが私は普通に登録し、そのアドレスを解答欄に入力したような記憶があります。Androidアプリケーションは6.5万DLで☆４つのAutomatic Task Killerを入力したら６点もらえました。実績系の問題は解答によって差をつけているのですね。
何かそこまでする理由でもあるのでしょうかね？まあ当日を待ちます。
普段Twitterで交流のある方々も無事パスされたようなので会場で会えるのが楽しみです(^^)
]]></description>
			<content:encoded><![CDATA[<p><a href="http://stachibana.biz/wp-content/uploads/2010/03/名称未設定-11.png"><img src="http://stachibana.biz/wp-content/uploads/2010/03/名称未設定-11-400x360.png" alt="" title="名称未設定-1" width="400" height="360" class="aligncenter size-medium wp-image-1015" /></a></p>
<p><a href="http://stachibana.biz/?p=984">先日解答したクイズ</a>の採点が行われ、無事に参加資格を得られたようなので京都まで日帰りで行ってきます。</p>
<p>Google Discussion Groupの得点が０だった方がいらっしゃるようですが私は普通に登録し、そのアドレスを解答欄に入力したような記憶があります。Androidアプリケーションは6.5万DLで☆４つのAutomatic Task Killerを入力したら６点もらえました。実績系の問題は解答によって差をつけているのですね。</p>
<p>何かそこまでする理由でもあるのでしょうかね？まあ当日を待ちます。</p>
<p>普段Twitterで交流のある方々も無事パスされたようなので会場で会えるのが楽しみです(^^)</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=1011</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devfest 2010のQuizのソースを晒してみる</title>
		<link>http://stachibana.biz/?p=984</link>
		<comments>http://stachibana.biz/?p=984#comments</comments>
		<pubDate>Sun, 28 Feb 2010 05:37:10 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=984</guid>
		<description><![CDATA[暗号化はwgetで、パッチワークと漢字変換サーバーはJavaで書きました。
http://twitter.com/stachibana/status/9465013343
私は本やリファレンスを読まずに書いてしまう人なので真似しない方がいいと思いますよ。
他にも公開されている方がいらっしゃるようなので拝見させてもらって勉強します。
まずパッチワーク。各マスから同じ文字が隣にあるマスを再帰的になめてIDを振っていき、最後に各行を数えてます。何の工夫もない、1.8秒くらいかかるコードです。

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Main {
	static ArrayList&#60;String&#62; source = new ArrayList&#60;String&#62;();
	static HashMap&#60;String, String&#62; doneHash = new HashMap&#60;String, String&#62;();
	static int x = 0;
	static int y = 0;
	static int cur = 0;
	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		try{
			BufferedReader br = new BufferedReader(new FileReader(args[0]));
			String line;
			while ((line = br.readLine()) != null){
				source.add(line);
			}
		} [...]]]></description>
			<content:encoded><![CDATA[<p>暗号化はwgetで、パッチワークと漢字変換サーバーはJavaで書きました。</p>
<p><a href="http://twitter.com/stachibana/status/9465013343">http://twitter.com/stachibana/status/9465013343</a></p>
<p>私は本やリファレンスを読まずに書いてしまう人なので真似しない方がいいと思いますよ。</p>
<p>他にも公開されている方がいらっしゃるようなので拝見させてもらって勉強します。</p>
<p>まずパッチワーク。各マスから同じ文字が隣にあるマスを再帰的になめてIDを振っていき、最後に各行を数えてます。何の工夫もない、1.8秒くらいかかるコードです。</p>
<pre class="brush: java;">
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Main {
	static ArrayList&lt;String&gt; source = new ArrayList&lt;String&gt;();
	static HashMap&lt;String, String&gt; doneHash = new HashMap&lt;String, String&gt;();
	static int x = 0;
	static int y = 0;
	static int cur = 0;
	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		try{
			BufferedReader br = new BufferedReader(new FileReader(args[0]));
			String line;
			while ((line = br.readLine()) != null){
				source.add(line);
			}
		} catch (Exception e) {
			System.out.println(&quot;Invalid Parameter&quot;);
		}
		for(int y = 0; y &lt; source.size(); y++){
			String str = source.get(y);
			for(int x = 0; x &lt; str.length(); x++)
			{
				String _cur = &quot;&quot; + cur;
				checkRecursively(str.substring(x, x+1), y, x, _cur);
				cur++;
			}
		}
		HashMap&lt;String, Integer&gt; countMap = new HashMap&lt;String, Integer&gt;();
		ArrayList&lt;HashMap&lt;String, Integer&gt;&gt; countArray = new ArrayList&lt;HashMap&lt;String,Integer&gt;&gt;();
		int column = source.get(0).length();
		for(int i = 0; i &lt; source.size(); i++){
			String str = &quot;&quot;;
			for(int j = 0; j &lt; column; j++){
				if(doneHash.get(&quot;&quot; + i + &quot;:&quot;+ j) != null){
					str = doneHash.get(&quot;&quot; + i + &quot;:&quot;+ j);
					if(countMap.get(str) == null){
						countMap.put(str, 1);
					}else{
						countMap.put(str, countMap.get(str)+1);
					}
				}
			}
		}
		Set set = countMap.keySet();
		Iterator it = set.iterator();
		String keyStr = &quot;&quot;;
		while(it.hasNext()){
			HashMap&lt;String, Integer&gt; h = new HashMap&lt;String, Integer&gt;();
			keyStr = (String)it.next();
			h.put(&quot;id&quot;, Integer.parseInt(keyStr));
			h.put(&quot;count&quot;, countMap.get(keyStr));
			countArray.add(h);
		}
		Comparator&lt;HashMap&lt;String, Integer&gt;&gt; compToUse = new Comparator&lt;HashMap&lt;String, Integer&gt;&gt;(){
			public int compare(HashMap&lt;String, Integer&gt; object1, HashMap&lt;String, Integer&gt; object2) {
						Integer t1int = object1.get(&quot;count&quot;);
						Integer t2int = object2.get(&quot;count&quot;);
						return t2int.compareTo(t1int);
			}
		};
		Collections.sort(countArray, compToUse);
		String maxId = &quot;&quot; + countArray.get(0).get(&quot;id&quot;);
		String answer = &quot;&quot;;
		for(int i = 0; i &lt; source.size(); i++){
			int count = 0;
			for(int j = 0; j &lt; column; j++){
				if(doneHash.get(&quot;&quot; + i + &quot;:&quot;+ j) != null){
					if(doneHash.get(&quot;&quot; + i + &quot;:&quot;+ j).equals(maxId)){
						count++;
					}
				}
			}
			answer += (&quot;&quot; + count + &quot;\n&quot;);
		}
		long end = System.currentTimeMillis();
		System.out.println(answer + &quot;\n by &quot; + (end - start) + &quot; miliseconds&quot;);
	}

	public synchronized static void checkRecursively(String str, int _y, int _x, String _cur){
		if(doneHash.get(&quot;&quot; + _y + &quot;:&quot; + _x) == null){
			doneHash.put(&quot;&quot; + _y + &quot;:&quot; + _x, _cur);
			try{
				if(str.equals(source.get(_y).substring(_x-1, _x))){
					checkRecursively(source.get(_y).substring(_x-1, _x), _y, _x-1, _cur);
				}
			} catch(Exception e){}
			try{
				if(str.equals(source.get(_y).substring(_x+1, _x+2))){
					checkRecursively(source.get(_y).substring(_x+1, _x+2), _y, _x+1, _cur);
				}
			} catch(Exception e){}
			try{
				if(str.equals(source.get(_y-1).substring(_x, _x+1))){
					checkRecursively(source.get(_y-1).substring(_x, _x+1), _y-1, _x, _cur);
				}
			} catch(Exception e){}
			try{
				if(str.equals(source.get(_y+1).substring(_x, _x+1))){
					checkRecursively(source.get(_y+1).substring(_x, _x+1), _y+1, _x, _cur);
				}
			} catch(Exception e){}
		}
	}

}
</pre>
<p>続いて漢字変換サーバー。DecimalFormat(&#8220;####,####&#8221;)でフォーマットしたあと各要素を万未満の数値に変換、その後億や兆をつけて返してます。</p>
<pre class="brush: java;">
package biz.stachibana.quiz;
import java.text.DecimalFormat;

public class NumToKanji {

	static char[] c = &quot;TEHMPKRNDQ&quot;.toCharArray();
	static char[] lc = &quot;ABUFXZ&quot;.toCharArray();

	public static String getResult(long i){
		String result = &quot;&quot;;
		DecimalFormat numFormat = new DecimalFormat(&quot;####,####&quot;);
		String str = numFormat.format(i);

		String[] al = str.split(&quot;,&quot;);

		if(al.length == 1){
			result = makeFirst(al[0]);
		}
		else if(al.length == 2){
			result += (makeFirst(al[0]) + Character.toString(lc[3]) + makeFirst(al[1]));
		}
		else if(al.length == 3){
			if(!makeFirst(al[2]).equals(&quot;&quot;)){
				result = makeFirst(al[2]);
			}
			if(!makeFirst(al[1]).equals(&quot;&quot;)){
				result = (makeFirst(al[1]) + Character.toString(lc[3]) + result);
			}
			result = (makeFirst(al[0]) + Character.toString(lc[4]) + result);
		}
		else if(al.length == 4){
			if(!makeFirst(al[3]).equals(&quot;&quot;)){
				result = makeFirst(al[3]);
			}
			if(!makeFirst(al[2]).equals(&quot;&quot;)){
				result = (makeFirst(al[2]) + Character.toString(lc[3]) + result);
			}
			if(!makeFirst(al[1]).equals(&quot;&quot;)){
				result = (makeFirst(al[1]) + Character.toString(lc[4]) + result);
			}
			result = (makeFirst(al[0]) + Character.toString(lc[5]) + result);
		}
		else{
			return &quot;parameter must be less than 9,999,999,999,999,999&quot;;
		}
		return result;
	}

	public static String makeFirst(String str){
		String result = &quot;&quot;;

		if(str.length() == 4){
			if(str.substring(0, 1).equals(&quot;0&quot;)){}
			else if(str.substring(0, 1).equals(&quot;1&quot;)){
				result += Character.toString(lc[2]);
			}
			else{
				result += (Character.toString(c[Integer.parseInt(str.substring(0, 1))]) + Character.toString(lc[2]));
			}
			if(str.substring(1, 2).equals(&quot;0&quot;)){}
			else if(str.substring(1, 2).equals(&quot;1&quot;)){
				result += Character.toString(lc[1]);
			}
			else{
				result += (Character.toString(c[Integer.parseInt(str.substring(1, 2))]) + Character.toString(lc[1]));
			}
			if(str.substring(2, 3).equals(&quot;0&quot;)){}
			else if(str.substring(2, 3).equals(&quot;1&quot;)){
				result += Character.toString(lc[0]);
			}
			else{
				result += (Character.toString(c[Integer.parseInt(str.substring(2, 3))]) + Character.toString(lc[0]));
			}
			if(!str.substring(3, 4).equals(&quot;0&quot;)) result += Character.toString(c[Integer.parseInt(str.substring(3, 4))]);
		}
		else if(str.length() == 3){
			if(str.substring(0, 1).equals(&quot;0&quot;)){}
			else if(str.substring(0, 1).equals(&quot;1&quot;)){
				result += Character.toString(lc[1]);
			}
			else{
				result += (Character.toString(c[Integer.parseInt(str.substring(0, 1))]) + Character.toString(lc[1]));
			}
			if(str.substring(1, 2).equals(&quot;0&quot;)){}
			else if(str.substring(1, 2).equals(&quot;1&quot;)){
				result += Character.toString(lc[0]);
			}
			else{
				result += (Character.toString(c[Integer.parseInt(str.substring(1, 2))]) + Character.toString(lc[0]));
			}
			if(!str.substring(2, 3).equals(&quot;0&quot;)) result += Character.toString(c[Integer.parseInt(str.substring(2, 3))]);
		}
		else if(str.length() == 2){
			if(str.substring(0, 1).equals(&quot;0&quot;)){}
			else if(str.substring(0, 1).equals(&quot;1&quot;)){
				result += Character.toString(lc[0]);
			}
			else{
				result += (Character.toString(c[Integer.parseInt(str.substring(0, 1))]) + Character.toString(lc[0]));
			}
			if(!str.substring(1, 2).equals(&quot;0&quot;)) result += Character.toString(c[Integer.parseInt(str.substring(1, 2))]);
		}
		else{
			result += Character.toString(c[Integer.parseInt(str.substring(0, 1))]);
		}

		return result;
	}
}
</pre>
<p>コード書く系の３問は正解しましたが、ハッカソン、Issue Tracker、Chrome Extensionはだめ。AndroidはAutomatic Task Killer出しておきました。</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=984</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高松でAndroid関係の講師をしてきました。</title>
		<link>http://stachibana.biz/?p=972</link>
		<comments>http://stachibana.biz/?p=972#comments</comments>
		<pubDate>Tue, 16 Feb 2010 10:33:26 +0000</pubDate>
		<dc:creator>tachibana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[アプリケーション]]></category>
		<category><![CDATA[勉強会]]></category>
		<category><![CDATA[講師]]></category>

		<guid isPermaLink="false">http://stachibana.biz/?p=972</guid>
		<description><![CDATA[
2/13(土)、Shikoku GTUG #4 in Kagawaで講師をしてきました。
講師というとおおげさですかね。まあ資料を作って発表するような会です。
プレゼンは大学時代はよくやってましたが仕事でやることはめったになく、どちらかというと敬遠しがちだったのですが、今年のテーマは｢刺激｣に決めているので思い切って参加してきました。
運営、スタッフの皆様、いい機会を与えて頂きありがとうございました。お疲れ様でした。
特に、依頼を下さった@T_1000_Freeさん（→ブログ）には感謝しています。機会を与えて下さった上にサンポートで迷っているところを救っていただきました。
また、前回の広島でもお世話になった@LuckOfWiseさん（→ブログ）、@Toro_kunさん（→ブログ）とは懇親会で熱いお話が出来て楽しかったです。
全員の方の連絡先が分かりませんし、勝手に紹介すると問題のある方もいらっしゃるようなのでこのような形で失礼致します。
やはり聞き手の方が熱心に聴いてくださっているのが伝わると話している方も楽しく、テンションが上がってしまうものですね。時間を少しオーバーしてしまいました。ご迷惑をおかけし申し訳なく思っています。
しかし、発表の後何人かの方に質問を頂いたり、その中でも私の発表を聞いて開発を始めた方もいらっしゃるようで(！！)、発表した方としてはこんなに嬉しいことはありません。
全てというわけにはいかないと思いますが、今後もできるだけ参加していきたいと思っていますのでもしまたお会いできることがありましたらよろしくお願いいたします。
懇親会に参加された方も多かったので全ての方とお話できたわけではありませんが、有意義な時間をすごせました！
スライドも公開する予定なので見てもらえたらうれしいです！
A3に出すアプリの構想はもうできているのでぼちぼちと、更に何か思いついたら作ろうと思っています。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://stachibana.biz/wp-content/uploads/2010/02/e58699e79c9f-2.jpg"><img src="http://stachibana.biz/wp-content/uploads/2010/02/e58699e79c9f-2-400x300.jpg" alt="e58699e79c9f-2" title="e58699e79c9f-2" width="400" height="300" class="aligncenter size-medium wp-image-977" /></a></p>
<p>2/13(土)、<a href="http://groups.google.co.jp/group/shikokugtug/web/shikoku-gtug-4-in-kagawa?pli=1">Shikoku GTUG #4 in Kagawa</a>で講師をしてきました。</p>
<p>講師というとおおげさですかね。まあ資料を作って発表するような会です。</p>
<p>プレゼンは大学時代はよくやってましたが仕事でやることはめったになく、どちらかというと敬遠しがちだったのですが、今年のテーマは｢刺激｣に決めているので思い切って参加してきました。</p>
<p>運営、スタッフの皆様、いい機会を与えて頂きありがとうございました。お疲れ様でした。</p>
<p>特に、依頼を下さった@T_1000_Freeさん（<a href="http://hobby.txt-nifty.com/t1000/">→ブログ</a>）には感謝しています。機会を与えて下さった上にサンポートで迷っているところを救っていただきました。</p>
<p>また、前回の広島でもお世話になった@LuckOfWiseさん（<a href="http://www.luck-of-wise.com/">→ブログ</a>）、@Toro_kunさん（<a href="http://switch.dip.jp/toro/blog/">→ブログ</a>）とは懇親会で熱いお話が出来て楽しかったです。</p>
<p>全員の方の連絡先が分かりませんし、勝手に紹介すると問題のある方もいらっしゃるようなのでこのような形で失礼致します。</p>
<p>やはり聞き手の方が熱心に聴いてくださっているのが伝わると話している方も楽しく、テンションが上がってしまうものですね。時間を少しオーバーしてしまいました。ご迷惑をおかけし申し訳なく思っています。</p>
<p>しかし、発表の後何人かの方に質問を頂いたり、その中でも私の発表を聞いて開発を始めた方もいらっしゃるようで(！！)、発表した方としてはこんなに嬉しいことはありません。</p>
<p>全てというわけにはいかないと思いますが、今後もできるだけ参加していきたいと思っていますのでもしまたお会いできることがありましたらよろしくお願いいたします。</p>
<p>懇親会に参加された方も多かったので全ての方とお話できたわけではありませんが、有意義な時間をすごせました！</p>
<p>スライドも公開する予定なので見てもらえたらうれしいです！</p>
<p>A3に出すアプリの構想はもうできているのでぼちぼちと、更に何か思いついたら作ろうと思っています。</p>
]]></content:encoded>
			<wfw:commentRss>http://stachibana.biz/?feed=rss2&amp;p=972</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
