<?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>toshipon@sketch.book/blog</title>
	<atom:link href="http://blog.toshipon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.toshipon.com</link>
	<description>絵と読書とRubyに興味があるIT技術者の日々の勉強を綴るブログ。</description>
	<lastBuildDate>Sun, 22 Apr 2012 12:38:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>[BOOK]SUBJECT TO CHANGEを読んだ</title>
		<link>http://blog.toshipon.com/2012/04/22/booksubject-to-change%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a0/</link>
		<comments>http://blog.toshipon.com/2012/04/22/booksubject-to-change%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a0/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 12:38:20 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[Book]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://blog.toshipon.com/?p=177</guid>
		<description><![CDATA[上司からお借りした本を読んだのでメモ程度に書き留めておきます。 世の中の価値やサービスは常に予告無く変更の可能性がある。 変化に富んだ未来に対応するためには、「体験」に集中すべき。 「体験」或いは「ユーザ体験」は、製品やサービスの機能やUIを含め、ユーザが経験することを総合的に表現したもの。 「体験」を中心に考えるなら、製品単体を見ていてはダメで、システム全体でサービスを考える必要がある。 例）iPadは複雑な操作をiTunesに委譲して、「自分の音楽をすべて持ち歩ける」シンプルな製品を生み出した。 ユーザは、人間として扱わないといけない。「消費者」や「ヒツジ」ではない。 人間の行動を知るにはユーザー調査や、デザインの考察は組織を上げて行わなくてはいけない。 組織ぐるみで変化に対応していくにはアジャイル開発プロセスを採用すべき。 アジャイル開発によって小さいプロセスで小回りのきく開発を行い変化に対応する。 コダック社の「あなたはボタンを押してください。あとはおまかせください。」というキャッチコピーは歴史に残る名言 所感としては、 最近巷でよく言われているUXとアジャイル開発の重要性が筆者(Adaptive path社の中の人)の具体的な体験やAppleがユーザ体験を重要視して組織全体でサービス全体のシステムを構築したから成功したんだ！(Apple推しすごい本)という話がとても参考になりました。特に製品の機能や操作性を圧倒的にシンプルにして、足りない部分を他の製品で補って総合してユーザに価値ある体験をさせる事が大事という視点&#8230;どれだけ皆意識しているのか気になりますが、ここは常に考えないといけないなと思いました。 &#160;]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2012/04/22/booksubject-to-change%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a0/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>上司からお借りした本を読んだのでメモ程度に書き留めておきます。</p>
				<ul>
				<li>世の中の価値やサービスは常に予告無く変更の可能性がある。</li>
				<li>変化に富んだ未来に対応するためには、「体験」に集中すべき。</li>
				<li>「体験」或いは「ユーザ体験」は、製品やサービスの機能やUIを含め、ユーザが経験することを総合的に表現したもの。</li>
				<li>「体験」を中心に考えるなら、製品単体を見ていてはダメで、システム全体でサービスを考える必要がある。</li>
				<li>例）iPadは複雑な操作をiTunesに委譲して、「自分の音楽をすべて持ち歩ける」シンプルな製品を生み出した。</li>
				<li>ユーザは、人間として扱わないといけない。「消費者」や「ヒツジ」ではない。</li>
				<li>人間の行動を知るにはユーザー調査や、デザインの考察は組織を上げて行わなくてはいけない。</li>
				<li>組織ぐるみで変化に対応していくにはアジャイル開発プロセスを採用すべき。</li>
				<li>アジャイル開発によって小さいプロセスで小回りのきく開発を行い変化に対応する。</li>
				<li>コダック社の「あなたはボタンを押してください。あとはおまかせください。」というキャッチコピーは歴史に残る名言</li>
				</ul>
				<p>所感としては、 最近巷でよく言われているUXとアジャイル開発の重要性が筆者(Adaptive path社の中の人)の具体的な体験やAppleがユーザ体験を重要視して組織全体でサービス全体のシステムを構築したから成功したんだ！(Apple推しすごい本)という話がとても参考になりました。特に製品の機能や操作性を圧倒的にシンプルにして、足りない部分を他の製品で補って総合してユーザに価値ある体験をさせる事が大事という視点&#8230;どれだけ皆意識しているのか気になりますが、ここは常に考えないといけないなと思いました。</p>
				<p>&nbsp;</p>
				<p><iframe style="width: 120px; height: 240px;" src="http://rcm-jp.amazon.co.jp/e/cm?t=toshipon123-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4873113857&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="320" height="240"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2012/04/22/booksubject-to-change%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby GemでEAN APIのラッパーを公開しました(beta)</title>
		<link>http://blog.toshipon.com/2012/01/29/ruby-gem%e3%81%a7ean-api%e3%81%ae%e3%83%a9%e3%83%83%e3%83%91%e3%83%bc%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9fbeta/</link>
		<comments>http://blog.toshipon.com/2012/01/29/ruby-gem%e3%81%a7ean-api%e3%81%ae%e3%83%a9%e3%83%83%e3%83%91%e3%83%bc%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9fbeta/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 16:10:38 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ean]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.toshipon.com/?p=155</guid>
		<description><![CDATA[勉強がてらにgem公開とやらをやってみました。最近はjewlerというツールがあって簡単に公開できるそうですが、誤って原始的な方法(gemspecファイルを手で作って、RubyGems公式の公開マニュアルに沿って公開)でやってしまいました。が、無事に公開までできました。 ソースはこちらです。https://github.com/toshipon/ean3 まだ全然テストできていないので、上手く動いていないところとか修正してくださったり、テスト書いてくれることを期待しての公開です.. Please fork me! ＞＜ ところでEANって？ EANはExpedia Affiliate Network社の通称でホテル情報を扱ったAPIを提供している会社です。まだ日本の開発者の中ではあまり知られていません(?)が、膨大なホテル情報と高速なレスポンスが素晴らしいAPIです！個人の開発者でも無料のDeveloper登録をすれば簡単に利用することができますよ! 操作方法 gemのインストール gem install 'ean3' 使用方法は以下のような感じです options = { :apikey => 'XXXXXXX', :secret => 'XXXXXXX', :cid => 'XXXXXXX', # 開発中は55505の固定 :minorRev => 12, :locale => "ja_JP", :currencyCode => "JPY", :debug => true } @client = Ean3::Client.new(options) @response = @client.getList({ :arrivalDate => "03/10/2012", :departureDate => [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2012/01/29/ruby-gem%e3%81%a7ean-api%e3%81%ae%e3%83%a9%e3%83%83%e3%83%91%e3%83%bc%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9fbeta/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>勉強がてらにgem公開とやらをやってみました。最近は<a href="http://transitive.info/article/ruby/gem/jeweler/" target="_blank">jewler</a>というツールがあって簡単に公開できるそうですが、誤って原始的な方法(gemspecファイルを手で作って、<a href="http://docs.rubygems.org/read/chapter/6" target="_blank">RubyGems公式の公開マニュアルに沿って公開</a>)でやってしまいました。が、無事に公開までできました。</p>
				<p>ソースはこちらです。<a href="https://github.com/toshipon/ean3" target="_blank">https://github.com/toshipon/ean3</a><br />
				まだ全然テストできていないので、上手く動いていないところとか修正してくださったり、テスト書いてくれることを期待しての公開です.. Please fork me! ＞＜</p>
				<h3>ところでEANって？</h3>
				<p>EANは<a href="http://expediaaffiliate.com/" target="_blank">Expedia Affiliate Network社</a>の通称でホテル情報を扱ったAPIを提供している会社です。まだ日本の開発者の中ではあまり知られていません(?)が、膨大なホテル情報と高速なレスポンスが素晴らしいAPIです！個人の開発者でも無料のDeveloper登録をすれば簡単に利用することができますよ!</p>
				<h3>操作方法</h3>
				<p>gemのインストール</p>
				<pre  class="brush : bash">
gem install 'ean3'
</pre>
				<p>使用方法は以下のような感じです</p>
				<pre  class="brush:ruby">
    options = {
        :apikey => 'XXXXXXX',
        :secret => 'XXXXXXX',
        :cid => 'XXXXXXX', # 開発中は55505の固定
        :minorRev => 12,
        :locale => "ja_JP",
        :currencyCode => "JPY",
        :debug => true
    }
    @client = Ean3::Client.new(options)
    @response = @client.getList({
        :arrivalDate => "03/10/2012",
        :departureDate => "03/13/2012"
        :city => "tokyo"
    })
</pre>
				<p>簡単ですね！</p>
				<p>また、サンプルプロジェクトも作成しましたので参考にどうぞ！</p>
				<p><a href="https://github.com/toshipon/ean3_sample" target="_blank">https://github.com/toshipon/ean3_sample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2012/01/29/ruby-gem%e3%81%a7ean-api%e3%81%ae%e3%83%a9%e3%83%83%e3%83%91%e3%83%bc%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9fbeta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>devlove HangarFlight 2011行ってきた</title>
		<link>http://blog.toshipon.com/2011/12/10/devlove-hangerflight-2011%e8%a1%8c%e3%81%a3%e3%81%a6%e3%81%8d%e3%81%9f/</link>
		<comments>http://blog.toshipon.com/2011/12/10/devlove-hangerflight-2011%e8%a1%8c%e3%81%a3%e3%81%a6%e3%81%8d%e3%81%9f/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 13:27:13 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[勉強会]]></category>
		<category><![CDATA[devlove]]></category>

		<guid isPermaLink="false">http://blog.toshipon.com/?p=104</guid>
		<description><![CDATA[ブログ書くまでが勉強会ということでメモ書き程度ですが、書いてみようと思います。 develove HangarFlight 2011 今年で３回目です。 http://kokucheese.com/event/index/21611/ 僕が参加したセッションは以下のとおりです。 @agilekawabata 川端光義 氏「普通のプログラマチームによるアジャイル開発と少数精鋭によるアジャイル開発」 普通のプログラマ達とアジャイルのプロジェクトをまわしたという話 40名で１年間５００人月の案件 共通フレームワークチーム(7名)でイテレーションを20回まわした 成功の秘訣はアジャイル開発のクレドを毎朝読み合わせを行ったこと http://t.co/9voDRvtU KPTを行う ドキュメントを90% wikiで管理 顧客のアジャイルへの理解 事件(wikiが消える、地震)を乗り越えることによるチーム団結 少数精鋭のプログラマ達とアジャイルのプロジェクトをまわしたという話 個性が強すぎて基本的にプラクティスは通用しない。 出勤時間バラバラ、ノマドの人、全員同席は基本無理 ただしアウトプットはすごい(３日でできると思ってたことを３時間でやってのける) Railsとアジャイルの相性がよく、Railsのお陰で生産性も上がっていた ツール Pivotal Tracker Redmine(wiki用) IRC Skype ML 大事なのはプログラミングを楽しんでもらう環境作り @kenchan  Kenichi TAKAHASHI 氏「Jenkinsの運用を中心にRailsとCI(とサーバ仮想化)について。」 永和システムマネジメントさんでのCI環境の一例について MacMiniをCI専用のマシンとして使っていた(空きPCを利用)。 プロジェクト毎にLXCで専用インスタンス IRC上でJenkinsとコミュニケーションをしてstatus確認とかbuildをしたりしてる githubのプライベートリポジトリにバージョン管理を移行しているとのこと 最近はTravis CI &#8211; github専用のCIサーバ っていうのに注目している @papanda  市谷聡啓氏 sercret of moon SIer -&#62; Servicer -&#62; SIer と渡り歩いて [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2011/12/10/devlove-hangerflight-2011%e8%a1%8c%e3%81%a3%e3%81%a6%e3%81%8d%e3%81%9f/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>ブログ書くまでが勉強会ということでメモ書き程度ですが、書いてみようと思います。</p>
				<p>develove HangarFlight 2011 今年で３回目です。<br />
				<a href="http://kokucheese.com/event/index/21611/" target="_blank">http://kokucheese.com/event/index/21611/</a></p>
				<p>僕が参加したセッションは以下のとおりです。</p>
				<ol>
				<li><strong><strong><a href="http://twitter.com/agilekawabata">@agilekawabata</a> </strong>川端光義 氏「普通のプログラマチームによるアジャイル開発と少数精鋭によるアジャイル開発」</strong></li>
				<ul>
				<li>普通のプログラマ達とアジャイルのプロジェクトをまわしたという話</li>
				<ul>
				<li>40名で１年間５００人月の案件 共通フレームワークチーム(7名)でイテレーションを20回まわした</li>
				<li>成功の秘訣はアジャイル開発のクレドを毎朝読み合わせを行ったこと http://t.co/9voDRvtU</li>
				<li>KPTを行う</li>
				<li>ドキュメントを90% wikiで管理</li>
				<li>顧客のアジャイルへの理解</li>
				<li>事件(wikiが消える、地震)を乗り越えることによるチーム団結</li>
				</ul>
				<li>少数精鋭のプログラマ達とアジャイルのプロジェクトをまわしたという話</li>
				<ul>
				<li>個性が強すぎて基本的にプラクティスは通用しない。</li>
				<li>出勤時間バラバラ、ノマドの人、全員同席は基本無理</li>
				<li>ただしアウトプットはすごい(３日でできると思ってたことを３時間でやってのける)</li>
				<li>Railsとアジャイルの相性がよく、Railsのお陰で生産性も上がっていた</li>
				<li>ツール</li>
				<ul>
				<li>Pivotal Tracker</li>
				<li>Redmine(wiki用)</li>
				<li>IRC</li>
				<li>Skype</li>
				<li>ML</li>
				</ul>
				<li>大事なのはプログラミングを楽しんでもらう環境作り</li>
				</ul>
				</ul>
				<li><strong><strong><a href="http://twitter.com/kenchan">@kenchan</a>  </strong>Kenichi TAKAHASHI 氏「Jenkinsの運用を中心にRailsとCI(とサーバ仮想化)について。」</strong></li>
				<ul>
				<li>永和システムマネジメントさんでのCI環境の一例について</li>
				</ul>
				<ol>
				<ul>
				<li>MacMiniをCI専用のマシンとして使っていた(空きPCを利用)。 プロジェクト毎にLXCで専用インスタンス</li>
				<li>IRC上でJenkinsとコミュニケーションをしてstatus確認とかbuildをしたりしてる</li>
				<li>githubのプライベートリポジトリにバージョン管理を移行しているとのこと</li>
				<li>最近はTravis CI &#8211; github専用のCIサーバ っていうのに注目している</li>
				</ul>
				</ol>
				<li><strong><strong><a href="http://twitter.com/papanda">@papanda</a> </strong> 市谷聡啓氏 sercret of moon</strong></li>
				<ul>
				<li>SIer -&gt; Servicer -&gt; SIer と渡り歩いて</li>
				<ul>
				<li>SIerはSIer、ServicerはServicerの現場の悩みがありそれぞれ問題もある。</li>
				<li>Servicer -&gt; コンウェイの法則</li>
				<li>結局自分の観ている(絶望している)世界を作っているのは自分</li>
				<li>自分の生き方を他人任せにしないこと -&gt; (情熱プログラマー見ろ！)</li>
				<li>自分のいる世界の存在を感じること -&gt; (U理論)</li>
				<li>自分のメンタルモデルを感じること</li>
				<li>P287! (アジャイルサムライ) 挑戦し続けることをやめてしまったらもうアジャイルではない</li>
				</ul>
				</ul>
				<li><strong><strong><a href="http://twitter.com/haradakiro">@haradakiro</a> </strong>Harada Kiro氏 「実践DDDQuickReplay」ライブ・ドメインモデリング!!</strong></li>
				<ul>
				<li>Rakutenさんのアジャイル開発実例(こうやって成功に導いたよー)</li>
				<ul>
				<li>見える化 -&gt; タスクボードでタスクを管理。みんなの通り道の壁に付箋をはりまくる</li>
				<li>フロアのレイアウト -&gt; すぐに話せるようにみんな近い席</li>
				<li>成功体験を作る -&gt; ゴールは盛大に盛り上がる -&gt; まわりの人もチェンジを受け入れやすくなる</li>
				</ul>
				<li>アジャイル開発を終えてメンバーの心境など</li>
				<ul>
				<li>気がつくと元の開発スタイルになっている</li>
				<li>一人だとなかなかアジャイルを続けられない。意識してアジャイルを続けることが大事</li>
				<li>野良アジャイル(個人タスクをアジャイルで実践する)</li>
				<ul>
				<li>一人カンバン</li>
				<li>リリースすごろく(リリース作業をすごろくで手順管理)</li>
				<li>一人で実践し続ける</li>
				</ul>
				</ul>
				</ul>
				</ol>
				<p>メモで残してたものを箇条書きにした程度で申し訳ないですが、、所感としては、やっぱり勉強会は毎回得るものが大きいということです。最初参加したときは転職を考えていた時期で、今はアジャイルを成功させるためにどうすればいいか悩んでいて、皆かならず歩んだ道であることなので、同じ悩みを持っている人もいるし、必ずアドバイスをしてくださる人がいるということです。</p>
				<p>今回も前回もですが、papandaさんの話は特に心に響きます。今見えてる現状は自分が作っているものでそれを変えるのも自分ということを改めて感じました。僕が社会人になって１年目で初めて参加したJavaScriptの小さな勉強会でpapandaさんと出会ってからずっと影響されている素晴らしい人です＞＜ (早く還元したい..) また、ワークショップでは勉強会の振り返りを行い、参加者各々で感じたことを共有しましたが、思いの共通点が沢山あって、明後日からコミットするにはどうしたらいいのかや、変化を継続するには継続させるための仕組み(フィードバックを受け続けることのできる環境作り)、一人だけでは長続きしないため、まわりを巻き込んで理解者を得ることの大切さを改めて感じました。</p>
				<p>また、懇親会でお話させていただいたアジャイルコーチの原田さんがおっしゃっていた、「アジャイルで最初から上手くチーム(人)なんてまずいない」ということ、振り返りを行い、少しづつ現状を良くしていくことが大事だというアドバイスをいただき、今の自分の現場に対する不安に対するアプローチの方法が明確に見えた気がして少し安心しました。</p>
				<p>と、いう具合にだらだらと書いてしまいましたが、とても学びのある素晴らしいイベントでした！また懲りずに(え)来年も参加しようかと思います！目標は自分もLTとかで登壇すること！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2011/12/10/devlove-hangerflight-2011%e8%a1%8c%e3%81%a3%e3%81%a6%e3%81%8d%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Buzz のつぶやきを垂れ流してみた</title>
		<link>http://blog.toshipon.com/2011/11/28/google-buzz-%e3%81%ae%e3%81%a4%e3%81%b6%e3%82%84%e3%81%8d%e3%82%92%e5%9e%82%e3%82%8c%e6%b5%81%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/</link>
		<comments>http://blog.toshipon.com/2011/11/28/google-buzz-%e3%81%ae%e3%81%a4%e3%81%b6%e3%82%84%e3%81%8d%e3%82%92%e5%9e%82%e3%82%8c%e6%b5%81%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:28:54 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.toshipon.com/?p=81</guid>
		<description><![CDATA[ただの２番煎じですが、google buzz がサービス停止するということで、google buzz のつぶやきをエクスポートしたものをストリームっぽく垂れ流すようにしました。 http://www.toshipon.com/sample/buzz/buzz/index.html 以下で google buzz のつぶやきをエクスポートできます。 https://www.google.com/takeout/ まず、ひとつひとつのつぶたきが日本語名のhtmlファイルなので、ファイル作成日でrenameします。 count = 0 Dir::foreach('./buzz') { &#124;f&#124; count = count + 1 time = Time.now from = './buzz/' + f mt = File::mtime('./buzz/'.concat(f)) to = './buzz/' + format("%04d", mt.year) + format("%02d", mt.month) + format("%02d", mt.day) + format("%02d", mt.min) + format("%02d", mt.sec) + ".html" if [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2011/11/28/google-buzz-%e3%81%ae%e3%81%a4%e3%81%b6%e3%82%84%e3%81%8d%e3%82%92%e5%9e%82%e3%82%8c%e6%b5%81%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>ただの２番煎じですが、google buzz がサービス停止するということで、google buzz のつぶやきをエクスポートしたものをストリームっぽく垂れ流すようにしました。</p>
				<p><a href="http://www.toshipon.com/sample/buzz/buzz/index.html" target="_blank">http://www.toshipon.com/sample/buzz/buzz/index.html</a></p>
				<p>以下で google buzz のつぶやきをエクスポートできます。<br />
				<a href="https://www.google.com/takeout/" target="_blank">https://www.google.com/takeout/</a></p>
				<p>まず、ひとつひとつのつぶたきが日本語名のhtmlファイルなので、ファイル作成日でrenameします。</p>
				<pre class="brush : js">
count = 0
Dir::foreach('./buzz') { |f|
    count = count + 1
    time = Time.now
    from = './buzz/' + f
    mt = File::mtime('./buzz/'.concat(f))
	to = './buzz/' + format("%04d", mt.year) + format("%02d", mt.month) + format("%02d", mt.day) + format("%02d", mt.min) + format("%02d", mt.sec) + ".html"
	if File::ftype(from) == "file"
       File::rename from, to
    end
}
</pre>
				<p>renameしたhtmlファイルのファイル名を一括でfiles.jsonの中に一覧で取り込み<br />
				文字列置換で適当にjsonフォーマットに変換します。</p>
				<pre class="brush : shell">
ls >> files.json
</pre>
				<p>その後、jsでhtmlファイルを読み込み垂れ流してみます。</p>
				<pre class="brush : js">
$(function(){
	console.log("script.js start");
	$.ajax({
		url : "http://www.toshipon.com/sample/buzz/buzz/buzz/files.json",
		//dataType : "json",
		success : function(file){
			file = JSON.parse(file);
			popBuzz(file);
		}
		});
	var i = 0;
	function popBuzz(file) {
		if (file.length === i+1){ return; }
		setTimeout(function(){
			$("#content").prepend($("
<li/>").load("http://www.toshipon.com/sample/buzz/buzz/buzz/"+ file[i]));
			i++;
			if ($('#content li').length > 10){$('#content li:last').remove();}
			popBuzz(file);
		}, 2000);
	}
});
</pre>
				<p>簡単ですね。</p>
				<p>ソースはこちら。 <a href="https://github.com/toshipon/buzz" title="https://github.com/toshipon/buzz" target="_blank">https://github.com/toshipon/buzz</a></p>
				<p><strong>参考</strong><br />
				<a href="http://kshigeru.blogspot.com/2011/11/goodbye-google-buzz.html" title="さよなら Google Buzz" target="_blank">さよなら Google Buzz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2011/11/28/google-buzz-%e3%81%ae%e3%81%a4%e3%81%b6%e3%82%84%e3%81%8d%e3%82%92%e5%9e%82%e3%82%8c%e6%b5%81%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらVPSでnode.jsを使ってAndroidとWebSocket通信を行う</title>
		<link>http://blog.toshipon.com/2011/11/02/%e3%81%95%e3%81%8f%e3%82%89vps%e3%81%a7node-js%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6android%e3%81%a8websocket%e9%80%9a%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86/</link>
		<comments>http://blog.toshipon.com/2011/11/02/%e3%81%95%e3%81%8f%e3%82%89vps%e3%81%a7node-js%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6android%e3%81%a8websocket%e9%80%9a%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 00:17:19 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[node.js]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://blog.toshipon.com/?p=45</guid>
		<description><![CDATA[今node.jsでWebSocket通信を行うというのがブームになっているようなので、 さくらVPSを使ってnode環境を構築してWebSocket通信を行なってみることにしました。 また、個人的にはAndroidがブームなので、ネイティブなAndroidアプリからWebSocket通信を 行うということもやってみたいと思います。 まずはさくらVPS側のnode環境構築です。 node.jsのインストール 本当はnaveというnodeのバージョン管理ツールがあるので、それをインストールしてからnode環境を構築した方がよかったのですが、 今回は時間がなかったので直接最新版をインストールする説明をします。 まず、下準備でopensslとopenssl-develをインストール sudo yum install openssl openssl-devel node.jsをインストール cd ~/ git clone git://github.com/joyent/node.git cd node ./configure  make sudo make install node.jsのパッケージマネージャーのnpmをインストール sudo chown -R $USER /usr/local curl http://npmjs.org/install.sh &#124; sh sudo chown -R root /usr/local WebSocket通信を行うためのライブラリをインストール npm install websocket-server 準備は完了したので、サーバ側の実装 server.js var sys = require('sys'); var ws = [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2011/11/02/%e3%81%95%e3%81%8f%e3%82%89vps%e3%81%a7node-js%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6android%e3%81%a8websocket%e9%80%9a%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>今node.jsでWebSocket通信を行うというのがブームになっているようなので、<br />
				さくらVPSを使ってnode環境を構築してWebSocket通信を行なってみることにしました。</p>
				<p>また、個人的にはAndroidがブームなので、ネイティブなAndroidアプリからWebSocket通信を<br />
				行うということもやってみたいと思います。</p>
				<p>まずはさくらVPS側のnode環境構築です。</p>
				<h3>node.jsのインストール</h3>
				<p>本当はnaveというnodeのバージョン管理ツールがあるので、それをインストールしてからnode環境を構築した方がよかったのですが、<br />
				今回は時間がなかったので直接最新版をインストールする説明をします。</p>
				<p>まず、下準備でopensslとopenssl-develをインストール</p>
				<pre class="brush:shell">sudo yum install openssl openssl-devel</pre>
<p>node.jsをインストール</p>
<pre class="brush:shell">
cd ~/
git clone git://github.com/joyent/node.git
cd node
./configure 
make
sudo make install
</pre>
				<p>node.jsのパッケージマネージャーのnpmをインストール</p>
				<pre class="brush:shell">
sudo chown -R $USER /usr/local
curl http://npmjs.org/install.sh | sh
sudo chown -R root /usr/local
</pre>
				<p>WebSocket通信を行うためのライブラリをインストール</p>
				<pre class="brush:shell">
npm install websocket-server
</pre>
				<p>準備は完了したので、サーバ側の実装<br />
				<strong>server.js</strong></p>
				<pre class="brush:js">
var sys = require('sys');
var ws = require('websocket-server');

var sockets = [];

var server = ws.createServer();

server.addListener('listening', function(nonnection) {
        sys.puts('listening..');
});
server.addListener('connection', function(connection){
        sockets.push(connection);
        sys.puts('connect');

        connection.addListener('message', function(message){
                sys.puts(message);
                for (var k in sockets) {
                        if (connection != sockets[k]){
                                sockets[k].send(message);
                        }
                }
        });
});

// 接続が切断された際のリスナー
server.addListener('close', function(connection){
        sys.puts('close');
});
// listenするポート番号を指定
server.listen(8001);
</pre>
				<p>nodeサーバの起動は以下を実行。「listen..」と出てきたら完了です。</p>
				<pre class="brush:shell">
node server.js
</pre>
				<p>続いてAndroid側の実装。WebSocket通信部分は<a href="http://code.google.com/p/weberknecht/">weberknecht</a>というライブラリを使用しています。</p>
				<p><strong>WebSocketManager.java</strong></p>
				<pre class="brush:java">
package com.toshipon.websocket.test;

import java.net.URI;
import java.net.URISyntaxException;

import android.util.Log;
import de.roderick.weberknecht.WebSocket;
import de.roderick.weberknecht.WebSocketConnection;
import de.roderick.weberknecht.WebSocketEventHandler;
import de.roderick.weberknecht.WebSocketException;

public class WebSocketManager {

	private static WebSocket websocket;

	public static void connect(String url, WebSocketEventHandler handler) {

		try {
			URI uri = new URI(url);
			websocket = new WebSocketConnection(uri);

			Log.d("DEBUG", "websocket connect start");
			websocket.setEventHandler(handler);
			websocket.connect();

		} catch (WebSocketException wse) {
			wse.printStackTrace();
		} catch (URISyntaxException use) {
			use.printStackTrace();
		}
	}

	public static void send(String message) {

		try {
			Log.d("DEBUG", "websocket connect send");
			websocket.send(message);
		} catch (WebSocketException wse) {
			wse.printStackTrace();
		}
	}

	public static void close() {
		try {
			Log.d("DEBUG", "websocket connect close");
			websocket.close();
		} catch (WebSocketException wse) {
			wse.printStackTrace();
		}
 	}
}
</pre>
				<p><strong>SendMessageActivity.java</strong></p>
				<pre class="brush:java">
package com.toshipon.websocket.test;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import de.roderick.weberknecht.WebSocketEventHandler;
import de.roderick.weberknecht.WebSocketMessage;

public class SendMessageActivity extends Activity {

	private static final String WS_URI = "ws://XXX.XX.XX.XXX:XXXX/";
	private static final String NULLPO_KEY = "nullpo";
	private static final String GATT_KEY = "gatt";

	private static final String NULLPO_TEXT = "ぬるぽ ( ´∀｀)";
	private static final String GATT_TEXT = "ｶﾞｯ (ヽ'ω`)";

	private Handler handler = new Handler();
	private Activity activity;

	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    Log.d("DEBUG", "opened message window");
	    setContentView(R.layout.message);
	    activity = this;

	    // ぬるぽボタン押下時の挙動
	    Button nullpoBtn = (Button) findViewById(R.id.btn_null_btn);
	    nullpoBtn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Log.d("DEBUG", "nullpo button clecked");
				WebSocketManager.send(NULLPO_KEY);
				setMessage(NULLPO_TEXT, Color.BLUE);
			}
		});

	    // ガッボタン押下時の挙動
	    Button gattBtn = (Button) findViewById(R.id.btn_ga_btn);
	    gattBtn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Log.d("DEBUG", "gatt button clecked");
				WebSocketManager.send(GATT_KEY);
				setMessage(GATT_TEXT, Color.GREEN);
			}
		});

	    // WebSocket通信開始
	    WebSocketManager.connect(WS_URI, new WebSocketEventHandler() {

 			@Override
 			public void onOpen() {
 				Log.d("DEBUG", "websocket connect open");
 			}

 			@Override
 			public void onMessage(WebSocketMessage message) {
 				Log.d("DEBUG", "websocket message");

 				if (NULLPO_KEY.equals(message.getText())) {
					setMessage(NULLPO_TEXT, Color.RED);
 				} else if (GATT_KEY.equals(message.getText())) {
 					setMessage(GATT_TEXT, Color.YELLOW);
 				}
 			}

 			@Override
 			public void onClose() {
 				Log.d("DEBUG", "websocket connect close");
 			}
 		});
	}

	private void setMessage(final String message, final int color) {
		Log.d("DEBUG", "send message");

		// WebSocketHandlerのonMessageは別スレッドなのでhandlerを用いてviewの書き換えを行う
		handler.post(new Runnable(){
	        @Override
	        public void run() {
	            TextView messageArea = (TextView) activity.findViewById(R.id.message_area);
	    		messageArea.setText(message);
	    		messageArea.setTextColor(color);
	        }
	    });

	}

	@Override
	protected Object clone() throws CloneNotSupportedException {
		WebSocketManager.close();
		return super.clone();
	}
}
</pre>
				<p>ソースはgithubに置いてあります。<br />
				<a href="https://github.com/toshipon/websocket_test_node">https://github.com/toshipon/websocket_test_node</a><br />
				<a href="https://github.com/toshipon/websocket_test_android">https://github.com/toshipon/websocket_test_android</a></p>
				<p>ちなみにこのサンプルアプリは、他の人と「ぬるぽ」「ｶﾞｯ」を双方向でやりあえるアプリです(笑)<br />
				二人ぐらいでやりあうのがいいと思います。<br />
				<a href="http://blog.toshipon.com/wp-content/uploads/2011/11/device-2011-11-03-143957.png"><img src="http://blog.toshipon.com/wp-content/uploads/2011/11/device-2011-11-03-143957.png" alt="" title="device-2011-11-03-143957" width="320" height="480" class="alignleft size-full wp-image-77" /></a><br />
				<a href="http://blog.toshipon.com/wp-content/uploads/2011/11/device-2011-11-03-144018.png"><img src="http://blog.toshipon.com/wp-content/uploads/2011/11/device-2011-11-03-144018.png" alt="" title="device-2011-11-03-144018" width="320" height="480" class="alignleft size-full wp-image-78" /></a></p>
				<p><strong>参考にしたサイト</strong><br />
				<a href="http://havelog.ayumusato.com/develop/javascript/e210-install_nodejs_and_npm.html" title="node.jsとnpmのインストールをしたメモ（CentOS さくらのVPS）" target="_blank">node.jsとnpmのインストールをしたメモ（CentOS さくらのVPS）</a><br />
				<a href="http://d.hatena.ne.jp/Nubilum/20110525/1306341271" title="Androidからnode.jsとWebSocket通信をする実装 - Nubilumの日記" target="_blank">Androidからnode.jsとWebSocket通信をする実装 &#8211; Nubilumの日記</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2011/11/02/%e3%81%95%e3%81%8f%e3%82%89vps%e3%81%a7node-js%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6android%e3%81%a8websocket%e9%80%9a%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[メモ]コードレビューツールshinjikoのインストール方法</title>
		<link>http://blog.toshipon.com/2011/01/23/shinjiko/</link>
		<comments>http://blog.toshipon.com/2011/01/23/shinjiko/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 11:13:46 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[memo]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[shinjiko]]></category>

		<guid isPermaLink="false">http://www12194u.sakura.ne.jp/toshipon/?p=34</guid>
		<description><![CDATA[shinjikoをwindows環境とMac環境にインストールしたので、自分のメモ用に書いておきます。 インストール 前提 rubyがインストールされていること。 gemがインストールされていること。 (Macの場合MacPortsがインストールされていること。) 事前準備(Windowsの場合) gemでの準備 gem install rails -v 2.0.2 gem install gettext -v 1.10.0 ※バージョンの高いgettextが入っている場合はエラーになる場合がある。そのときはgem uninstall gettext で1.10.0より高いバージョンを削除 gem install diff-lcs gem install will_paginate gem install sqlite3-ruby gem install subversion 事前準備(Unixの場合) MacPortsでの準備 sudo port install subversion-rubybindings gemでの準備 sudo gem install rails -v 2.0.2 sudo gem install gettext -v 1.10.0 ※バージョンの高いgettextが入っている場合はエラーになる場合がある。そのときはgem uninstall [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2011/01/23/shinjiko/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>shinjikoをwindows環境とMac環境にインストールしたので、自分のメモ用に書いておきます。</p>
				<ol>
				<li>インストール
				<ol>
				<li>前提
				<ol>
				<li>rubyがインストールされていること。</li>
				<li>gemがインストールされていること。</li>
				<li>(Macの場合MacPortsがインストールされていること。)</li>
				</ol>
				</li>
				<li>事前準備(Windowsの場合)
				<ol>
				<li>gemでの準備
				<ol>
				<li>gem install rails -v 2.0.2</li>
				<li>gem install gettext -v 1.10.0<br /> ※バージョンの高いgettextが入っている場合はエラーになる場合がある。そのときはgem uninstall gettext で1.10.0より高いバージョンを削除</li>
				<li>gem install diff-lcs</li>
				<li>gem install will_paginate</li>
				<li>gem install sqlite3-ruby</li>
				<li>gem install subversion</li>
				</ol>
				</li>
				</ol>
				</li>
				<li>事前準備(Unixの場合)
				<ol>
				<li>MacPortsでの準備
				<ol>
				<li>sudo port install subversion-rubybindings</li>
				</ol>
				</li>
				<li>gemでの準備
				<ol>
				<li>sudo gem install rails -v 2.0.2</li>
				<li>sudo gem install gettext -v 1.10.0<br /> ※バージョンの高いgettextが入っている場合はエラーになる場合がある。そのときはgem uninstall gettext で1.10.0より高いバージョンを削除</li>
				<li>sudo gem install diff-lcs</li>
				<li>sudo gem install will_paginate</li>
				<li>sudo gem install sqlite3-ruby</li>
				</ol>
				</li>
				</ol>
				</li>
				<li>その他ライブラリが不足している場合はこちらを参考
				<ul>
				<li>http://code.google.com/p/shinjiko/wiki/GemsList</li>
				</ul>
				</li>
				<li>shinjiko チェックアウト
				<ul>
				<li># svn checkout http://shinjiko.googlecode.com/svn/trunk/ shinjiko</li>
				</ul>
				</li>
				<li>shinjiko 設定ファイル変更
				<ol>
				<li>shinjiko/config/database.sample.yml &rarr; shinjiko/config/database.yml
				<ul>
				<li>
				<pre>
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000</pre>
				</li>
				</ul>
				</li>
				<li>shinjiko/config/environments/development.sample.rb &rarr; shinjiko/config/environments/development.rb</li>
				</ol>
				</li>
				<li>rakeでテーブル作成
				<ul>
				<li># rake db:migrate</li>
				</ul>
				</li>
				<li>shinjikoの起動
				<ul>
				<li># ruby script/server</li>
				</ul>
				</li>
				</ol>
				</li>
				</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2011/01/23/shinjiko/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[勉強会]DevLOVE HangarFlightのメモ</title>
		<link>http://blog.toshipon.com/2011/01/04/devlove_hangarflight/</link>
		<comments>http://blog.toshipon.com/2011/01/04/devlove_hangarflight/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 02:34:00 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[GAE]]></category>
		<category><![CDATA[勉強会]]></category>
		<category><![CDATA[gae]]></category>

		<guid isPermaLink="false">http://www12194u.sakura.ne.jp/toshipon/?p=33</guid>
		<description><![CDATA[気がつけば先々週の出来事ですが,, 青山オラクルセンターで開催されましたDevLoveのイベントに参加してきましたので、参加セッション３つのメモを備忘録としてまとめておきます。 *参加セッション +【闇】「RIAとユーザーエクスペリエンス（闇編）」 +【開発】「コードで学ぶ ドメイン駆動設計 入門 +【アーキテクチャ】「Google App Engineの勘所」 *RIAとユーザーエクスペリエンス（闇編） -@take3000 &#8211; http://twitter.com/#!/take3000 &#8211; http://classmethod.jp/ -FlexやSilverlight, AjaxなどのRIAな技術が一般的になりつつあり、ユーザが求めるUIの質もあがってきている。 -RIA開発でスピード感のある開発ができることになって、コストを圧縮できるようになってきた。でも未だにユーザエクスペリエンスが軽視されていてそれにコストを費やすということをしていないのが現状。 -ユーザエクスペリエンス(UX)とは「速く」「間違わない」ということ -UXは設計の段階で専門の知識を持った人(デザイナとか)に考えてもらう必要がある。 -UXは戦略にも活かせる。例えばyouRoomはバージョンアップによって有料会員登録したくなるようなUIになった。 *コードで学ぶドメイン駆動設計 入門 -@j5ik2o &#8211; http://twitter.com/#!/j5ik2o -[DDD][Java] DEVLOVE HangarFlight で話したスライド&#038;ソースコードCommentsAdd Star &#8211; http://d.hatena.ne.jp/j5ik2o/20101221/1292934554 ドメインとは、属性だけではなく振る舞いを持っている。また、不変と可変を明確にすることでバグの少ないコード設計ができる。・・・というところまで理解したのですが、詳しくはまだ正直DDDとはということを理解しきれていません>< ソースコードを公開してくださったので、そちらを実際に呼んで消化してから別の機会にまとめたいと思います。。 *Google App Engineの勘所 -@shin1ogawa &#8211; http://twitter.com/#!/shin1ogawa &#8211; http://www.topgate.co.jp/ -Google App Engineで動いているウェブサービス &#8211;2009衆院選公式サイト &#8211;[google:Buyなう] &#8211;[google:スポーツSNS LaBOLA] &#8211;[google:Chan-Toru beta] &#8211;mixi系ソーシャルアプリ **勘所 [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2011/01/04/devlove_hangarflight/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>気がつけば先々週の出来事ですが,, 青山オラクルセンターで開催されましたDevLoveのイベントに参加してきましたので、参加セッション３つのメモを備忘録としてまとめておきます。<br />
				*参加セッション<br />
				+【闇】「RIAとユーザーエクスペリエンス（闇編）」<br />
				+【開発】「コードで学ぶ ドメイン駆動設計 入門<br />
				+【アーキテクチャ】「Google App Engineの勘所」<br />
				*RIAとユーザーエクスペリエンス（闇編）<br />
				-@take3000 &#8211; http://twitter.com/#!/take3000 &#8211; http://classmethod.jp/<br />
				-FlexやSilverlight, AjaxなどのRIAな技術が一般的になりつつあり、ユーザが求めるUIの質もあがってきている。<br />
				-RIA開発でスピード感のある開発ができることになって、コストを圧縮できるようになってきた。でも未だにユーザエクスペリエンスが軽視されていてそれにコストを費やすということをしていないのが現状。<br />
				-ユーザエクスペリエンス(UX)とは「速く」「間違わない」ということ<br />
				-UXは設計の段階で専門の知識を持った人(デザイナとか)に考えてもらう必要がある。<br />
				-UXは戦略にも活かせる。例えばyouRoomはバージョンアップによって有料会員登録したくなるようなUIになった。<br />
				*コードで学ぶドメイン駆動設計 入門<br />
				-@j5ik2o &#8211; http://twitter.com/#!/j5ik2o<br />
				-[DDD][Java] DEVLOVE HangarFlight で話したスライド&#038;ソースコードCommentsAdd Star &#8211; http://d.hatena.ne.jp/j5ik2o/20101221/1292934554<br />
				ドメインとは、属性だけではなく振る舞いを持っている。また、不変と可変を明確にすることでバグの少ないコード設計ができる。・・・というところまで理解したのですが、詳しくはまだ正直DDDとはということを理解しきれていません>< ソースコードを公開してくださったので、そちらを実際に呼んで消化してから別の機会にまとめたいと思います。。<br />
				*Google App Engineの勘所<br />
				-@shin1ogawa &#8211; http://twitter.com/#!/shin1ogawa &#8211; http://www.topgate.co.jp/<br />
				-Google App Engineで動いているウェブサービス<br />
				&#8211;2009衆院選公式サイト<br />
				&#8211;[google:Buyなう]<br />
				&#8211;[google:スポーツSNS LaBOLA]<br />
				&#8211;[google:Chan-Toru beta]<br />
				&#8211;mixi系ソーシャルアプリ<br />
				**勘所<br />
				-基本ファイルアクセスやスレッド処理、ソケットの使用は禁止<br />
				-JDK内でも使用できないライブラリもある（AWTとか使えない）<br />
				-複数のVMで動くことが前提なので、それを意識したコードを書かないといけない<br />
				-依存モジュール内でも制約がある<br />
				-JDOやJPAを勉強するとGAEのデータストアを扱えるというのはGoogle様による罠。だいたいの人がハマってしまう。「インデックス」と「エンティティグループ」という考えをまず理解することが大事。(GAEのデータストアはBigTableの上にデータストアという概念を構築したもの)<br />
				-GAEを金を払えさえすれば、自由に使えるという訳ではない。「分単位」の制限はあるし、API制限もある。<br />
				-Slim3というデファクトスタンダードなフレームワークがある。<br />
				-HTMLは静的で扱い、JSONやGWTでデータを返すのが一般的。<br />
				-一定の確率で失敗するのはGAEの仕様である。<br />
				&#8211;1/1000の確率でデータアクセスに失敗する。<br />
				&#8211;コントローラの大元などでハンドリングしてあげる。<br />
				&#8211;GAEでWebサービスの調子が悪くなっているのはGAEが落ちているんじゃなくてアプリが落ちていると考える。<br />
				**お金の儲け方<br />
				-Googleアプリケーションのプラットフォーム<br />
				&#8211;Google Apps(300万企業ユーザが使用)<br />
				&#8211;Google Apps Marketplace(企業向け)<br />
				&#8212;100$で開発者登録ができる(iPhoneアプリ開発と同じ感じ)<br />
				&#8212;Apps拡張アプリを開発して販売できる<br />
				&#8212;アプリ売上の８割が利益<br />
				&#8211;Chrome Marketplace(コンシューマー向け)<br />
				&#8211;Chrome Web Store<br />
				-エンドユーザーに近いマーケットが沢山ある。<br />
				**狙いにくいところ<br />
				-特定社内向け業務アプリの提案<br />
				&#8211;クラウド、GAEの説明が大変。広い層をターゲットにする方が向いている。<br />
				**チャンスを活かそう<br />
				-生産性の高さがハンパない<br />
				&#8211;だからこそ敷居を超えれば簡単。アプリケーション開発に集中できる。<br />
				-スモールスタートしやすい。<br />
				-自動スケールアウト<br />
				-GAEはGoogle Apps, Marketplace向けアプリ開発との親和性が高い<br />
				*Togetterのまとめ<br />
				-2010/12/18 DEVLOVE HangarFlight &#8211; Winter Sortie &#8211; [http://togetter.com/li/80353]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2011/01/04/devlove_hangarflight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Flash]Google Maps API for Flashで全画面地図表示</title>
		<link>http://blog.toshipon.com/2010/08/21/flashgoogle_maps_api_for_flash/</link>
		<comments>http://blog.toshipon.com/2010/08/21/flashgoogle_maps_api_for_flash/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 14:07:46 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www12194u.sakura.ne.jp/toshipon/?p=32</guid>
		<description><![CDATA[技術的に難しい話等では全くなく、ただGoogle Mapsを全画面表示してヌルヌル動かせたら気持ちいいじゃない、ということで作ってみました。Google Maps API for Flashを使用してFlashオブジェクト上にGoogle Mapsを表示し、Flash Player標準機能のフルスクリーンモードを使用するという魂胆です。 google map を表示 個人的には19インチ以上のディスプレイで全画面表示して、地図を動かしまくるととても幸せになれます。それにしてもGoogle Mapsは地図のタイルごとにリクエストが走ってるようですが、これだけのリクエスト数をさばけるGoogleのサーバってつくづく次元が違うなと思います。 以下、サンプルコードです。 package { import com.google.maps.InfoWindowOptions; import com.google.maps.LatLng; import com.google.maps.Map; import com.google.maps.MapEvent; import com.google.maps.MapType; import com.google.maps.overlays.Marker; import com.google.maps.overlays.MarkerOptions; &#160; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageDisplayState; import flash.display.StageScaleMode; import flash.events.MouseEvent; import flash.geom.Point; &#160; &#160; public class GoogleMapSample extends Sprite { // 緯度経度 : 東京タワー [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2010/08/21/flashgoogle_maps_api_for_flash/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>技術的に難しい話等では全くなく、ただGoogle Mapsを全画面表示してヌルヌル動かせたら気持ちいいじゃない、ということで作ってみました。<a href="http://code.google.com/intl/ja/apis/maps/documentation/flash/">Google Maps API for Flash</a>を使用してFlashオブジェクト上にGoogle Mapsを表示し、Flash Player標準機能のフルスクリーンモードを使用するという魂胆です。</p>
				<p><a href="http://www.toshipon.com/fla/map/GoogleMapSample.html"><img class="mt-image-none" src="http://blog.toshipon.com/mapsample.png" alt="mapsample.png" width="396" height="229" /></a></p>
				<p><a href="http://www.toshipon.com/fla/map/GoogleMapSample.html">google map を表示</a></p>
				<p>個人的には19インチ以上のディスプレイで全画面表示して、地図を動かしまくるととても幸せになれます。それにしてもGoogle Mapsは地図のタイルごとにリクエストが走ってるようですが、これだけのリクエスト数をさばけるGoogleのサーバってつくづく次元が違うなと思います。</p>
				<p>以下、サンプルコードです。</p>
				<pre type="syntaxhighlighter" class="brush: as3">

package

{

import com.google.maps.InfoWindowOptions;

import com.google.maps.LatLng;

import com.google.maps.Map;

import com.google.maps.MapEvent;

import com.google.maps.MapType;

import com.google.maps.overlays.Marker;

import com.google.maps.overlays.MarkerOptions;

&nbsp;

import flash.display.Sprite;

import flash.display.StageAlign;

import flash.display.StageDisplayState;

import flash.display.StageScaleMode;

import flash.events.MouseEvent;

import flash.geom.Point;

&nbsp;

&nbsp;

public class GoogleMapSample extends Sprite

{

// 緯度経度 : 東京タワー

private static var LATLNG:LatLng = new LatLng( 35.658682,139.745407 );

// 倍率

private static const ZOOM:int = 16;

// マップオブジェクト

private var map:Map;

&nbsp;

public function GoogleMapSample() {

// ステージ初期化

stage.scaleMode = StageScaleMode.NO_SCALE;

stage.align = StageAlign.TOP_LEFT;

&nbsp;

map = this.createMap();

this.addChild(map);

&nbsp;

stage.addEventListener(MouseEvent.CLICK, onClickHandler);

}

&nbsp;

// マップオブジェクトの生成

private function createMap():Map {

var map:Map = new Map();

map.setSize(new Point( stage.stageWidth, stage.stageHeight));

map.addEventListener(MapEvent.MAP_READY, mapReadyHandler);

map.key = "ABQIAAAAiccmmCNILO3xd09xRuUlRBQTIuW28Ed72BnpVhdf4jwqbtfYRBRsXdvrvtm17NUylBfmCtX91DbTVQ"

return map;

}

&nbsp;

private function mapReadyHandler( event:MapEvent ):void {

// マップオブジェクトのサイズの初期設定

map.setCenter(LATLNG, ZOOM, MapType.NORMAL_MAP_TYPE); // ノーマルモード

//map.setCenter(LATLNG, ZOOM, MapType.SATELLITE_MAP_TYPE);　// 航空写真モード

&nbsp;

// マウスホイール有効

map.enableScrollWheelZoom();

// 滑らかなズームを有効

map.enableContinuousZoom();

&nbsp;

// マーカーの追加

var marker:Marker = new Marker(

LATLNG,

new MarkerOptions( {

radius: 12,

hasShadow: true

})

);

map.addOverlay(marker);

}

&nbsp;

private function onClickHandler( event:Mouse
Event ):void {

// フルスクリーン化

if (stage.displayState != StageDisplayState.FULL_SCREEN) {

stage.displayState = StageDisplayState.FULL_SCREEN;

map.setSize(new Point( stage.stageWidth, stage.stageHeight));

}

}

}

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2010/08/21/flashgoogle_maps_api_for_flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[FxUG]Flex勉強会#89に行ってきましたメモ</title>
		<link>http://blog.toshipon.com/2009/11/08/fxugflex89/</link>
		<comments>http://blog.toshipon.com/2009/11/08/fxugflex89/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 11:17:46 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[勉強会]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[FxUG]]></category>

		<guid isPermaLink="false">http://www12194u.sakura.ne.jp/toshipon/?p=30</guid>
		<description><![CDATA[先日(11/5(木))行われましたFlex User Groupの勉強会に行ってきました。途中参加だったのですが(会場がAdobeのオフィスから別の場所に移ってて大崎を30分ぐらい彷徨ってました&#62;&#60;)、メモした内容などをまとめておきます。 taigaさんのAdobe MAX 2009のレポート 写真でAdobe MAXの様子やAdobe本社のオフィスの様子を紹介 http://blog.taiga.jp/archives/2009/11/04/163000/ taigaさんのAIR2.0の新機能デモ デスクトップ上のファイル情報をAIRで表示 画像ファイルをWindowsのViewerで表示 USBデバイスの認識(接続と切断のイベントの取得が可能) マルチタッチイベントの取得(Windows7が某番組と同じく本番で正常に動作しないw) Greg Wilson氏のFlash関連の最新情報 Flash Player 10.1 パフォーマンスの向上(メモリ、バッテリー、CPU使用量改善) マルチタッチ、ジェスチャーの対応 Accelerometer(加速度センサー)対応 傾き認識対応 複数のSWFファイルを管理可能、SWFの優先順位を決定することが可能 リソースの制限を管理可能(メモリ制限を検知) Global Error Handling マウスイベントとタッチイベントの互換性 iPhone on Flash CS5 Flash CS5でiPhoneアプリのネイティブコードを吐き出せるようになる AppStoreですでにアプリが公開されている。(South Parkのアバター作成アプリとか) iPhone on Flash CS5でできないこと HTMLの埋め込み(Safariを呼び出すことは可能) RTMP H.264 Video再生(iPhoneネイティブの動画再生呼び出しは可能) SWFの動的ロード Pixel Blenderを使用したSWF ガーベッジコレクションはFlash側で自動で制御してくれる SQLite使用可能 AIR2.0 パフォーマンスの向上(メモリ、CPUの使用量) Webkit(HTML5,CSS3対応) LiveCycle Mosaic [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2009/11/08/fxugflex89/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p>先日(11/5(木))行われましたFlex User Groupの勉強会に行ってきました。途中参加だったのですが(会場がAdobeのオフィスから別の場所に移ってて大崎を30分ぐらい彷徨ってました&gt;&lt;)、メモした内容などをまとめておきます。</p>
				<ol>
				<li><span style="color: rgb(0, 0, 255);">     <span style="font-size: 120%;">taigaさんのAdobe MAX 2009のレポート</span>     </span>
				<ul>
				<li><span style="font-size: 120%;">写真でAdobe MAXの様子やAdobe本社のオフィスの様子を紹介</span></li>
				<li><span style="font-size: 120%;"><a href="http://blog.taiga.jp/archives/2009/11/04/163000/">http://blog.taiga.jp/archives/2009/11/04/163000/</a><br />         </span></li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 0, 255);"><span style="font-size: 120%;">taigaさんのAIR2.0の新機能デモ</span></span><br /> 
				<ul>
				<li><span style="font-size: 120%;">デスクトップ上のファイル情報をAIRで表示</span></li>
				<li><span style="font-size: 120%;">画像ファイルをWindowsのViewerで表示</span></li>
				<li><span style="font-size: 120%;">USBデバイスの認識(接続と切断のイベントの取得が可能)</span></li>
				<li><span style="font-size: 120%;">マルチタッチイベントの取得(Windows7が某番組と同じく本番で正常に動作しないw)<br />         </span></li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 0, 255);"><span style="font-size: 120%;"><a href="http://gregsramblings.com/">Greg Wilson氏</a>のFlash関連の最新情報</span></span><br /> 
				<ol>
				<li><span style="color: rgb(0, 51, 102);"><span style="font-size: 120%;">Flash Player 10.1</span></span><br /> 
				<ul>
				<li>パフォーマンスの向上(メモリ、バッテリー、CPU使用量改善)</li>
				<li>マルチタッチ、ジェスチャーの対応</li>
				<li>Accelerometer(加速度センサー)対応</li>
				<li>傾き認識対応</li>
				<li>複数のSWFファイルを管理可能、SWFの優先順位を決定することが可能</li>
				<li>リソースの制限を管理可能(メモリ制限を検知)</li>
				<li>Global Error Handling</li>
				<li>マウスイベントとタッチイベントの互換性</li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 0, 128);"><span style="font-size: 120%;">iPhone on Flash CS5</span></span><br /> 
				<ul>
				<li>Flash CS5でiPhoneアプリのネイティブコードを吐き出せるようになる</li>
				<li>AppStoreですでにアプリが公開されている。(South Parkのアバター作成アプリとか)</li>
				<li>iPhone on Flash CS5でできないこと<br /> 
				<ul>
				<li>HTMLの埋め込み(Safariを呼び出すことは可能)</li>
				<li>RTMP</li>
				<li>H.264 Video再生(iPhoneネイティブの動画再生呼び出しは可能)</li>
				<li>SWFの動的ロード</li>
				<li>Pixel Blenderを使用したSWF</li>
				</ul>
				</li>
				<li>ガーベッジコレクションはFlash側で自動で制御してくれる</li>
				<li>SQLite使用可能</li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 0, 128);"><span style="font-size: 120%;">AIR2.0</span></span><br /> 
				<ul>
				<li><span style="font-size: 120%;">パフォーマンスの向上(メモリ、CPUの使用量)</span></li>
				<li><span style="font-size: 120%;">Webkit(HTML5,CSS3対応)</span></li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 51, 102);"><span style="font-size: 120%;">LiveCycle Mosaic</span>         </span>
				<ul>
				<li><span style="font-size: 120%;">１つのアプリケーション上にタイル状にSWF,HTMLの配置が可能</span></li>
				<li><span style="font-size: 120%;">複数のタイルで連携が可能</span></li>
				<li><span style="font-size: 120%;">年末に出荷予定</span></li>
				<li><span style="font-size: 120%;">主に業務系のアプリケーションのマッシュアップに利用</span></li>
				<li><a href="http://www.adobe.com/products/livecycle/mosaic/"><span style="font-size: 120%;">http://www.adobe.com/products/livecycle/mosaic/</span></a></li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 51, 102);"><span style="font-size: 120%;">Tour de Flex</span>         </span>
				<ul>
				<li><span style="font-size: 120%;">Flexアプリケーションのサンプル集</span></li>
				<li><span style="font-size: 120%;">Flex4のサンプルも多く投入予定</span></li>
				<li><span style="font-size: 120%;">Flash Player 10.1対応のサンプルも投入</span></li>
				<li><span style="font-size: 120%;">サンプルソースを見ることが可能</span></li>
				<li><span style="font-size: 120%;">Tour de FlexのAIR版アプリのDL可能</span></li>
				<li><span style="font-size: 120%;">サンプルアプリの投稿も絶賛受付中</span></li>
				<li><span style="font-size: 120%;"><a href="http://www.adobe.com/devnet/flex/tourdeflex/">http://www.adobe.com/devnet/flex/tourdeflex/</a></span></li>
				</ul>
				</li>
				<li><span style="color: rgb(0, 51, 102);"><span style="font-size: 120%;">Flex + AIR2.0 + ColdFusion + LiveCycle アプリ絶賛公開中(ChessJam)</span></span><br /> 
				<ul>
				<li><span style="font-size: 120%;">世界中の人とリアルタイムでチェスの対戦ができるアプリをデモとして公開</span></li>
				<li><span style="font-size: 120%;">デモってレベルじゃねーぞ＞＜ 完成度高すぎるしこれタダでいいの!?</span></li>
				<li><span style="font-size: 120%;">ソースは来週(Greg Wilson氏のブログで公開！)</span></li>
				<li><span style="font-size: 120%;">業務系のアプリケーションで使用するような技術で作成</span></li>
				<li><span style="font-size: 120%;"><a href="http://chessjam.com/">http://chessjam.com/</a></span></li>
				</ul>
				</li>
				</ol>
				</li>
				</ol>
				<p>ところどころ情報が歯抜けなところがありますがご了承下さい＞＜<br /> あ、あとtaigaさんからAdobe LiveCycle ES2のプレリリースDVDをAdobe MAXのお土産でいただきましたw 個人であまり使用するものじゃないので使用方法がよくわからないですが、とりあえずServerインストールしてWorkbench使ってみたりしてみます＞＜</p>
				<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2009/11/08/fxugflex89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mitaka.rb &amp; pgcafe Nite！！いってきた</title>
		<link>http://blog.toshipon.com/2009/07/31/mitakarb_pgcafe_nite/</link>
		<comments>http://blog.toshipon.com/2009/07/31/mitakarb_pgcafe_nite/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 01:12:55 +0000</pubDate>
		<dc:creator>toshipon</dc:creator>
				<category><![CDATA[勉強会]]></category>
		<category><![CDATA[Mitaka.rb]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www12194u.sakura.ne.jp/toshipon/?p=29</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160; 記事にするのが遅くなりましたが、7/23(木)に行われましたMitaka.rb第三回＆三鷹プログラマーズカフェ合同懇親会に行ってきました。 Mitaka.rbには「おいしいRuby」というサブテーマ(?)があるので、三鷹の人気レストラン「リトルスター・レストラン」を貸し切って、食べまくり飲みまくりのすごくおいしい懇親会でした。でてくる食事がどれもおいしすぎでした！ビールもとてもおいしかったです！主催のysakakiさんお疲れさまでした&#38;ありがとうございました！＞＜ また、プロジェクタを使ってのLTもあり、とてもおいしい(?)情報もお聞きすることができました。ursmさんのHaml/Sassのお話、btoさんの起業のお話をはじめ、Ruby以外の話も多く、とても新鮮でおもしろかったです！以下、簡単にまとめました。 主なメニュー 基調講演：日本Hamlの会 会長ursmさんの Haml/Sassのお話 htmlの冗長な記述を無くし、シンプルかつDRYなhtmlの記述ができるHamlと、同じく冗長なCSSの記述をシンプルに行えるSassの紹介 Railsのプラグインで提供されている。また他の言語でもいくつか実装されている。Javaはなかったかも。 とにかくコードの記述量が少ない！見やすい！CSSの変数とかテンプレートとかいい！ デザイナーとの分業が難しいけど、デザイナーがHaml/Sass書けたら強いw http://d.hatena.ne.jp/ursm/20090726/1248613369 btoさんの客員起業家のお話 客員起業家とはベンチャーキャピタルをおこなっている会社と一定の条件の契約をし、自分の起業活動を支援してもらえるビジネスモデル。 EXIT(上場または買収)するまでが基本的な契約の期間。その後VC企業は株主の権利とかいろいろ保持できる。 技術者は手に職をもってるから起業失敗したときのリスクは少ない。もっと技術者は起業するべき！ http://www.scribd.com/doc/17091811/EIR jishiha さんのWebサービス開発のすすめの話 Railsを開発した会社が公開している、Webアプリケーション開発のすすめ、Getting Realの紹介 結構奥が深くて、なるほどーということが沢山書いてある。是非ぜんぷに目を通したい！ あとで行くを運営されています。行きたいところブクマできる。これは便利。 nakataniさんの処理系を作ろうなお話 COO! JSRubyのお話。JavaScriptでRubyを実装する方法！みんなも処理系を作ろう！ http://d.hatena.ne.jp/n_shuyo/20090724/mitaka 30min. の野々村さんのお話 30minの裏側について。品質を上げるため手動でメンテナンスを行っているとかすごい。 技術者募集中！ http://www.nonomura.jp/2009/07/mitakarb-pgcafe-nite-31st-birt.html]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script type="text/javascript">
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=209408382488146";
  fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"));
</script>
<fb:like href="http://blog.toshipon.com/2009/07/31/mitakarb_pgcafe_nite/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>				<p><span style="display: inline;" class="mt-enclosure mt-enclosure-image">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     <a href="http://atnd.org/events/983"><img height="327" width="474" class="mt-image-none" src="http://blog.toshipon.com/assets_c/2009/07/ピクチャ 1-thumb-628x432-12.png" alt="littlestar1" /></a></span>
				<p>記事にするのが遅くなりましたが、7/23(木)に行われましたMitaka.rb第三回＆三鷹プログラマーズカフェ合同懇親会に行ってきました。</p>
				<p>Mitaka.rbには「おいしいRuby」というサブテーマ(?)があるので、三鷹の人気レストラン「リトルスター・レストラン」を貸し切って、食べまくり飲みまくりのすごくおいしい懇親会でした。でてくる食事がどれもおいしすぎでした！ビールもとてもおいしかったです！主催のysakakiさんお疲れさまでした&amp;ありがとうございました！＞＜</p>
				<p>また、プロジェクタを使ってのLTもあり、とてもおいしい(?)情報もお聞きすることができました。ursmさんのHaml/Sassのお話、btoさんの起業のお話をはじめ、Ruby以外の話も多く、とても新鮮でおもしろかったです！以下、簡単にまとめました。</p>
				<h3>主なメニュー</h3>
				<h4>基調講演：日本Hamlの会 会長ursmさんの Haml/Sassのお話</h4>
				<ul>
				<li>htmlの冗長な記述を無くし、シンプルかつDRYなhtmlの記述ができるHamlと、同じく冗長なCSSの記述をシンプルに行えるSassの紹介</li>
				<li>Railsのプラグインで提供されている。また他の言語でもいくつか実装されている。Javaはなかったかも。</li>
				<li>とにかくコードの記述量が少ない！見やすい！CSSの変数とかテンプレートとかいい！</li>
				<li>デザイナーとの分業が難しいけど、デザイナーがHaml/Sass書けたら強いw</li>
				<li><a href="http://d.hatena.ne.jp/ursm/20090726/1248613369">http://d.hatena.ne.jp/ursm/20090726/1248613369</a></li>
				</ul>
				<h4>btoさんの客員起業家のお話</h4>
				<ul>
				<li>客員起業家とはベンチャーキャピタルをおこなっている会社と一定の条件の契約をし、自分の起業活動を支援してもらえるビジネスモデル。</li>
				<li>EXIT(上場または買収)するまでが基本的な契約の期間。その後VC企業は株主の権利とかいろいろ保持できる。</li>
				<li>技術者は手に職をもってるから起業失敗したときのリスクは少ない。もっと技術者は起業するべき！</li>
				<li><a href="http://www.scribd.com/doc/17091811/EIR">http://www.scribd.com/doc/17091811/EIR</a></li>
				</ul>
				<h4>jishiha さんのWebサービス開発のすすめの話</h4>
				<ul>
				<li>Railsを開発した会社が公開している、Webアプリケーション開発のすすめ、<a href="https://gettingreal.37signals.com/">Getting Real</a>の紹介</li>
				<li>結構奥が深くて、なるほどーということが沢山書いてある。是非ぜんぷに目を通したい！</li>
				<li><a href="http://atodeiku.com/">あとで行く</a>を運営されています。行きたいところブクマできる。これは便利。</li>
				</ul>
				<h4>nakataniさんの処理系を作ろうなお話</h4>
				<ul>
				<li>COO!</li>
				<li>JSRubyのお話。JavaScriptでRubyを実装する方法！みんなも処理系を作ろう！</li>
				<li><a target="_blank" href="http://d.hatena.ne.jp/n_shuyo/20090724/mitaka">http://d.hatena.ne.jp/n_shuyo/20090724/mitaka</a></li>
				</ul>
				<h4>30min. の野々村さんのお話</h4>
				<ul>
				<li>30minの裏側について。品質を上げるため手動でメンテナンスを行っているとかすごい。</li>
				<li>技術者募集中！</li>
				<li><a href="http://www.nonomura.jp/2009/07/mitakarb-pgcafe-nite-31st-birt.html">http://www.nonomura.jp/2009/07/mitakarb-pgcafe-nite-31st-birt.html</a></li>
				</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.toshipon.com/2009/07/31/mitakarb_pgcafe_nite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

