<?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>ゆるやかなウェブ &#187; ソフトウェア関連</title>
	<atom:link href="http://www.yuruyakana.com/category/it-coordinator/%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%a2%e9%80%a3/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yuruyakana.com</link>
	<description>ＩＴコーディネータはＩＴ経営を実現するプロフェッショナルです</description>
	<lastBuildDate>Thu, 26 Jan 2012 04:26:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>iPad 2 でアプリ整理之図</title>
		<link>http://www.yuruyakana.com/2011/06/ipad-2-%e3%81%a7%e3%82%a2%e3%83%97%e3%83%aa%e6%95%b4%e7%90%86%e4%b9%8b%e5%9b%b3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ipad-2-%25e3%2581%25a7%25e3%2582%25a2%25e3%2583%2597%25e3%2583%25aa%25e6%2595%25b4%25e7%2590%2586%25e4%25b9%258b%25e5%259b%25b3</link>
		<comments>http://www.yuruyakana.com/2011/06/ipad-2-%e3%81%a7%e3%82%a2%e3%83%97%e3%83%aa%e6%95%b4%e7%90%86%e4%b9%8b%e5%9b%b3/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 11:10:05 +0000</pubDate>
		<dc:creator>masa_ueberall</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[閑話]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=325</guid>
		<description><![CDATA[iPad2 で使っているアプリを整理しようとした図。 手書きを iBrainstorm でまとめるの図]]></description>
			<content:encoded><![CDATA[<p>iPad2 で使っているアプリを整理しようとした図。</p>
<p><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2011/06/20110624-193002.jpg" rel="lightbox[325]"><img class="alignnone size-full" src="http://www.yuruyakana.com/blog/wp-content/uploads/2011/06/20110624-193002.jpg" alt="20110624-193002.jpg" /></a> 手書きを iBrainstorm でまとめるの図</p>
<div class="wp-caption alignleft" style="width: 748px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2011/06/20110624-193025.jpg" rel="lightbox[325]"><img class="size-full " title="iBrainstorm で作成" src="http://www.yuruyakana.com/blog/wp-content/uploads/2011/06/20110624-193025.jpg" alt="20110624-193025.jpg" width="738" height="538" /></a><p class="wp-caption-text">iBrainstorm で作成</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2011/06/ipad-2-%e3%81%a7%e3%82%a2%e3%83%97%e3%83%aa%e6%95%b4%e7%90%86%e4%b9%8b%e5%9b%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>このごろの本の買い方・読み方</title>
		<link>http://www.yuruyakana.com/2010/12/%e3%81%93%e3%81%ae%e3%81%94%e3%82%8d%e3%81%ae%e6%9c%ac%e3%81%ae%e8%b2%b7%e3%81%84%e6%96%b9%e3%83%bb%e8%aa%ad%e3%81%bf%e6%96%b9/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2593%25e3%2581%25ae%25e3%2581%2594%25e3%2582%258d%25e3%2581%25ae%25e6%259c%25ac%25e3%2581%25ae%25e8%25b2%25b7%25e3%2581%2584%25e6%2596%25b9%25e3%2583%25bb%25e8%25aa%25ad%25e3%2581%25bf%25e6%2596%25b9</link>
		<comments>http://www.yuruyakana.com/2010/12/%e3%81%93%e3%81%ae%e3%81%94%e3%82%8d%e3%81%ae%e6%9c%ac%e3%81%ae%e8%b2%b7%e3%81%84%e6%96%b9%e3%83%bb%e8%aa%ad%e3%81%bf%e6%96%b9/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 11:17:42 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[DRM]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[Kindle for iPad]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/2010/12/%e3%81%93%e3%81%ae%e3%81%94%e3%82%8d%e3%81%ae%e6%9c%ac%e3%81%ae%e8%b2%b7%e3%81%84%e6%96%b9%e3%83%bb%e8%aa%ad%e3%81%bf%e6%96%b9/</guid>
		<description><![CDATA[J・G・バラード の『人生の奇跡』の書評を日経新聞で見て、バラードが上海で育ったという記述が気になり、ちょっと読もうかと、Amazon.co.jp で値段を見ると、2,310円。フム、ちと高いか。kindle版で $9. [...]]]></description>
			<content:encoded><![CDATA[<p>J・G・バラード の『人生の奇跡』の書評を日経新聞で見て、バラードが上海で育ったという記述が気になり、ちょっと読もうかと、Amazon.co.jp で値段を見ると、2,310円。フム、ちと高いか。kindle版で $9.68 。Amazon.com で中古のハードカバーが2ドルぐらい。ペイパーバックが0.2ドルぐらい。航空便料金を払うほどの好奇心もわかないし…</p>
<p>結局、kindle for iPad 版で購入。安・即・単といったところか。</p>
<p>電子図書に関する話題がいろいろあって、来年の5月には EPUB が縦書き等にも対応する仕様になるそうなので、楽しみにしています。それまでは、横文字の電子書籍が便利に使えればよい。O&#8217;Reilly本は大量にiTunes で800円ぐらいから購入できるので、製本に比べて安くて助かりますが、まだiPhone用のアプリなので、iPadで読みたい場合、ちと不便です。</p>
<p><a title="How To Read O'Reilly eBooks..." href="http://answers.oreilly.com/topic/1813-how-to-read-o%E2%80%99reilly-ebooks-on-the-ipad/" target="_blank">オライリーの回答サイト</a> でiPadでオライリーのeBooksを読む方法が書かれています。彼らの本には、DRM<sup><a href="http://www.yuruyakana.com/2010/12/%e3%81%93%e3%81%ae%e3%81%94%e3%82%8d%e3%81%ae%e6%9c%ac%e3%81%ae%e8%b2%b7%e3%81%84%e6%96%b9%e3%83%bb%e8%aa%ad%e3%81%bf%e6%96%b9/#footnote_0_259" id="identifier_0_259" class="footnote-link footnote-identifier-link" title="Digital Rights Management">1</a></sup> の機能を含めていないので手順に従って、EPUBを抜き出すことができます。そして、iPad上のiBooksに登録すると 下記の右図のように俄然読みやすくなります。</p>
<p style="text-align: center;"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2010/12/iPhone_ebook1.jpg" rel="lightbox[259]"><img class="size-medium wp-image-261 alignleft" title="iPhone_ebook1" src="http://www.yuruyakana.com/blog/wp-content/uploads/2010/12/iPhone_ebook1-225x300.jpg" alt="iPhoneでオライリーのeBookアプリ" width="225" height="300" /></a><span style="font-size: xx-large;"><strong> </strong></span> <a href="http://www.yuruyakana.com/blog/wp-content/uploads/2010/12/iPhone_ebook2.jpg" rel="lightbox[259]"><img class="size-medium wp-image-262 aligncenter" title="iPhone_ebook2" src="http://www.yuruyakana.com/blog/wp-content/uploads/2010/12/iPhone_ebook2-225x300.jpg" alt="iPad上でEPUB" width="225" height="300" /></a></p>
<p>では よいお年を お迎えください。</p>
<ol class="footnotes"><li id="footnote_0_259" class="footnote">Digital Rights Management</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2010/12/%e3%81%93%e3%81%ae%e3%81%94%e3%82%8d%e3%81%ae%e6%9c%ac%e3%81%ae%e8%b2%b7%e3%81%84%e6%96%b9%e3%83%bb%e8%aa%ad%e3%81%bf%e6%96%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>思いついたらiPadで</title>
		<link>http://www.yuruyakana.com/2010/06/%e6%80%9d%e3%81%84%e3%81%a4%e3%81%84%e3%81%9f%e3%82%89ipad%e3%81%a7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2580%259d%25e3%2581%2584%25e3%2581%25a4%25e3%2581%2584%25e3%2581%259f%25e3%2582%2589ipad%25e3%2581%25a7</link>
		<comments>http://www.yuruyakana.com/2010/06/%e6%80%9d%e3%81%84%e3%81%a4%e3%81%84%e3%81%9f%e3%82%89ipad%e3%81%a7/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 09:24:50 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[instaviz]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=232</guid>
		<description><![CDATA[iPhone の時から使えるんだけど、太い指では肩が凝るだけだった Instaviz というソフトがあります。昔ならナプキンとか裏紙にちょこちょこと書き直しながら、あーでもないこーでもないとメモしていたフローチャートなん [...]]]></description>
			<content:encoded><![CDATA[<p>iPhone の時から使えるんだけど、太い指では肩が凝るだけだった Instaviz というソフトがあります。昔ならナプキンとか裏紙にちょこちょこと書き直しながら、あーでもないこーでもないとメモしていたフローチャートなんかが iPad でストレスなしのレスポンスで指先で作ることができます。このスキィーとした感覚を経験したら、もう元には戻れないですね。</p>
<p>iPad で思いついたことを書き出しといて、Box.net に書き出しといたら後は、コラボでもなんでもお好みのままにで、生産性が上がると良いですね。</p>

<a href='http://www.yuruyakana.com/2010/06/%e6%80%9d%e3%81%84%e3%81%a4%e3%81%84%e3%81%9f%e3%82%89ipad%e3%81%a7/instaviz1/' title='Instaviz1'><img width="150" height="150" src="http://www.yuruyakana.com/blog/wp-content/uploads/2010/06/Instaviz1-150x150.png" class="attachment-thumbnail" alt="Instaviz1" title="Instaviz1" /></a>
<a href='http://www.yuruyakana.com/2010/06/%e6%80%9d%e3%81%84%e3%81%a4%e3%81%84%e3%81%9f%e3%82%89ipad%e3%81%a7/instaviz2/' title='Instaviz2'><img width="150" height="150" src="http://www.yuruyakana.com/blog/wp-content/uploads/2010/06/Instaviz2-150x150.png" class="attachment-thumbnail" alt="Instaviz2" title="Instaviz2" /></a>
<a href='http://www.yuruyakana.com/2010/06/%e6%80%9d%e3%81%84%e3%81%a4%e3%81%84%e3%81%9f%e3%82%89ipad%e3%81%a7/instaviz3/' title='Instaviz3'><img width="150" height="150" src="http://www.yuruyakana.com/blog/wp-content/uploads/2010/06/Instaviz3-150x150.png" class="attachment-thumbnail" alt="Instaviz3" title="Instaviz3" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2010/06/%e6%80%9d%e3%81%84%e3%81%a4%e3%81%84%e3%81%9f%e3%82%89ipad%e3%81%a7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eBook が身近だわ</title>
		<link>http://www.yuruyakana.com/2009/11/ebook-%e3%81%8c%e8%ba%ab%e8%bf%91%e3%81%a0%e3%82%8f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ebook-%25e3%2581%258c%25e8%25ba%25ab%25e8%25bf%2591%25e3%2581%25a0%25e3%2582%258f</link>
		<comments>http://www.yuruyakana.com/2009/11/ebook-%e3%81%8c%e8%ba%ab%e8%bf%91%e3%81%a0%e3%82%8f/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 11:28:32 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ITコーディネータ]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[calibre]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[Kindle for iPhone]]></category>
		<category><![CDATA[Kindle for PC]]></category>
		<category><![CDATA[sigil]]></category>
		<category><![CDATA[XBRL]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=161</guid>
		<description><![CDATA[Want to read your ebooks on the Kindle, iPhone, or Sony Reader? なんてことで、最近購入している本の中にもやたらと ebook が増えてきたなー！ファイル形式 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: large;">Want to read your ebooks on the Kindle, iPhone, or Sony Reader?</span></p>
<p>なんてことで、最近購入している本の中にもやたらと ebook が増えてきたなー！ファイル形式も PDF だけじゃなくて、epub<sup><a href="http://www.yuruyakana.com/2009/11/ebook-%e3%81%8c%e8%ba%ab%e8%bf%91%e3%81%a0%e3%82%8f/#footnote_0_161" id="identifier_0_161" class="footnote-link footnote-identifier-link" title="オープンな電子書籍ファイルフォーマット規格">1</a></sup> , mobi, iPhone用 等々。</p>
<p>最近は、iPhone 用に STANZA とか O&#8217;Reilley バク本を DL<sup><a href="http://www.yuruyakana.com/2009/11/ebook-%e3%81%8c%e8%ba%ab%e8%bf%91%e3%81%a0%e3%82%8f/#footnote_1_161" id="identifier_1_161" class="footnote-link footnote-identifier-link" title="ダウンロード">2</a></sup> して、如実に目の筋肉が弱っているのが実感できる日々です。モバイル・ディバイスは iPhone を日常使っているので、Kindle には食指が動かなかったのだけど、今週 Kindle For PC というソフトウェアを提供するということなので、早速 DL してインストールしてみました。先月発売の XBRL 実装がらみの解説本が、Kindle 版として出ているのでチョイス。</p>
<p><a title="Amazon で商品の詳細を確認する" href="http://www.amazon.co.jp/XBRL-Dummies-Business-Personal-Finance/dp/0470499796%3FSubscriptionId%3D038NZJ5FX57G706Q3382%26tag%3Dyuruyakanaweb-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0470499796"><img src="http://ecx.images-amazon.com/images/I/51qdxzArgDL._SL160_.jpg" alt="XBRL For Dummies (For Dummies (Business &amp; Personal Finance))" /></a><br />
この本、ペーパだと ￥2,808 なんだけど、Kindle 版だと <span style="font-family: verdana,arial,helvetica;"><span style="font-family: verdana,arial,helvetica;"> $    17.83　（約１，６００円ぐらいかな）でした。</span></span></p>
<p>Kindle For PC　は複数のPCでインストールして使うことができるので、まあ腰が痛くならないので良いんだけど。epub のコンテンツフォルダーを共有しないと、この前どこ読んでたっけということになるのが目に見えてるし。Evernote にコンテンツフォルダー置いてみようかな。ああ、めんどいやっちゃ。米国の iTunes App Store には、Kindle For iPhone がもう DL できるのに、日本じゃまだ駄目と検索で言われた。はよーしてんか！！！即、乗り換えるし。</p>
<ol class="footnotes"><li id="footnote_0_161" class="footnote">オープンな電子書籍ファイルフォーマット規格</li><li id="footnote_1_161" class="footnote">ダウンロード</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/11/ebook-%e3%81%8c%e8%ba%ab%e8%bf%91%e3%81%a0%e3%82%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>空白[%20]の呪縛</title>
		<link>http://www.yuruyakana.com/2009/10/%e7%a9%ba%e7%99%bd%20%e3%81%ae%e5%91%aa%e7%b8%9b/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25a9%25ba%25e7%2599%25bd%2520%25e3%2581%25ae%25e5%2591%25aa%25e7%25b8%259b</link>
		<comments>http://www.yuruyakana.com/2009/10/%e7%a9%ba%e7%99%bd%20%e3%81%ae%e5%91%aa%e7%b8%9b/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 12:25:37 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ITコーディネータ]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=158</guid>
		<description><![CDATA[NetBeans 上で JavaFX のサンプルプログラムをコンパイルしようとしたら、出ました空白の呪縛が。 例えば、C:/Documents and Settings/purapura とかの文字の間にあるスペース。通 [...]]]></description>
			<content:encoded><![CDATA[<p>NetBeans 上で JavaFX のサンプルプログラムをコンパイルしようとしたら、出ました空白の呪縛が。<br />
例えば、C:/Documents and Settings/purapura とかの文字の間にあるスペース。通常は、%20 に置き換えれば問題ないはずなんだけど、NetBeans の 6.7.1 でも 6.8 Beta でも C: のコロンが文字化けして、コンパイルできない。</p>
<p>ほんでもって、いろいろいじった結果、下記の方法で無事コンパイルできました。同様の躓きを経験されている方はご参考まで。</p>
<p>nbproject フォルダー内の project.properties に main.class=（ソースパッケージ名） を書いておくと、jnlp.codebase.url=file:/c:ぷらぷらなんて自動で付加されて、コンパイルOKでした。</p>
<p>上記の事象は、XP 上の NetBeans で起こりましたが、Vista 上ではきちんと自動で main.class が設定されていました。なんでやねん？？</p>
<p>ちなみに JavaFX のサンプルプログラムは、下記の本を参考にしています。</p>
<p><a title="Amazon で商品の詳細を確認する" href="http://www.amazon.co.jp/JavaFX-Action-Meap-Simon-Morris/dp/1933988991%3FSubscriptionId%3D038NZJ5FX57G706Q3382%26tag%3Dyuruyakanaweb-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988991"><img src="http://ecx.images-amazon.com/images/I/51Hsg%2Bg03HL._SL160_.jpg" alt="JavaFX in Action: Meap Edition" /></a> Amazon ではまだ予約のみのようですね。私は、eBook 即入手でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/10/%e7%a9%ba%e7%99%bd%20%e3%81%ae%e5%91%aa%e7%b8%9b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>リストからFreeMindへ</title>
		<link>http://www.yuruyakana.com/2009/08/%e3%83%aa%e3%82%b9%e3%83%88%e3%81%8b%e3%82%89freemind%e3%81%b8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2583%25aa%25e3%2582%25b9%25e3%2583%2588%25e3%2581%258b%25e3%2582%2589freemind%25e3%2581%25b8</link>
		<comments>http://www.yuruyakana.com/2009/08/%e3%83%aa%e3%82%b9%e3%83%88%e3%81%8b%e3%82%89freemind%e3%81%b8/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 06:35:24 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ITコーディネータ]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[FreeMind]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=134</guid>
		<description><![CDATA[リストから FreeMind へ変換する用途を思いつかないけど（面倒だからね）、昨日の続きとして、こういう方法もあるよということで紹介したいと思います。 FreeMind の ｍｍファイルは、XML 形式なので Groo [...]]]></description>
			<content:encoded><![CDATA[<p>リストから FreeMind へ変換する用途を思いつかないけど（面倒だからね）、昨日の続きとして、こういう方法もあるよということで紹介したいと思います。</p>
<p>FreeMind の ｍｍファイルは、XML 形式なので Groovy で XML を作成してあげれば良いだけです。<br />
例えば、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">def</span> sw <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">StringWriter</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #000000; font-weight: bold;">def</span> mm <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> groovy.<span style="color: #006600;">xml</span>.<span style="color: #006600;">MarkupBuilder</span><span style="color: #66cc66;">&#40;</span>sw<span style="color: #66cc66;">&#41;</span>
mm.<span style="color: #006600;">map</span><span style="color: #66cc66;">&#40;</span>version:<span style="color: #ff0000;">'0.9.0'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
    node<span style="color: #66cc66;">&#40;</span>TEXT:<span style="color: #ff0000;">&quot;Create FreeMind&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        node<span style="color: #66cc66;">&#40;</span>POSITION:<span style="color: #ff0000;">&quot;right&quot;</span>,TEXT:<span style="color: #ff0000;">&quot;Java&quot;</span><span style="color: #66cc66;">&#41;</span>
        node<span style="color: #66cc66;">&#40;</span>POSITION:<span style="color: #ff0000;">&quot;left&quot;</span>,TEXT:<span style="color: #ff0000;">&quot;Groovy&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            node<span style="color: #66cc66;">&#40;</span>TEXT:<span style="color: #ff0000;">&quot;なんじゃ&quot;</span><span style="color: #66cc66;">&#41;</span>
            node<span style="color: #66cc66;">&#40;</span>TEXT:<span style="color: #ff0000;">&quot;もんじゃ&quot;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">def</span> f <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">File</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;fm_sample.mm&quot;</span><span style="color: #66cc66;">&#41;</span>
f.<span style="color: #FFCC33;">write</span><span style="color: #66cc66;">&#40;</span>sw.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p>で、こんな感じになります。</p>
<div id="attachment_139" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/fm_sample.png" rel="lightbox[134]"><img class="size-medium wp-image-139" title="fm_sample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/fm_sample-300x40.png" alt="fm_sample" width="300" height="40" /></a><p class="wp-caption-text">fm_sample</p></div>
<p>簡単だけど、面白くないですよね。リストから groovy ファイルの中に XML 形式 に手動で置きなおしているのがネックですね。上記プログラムリスト内の MarkupBuilder の代わりに StreamingMarkupBuilder と XSLT<sup><a href="http://www.yuruyakana.com/2009/08/%e3%83%aa%e3%82%b9%e3%83%88%e3%81%8b%e3%82%89freemind%e3%81%b8/#footnote_0_134" id="identifier_0_134" class="footnote-link footnote-identifier-link" title="XMLによって記述された文書を他のXML文書に変換するための簡易言語">1</a></sup> を使って、ネックになる部分を解消できそうですが。　GIS<sup><a href="http://www.yuruyakana.com/2009/08/%e3%83%aa%e3%82%b9%e3%83%88%e3%81%8b%e3%82%89freemind%e3%81%b8/#footnote_1_134" id="identifier_1_134" class="footnote-link footnote-identifier-link" title="地理情報システム">2</a></sup> とか何か私にとっての用途が出てきたらまた考えましょう。</p>
<ol class="footnotes"><li id="footnote_0_134" class="footnote">XMLによって記述された文書を他のXML文書に変換するための簡易言語</li><li id="footnote_1_134" class="footnote">地理情報システム</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/08/%e3%83%aa%e3%82%b9%e3%83%88%e3%81%8b%e3%82%89freemind%e3%81%b8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeMindからリストへ</title>
		<link>http://www.yuruyakana.com/2009/08/freemind%e3%81%8b%e3%82%89%e3%83%aa%e3%82%b9%e3%83%88%e3%81%b8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freemind%25e3%2581%258b%25e3%2582%2589%25e3%2583%25aa%25e3%2582%25b9%25e3%2583%2588%25e3%2581%25b8</link>
		<comments>http://www.yuruyakana.com/2009/08/freemind%e3%81%8b%e3%82%89%e3%83%aa%e3%82%b9%e3%83%88%e3%81%b8/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 08:26:55 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ITコーディネータ]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[FreeMind]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[IT経営成熟度診断ツール]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=123</guid>
		<description><![CDATA[FreeMind で「見える化」の一歩目に進んでも ウェブアプリで、そのデータを再入力なんてことじゃ 泣きますよね。 一度デジタル化したものを再入力なんてことは、『内部統制上のリスク』だと言えば今回の例では超大げさですが [...]]]></description>
			<content:encoded><![CDATA[<h3>FreeMind で「<span style="color: #339966;">見える化</span>」の一歩目に進んでも</h3>
<h4>ウェブアプリで、そのデータを再入力なんてことじゃ 泣きますよね。</h4>
<p>一度デジタル化したものを再入力なんてことは、『内部統制上のリスク』だと言えば今回の例では超大げさですが、財務データを扱う場合は、そういったプロセスは明らかなリスク要因になります。各人にPCが割り当てられている会社でも、扱う帳票フォーマット、計算式が違うといった理由で、データを印刷してまた必要なデータを入力したりしていませんか？ファイルをもらって必要な個所をコピペ<sup><a href="http://www.yuruyakana.com/2009/08/freemind%e3%81%8b%e3%82%89%e3%83%aa%e3%82%b9%e3%83%88%e3%81%b8/#footnote_0_123" id="identifier_0_123" class="footnote-link footnote-identifier-link" title="コピー、ペースト">1</a></sup> していませんか？<br />
こういったことを日常業務の中に空気として持っている会社と、少なくとも財務プロセス上で再入力時間の低減見直しを行った会社との競争力に差がないとお考えになる経営者がいるでしょうか？</p>
<p>話が針小棒大になったかもしれないので、今日のテーマである FreeMind 図形から階層ごとのデータをリストとして取り出して、再入力しなくても良いよねという基礎的な例を上げます。</p>
<div id="attachment_126" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/074a9eba65ad9df67fa5da9fe0f289a3.png" rel="lightbox[123]"><img class="size-medium wp-image-126" title="重要経営課題の選択（製造業版）" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/074a9eba65ad9df67fa5da9fe0f289a3-300x74.png" alt="重要経営課題の選択（製造業版）" width="300" height="74" /></a><p class="wp-caption-text">重要経営課題の選択（製造業版）</p></div>
<p>分類図で全体がぱっと見えるようにしたは良いけど、そのデータをリストにして別の属性と結びつけたりしたくなりますよね。今回は、グラフィックな属性は要らなくてデータだけウェブアプリ上で再利用したいケースです。</p>
<p>FreeMind はラッキーなことにXMLファイルなので、前回 Amazon から情報を取り出した方法がまた使えます。</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">def</span> fm <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;重要経営課題の選択（製造業版）.mm&quot;</span>
<span style="color: #000000; font-weight: bold;">def</span> fmitems <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XmlSlurper<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">parse</span><span style="color: #66cc66;">&#40;</span>fm<span style="color: #66cc66;">&#41;</span>
<span style="color: #000000; font-weight: bold;">def</span> <span style="color: #663399;">count</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
&nbsp;
fmitems.<span style="color: #006600;">node</span>.<span style="color: #006600;">node</span>.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #993399;">println</span> it.@TEXT
  <span style="color: #663399;">count</span><span style="color: #66cc66;">++</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Total number of under_2 node（大分類）: ${count}&quot;</span>
<span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #663399;">count</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
fmitems.<span style="color: #006600;">node</span>.<span style="color: #006600;">node</span>.<span style="color: #006600;">node</span>.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #993399;">println</span> it.@TEXT
  <span style="color: #663399;">count</span><span style="color: #66cc66;">++</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Total number of under_3 node（中分類）: ${count}&quot;</span>
<span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #663399;">count</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
fmitems.<span style="color: #006600;">node</span>.<span style="color: #006600;">node</span>.<span style="color: #006600;">node</span>.<span style="color: #006600;">node</span>.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #993399;">println</span> it.@TEXT
  <span style="color: #663399;">count</span><span style="color: #66cc66;">++</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Total number of under_4 node（小分類）: ${count}&quot;</span></pre></div></div>

<blockquote><p>出力は、以下のようなリストになります。<br />
既存事業の転換<br />
売上拡大<br />
製品力・サービス力の強化<br />
スピード経営への転換<br />
Total number of under_2 node（大分類）: 4</p>
<p>グローバル化への対応<br />
低コスト経営への転換<br />
高付加価値事業の確立<br />
環境経営の強化<br />
外部経営資源との連携・活用<br />
リスク管理の強化<br />
新しい市場、新製品への事業展開<br />
新規顧客開拓<br />
顧客維持の強化<br />
企業ブランド・イメージの強化<br />
品質経営の強化<br />
新製品・新サービスの開発<br />
開発期間の短縮<br />
物件納期の短縮<br />
製造リードタイムの短縮</p>
<p>電子調達への対応<br />
Total number of under_3 node（中分類）: 17</p>
<p>製造拠点の再配置（海外移転含む）<br />
量産型事業から受注型事業への転換<br />
多品種・少量・短納期対応<br />
安価な海外商品の輸入<br />
原価企画、製品原価・プロジェクト原価の把握<br />
開発コスト低減<br />
製品ライフサイクルコスト低減<br />
製造原価低減のための製造技術開発<br />
購入資材価格の低減<br />
海外資材調達<br />
在庫圧縮<br />
新しい顧客サービスの提案<br />
高付加価値製品・新サービスの開発<br />
新製品の損益分岐点到達期間短縮<br />
ISO14000取得<br />
環境ビジネスへの進出<br />
コーディネート企業連合の実現<br />
アウトソーシング<br />
産学連携の実現<br />
成功したリスク対策処理<br />
納期・予算を満たしたプロジェクト<br />
新流通チャンネルの確立<br />
インターネット・マーケティング<br />
インターネットによる情報提供<br />
提案営業<br />
新規顧客の獲得<br />
製品サポートデータの提供<br />
サービスパーツの円滑な供給<br />
顧客問合せ・問題提起への迅速な対応<br />
見積回答の迅速化<br />
クレームへの迅速な対応<br />
顧客満足度の測定<br />
顧客ニーズの把握<br />
ISO9000/ISO14000取得<br />
市場における評価<br />
トレーサビリティの確立<br />
ISO9000取得<br />
品質改善に寄与する新製造技術の開発<br />
工程不良の低減<br />
改善活動のデータによる管理<br />
トレーサビリティの確立<br />
新製品・新サービス開発<br />
新製品のための基礎技術開発<br />
新製品のための新製造技術開発<br />
産学連携の実現<br />
再設計・試作回数の低減<br />
技術・製造ノウハウ共有<br />
社内外情報の迅速な検索<br />
生産開始までの時間短縮<br />
プロジェクト所要時間の短縮<br />
再設計・再加工の低減<br />
検査・調整時間の短縮<br />
製造リードタイム日数短縮<br />
一個作り生産への切り替え<br />
納期短縮に寄与する新製造技術の開発<br />
製造納期遵守率の向上<br />
資材欠品による納期遅延件数低減<br />
納期・仕様変更への対応時間短縮<br />
需要予測の精度アップ<br />
見込みまとめ生産から多品種・少量生産へ<br />
適正在庫の設定と不良在庫発生額低減<br />
納期遵守率の向上<br />
SCM対応資材調達方式への転換<br />
サプライヤーの選別・集約化と新規開拓<br />
サプライヤーの納期短縮・納入条件改善度<br />
物流の整備・合理化<br />
発注先のEDI化率<br />
受注先のEDI化率<br />
社内システムとEDIの連結<br />
Total number of under_4 node（小分類）: 69</p></blockquote>
<p>これを使ってどんなウェブアプリになるかは、またの機会に！！！</p>
<p>その前に、ウェブ上の階層リストから FreeMind に描く方法を考えないと片手落ちですね。</p>
<ol class="footnotes"><li id="footnote_0_123" class="footnote">コピー、ペースト</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/08/freemind%e3%81%8b%e3%82%89%e3%83%aa%e3%82%b9%e3%83%88%e3%81%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Product Adv. API でもう少し</title>
		<link>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=amazon-product-adv-api-%25e3%2581%25a7%25e3%2582%2582%25e3%2581%2586%25e5%25b0%2591%25e3%2581%2597</link>
		<comments>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 08:21:34 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[Amazon API]]></category>
		<category><![CDATA[GAE/Java]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=95</guid>
		<description><![CDATA[先日、Amazon Product Advertisng API の Java コマンドタイプのサンプルを Grails で動かしてみようと ItemLookup のサービスとコントローラ、ドメイン、ビューを作ったのです [...]]]></description>
			<content:encoded><![CDATA[<p>先日、Amazon Product Advertisng API の Java コマンドタイプのサンプルを Grails で動かしてみようと ItemLookup のサービスとコントローラ、ドメイン、ビューを作ったのですが、今朝からもう少し進めて ItemSearch のコントローラ、ビューを作ってみました。ドメインはデータ保存しないので今のところ必要ないかな。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
</pre></td><td class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  ItemSearch-Keywords で Book名を入手　とりあえず。
 *
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #a1a100;">com.yuruyakana</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">com.amazon.advertising.api.sample.SignedRequestsHelper</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">org.codehaus.groovy.grails.commons.*</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">net.sf.ehcache.Element</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> AmazonItemSearchService <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #993333;">boolean</span> transactional <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">false</span>
&nbsp;
    <span style="color: #aaaadd; font-weight: bold;">String</span> AWS_ACCESS_KEY_ID
    <span style="color: #aaaadd; font-weight: bold;">String</span> ASSOCIATE_TAG
    <span style="color: #aaaadd; font-weight: bold;">String</span> AWS_SECRET_KEY
    <span style="color: #aaaadd; font-weight: bold;">String</span> ENDPOINT
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> getItemSearch<span style="color: #66cc66;">&#40;</span>searchIndex, keyword<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* Set up the signed requests helper */</span>
        SignedRequestsHelper helper
&nbsp;
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
            helper <span style="color: #66cc66;">=</span> SignedRequestsHelper.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span>ENDPOINT, AWS_ACCESS_KEY_ID, AWS_SECRET_KEY<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span><span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">Exception</span> e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            log.<span style="color: #006600;">error</span> <span style="color: #ff0000;">&quot;Problem communicating with SignedRequestsHelper: ${e.message}&quot;</span>, e
            <span style="color: #000000; font-weight: bold;">return</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #aaaadd; font-weight: bold;">String</span> requestUrl <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> titles <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;_&quot;</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> author <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> imageUrl <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> price <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> totalresults <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// map形式</span>
        <span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Map form example:&quot;</span>
        <span style="color: #aaaadd; font-weight: bold;">Map</span> params <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">HashMap</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Service&quot;</span>, <span style="color: #ff0000;">&quot;AWSECommerceService&quot;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Operation&quot;</span>, <span style="color: #ff0000;">&quot;ItemSearch&quot;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AWSAccessKeyId&quot;</span>, AWS_ACCESS_KEY_ID<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AssociateTag&quot;</span>, ASSOCIATE_TAG<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SearchIndex&quot;</span>, searchIndex<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Keywords&quot;</span>, keyword<span style="color: #66cc66;">&#41;</span>
        <span style="color: #808080; font-style: italic;">/**　こっちの方が良いわな
        def params = ['Service':'AWSECommerceService',
	              'Operation':'ItemSearch',
	              'AWSAccessKeyId':'AWS_ACCESS_KEY_ID',
	              'AssociateTag':'ASSOCIATE_TAG',
	              'ResponseGroup':'Medium']
　　　　*/</span>
        requestUrl <span style="color: #66cc66;">=</span> helper.<span style="color: #006600;">sign</span><span style="color: #66cc66;">&#40;</span>params<span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// XML構文解析</span>
        <span style="color: #000000; font-weight: bold;">def</span> uri <span style="color: #66cc66;">=</span> requestUrl.<span style="color: #006600;">toURI</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">def</span> ItemSearchResponse <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XmlSlurper<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">parse</span><span style="color: #66cc66;">&#40;</span>uri<span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Total Results: &quot;</span> <span style="color: #66cc66;">+</span> ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">TotalResults</span>
        <span style="color: #808080; font-style: italic;">//println &quot;Total Pages: &quot; + ItemSearchResponse.Items.TotalPages</span>
&nbsp;
        ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">Item</span>.<span style="color: #006600;">ItemAttributes</span>.<span style="color: #006600;">Title</span>.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #808080; font-style: italic;">//　リストをコントローラに渡す方法思いつかなかったのでアンダー</span>
　　　　　 <span style="color: #808080; font-style: italic;">//  スコアで芋づるにしちゃいました。</span>
            titles <span style="color: #66cc66;">=</span> titles <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">&quot;_&quot;</span> <span style="color: #66cc66;">+</span> it
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Author: &quot; + ItemSearchResponse.Items.Item.ItemAttributes.Author</span>
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Medium Image: &quot; + ItemSearchResponse.Items.Item.MediumImage.URL</span>
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Price: &quot; + ItemSearchResponse.Items.Item.ItemAttributes.ListPrice.FormattedPrice</span>
&nbsp;
        totalresults <span style="color: #66cc66;">=</span> ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">TotalResults</span>     
&nbsp;
        <span style="color: #000000; font-weight: bold;">def</span> map <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#91;</span>TotalResults:totalresults, Title:titles<span style="color: #66cc66;">&#93;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">return</span> map
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  keyword で Book名リストを入手　とりあえず。
 *
 */</span>
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #a1a100;">com.yuruyakana</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> AmazonItemSearchController <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">//def scaffold = AmazonItemSearch</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> AmazonItemSearchService
&nbsp;
    <span style="color: #aaaadd; font-weight: bold;">String</span> searchIndex <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;Books&quot;</span>
    <span style="color: #aaaadd; font-weight: bold;">String</span> keyword <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;IT経営&quot;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> index <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span>
        redirect<span style="color: #66cc66;">&#40;</span>action:<span style="color: #ff0000;">&quot;search&quot;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> searchFlow <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// 検索</span>
        search <span style="color: #66cc66;">&#123;</span>
            on<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;doSearch&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
                <span style="color: #000000; font-weight: bold;">def</span> amazonBook <span style="color: #66cc66;">=</span> amazonItemSearchService.<span style="color: #006600;">getItemSearch</span><span style="color: #66cc66;">&#40;</span>searchIndex, keyword<span style="color: #66cc66;">&#41;</span>
                <span style="color: #808080; font-style: italic;">/**
                 * サービスからの戻り値を配列で渡す方法分からないので、リストをアンダー
                 * &lt;/code&gt;&lt;code&gt;スコアでつないで&lt;/code&gt;&lt;code&gt;マップで渡して、ここでまたスプリットにかけています。
                 * Groovy の each メソッドはすごい。
                */</span>
                amazonBook.<span style="color: #006600;">Title</span>.<span style="color: #FFCC33;">splitEachLine</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>titles<span style="color: #66cc66;">-&amp;</span>gt<span style="color: #66cc66;">;</span>
                    titles.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
                        <span style="color: #808080; font-style: italic;">//println it</span>
                        <span style="color: #808080; font-style: italic;">//render(view:'search', model:[keyword:keyword, Title:titles])</span>
                    <span style="color: #66cc66;">&#125;</span>
                    <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;keyword&quot;</span>:keyword, <span style="color: #ff0000;">&quot;Title&quot;</span>:titles<span style="color: #66cc66;">&#93;</span>
                <span style="color: #66cc66;">&#125;</span>
            <span style="color: #66cc66;">&#125;</span>.<span style="color: #006600;">to</span> <span style="color: #ff0000;">&quot;search&quot;</span>
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #808080; font-style: italic;">// 詳細</span>
        displayDetail <span style="color: #66cc66;">&#123;</span>
            on<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;search&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
            <span style="color: #66cc66;">&#125;</span>.<span style="color: #006600;">to</span> <span style="color: #ff0000;">&quot;search&quot;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>ビューはこんな感じ。</p>
<div id="attachment_101" class="wp-caption alignleft" style="width: 280px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemLookupSample.png" rel="lightbox[95]"><img class="size-medium wp-image-101 " title="AmazonItemLookupSample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemLookupSample-300x170.png" alt="AmazonItemLookup　Sample" width="270" height="153" /></a><p class="wp-caption-text">AmazonItemLookup　Sample</p></div>
<div id="attachment_102" class="wp-caption alignright" style="width: 310px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemSearchSample.png" rel="lightbox[95]"><img class="size-medium wp-image-102 " title="AmazonItemSearchSample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemSearchSample-300x236.png" alt="AmazonItemSearch　Sample" width="300" height="236" /></a><p class="wp-caption-text">AmazonItemSearch　Sample</p></div>
<p>さて、次は何をしましょうか？<br />
カートを付けて、plugin とか、GAE 上で実験してみるとか？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product Advertising API を使わないと</title>
		<link>http://www.yuruyakana.com/2009/07/product-advertising-api-%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84%e3%81%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=product-advertising-api-%25e3%2582%2592%25e4%25bd%25bf%25e3%2582%258f%25e3%2581%25aa%25e3%2581%2584%25e3%2581%25a8</link>
		<comments>http://www.yuruyakana.com/2009/07/product-advertising-api-%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84%e3%81%a8/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 02:48:19 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[Amazon API]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=72</guid>
		<description><![CDATA[先週【重要・あと30日です】メールなんてことで、Amazon アソシエイト Web サービスが ８月１５日以降使えないそうなので、先日の[gTunes] も amazon-a2s-2007-10-29-java-libr [...]]]></description>
			<content:encoded><![CDATA[<p>先週【重要・あと30日です】メールなんてことで、Amazon アソシエイト Web サービスが ８月１５日以降使えないそうなので、先日の[<span style="color: #0000ff;">gTunes</span>] も amazon-a2s-2007-10-29-java-library を使っている関係上、署名認証の機能を含めないと動かなくなりますね。動かないと面白くないので、少し連休中に勉強しました。<br />
<a title="amazon-product-advt-api Java sample" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2478&amp;categoryID=14" target="_blank">ここ</a> から Amazon の Java Sample をダウンロードしました。詳細な使い方は、付属の README に書かれていますが、コマンド・プロンプトから ant run で 署名認証して、決め打ちの ITEM_ID（ASIN) の ItemLookup から Title が表示されます。早速 NetBeans 6.7、Grails 1.1.1 でプロジェクト名：AmazonBook を作って、Grails 上でも使えるようにしてみました。( ITEM_ID は本以外にも全ての商品が対象のようだから Book でなくてもいいんだけど）</p>
<p>サンプルには、ソースとして SignedRequestsHelper.java と ItemLookupSample.java が提供されているので、SignedRequestsHelper はそのまま、Javaソースパッケージフォルダーにコピー。ItemLookupSample を AmazonItemLookupService.groovy としてサービスフォルダーに作成。<br />
コードは、下記のような感じ。</p>
<pre class="prettyprint">
/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  ASIN で Book名を入手　とりあえず。
 *
 */
package com.yuruyakana

import com.amazon.advertising.api.sample.SignedRequestsHelper
import org.codehaus.groovy.grails.commons.*
import net.sf.ehcache.Element

class AmazonItemLookupService {

    boolean transactional = false
    String AWS_ACCESS_KEY_ID
    String AWS_SECRET_KEY
    String ENDPOINT
    //def titleAuthCache

    def getItemLook(ITEM_ID) {
        /* Set up the signed requests helper */
       SignedRequestsHelper helper

        try {
            helper = SignedRequestsHelper.getInstance(ENDPOINT, AWS_ACCESS_KEY_ID, AWS_SECRET_KEY)
        } catch(Exception e) {
            log.error "Problem communicating with SignedRequestsHelper: ${e.message}", e
            //e.printStackTrace();
            return;
        }

        String requestUrl = null
        String title = null

        // map形式
        println "Map form example:"
        Map params = new HashMap()
        params.put("Service", "AWSECommerceService")
        params.put("Version", "2009-03-31")
        params.put("Operation", "ItemLookup")
        params.put("ItemId", ITEM_ID)
        params.put("ResponseGroup", "Small")

        requestUrl = helper.sign(params)
        println "Signed Request is " + requestUrl

        // XML構文解析
        def uri = requestUrl.toURI().toString()
        //def xml = requestUrl.toURL().text
        println "Response URI: " + uri
        //println "Response XML: " + xml
  // URLだと日本語でEND-Tagで文字化けしてエラーになるので、URIを取得してParseすることでOK。
        def ItemLookupResponse = new XmlSlurper().parse(uri)
        //def ItemLookupResponse = new XmlSlurper().parseText(xml)

        println "ITEM Title: " + ItemLookupResponse.Items.Item.ItemAttributes.Title
        println "ITEM Author: " + ItemLookupResponse.Items.Item.ItemAttributes.Author
    }
}</pre>
<p>変更したところは、概ね以下の３点：</p>
<ol>
<li>AWS_ACCESS_KEY_ID、AWS_SECRET_KEY、ENDPOINT を Config.groovy にbeans として<br />
移行。ENDPOINT は別に移動しなくても６か所ほど選択できるようなので、DOMAINで選択できるよう<br />
にしておいても良いですね。</li>
<li>Controller 側で上記 Service のgetItemLook(ITEM_ID) を呼び出したこと。</li>
<li>XML 構文解析を Java の DocumentBuilder から Groovy の XmlSlurper にしたこと。
<ul>
<li>toURL() メソッドは、<em>URL 内で使用できないエスケープ文字は自動的に変換できないので<br />
非推奨になっています。</em></li>
</ul>
</li>
</ol>
<p>今回は、XMLの階層全て書いてタイトル表示しているので、スマートじゃないけど動作確認できたので まっ、いいか。</p>
<p>ITEM_ID で検索するのは実用的じゃないので、ITEMSearch 作って domain と View を今度作れればいいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/07/product-advertising-api-%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84%e3%81%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iTunes の Library をデータベースに</title>
		<link>http://www.yuruyakana.com/2009/07/itunes-library/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=itunes-library</link>
		<comments>http://www.yuruyakana.com/2009/07/itunes-library/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 09:39:24 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[閑話]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=68</guid>
		<description><![CDATA[先週末、久しぶりに下記の本の AJAX の章を読んでいたのですが、[gTunes] という Grails App のサンプルを使う上で自分の iTunes の Music Library（ｘｍｌファイル）をサンプルアプリ [...]]]></description>
			<content:encoded><![CDATA[<p>先週末、久しぶりに下記の本の AJAX の章を読んでいたのですが、[<span style="color: #0000ff;">gTunes</span>] という Grails App のサンプルを使う上で自分の iTunes の Music Library（ｘｍｌファイル）をサンプルアプリに読み込むためのGroovyスクリプトが、ソースコードとして提供されています。<br />
<a href="http://www.amazon.co.jp/Definitive-Guide-Grails-Experts-Development/dp/1590599950%3FSubscriptionId%3D038NZJ5FX57G706Q3382%26tag%3Dyuruyakanaweb-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1590599950" title="Amazon で商品の詳細を確認する"><img src="http://ecx.images-amazon.com/images/I/51do3cYz-ML._SL160_.jpg" alt="The Definitive Guide to Grails (Expert's Voice in Web Development)" /></a></p>
<p>そのままじゃ動かなかったので、同じような経験された方がいるかどうか分かりませんが、少し変更したらきちんと、MySQLデータベースに artist 名が登録されました。<br />
変更した箇所は、</p>
<blockquote><p>
<div class="note"><div class="notewarning">def artists = handler.artists.values().findAll { it.albums?.artist } を</div></div><br />
<div class="note"><div class="notetip">def artists = handler.artists.values() に。</div></div><br />
<div class="note"><div class="notewarning">else if(songProps &amp;&amp; qName == &#8216;dict&#8217;) { を</div></div><br />
<div class="note"><div class="notetip">else if(songProps &amp;&amp; qName == &#8216;/dict&#8217;) { に。</div></div></p></blockquote>
<p>Album クラスはmap で値をきちんと取れているのですが、データベース登録はエラーになるのはどうしてでしょうかね。<br />
時間ができたらまたチャレンジしてみます。</p>
<p><div class="note"><div class="notehelp">NetBeans で Grails コマンドが使えるので便利ですよ。</div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/07/itunes-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

