<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>web for the next</title>
	<atom:link href="http://webforthenext.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://webforthenext.wordpress.com</link>
	<description>次の段階、次のつながり、次の時代、次の世代・・・、さまざなま『次』のために、NPO/NGO や web で何ができるのかを考えます。</description>
	<lastBuildDate>Sun, 12 Feb 2012 16:15:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='webforthenext.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/49251ce7898f780891ad1304cf463f8f?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>web for the next</title>
		<link>http://webforthenext.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://webforthenext.wordpress.com/osd.xml" title="web for the next" />
	<atom:link rel='hub' href='http://webforthenext.wordpress.com/?pushpress=hub'/>
		<item>
		<title>OSX LionでEgitからgithubにSSH接続するエラーが解決した</title>
		<link>http://webforthenext.wordpress.com/2012/02/13/osx-lion%e3%81%a7egit%e3%81%8b%e3%82%89github%e3%81%abssh%e6%8e%a5%e7%b6%9a%e3%81%99%e3%82%8b%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e8%a7%a3%e6%b1%ba%e3%81%97%e3%81%9f/</link>
		<comments>http://webforthenext.wordpress.com/2012/02/13/osx-lion%e3%81%a7egit%e3%81%8b%e3%82%89github%e3%81%abssh%e6%8e%a5%e7%b6%9a%e3%81%99%e3%82%8b%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e8%a7%a3%e6%b1%ba%e3%81%97%e3%81%9f/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 16:15:30 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[twitterbot]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=548</guid>
		<description><![CDATA[OSX Lion上、Eclipseでの開発にgitを使ってみようと思ってEgitプラグインを入れたのですが、これがどうにもgithubにSSHでつながってくれなかったのですが、それが解決したのでメモしときます。ちなみに、コマンドラインからgitコマンドはほとんど使ってません。usernameとかを設定したくらいかな？ 基本的には、以下のページを元に設定して進めていきました。 gitのインストール：port install git-core Egitのインストール：Eclipse Git プラグイン ～ インストールからコミット、履歴の比較まで （良記事です） Eclipse上でサンプルプロジェクトを作成 github上に同じ名前でリポジトリを作成 SSHのキーを作成しgithubに登録：Set Up Git （githubの公式ヘルプ） EgitからgithubにPushするところ：Github Tutorial （Egitの公式ヘルプ） ここまでは順調でした。で、Pushする際にgithubで作ったリポジトリのURIを指定してプロトコルをSSHにしてnextボタンを押した所で、&#8221;session is down&#8221;とか&#8221;cannot get remote repository refs&#8221;とかのエラーがでて、先に進めませんでした。（OSXのではなく）Eclipseのデザインでのパスワードを入れるポップアップがでたときもあり、ここにSSHのパスフレーズを入れてもだめ。プロトコルでhttpsを選べば進むようだったけど、せっかくなのでSSHでやりたい。 検索したところ、以下の掲示板で同じ問題に関する話題がありました。 EGit &#8211; SSH Fails at Passphrase (when connecting to GitHub) 要は、環境変数に GIT_SSH=/usr/bin/ssh を追加してみて、ということ。そもそもOSXで環境変数の追加の方法がわからなかったので、 Mac OS XでのJAVA_HOMEと環境変数の設定方法 上のページを参考にして環境変数に追加して再起動して再実行したところ、詰まっていたところで初めてOSXのいつものパスワードを入れるポップアップが出て、ここにSSHのパスフレーズを入力したところ、接続できました！！ ローカルで新しいbranchを作ってcommitしてpushしたのがgithubに反映できることも確認できました。もし同じような問題で詰まっている方がいれば、参考にしてください。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=548&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OSX Lion上、Eclipseでの開発にgitを使ってみようと思ってEgitプラグインを入れたのですが、これがどうにもgithubにSSHでつながってくれなかったのですが、それが解決したのでメモしときます。ちなみに、コマンドラインからgitコマンドはほとんど使ってません。usernameとかを設定したくらいかな？</p>
<p><span id="more-548"></span></p>
<p>基本的には、以下のページを元に設定して進めていきました。</p>
<ol>
<li>gitのインストール：port install git-core</li>
<li>Egitのインストール：<a href="http://typea.info/blg/glob/2010/12/eclipse-git.html">Eclipse Git プラグイン ～ インストールからコミット、履歴の比較まで</a> （良記事です）</li>
<li>Eclipse上でサンプルプロジェクトを作成</li>
<li>github上に同じ名前でリポジトリを作成</li>
<li>SSHのキーを作成しgithubに登録：<a href="http://help.github.com/mac-set-up-git/">Set Up Git </a>（githubの公式ヘルプ）</li>
<li>EgitからgithubにPushするところ：<a href="http://wiki.eclipse.org/EGit/User_Guide#Github_Tutorial">Github Tutorial</a> （Egitの公式ヘルプ）</li>
</ol>
<p>ここまでは順調でした。で、Pushする際にgithubで作ったリポジトリのURIを指定してプロトコルをSSHにしてnextボタンを押した所で、&#8221;session is down&#8221;とか&#8221;cannot get remote repository refs&#8221;とかのエラーがでて、先に進めませんでした。（OSXのではなく）Eclipseのデザインでのパスワードを入れるポップアップがでたときもあり、ここにSSHのパスフレーズを入れてもだめ。プロトコルでhttpsを選べば進むようだったけど、せっかくなのでSSHでやりたい。</p>
<p>検索したところ、以下の掲示板で同じ問題に関する話題がありました。</p>
<ul>
<li><a href="http://stackoverflow.com/questions/6316014/egit-ssh-fails-at-passphrase-when-connecting-to-github">EGit &#8211; SSH Fails at Passphrase (when connecting to GitHub)</a></li>
</ul>
<p>要は、環境変数に GIT_SSH=/usr/bin/ssh を追加してみて、ということ。そもそもOSXで環境変数の追加の方法がわからなかったので、</p>
<ul>
<li><a href="http://d.hatena.ne.jp/domei/20101128/1290951379">Mac OS XでのJAVA_HOMEと環境変数の設定方法</a></li>
</ul>
<p>上のページを参考にして環境変数に追加して再起動して再実行したところ、詰まっていたところで初めてOSXのいつものパスワードを入れるポップアップが出て、ここにSSHのパスフレーズを入力したところ、接続できました！！</p>
<p>ローカルで新しいbranchを作ってcommitしてpushしたのがgithubに反映できることも確認できました。もし同じような問題で詰まっている方がいれば、参考にしてください。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/548/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=548&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/02/13/osx-lion%e3%81%a7egit%e3%81%8b%e3%82%89github%e3%81%abssh%e6%8e%a5%e7%b6%9a%e3%81%99%e3%82%8b%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e8%a7%a3%e6%b1%ba%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>『入門ソーシャルデータ』第4章を読む（2）</title>
		<link>http://webforthenext.wordpress.com/2012/02/09/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%882%ef%bc%89/</link>
		<comments>http://webforthenext.wordpress.com/2012/02/09/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%882%ef%bc%89/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 17:51:56 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=537</guid>
		<description><![CDATA[さて、ちょっと遅くなりましたが、前回の続きです。 4.3 友人関係グラフの作成 ここでは、これまでに作成してきたデータを可視化させる方向に話が進みます。可視化することによってわかってくることがあるので、といったことですね。その可視化したものをソーシャルグラフ、と呼んでいます。 じゃあ例4-10をコピって…と思ったら本にファイル名が書いてない！あらソースなし？と思って著者のgithubを見たら、なんだ、ちゃんとありました（friends_followers__redis_to_networkx.py）。 このソースは、前節の例4-8のクロールのソースを用いて対象としたいtwitterアカウントのデータをRedisに入れてあることを前提として、特定のtwitterアカウント（これを引数で指定）がフォローしている人たちのなかで、相互フォローしている関係（引数で指定した人を含まなくてもいい）を、この本の1章でちょっと使ったnetworkxライブラリを使ってグラフのエッジとして追加していきそれをファイルに書きだす、というものです。 このソースを理解する上でのpython言語的ポイントは、 friend_ids = [fid for fid in friend_ids if fid in ids] ですかね。if文つきのリスト内包表記です。わかってしまえばどうということはないのですが、日本語で説明すると、「friend_idsから一つづつもってきて、それがidsの中に含まれていれば、リストに残していく」となって、ソース内では、idsが引数指定したアカウントのuser_id＋そのアカウントがフォローしているアカウントたちのuser_idのリストで、friend_idsが、idsからひとりピックアップしたアカウントがフォローしているアカウントたちのuser_idのリストですから、ここでこの２つの積集合を取っており、それがとりもなおさず相互フォローの関係である、と。 これを前回に引き続き僕のアカウント（HOSONO_Junya）で実行したところ、 Processing user with id 14863108 Processing user with id 90241658 Processing user with id 48395404 Processing user with id 112571530 … と834行（＝フォロー数＋自分）表示されて、outというフォルダのなかに、&#8221;HOSONO_Junya.gpickle&#8221;というファイルができていました。このファイル自体は、ソース内のオブジェクトをシリアル化したものなので、直に開いても仕方がありません。次の節の、例4-11のソースの入力として使うためのものですね。 …とはいえ、せっかく僕のアカウントの近辺での相互フォローの関係がわかったわけですから、ぜひ見てみたい！と思ったのですが、それはちょっと先の4.3.3でやってくれているので、ちょっと我慢しましょうか。 4.3.1 クリークの検出と分析 ここでは、前節で得られたデータをもとに分析しています。前節で相互フォローの関係が得られたわけですが、これはソーシャルメディアという視点からすると「魅力的な素材」だと書かれています。そしてここでは、そのその関係の有り様を考える上でのツールとして、クリークというものを利用しています。これによって、「グループダイナミクス」がわかると。この単語を本にそのままカタカナで表記しているということは、適切な日本語訳が見当たらなかった、ということかな？ 「そのグループにおいて、個々の間にどのくらい密接な関連があるのか」、といったあたりでしょうか。 クリーク自体については、詳しくはWikipediaなどを参考に（と本もぶん投げてますので…）。僕もクリークというもの自体を初めて知りましたが、ざっくりいうと、 クリークとは「あるグループのなかから、どの２名をとっても関連付けられている（ここでは相互フォローしている）サブグループをとりだしたもの」 最大クリークとは「クリークの中でその対象者の数が一番多いもの」 と、理解しました。間違ってたらぜひコメントで指摘してください。  言い換えれば、「個々人がそのグループ内のだれとでも仲良しな関係にあるグループ」。そのグループの大きさが大きいほど、「人間関係が濃いグループ」とみなす、ということなんのでしょうか。 で、ここのソースの例4-11（friends_followers__clique_analysis.py）は、例4-10の結果をもとに、クリークの数や平均サイズ、最大クリークを算出してくれます。 で、実行したところ、 Num [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=537&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>さて、ちょっと遅くなりましたが、<a title="『入門ソーシャルデータ』第4章を読む（1）" href="http://webforthenext.wordpress.com/2012/02/06/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%881%ef%bc%89/">前回</a>の続きです。</p>
<p><span id="more-537"></span></p>
<h2>4.3 友人関係グラフの作成</h2>
<p>ここでは、これまでに作成してきたデータを可視化させる方向に話が進みます。可視化することによってわかってくることがあるので、といったことですね。その可視化したものをソーシャルグラフ、と呼んでいます。</p>
<p>じゃあ例4-10をコピって…と思ったら本にファイル名が書いてない！あらソースなし？と思って著者のgithubを見たら、なんだ、ちゃんとありました（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__redis_to_networkx.py">friends_followers__redis_to_networkx.py</a>）。</p>
<p>このソースは、前節の例4-8のクロールのソースを用いて対象としたいtwitterアカウントのデータをRedisに入れてあることを前提として、特定のtwitterアカウント（これを引数で指定）がフォローしている人たちのなかで、相互フォローしている関係（引数で指定した人を含まなくてもいい）を、この本の1章でちょっと使ったnetworkxライブラリを使ってグラフのエッジとして追加していきそれをファイルに書きだす、というものです。</p>
<p>このソースを理解する上でのpython言語的ポイントは、</p>
<pre style="background-color:#eeeeee;">friend_ids = [fid for fid in friend_ids if fid in ids]</pre>
<p>ですかね。if文つきのリスト内包表記です。わかってしまえばどうということはないのですが、日本語で説明すると、「friend_idsから一つづつもってきて、それがidsの中に含まれていれば、リストに残していく」となって、ソース内では、idsが引数指定したアカウントのuser_id＋そのアカウントがフォローしているアカウントたちのuser_idのリストで、friend_idsが、idsからひとりピックアップしたアカウントがフォローしているアカウントたちのuser_idのリストですから、ここでこの２つの積集合を取っており、それがとりもなおさず相互フォローの関係である、と。</p>
<p>これを前回に引き続き僕のアカウント（HOSONO_Junya）で実行したところ、</p>
<pre style="background-color:#eeeeee;">Processing user with id 14863108
Processing user with id 90241658
Processing user with id 48395404
Processing user with id 112571530
…</pre>
<p>と834行（＝フォロー数＋自分）表示されて、outというフォルダのなかに、&#8221;HOSONO_Junya.gpickle&#8221;というファイルができていました。このファイル自体は、ソース内のオブジェクトをシリアル化したものなので、直に開いても仕方がありません。次の節の、例4-11のソースの入力として使うためのものですね。</p>
<p>…とはいえ、せっかく僕のアカウントの近辺での相互フォローの関係がわかったわけですから、ぜひ見てみたい！と思ったのですが、それはちょっと先の4.3.3でやってくれているので、ちょっと我慢しましょうか。</p>
<h3>4.3.1 クリークの検出と分析</h3>
<p>ここでは、前節で得られたデータをもとに分析しています。前節で相互フォローの関係が得られたわけですが、これはソーシャルメディアという視点からすると「魅力的な素材」だと書かれています。そしてここでは、そのその関係の有り様を考える上でのツールとして、クリークというものを利用しています。これによって、「グループダイナミクス」がわかると。この単語を本にそのままカタカナで表記しているということは、適切な日本語訳が見当たらなかった、ということかな？ 「そのグループにおいて、個々の間にどのくらい密接な関連があるのか」、といったあたりでしょうか。</p>
<p>クリーク自体については、詳しくは<a href="http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AA%E3%83%BC%E3%82%AF_(%E3%82%B0%E3%83%A9%E3%83%95%E7%90%86%E8%AB%96)">Wikipedia</a>などを参考に（と本もぶん投げてますので…）。僕もクリークというもの自体を初めて知りましたが、ざっくりいうと、</p>
<ul>
<li>クリークとは「あるグループのなかから、どの２名をとっても関連付けられている（ここでは相互フォローしている）サブグループをとりだしたもの」</li>
<li>最大クリークとは「クリークの中でその対象者の数が一番多いもの」</li>
</ul>
<p>と、理解しました。間違ってたらぜひコメントで指摘してください。</p>
<div> 言い換えれば、「個々人がそのグループ内のだれとでも仲良しな関係にあるグループ」。そのグループの大きさが大きいほど、「人間関係が濃いグループ」とみなす、ということなんのでしょうか。</div>
<p>で、ここのソースの例4-11（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__clique_analysis.py">friends_followers__clique_analysis.py</a>）は、例4-10の結果をもとに、クリークの数や平均サイズ、最大クリークを算出してくれます。</p>
<p>で、実行したところ、</p>
<pre style="background-color:#eeeeee;">Num cliques: 832
 Avg clique size: 2
 Max clique size: 3
 Num max cliques: 125
People in all max cliques:
 [
 "HOSONO_Junya",
 "hsksyusk"
 ]
Max cliques:
 [
 [
 "HOSONO_Junya",
 "hsksyusk",
 "thinktheearth"
 ],
 [
 "HOSONO_Junya",
 "hsksyusk",
 "adanao"
 ],
 …</pre>
<p>となりました。…３!? 最大クリークが３!? (２度見した)　小さ！もっとフォロー数ふやせよ俺！（ちなみに<a href="https://twitter.com/#!/hsksyusk">@hsksyusk</a>さんとは、いま働いているNGOにボランティアで関わってくれているSEさんです）そのサイズ３のクリークが125個あるということは、僕とhsksyuskさんと後一人、という3人組が大量にある、ということですね。</p>
<p>うーん、ちょっとこれだけではサンプルとして寂しいので、フォロー数/フォロワー数が違えば結果も変わってくるかもしれないということで、僕が働いているNGOの公式アカウント（@ngo_jvc）で試してみましょう。フォロー数＝1276、フォロワー数＝3666です。</p>
<p>まずは例4-8でRedisにデータを作り(depth=1で実行、7274件のデータが作成された)、例4-10で相互フォロー関係を抜き出し、例4-11でクリークを見つける…っと。結果は以下のようになりました。</p>
<pre style="background-color:#eeeeee;">Num cliques: 1274
Avg clique size: 2
Max clique size: 4
Num max cliques: 43</pre>
<p>それでも最大クリーク＝4か…。ふと思いついて、もういちど僕のアカウントで例4-11を実行したところ、結果が変わってきました。</p>
<pre style="background-color:#eeeeee;">Num cliques: 831
Avg clique size: 2
Max clique size: 4
Num max cliques: 43</pre>
<p>…そうかそうかなるほどなるほど。そもそもRedis内のデータが足りていないために（両方共にdepth=1でしか実行していないからかな）、正確な（というか完璧な）結果が得られていなかったわけですね。</p>
<p>うーん、depthを増やして実行してみるのは後日の宿題としておくとして、先に進みましょう。</p>
<h3>4.3.2 Infochimpsの「強いリンク」API</h3>
<p>ここでは、twitterのデータを取り扱う手段のひとつとして、<a href="http://www.infochimps.com/">Infochimps</a>というサービスを紹介しており、過去のtwitterデータをAPIで取得できるとのこと。Strong Links APIでは、もっともやりとりしている（おそらく＠言及している？）相手を教えてくれるということで、それを使っています。事前にサインインが必要とのこと。</p>
<p>例4-13（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__infochimps_strong_links.py">friends_followers__infochimps_strong_links.py</a>）を実行してみました。ソース自体は単にStrong Links APIをRESTで実行しているだけですね。</p>
<pre style="background-color:#eeeeee;">HOSONO_Junya's Strong Links
 ------------------------------
 hsksyusk 5.478303
 HOSONO_Junya 4.832576
 suzukinao 3.1820507
 kanaedoi 2.982051
 tokko 2.982051
 suesi 2.95
 segatomo 2.9320507
 tksmmshr 2.8642135
 j_machikado 2.8642135
 chusoken 2.7071068
 momonico 2.6642137
 dskfj 2.6142135
 MorikawaW2C 2.45
 …</pre>
<p>となりました。自分自身の名前があるのは、たぶん旧式RTのためだと思います。僕のtwitterの使い方として独り言が多い（＠言及しない）ので、＠言及が多い人と比べてみると面白いかもしれませんね。</p>
<p>Infochimpsには他にもたくさんAPIが有りそうなので、探ってみるのもいいでしょう。</p>
<h3>4.3.3 3Dグラフへの対話的な可視化</h3>
<p>さて、さきほど後回しにした可視化をやってみる節です。</p>
<p>本では、可視化するツールとして、<a href="http://ubietylab.net/ubigraph/">Ubigraph</a>を紹介してくれています。3D、らしいですね。公式サイトからOSにあわせてダウンロードしてきて解凍しましょう。サーバを実行して、demo.pyを動かすまでやってみましょう。別ウィンドウが開いて、マウスで動かせる図形がでたところまでできれば、準備完了ですね。</p>
<p>例4-15（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__ubigraph.py">friends_followers__ubigraph.py</a>）では、twitterアカウントを２つ引数にとって、その２者がともに所属する最大クリークを3Dで表示してくれるみたいです。</p>
<p>例によってコピペしてきてHOSONO_Junyaとngo_jvcを引数にして実行…すると、エラーが出ました。</p>
<pre style="background-color:#eeeeee;">Traceback (most recent call last):
File "friends_followers__ubigraph.py", line 8, in &lt;module&gt;
import ubigraph
ImportError: No module named ubigraph</pre>
<p>おっと、pythonのライブラリが入ってませんでした。さきほど解凍したフォルダのexamples/Python/ubigraph.pyをソースと同じフォルダに入れて再実行したら、またエラー。</p>
<pre style="background-color:#eeeeee;">Traceback (most recent call last):
File "friends_followers__ubigraph.py", line 13, in &lt;module&gt;
g = nx.read_gpickle(SCREEN_NAME + '.gpickle')
File "&lt;string&gt;", line 2, in read_gpickle
File "/Library/Python/2.7/site-packages/networkx-1.6-py2.7.egg/networkx/utils/decorators.py", line 173, in _open_file
fh = _dispatch_dict[ext](path, mode=mode)
IOError: [Errno 2] No such file or directory: 'HOSONO_Junya.gpickle'</pre>
<p>あらら、今度はgpickleのファイルが読めなかったです。さっきのままoutフォルダに入ってるので、ソース内のファイル名の前に&#8221;out/&#8221;と付け足して実行。今度はうまくいきました。</p>
<p>先ほどの別ウィンドウに出てきたのが以下のような画面。</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/02/cap4-05.png"><img class="aligncenter size-medium wp-image-542" title="cap4-05" src="http://webforthenext.files.wordpress.com/2012/02/cap4-05.png?w=300&#038;h=255" alt="" width="300" height="255" /></a></p>
<p>そうか、最大クリークが43個もあるので、ほぼ球形のような図になってしまいました。描画もちらついてるし。でもマウスでぐりぐり動かせます。</p>
<h2>4.4 まとめ</h2>
<p>この章のこれまでの流れを振り返って、他の章とおなじく「こんなこともやってみれば？」という宿題が書かれてます。まぁ後日、ということで。</p>
<p>よし、とにかく『入門ソーシャルデータ』第４章、最後までやってみました。章の後半は、とにかくRedisにデータを入れてはじめて分析に役立つ、という流れになってきていたので、どんどん入れていったほうが面白そうですね。</p>
<p>最後までお付き合いいただきましてありがとうございました！それでは<a href="http://atnd.org/events/24531">勉強会</a>当日お会いしましょう！</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/537/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=537&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/02/09/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%882%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/02/cap4-05.png?w=300" medium="image">
			<media:title type="html">cap4-05</media:title>
		</media:content>
	</item>
		<item>
		<title>『入門ソーシャルデータ』第4章を読む（1）</title>
		<link>http://webforthenext.wordpress.com/2012/02/06/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%881%ef%bc%89/</link>
		<comments>http://webforthenext.wordpress.com/2012/02/06/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%881%ef%bc%89/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 16:17:58 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=468</guid>
		<description><![CDATA[今週金曜日（2012/2/10）、こちらのイベントでプレゼンを担当します。 第4回「入門 ソーシャルデータ」真面目に勉強する会 @神泉(渋谷) このイベントは、オライリーの『入門ソーシャルデータ』を参加者同士で一章ずつ担当して読み進めていこう、という連続勉強会で、この日ではそのうちの第4章を担当することになっています。 それに先立って、事前にこの章をひと通り読み進めてみましたので、その過程を書き留めていきます。参考になれば幸いです。書いてみたら長くなったので2回に分けます。これはその1回目。 まず、この本では記載されているソースはすべてpythonという言語で書かれていますので、python環境もOSなどにあわせて用意しておきましょう。なるべくバージョンは新しいほうがいいと思います。ちなみに僕の環境は以下のとおり。 OSX Lion 10.7.2 python 2.7.1 (OSXでのpythonのバージョン切り替えについてはこちらに記載) Eclipse Herios SR2 + PyDev など（コマンドラインでやる人は必要ないでしょう） （追記：pythonのバージョンは、本にあわせて2.7系がベターでしょう。@iwaimさんご指摘ありがとうございます） おっと、この章を読み進めるには、とりあえず以下のpythonライブラリも必要となってきます。とにかく用意しましょう。 twitter （これがなければ始まらない。この本の5ページにインストール方法の記載あり） cPickle（シリアル化ライブラリ） そして最初に、この章でなに取り扱うのかを確認しておきましょう。ここでは、本の91ページにあるように、 （twitterで）フォローしている/されているユーザーは何人いるか フォローしているけれどもされていないユーザーは誰か フォローされているけれどもしていないユーザーは誰か ネットワークのなかでフォロー関係のもっとも多いユーザー、少ないユーザーは誰か 「相互フォロー」（フォローし合っている関係）している相手は誰か 自分のフォロワー全員と彼らのフォロワー全員から考えて、自分がリツイートしたときにどのような影響があるか ということを取り扱います。 ちなみに、これ以前の１〜３章については、今回の勉強会の主催者の方が設置してくださっているGoogleグループ「集合知の会」に、各回のプレゼン資料が掲載されていますので、参考にしてみてはいかがでしょうか。 それでは、章立てに従って見ていきましょう。 4.1 RESTfulとOAuthを着込んだAPI ここでは、twitterのAPIはRESTfulでもあること、twitterアカウントの情報を得る際には、twitterのいわゆるアカウント名（=screen_name）のほかに、アカウントごとに固有な整数（=user_id）を利用することもできる、ということが書かれてます。 そして、ユーザー認証が必要なtwitterのAPIを利用するには、OAuthを利用する必要がある、として次に進みます。 4.1.1 君が私のパスワードを知っているはずがない ここでは、twitterというよりも、OAuth自体の説明ですね。様々なウェブサービスはその認証機能としてOAuth 2.0を採用し始めており、twitterも2010年夏からOAuth1.0aを採用しています（2.0はまだの様子）。 OAuth自体のことを理解するためには、この章を読む他にも、下記のようなページを読み進めるのもいいと思います。 ゼロから学ぶOAuth (gihyo.jp) APIアクセス権を委譲するプロトコル、OAuthを知る (@IT) 非技術者のためのOAuth認証(?)とOpenIDの違い入門 (コメント欄も読みましょう) 要は、本にあるとおり、「一言で言えば、OAuthは、ユーザー名とパスワードを共有せずに、あるアプリケーションが格納したデータに別のアプリケーションからアクセスできるようにするために、そのアプリケーションに権限を認める手段を提供する」もの。そしてその手段を、ユーザー認証として利用している場合もある、ということですかね。 たとえば、今回の勉強会の告知に利用されているatndさんも、OAuthを利用してユーザー認証をしている、といっていいものだと思います。 4.2 無駄がなく必要最小限なデータ収集マシン さて、話はtwitterに戻ります。今回の『入門ソーシャルデータ』を読み進める上でありがたいのは、掲載されているソースのなかで（〜.py）とファイル名が付いているものに関しては、著者のgithubでまんま公開されていること。コピペで動作確認できるわけですね。 さっそく例4-2のソース（friends_followers__get_friends.py）をコピペして実行…と思ったら、いきなり本のソースとちょっと違ってるやんけ！ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=468&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>今週金曜日（2012/2/10）、こちらのイベントでプレゼンを担当します。</p>
<ul>
<li><a href="http://atnd.org/events/24531">第4回「入門 ソーシャルデータ」真面目に勉強する会 @神泉(渋谷)</a></li>
</ul>
<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873115132/-22/ref=nosim/" rel="nofollow" target="_blank"><img class="alignleft" style="border:none;" src="http://ecx.images-amazon.com/images/I/513gAGruDDL._SS200_.jpg" alt="『入門 ソーシャルデータ』" /></a></p>
<p>このイベントは、オライリーの『入門ソーシャルデータ』を参加者同士で一章ずつ担当して読み進めていこう、という連続勉強会で、この日ではそのうちの第4章を担当することになっています。</p>
<p>それに先立って、事前にこの章をひと通り読み進めてみましたので、その過程を書き留めていきます。参考になれば幸いです。書いてみたら長くなったので2回に分けます。これはその1回目。</p>
<p><span id="more-468"></span></p>
<p>まず、この本では記載されているソースはすべてpythonという言語で書かれていますので、python環境もOSなどにあわせて用意しておきましょう。なるべくバージョンは新しいほうがいいと思います。ちなみに僕の環境は以下のとおり。</p>
<ul>
<li>OSX Lion 10.7.2</li>
<li>python 2.7.1 (OSXでのpythonのバージョン切り替えについては<a href="http://webforthenext.wordpress.com/2012/01/14/osx%E3%81%A7%E3%81%AEpython%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88eclipse%E3%81%A7%E3%82%82/">こちらに記載</a>)</li>
<li>Eclipse Herios SR2 + PyDev など（コマンドラインでやる人は必要ないでしょう）</li>
</ul>
<p>（追記：pythonのバージョンは、本にあわせて2.7系がベターでしょう。<a href="https://twitter.com/#!/iwaim">@iwaim</a>さんご指摘ありがとうございます）</p>
<p>おっと、この章を読み進めるには、とりあえず以下のpythonライブラリも必要となってきます。とにかく用意しましょう。</p>
<ul>
<li>twitter （これがなければ始まらない。この本の5ページにインストール方法の記載あり）</li>
<li>cPickle（シリアル化ライブラリ）</li>
</ul>
<p>そして最初に、この章でなに取り扱うのかを確認しておきましょう。ここでは、本の91ページにあるように、</p>
<ul>
<li>（twitterで）フォローしている/されているユーザーは何人いるか</li>
<li>フォローしているけれどもされていないユーザーは誰か</li>
<li>フォローされているけれどもしていないユーザーは誰か</li>
<li>ネットワークのなかでフォロー関係のもっとも多いユーザー、少ないユーザーは誰か</li>
<li>「相互フォロー」（フォローし合っている関係）している相手は誰か</li>
<li>自分のフォロワー全員と彼らのフォロワー全員から考えて、自分がリツイートしたときにどのような影響があるか</li>
</ul>
<p>ということを取り扱います。</p>
<p>ちなみに、これ以前の１〜３章については、今回の勉強会の主催者の方が設置してくださっている<a href="https://groups.google.com/group/StudyGroup_CI">Googleグループ「集合知の会」</a>に、各回のプレゼン資料が掲載されていますので、参考にしてみてはいかがでしょうか。</p>
<p>それでは、章立てに従って見ていきましょう。</p>
<h2>4.1 RESTfulとOAuthを着込んだAPI</h2>
<p>ここでは、twitterのAPIは<a href="http://ja.wikipedia.org/wiki/REST">RESTful</a>でもあること、twitterアカウントの情報を得る際には、twitterのいわゆるアカウント名（=screen_name）のほかに、アカウントごとに固有な整数（=user_id）を利用することもできる、ということが書かれてます。</p>
<p>そして、ユーザー認証が必要なtwitterのAPIを利用するには、OAuthを利用する必要がある、として次に進みます。</p>
<h3>4.1.1 君が私のパスワードを知っているはずがない</h3>
<p>ここでは、twitterというよりも、OAuth自体の説明ですね。様々なウェブサービスはその認証機能としてOAuth 2.0を採用し始めており、twitterも2010年夏からOAuth1.0aを採用しています（<a href="https://dev.twitter.com/discussions/397">2.0はまだの様子</a>）。</p>
<p>OAuth自体のことを理解するためには、この章を読む他にも、下記のようなページを読み進めるのもいいと思います。</p>
<ul>
<li><a href="http://gihyo.jp/dev/feature/01/oauth">ゼロから学ぶOAuth (gihyo.jp)</a></li>
<li><a href="http://www.atmarkit.co.jp/fsecurity/special/106oauth/oauth01.html">APIアクセス権を委譲するプロトコル、OAuthを知る (@IT)</a></li>
<li><a href="http://www.sakimura.org/2011/05/1087/">非技術者のためのOAuth認証(?)とOpenIDの違い入門 (コメント欄も読みましょう)</a></li>
</ul>
<p>要は、本にあるとおり、「一言で言えば、OAuthは、ユーザー名とパスワードを共有せずに、あるアプリケーションが格納したデータに別のアプリケーションからアクセスできるようにするために、そのアプリケーションに権限を認める手段を提供する」もの。そしてその手段を、ユーザー認証として利用している場合もある、ということですかね。</p>
<p>たとえば、今回の勉強会の告知に利用されているatndさんも、OAuthを利用してユーザー認証をしている、といっていいものだと思います。</p>
<h2>4.2 無駄がなく必要最小限なデータ収集マシン</h2>
<p>さて、話はtwitterに戻ります。今回の『入門ソーシャルデータ』を読み進める上でありがたいのは、掲載されているソースのなかで（〜.py）とファイル名が付いているものに関しては、<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/tree/master/python_code">著者のgithubでまんま公開されている</a>こと。コピペで動作確認できるわけですね。</p>
<p>さっそく例4-2のソース（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__get_friends.py">friends_followers__get_friends.py</a>）をコピペして実行…と思ったら、いきなり本のソースとちょっと違ってるやんけ！ githubのこのソースの履歴を見ると、<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/commit/f373592b4dc69ae0b80ba80975be8e5a288756e6">&#8220;Fixed a minor bug in reporting output, Mostly style tweaks&#8221;</a>とあって、consumer key と consumer secret を引数として渡すようになっていました。ふむふむ。</p>
<p>ここで、本にも記載がありますが、これ以降のソースを実行するには、<a href="https://dev.twitter.com/apps/new">twitterの開発者用サイト</a>に行って、「新しいアプリケーションを作成する」ことで、この consumer key と consumer secret を取得する必要があります。もちろん、twitter アカウントも必須。</p>
<p>この画面ですね。</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/02/cap4-01.png"><img class="aligncenter size-medium wp-image-504" title="cap4-01" src="http://webforthenext.files.wordpress.com/2012/02/cap4-01.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<p>ここで、Nameは独自のものを指定する必要があるみたいです（ここではなにも考えずに&#8221;socialdata_hosono&#8221;としました）。無事アプリケーションを作ると、consumer key と consumer secret が発行されました。</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/02/cap4-02.png"><img class="aligncenter size-medium wp-image-506" title="cap4-02" src="http://webforthenext.files.wordpress.com/2012/02/cap4-02.png?w=300&#038;h=167" alt="" width="300" height="167" /></a></p>
<p>これを、試しに自分のtwitterアカウントのscreen_name (HOSONO_Junya)と一緒にさっきのソースの引数として渡して再実行！　コンソールには以下のような画面で止まって、</p>
<pre style="background-color:#eeeeee;">Hi there! We're gonna get you all set up to use MiningTheSocialWeb.
In the web browser window that opens please choose to Allow access.
Copy the PIN number that appears on the next page and paste or type it here:
Opening: http://api.twitter.com/oauth/authorize?oauth_token=(文字列)
Please enter the PIN:</pre>
<p>それとは別にブラウザが開き、よく見かける下の画面が出てきました。</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/02/cap4-03.png"><img class="aligncenter size-medium wp-image-507" title="cap4-03" src="http://webforthenext.files.wordpress.com/2012/02/cap4-03.png?w=300&#038;h=235" alt="" width="300" height="235" /></a></p>
<p>なるほど、twitterさんに、</p>
<ul>
<li>タイムラインのツイートを見る。</li>
<li>フォローしている人を見る。</li>
</ul>
<p>この２つの機能を、socialdata_hosono というアプリケーションに使わせてやっていいですか？という問い合わせが発生したわけですね。許可するためにアカウント名とパスワードを入力すると、PINが発行されました。</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/02/cap4-04.png"><img class="aligncenter size-medium wp-image-508" title="cap4-04" src="http://webforthenext.files.wordpress.com/2012/02/cap4-04.png?w=300&#038;h=178" alt="" width="300" height="178" /></a></p>
<p>コンソールに戻ってこれを入力すると、</p>
<pre style="background-color:#eeeeee;">Fetched 833 ids for HOSONO_Junya
[124190170, 342836805, 5373072, 384222380, 137886908, 24066081,
167287360, 313359626, 308796953, 338254966, 165748489, 14491664,
3776671, 14655252, 41823348, 14357291, …</pre>
<p>と表示されました！ 833というのは、僕のtwitterアカウントの「フォローしている数」ですので、フォローしている人たちのuser_idのリスト（pythonでいうところのリスト）が得られたことになります（この本内やtwitterの公式ドキュメント内でのfriendsというのは自分がフォローしている人、という意味ですね）。</p>
<p>（ちなみに、上の表示の"Fetched〜"の部分だけ標準エラー出力に書き出しているあたりがちょっと親切ですねw）</p>
<p>なお、本に記載もありますが、ソース内で使っている <a href="https://dev.twitter.com/docs/api/1/get/friends/ids">/friends/ids API は一度の呼び出しで5000のIDを返す</a>そうです。このソースではそのたびに"Fetched〜"の行を出しつつループする、という形になっており、上限を10000としています。そして、こうしたAPIの呼び出しには回数制限があり、350回/時とのこと。同様の記載が、以下のサイトにもありました。</p>
<ul>
<li><a href="http://sourceforge.jp/projects/tween/wiki/API%E5%88%B6%E9%99%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">SourceForge.JP &gt; ソフトウェアを探す &gt; Tween &gt; Wiki &gt; API制限について</a></li>
</ul>
<p>なので、大量のフォロワーを持つアカウントを対象にこうしたAPIを利用する場合にはそれなりの準備をしなければならない、ということですね。</p>
<h3>4.2.1 リファクタリングのための非常に短い幕間</h3>
<p>ということもあって、そのあたりの準備を著者はあらかじめしてくれています。偉い！ここではOAuthを用いたログイン部分と、よく使われるAPIをモジュール化＆公開してくれています。</p>
<ul>
<li><a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/twitter__login.py">twitter__loginモジュール</a></li>
<li><a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/twitter__util.py">twitter__utilモジュール</a></li>
</ul>
<p>これを使えば、ソース内で自分のやりたいことに集中できるというわけですね。ソースが短くなっていることがわかると思います。ありがたく使わせていただきましょう。上記リンクからダウンロードして、自分のソースと同じフォルダに置いておけばいいでしょう。ファイル名もそのままにしておくのがベターですね。</p>
<p>例4-3（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__get_friends_refactored.py">friends_followers__get_friends_refactored.py</a>）は、例4-2をこの２つのモジュールを用いて書き換えただけのものです。こちらもgithub版のソースは本からちょっと修正されていて、引数としてフォロー数の上限も引数で渡すようになっています。</p>
<p>ソースを見て、「…引数がアカウント名とフォロー数上限の2つだけ？はて？」と思いつつ実行したら、案の定エラーが。tracebackが吐かれて、</p>
<pre style="background-color:#eeeeee;">twitter.api.TwitterHTTPError: Twitter sent status 401 for URL:
oauth/request_token using parameters: (oauth_consumer_key=
&amp;oauth_nonce=(数字)&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=
(数字)&amp;oauth_version=1.0&amp;oauth_signature=(文字列))
 details: Failed to validate oauth signature and token</pre>
<p>とのこと。要はOAuthに失敗しましたよと。ソースを見ると、</p>
<pre style="background-color:#eeeeee;"># You may need to setup your OAuth settings in twitter__login.py</pre>
<p>とあるので（書籍版にも書いてありますね）、twitter__login.pyの最初の部分に customer key と customer secret を直書きして再実行、再びPINが発行されて、無事friendsが取得できました。</p>
<p>もちろん、このライブラリを使ったとしても、<strong>API制限自体が消えるわけではない</strong>ので、大量のデータを取り扱う場合にはそれなりの時間を使える時にしたほうがいいでしょう。</p>
<h3>4.2.2 Redis：データ構造サーバ</h3>
<p>この節では、APIを用いて得られるようになったtwitterの各種データを取り扱うために、Redisというデータベースの導入をする、としています。その心は、大量なデータを取り扱うため、ともう一つ、<strong>集合演算を使いたいため</strong>、ということらしいです。</p>
<p>僕はRedisを今回初めて知ったのですが、この本の3章でもでてきた<a href="http://couchdb.apache.org/">CouchDB</a>など同じく、KVS (Key-Value Stored)なデータベースとのこと。要はハッシュデータのようなものを取り扱うのに長けているといったものでしょうか（詳しい人コメントお願いします）。</p>
<p>なにはともあれ、Redisをインストールしましょう。<a href="http://redis.io/">公式サイト</a>のダウンロードページにインストールの指示があり、これに従って簡単にインストールできました。そしてコマンドラインからサーバを起動して専用クライアントから操作できること、までの説明が公式サイトにあります。</p>
<p>次に、このRedisをpythonから利用するためのライブラリも、sudo easy_install redis であっさりインストール完了。</p>
<p>本の101ページの一番下のソースは、"screen_name1$friends_ids"というキーに対して、pythonのリスト内包表記を用いて、1,2,3…と順繰りに追加（sadd）していってそれを表示(smember)する、というだけのことですね。保管されるデータは、</p>
<ul>
<li>キー："screen_name$friends_ids"</li>
<li>値：set(['1','2','3'...])</li>
</ul>
<p>という一組になります。</p>
<h3>4.2.3 初歩的な集合演算</h3>
<p>さて、ここでは、そもそもなぜ集合演算を使うのか、ということを確認しています。例4-2のソースにあるように、この章で取り扱う twitter API で得られるデータは、フォロワーの一覧などその多くはデータが複数集まったもの＝集合、です。そしてそれらに対して集合演算を用いることで、意味のある情報を得ようというわけですね。例として、</p>
<p>Friends = {Abe, Bob}, Followers = {Bob, Carol}</p>
<p>というtwitterユーザーに対して、</p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>演算</th>
<th>結果</th>
<th>コメント</th>
</tr>
<tr>
<td nowrap="nowrap">和集合：Friends ∪ Followers</td>
<td>Abe,Bob,Carol</td>
<td>あるユーザーのネットワーク全体</td>
</tr>
<tr>
<td>積集合：Friends ∩ Followers</td>
<td>Bob</td>
<td>あるユーザーの相互フォローの相手</td>
</tr>
<tr>
<td>差集合１：Friends - Followers</td>
<td>Abe</td>
<td>あるユーザーがフォローしているものの、相手はそのユーザーをフォローしていないという相手</td>
</tr>
<tr>
<td nowrap="nowrap">差集合２：Followers - Friends</td>
<td>Carol</td>
<td>あるユーザーをフォローしているものの、ユーザーの方からはフォローしていない相手</td>
</tr>
</tbody>
</table>
<p>というような情報が得られるわけですね。これらが、記事の最初に書いたこの章で取り扱おうとしていた情報そのもの（の一部）であることがわかると思います。</p>
<p>そしてこの本では、pythonの（リストではなく）set型を用いてソース内で集合を取り扱っています。</p>
<h3>4.2.4 フォローしている／されている関係を測るマシン</h3>
<p>この節の例4-4は、先の例4-2のソースに対して取得したデータをRedisに格納し、そこから上のような集合演算をして結果を表示するものです。これを実行すると、</p>
<pre style="background-color:#eeeeee;">HOSONO_Junya is following 833
HOSONO_Junya is being followed by 612
548 of 833 are not following HOSONO_Junya back
327 of 612 are not being followed back by HOSONO_Junya
HOSONO_Junya has 285 mutual friends</pre>
<p>と表示されました。上から、フォロー数(Friends)、フォロワー数(Followers)、フォロー返ししてくれていない数（上の表での差集合１）、フォロー返ししていない数（差集合２）、相互フォロー数（積集合）となります。激しくフォロー返しされて<strong>いない</strong>のがわかりますね…orz</p>
<p>なお、この例4-4のソースを理解する上でキーとなるのは、</p>
<ul>
<li>"functools.partial" というのが何をしているのか</li>
<li>Redisに格納されるデータがどんな感じか</li>
</ul>
<p>ということでしょう。</p>
<p>まず"functools.partial"ですが、うーん、これは正直自分でも正確に理解できているかどうかわかりませんが、ざっくり言うと「特定の関数を一部分だけ修正して新しい関数を作り出している」ということでしょう。専門用語では「部分適用」というらしいです。それをこの本では「ラッパー」という言葉で表現している、と。そしてここでは、</p>
<ul>
<li>元の関数＝_getFriendsOrFollowersUsingFunc (twitter__utilライブラリ内)</li>
<li>それを元に新しく作られる関数＝getFriends と getFollowers</li>
</ul>
<p>がそれに該当します。要は、関数が２つほしいけど中でやってることはほとんど同じだからその部分だけ先に作って最後に呼び出し部分を変えるだけで対応しようぜ（コード再利用のためにね）、ということでしょうかね。</p>
<p>このfunctools自体に関しては、以下のページなどを精読すると理解が深まるかもしれません。</p>
<ul>
<li><a href="http://www.doughellmann.com/PyMOTW-ja/functools/index.html">functools – 関数を巧みに操作するためのツール</a></li>
<li><a href="http://www.python.jp/doc/2.6/library/functools.html#module-functools">9.8. functools — 高階関数と呼び出し可能オブジェクトの操作</a></li>
</ul>
<p>はっきり言ってこの部分を正確に理解すること自体は、「この本のこの章を読み進めていく」という目的においてはそんなに重要ではないと思います。「へー、そんなこともできるだね」程度でいいと思います。本筋とは関係のない箇所でつまずいてそこで止まってしまうのはもったいないですから。もちろん、理解できることに越したことはありませんが。</p>
<p>どうも、CやJavaといった一般的な「手続き型プログラミング言語」を経験した人がpythonをやる上でとっつきづらく思える部分に、こうした「関数型プログラミング言語」的な要素がそこかしこに出てくるからなのかもしれません。リスト内包表記しかり、lambda式しかり、そしてこのfunctoolsしかり。以下のページにそのあたりのことがちょっと書かれていました。</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/jp/linux/library/l-prog/">魅力的なPython: Pythonでの関数プログラミング: 第1回</a></li>
<li><a href="http://jutememo.blogspot.com/2008/12/python-functools-itertools-1-haskell.html">Python における関数型プログラミング のための functools, itertools (1) – Haskell と同じ名前の関数たち</a></li>
</ul>
<p>閑話休題。つぎは、Redisに格納されるデータがどんな感じか、ですね。これは、ソースの最後に以下のようなprint文を入れて実行すればわかりますね。</p>
<pre style="background-color:#eeeeee;">print r.smembers(getRedisIdByScreenName(screen_name,'friend_ids'))</pre>
<p>また、getRedisIdByScreenName関数の中身などから、Redis内には、上で作った２つの関数を実行することで、</p>
<ul>
<li>キー："screen_name$(引数で指定したscreen_name)$friend_ids"</li>
<li>値：set([(フォローしている人たちのuser_id)])</li>
</ul>
<p>と、</p>
<ul>
<li>キー："screen_name$(引数で指定したscreen_name)$follower_ids"</li>
<li>値：set([(フォロワーたちのuser_id)])</li>
</ul>
<p>という２つのデータが格納されます。Redisのクライアントのkeysコマンドなどからも確認できるでしょう。そして、次にこの２つのデータの値に対してRedisの機能である集合演算をかけている、というわけですね。</p>
<p>そして、これまでは取得するデータはたいていuser_idの集合のみでしたが、次の例4-5では、特定のuser_idのtwitterアカウント自体の各種ユーザー情報を取得しています。これもgithubからソース（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__get_user_info.py">friends_followers__get_user_info.py</a>）をコピペしてくるだけで実行できます。結果はJSON形式になります。これを実行すると、</p>
<ul>
<li>キー："screen_name$(引数で指定したscreen_name)$info.json"</li>
<li>値：引数で指定したscreen_nameのユーザー情報（JSON形式）</li>
</ul>
<div>と、</div>
<div>
<ul>
<li>キー："user_id$(引数で指定したscreen_nameに該当するuser_id)$info.json"</li>
<li>値：引数で指定したscreen_nameのユーザー情報（JSON形式）</li>
</ul>
</div>
<p>いう２つのデータがRedis内に作られます。これは、あとからscreen_nameとuser_idのどちらからでも素早くユーザー情報を取得できるようにするため、でしょうね。</p>
<h3>4.2.5 共通してフォローしている／されているユーザーからの類似度の計算</h3>
<p>この節では、複数名のユーザーを指定して、その人たちが共通してフォローしている人たち／共通してフォローされている人たち、を見つけます。異なるユーザーのフォロー／フォロワー間で集合関数を使うことで見つけることになります。</p>
<p>これまでどおり例4-7（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__friends_followers_in_common.py">friends_followers__friends_followers_in_common.py</a>）をコピペしてくるわけですが、その実行の際には、対象とするユーザーのフォロー／フォロワーのデータをあらかじめRedis内に入れておかなければなりません。具体的に言うと、例4-4を対象ユーザーで実行しておけばOKです。先ほどの部分適用して作られた関数がRedis内にデータを格納してくれますから。そうしないと、データが無いので単に0件と返ってくるだけです。</p>
<h3>4.2.6 影響力の計測</h3>
<p>twitterの機能のなかで特徴的なもののひとつに、リツイートがあげられます。気に入った他人のツイートを自分のフォロワーに「転送」する機能ですよね。これによって、ある特定のツイートが連鎖的にリツイートされると、短期間で爆発的に広まることになります。そしてフォロワーの多いユーザーにリツイートされると、より広く伝播されて大きな影響を生み出すことができる、というわけです。</p>
<p>この節では、そうした影響力をフォロワー数によって測ってみよう、というものです。例4-8（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__crawl.py">friends_followers__crawl.py</a>）は、ある特定のユーザーからスタートして、そのフォロー／フォロワーの情報をすべて取得＆Redisに格納し、そしてそれら一人ひとりに対してまたフォロー／フォロワーの情報をすべて取得＆Redisに格納し、そして…と、繰り返していきます。</p>
<p>なので、これを実行すると、Redis内のデータが一気に増大します。何階層まで探索するかは引数のdepthで指定できますが、僕のアカウントでdepth=1（直接のフォロー／フォロワーだけ）で実行したら、一分ほどで終了して、Redis内に2322件のデータがあらたに登録されました。</p>
<p>…うっかりdepth=10とかで実行すると、はっきり言ってどういう事態になるかわかりません。たぶんAPI制限に引っかかりながらも制限がリセットされる一時間おきにちょっとずつ進んでいって、メモリとHDDをRedisデータが喰い潰していく、という感じでしょうか。だからこそ、このソースでは一度のフォロー数などの探索での上限数を設けています。なんにせよ、ちょっと気をつけて実行しましょう。</p>
<p>しかしこのソースでは、あくまでデータを取得＆格納しただけで、影響力としてはさっぱりわかりません。そこで次の例4-9（<a href="https://github.com/ptwobrussell/Mining-the-Social-Web/blob/master/python_code/friends_followers__calculate_avg_influence_of_followers.py">friends_followers__calculate_avg_influence_of_followers.py</a>）では、対象ユーザーのフォロワーのなかでフォロワー数の多いトップ１０と、全フォロワーの平均フォロワー数を計算しています。なお、このソースではPrettyTableというライブラリが指定されているので、素直にeasy_installしましょう。</p>
<p>同じく僕のアカウントで行ったところ、以下のように結果になりました。</p>
<pre style="background-color:#eeeeee;">The top 10 followers from the sample:
 +----------------+---------+
 | Date | Count |
 +----------------+---------+
 | hatoyamayukio | 608,303 |
 | shuzo_matsuoka | 258,605 |
 | 38sun3 | 250,422 |
 | ktamiya | 240,826 |
 | LIVESTRONG | 203,574 |
 | tsuda | 196,778 |
 | sasakitoshinao | 145,352 |
 | myen | 137,497 |
 | wakita_tamaki | 70,913 |
 | asao_keiichiro | 68,583 |
 +----------------+---------+
The average number of followers for HOSONO_Junya's followers: 6,856</pre>
<p>トップは鳩山由紀夫元首相か…あんまり最近見かけないようなw</p>
<h2>次回に続く。</h2>
<p>さて、長かった4.2章もこれで終わりです。ずいぶん長くなったので、続きは別エントリーにします。できれば明日中には更新します。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/468/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=468&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/02/06/%e3%80%8e%e5%85%a5%e9%96%80%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%87%e3%83%bc%e3%82%bf%e3%80%8f%e7%ac%ac4%e7%ab%a0%e3%82%92%e8%aa%ad%e3%82%80%ef%bc%881%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://ecx.images-amazon.com/images/I/513gAGruDDL._SS200_.jpg" medium="image">
			<media:title type="html">『入門 ソーシャルデータ』</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/02/cap4-01.png?w=300" medium="image">
			<media:title type="html">cap4-01</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/02/cap4-02.png?w=300" medium="image">
			<media:title type="html">cap4-02</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/02/cap4-03.png?w=300" medium="image">
			<media:title type="html">cap4-03</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/02/cap4-04.png?w=300" medium="image">
			<media:title type="html">cap4-04</media:title>
		</media:content>
	</item>
		<item>
		<title>Jリーグは今オフ怒涛の移籍ラッシュ！これをGraphvizで可視化してみました</title>
		<link>http://webforthenext.wordpress.com/2012/01/15/j%e3%83%aa%e3%83%bc%e3%82%b0%e3%81%af%e4%bb%8a%e3%82%aa%e3%83%95%e6%80%92%e6%b6%9b%e3%81%ae%e7%a7%bb%e7%b1%8d%e3%83%a9%e3%83%83%e3%82%b7%e3%83%a5%ef%bc%81%e3%81%93%e3%82%8c%e3%82%92graphviz%e3%81%a7/</link>
		<comments>http://webforthenext.wordpress.com/2012/01/15/j%e3%83%aa%e3%83%bc%e3%82%b0%e3%81%af%e4%bb%8a%e3%82%aa%e3%83%95%e6%80%92%e6%b6%9b%e3%81%ae%e7%a7%bb%e7%b1%8d%e3%83%a9%e3%83%83%e3%82%b7%e3%83%a5%ef%bc%81%e3%81%93%e3%82%8c%e3%82%92graphviz%e3%81%a7/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 13:58:46 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=448</guid>
		<description><![CDATA[最近読んでいる本『入門ソーシャルデータ』で、フローチャートやグラフ理論（ノードとエッジの集合）を表現するためのDOT言語と、これを入力にして可視化画像を生成できるツールGraphvizを知りました。 例えばこんな入力から、 strict digraph { "ノード1" -&#62; "ノード2" [label="エッジA"]; "ノード2" -&#62; "ノード3" [label="エッジB"]; "ノード2" -&#62; "ノード4" [label="エッジC"]; } こんな感じの絵が描けます。 「…あれ、これって何かに使えるような…」と考えて、「そうだ、これを使ってJリーグの選手の今オフの移籍情報を可視化してみると面白いかも！」と思いつきました。 幸い、世の中にはJリーグやJFLの選手の移籍情報を蓄積してくれている「ら」情報というものがありまして、こちらのサイトで最新情報をまとめてくれています。 上記のサイトのデータ（1/14時点）をもとに、各クラブを「ノード」に、クラブ間を移籍する選手を「エッジ 」としてDOT言語に変換してみたデータを可視化してみました（赤線＝現役日本代表、青線＝大学生、緑線＝ユース／高校生）。それが下の画像です！ （生成パラメータ：layout=fdp,splines=true,overlap=false, sep=30） どうですか？　この画像から以下のようなことがわかってきます。 まず、想像以上に大量の線が描かれました。この線一本一本がひとりの選手の移籍になります（同じチームから同じチームに複数人移籍した場合も今は一本にしてあります）。そう考えてみると、いかに今オフの移籍が多いかがわかります。 最も矢印の行き来が多いのはJ1&#60;&#8211;&#62;J2ですが、J2-&#62;JFLも結構多いのが見て取れます。活躍の舞台をJ2からJFLに移す選手が多い、ということですね。 1/14時点においても、矢印の行き先が「未定」の選手が多いこともわかります…。 現役の日本代表選手の移籍はあまりないこと（槙野選手、今野選手、ハーフナー・マイク選手、李忠成選手くらい？見落としてたらすみません）。 大学生や高校生、ユースからJリーグやJFLにやってくる選手が予想よりも多かったです。また、今オフは韓国の大学からの加入も想像以上に多いですね。兵役の問題はどうするのかなぁ？ うーん、やっぱり我ながらもっと見やすくしたいですね…。そもそも僕自身がGraphvizの扱いにまだ慣れていないので、「こういうデータなら、こうすればもっときれいに可視化できるよ」という方法をご存知の方はぜひ教えてください。そうすれば、もっとたくさんのことがわかってくると思います。後日、元データのDOTファイルも公開したいと思います。それと、今回は手作業で一気に変換した（半日かかりました…）のですが、やっぱりスクレイピングでやりたいですね。 また、各クラブの塗り色ですが、「だいたいこんな感じかな〜」という程度で塗っていますので、もし変なようであればこちらのページの色情報を参考にして「この色にしてほしい」ということをtwitterの@HOSONO_Junya宛かこの記事のコメントでお知らせください。JFLクラブのファン・サポーターの方もぜひお願いします。 Jリーグ&#38;JFLのファン•サポーターにとって、この時期は自分の応援しているクラブの移籍情報に一喜一憂しますよね（僕もそのうちの一人です）。そのときに、こんなデータもちょっと参考にしてみてくれると嬉しいです。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=448&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>最近読んでいる本<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873115132/-22/ref=nosim/" rel="nofollow" target="_blank">『入門ソーシャルデータ』</a>で、フローチャートやグラフ理論（ノードとエッジの集合）を表現するためのDOT言語と、これを入力にして可視化画像を生成できるツール<a href="http://graphviz.org/">Graphviz</a>を知りました。</p>
<p>例えばこんな入力から、</p>
<pre><code> strict digraph {
    "ノード1" -&gt; "ノード2" [label="エッジA"];
    "ノード2" -&gt; "ノード3" [label="エッジB"];
    "ノード2" -&gt; "ノード4" [label="エッジC"];
 }

</code></pre>
<p>こんな感じの絵が描けます。</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/01/sample-dot.png"><img class="aligncenter size-medium wp-image-457" title="sample.dot" src="http://webforthenext.files.wordpress.com/2012/01/sample-dot.png?w=300&#038;h=266" alt="" width="300" height="266" /></a></p>
<p>「…あれ、これって何かに使えるような…」と考えて、「そうだ、これを使ってJリーグの選手の今オフの移籍情報を可視化してみると面白いかも！」と思いつきました。</p>
<p><span id="more-448"></span></p>
<p>幸い、世の中にはJリーグやJFLの選手の移籍情報を蓄積してくれている「ら」情報というものがありまして、<a href="http://www.kobaton.net/ra/">こちらのサイト</a>で最新情報をまとめてくれています。</p>
<p>上記のサイトのデータ（1/14時点）をもとに、各クラブを「ノード」に、クラブ間を移籍する選手を「エッジ 」としてDOT言語に変換してみたデータを可視化してみました（赤線＝現役日本代表、青線＝大学生、緑線＝ユース／高校生）。それが下の画像です！</p>
<p><a href="http://webforthenext.files.wordpress.com/2012/01/j-league2011-2012-dot.png"><img class="aligncenter size-medium wp-image-451" title="j-league2011-2012.dot" src="http://webforthenext.files.wordpress.com/2012/01/j-league2011-2012-dot.png?w=300&#038;h=200" alt="" width="300" height="200" /></a>（生成パラメータ：layout=fdp,splines=true,overlap=false, sep=30）</p>
<p>どうですか？　この画像から以下のようなことがわかってきます。</p>
<ol>
<li>まず、想像以上に大量の線が描かれました。この線一本一本がひとりの選手の移籍になります（同じチームから同じチームに複数人移籍した場合も今は一本にしてあります）。そう考えてみると、いかに今オフの移籍が多いかがわかります。</li>
<li>最も矢印の行き来が多いのはJ1&lt;&#8211;&gt;J2ですが、J2-&gt;JFLも結構多いのが見て取れます。活躍の舞台をJ2からJFLに移す選手が多い、ということですね。</li>
<li>1/14時点においても、矢印の行き先が「未定」の選手が多いこともわかります…。</li>
<li>現役の日本代表選手の移籍はあまりないこと（槙野選手、今野選手、ハーフナー・マイク選手、李忠成選手くらい？見落としてたらすみません）。</li>
<li>大学生や高校生、ユースからJリーグやJFLにやってくる選手が予想よりも多かったです。また、今オフは韓国の大学からの加入も想像以上に多いですね。兵役の問題はどうするのかなぁ？</li>
</ol>
<p>うーん、やっぱり我ながら<strong>もっと見やすくしたい</strong>ですね…。そもそも僕自身がGraphvizの扱いにまだ慣れていないので、「こういうデータなら、こうすればもっときれいに可視化できるよ」という方法をご存知の方はぜひ教えてください。そうすれば、もっとたくさんのことがわかってくると思います。後日、元データのDOTファイルも公開したいと思います。それと、今回は手作業で一気に変換した（半日かかりました…）のですが、やっぱりスクレイピングでやりたいですね。</p>
<p>また、各クラブの塗り色ですが、「だいたいこんな感じかな〜」という程度で塗っていますので、もし変なようであれば<a href="http://graphviz.org/content/color-names">こちらのページ</a>の色情報を参考にして「この色にしてほしい」ということを<a href="https://twitter.com/hosono_junya">twitterの@HOSONO_Junya</a>宛かこの記事のコメントでお知らせください。JFLクラブのファン・サポーターの方もぜひお願いします。</p>
<p>Jリーグ&amp;JFLのファン•サポーターにとって、この時期は自分の応援しているクラブの移籍情報に一喜一憂しますよね（僕もそのうちの一人です）。そのときに、こんなデータもちょっと参考にしてみてくれると嬉しいです。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/448/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=448&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/01/15/j%e3%83%aa%e3%83%bc%e3%82%b0%e3%81%af%e4%bb%8a%e3%82%aa%e3%83%95%e6%80%92%e6%b6%9b%e3%81%ae%e7%a7%bb%e7%b1%8d%e3%83%a9%e3%83%83%e3%82%b7%e3%83%a5%ef%bc%81%e3%81%93%e3%82%8c%e3%82%92graphviz%e3%81%a7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/01/sample-dot.png?w=300" medium="image">
			<media:title type="html">sample.dot</media:title>
		</media:content>

		<media:content url="http://webforthenext.files.wordpress.com/2012/01/j-league2011-2012-dot.png?w=300" medium="image">
			<media:title type="html">j-league2011-2012.dot</media:title>
		</media:content>
	</item>
		<item>
		<title>OSXでのpythonのバージョン切り替え(eclipseでも)</title>
		<link>http://webforthenext.wordpress.com/2012/01/14/osx%e3%81%a7%e3%81%aepython%e3%81%ae%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88eclipse%e3%81%a7%e3%82%82/</link>
		<comments>http://webforthenext.wordpress.com/2012/01/14/osx%e3%81%a7%e3%81%aepython%e3%81%ae%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88eclipse%e3%81%a7%e3%82%82/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 10:13:03 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=425</guid>
		<description><![CDATA[いま使っているOSX上には複数のバージョンのpythonが入りうるのですが、その切替をできるようにしました。GAE開発用には2.5系、それ以外のときは最新環境として2.7系を使いたいので。ただし、ちょっと前にやったことなので不完全かもしれませんが…。 いくつかのブログを見たところ、「python_selectを使え」的な記述をよく見かけますが、どうやらこれは古い情報のようで、「python_selectは死んだ」なんて記事もありました。どうやらMacPortsの仕様変更とのこと。 なので、まずはMacPorts自体をアップデート。 sudo port selfupdate sudo port sync で、現在切り替えられるpythonを確認するために port select --list python とすると、 Available versions for python: none python25 python25-apple python26-apple python27-apple (active) なような表示がでてきます。現在activeなのは2.7、ということですね。バージョンを切り替えるには、 sudo port select --set python python25 で切り替わります。 Available versions for python: none python25 (active) python25-apple python26-apple python27-apple これで出来ました。 また、ライブラリを読み込みeasy_installも、おそらくコマンド実行時にactiveなバージョンのpythonでのみ使えるようにインストールされるものと思われます。easy_installでインストールすると、 /Library/Python/(バージョン)/site-packages/ 配下に格納されるようです。 eclipseでも切り替えらえるように GAEの開発にはeclipseを使っていますが、python2.7系を使う時にもeclipseが使えると便利ですよね。 それには、Preferences の画面から PyDev の Interpreter &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=425&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>いま使っているOSX上には複数のバージョンのpythonが入りうるのですが、その切替をできるようにしました。GAE開発用には2.5系、それ以外のときは最新環境として2.7系を使いたいので。ただし、ちょっと前にやったことなので不完全かもしれませんが…。</p>
<p>いくつかのブログを見たところ、「python_selectを使え」的な記述をよく見かけますが、どうやらこれは古い情報のようで、「<a href="http://d.hatena.ne.jp/inouetakuya/20110728/1311852834" target="_blank">python_selectは死んだ</a>」なんて記事もありました。どうやらMacPortsの仕様変更とのこと。</p>
<p>なので、まずはMacPorts自体をアップデート。</p>
<pre><code>sudo port selfupdate
sudo port sync

</code></pre>
<p>で、現在切り替えられるpythonを確認するために</p>
<pre><code> port select --list python 

</code></pre>
<p>とすると、</p>
<pre><code>Available versions for python:
none
python25
python25-apple
python26-apple
python27-apple (active) 

</code></pre>
<p>なような表示がでてきます。現在activeなのは2.7、ということですね。バージョンを切り替えるには、</p>
<pre><code>sudo port select --set python python25

</code></pre>
<p>で切り替わります。</p>
<pre><code>Available versions for python:
none
python25 (active)
python25-apple
python26-apple
python27-apple 

</code></pre>
<p>これで出来ました。</p>
<p>また、ライブラリを読み込みeasy_installも、おそらくコマンド実行時にactiveなバージョンのpythonでのみ使えるようにインストールされるものと思われます。easy_installでインストールすると、 /Library/Python/(バージョン)/site-packages/ 配下に格納されるようです。</p>
<h2>eclipseでも切り替えらえるように</h2>
<p>GAEの開発にはeclipseを使っていますが、python2.7系を使う時にもeclipseが使えると便利ですよね。</p>
<p>それには、Preferences の画面から PyDev の Interpreter &#8211; Python を開きます。すると、現在使えるように設定されているバージョン（のインタプリタ＝実行ファイル）が表示されますので、ここに利用したいバージョンのpythonの実行ファイル（port select で切り替えておいて which pythonで所在はわかりますね）を Add してやると、該当するライブラリをPYTHONPATHとして読み込んでくれます。便利！</p>
<p>そして、該当プロジェクトの Properties の画面から PyDev &#8211; Interpreter/Grammar を開きます。そこで、Interpreter の欄に先程設定したものを指定すると、そのバージョンのpythonで実行してくれる、というわけですね。一応、Grammar Versionもあわせておいたほうがいいでしょう。</p>
<p>これで、コマンドラインからeasy_installしたライブラリをeclipseでも使えるようにもなりました。</p>
<p>とりあえずこれで切り替わってるように思えますが、もし間違ってたり「もっとこうしたほうがいいよ」ということがありましたらコメントしてもらえると助かります。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=425&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/01/14/osx%e3%81%a7%e3%81%aepython%e3%81%ae%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88eclipse%e3%81%a7%e3%82%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>OSX上でGAE/Python/Djangoを使ってのtwitterbotの開発環境メモ</title>
		<link>http://webforthenext.wordpress.com/2012/01/14/osx%e4%b8%8a%e3%81%a7gaepythondjango%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%aetwitterbot%e3%81%ae%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e3%83%a1%e3%83%a2/</link>
		<comments>http://webforthenext.wordpress.com/2012/01/14/osx%e4%b8%8a%e3%81%a7gaepythondjango%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%aetwitterbot%e3%81%ae%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e3%83%a1%e3%83%a2/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 09:37:49 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[twitterbot]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[GoogleAppEngine]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=381</guid>
		<description><![CDATA[さて、現在GoogleAppEngine(GAE)を使ってtwitterbotを作ってます。自分にとっては最初のwebサービス(?)。その現時点(2012年1月)での開発環境をメモしておきます。 マシン：MacbookPro 15-inch, Early 2011 OS：OS X Lion 10.7.2 IDE：Eclipse Helios SR2 追加インストールしたもの：PyDev for Eclipse, Google Plugin for Eclipse 3.6 開発言語：python 2.5.6 Lion上だとデフォルトは2.7系だったので、GAE開発のためにmacportsで入れなおした記憶があります。 SDK：GoogleAppEngine SDK 1.6.1 利用するウェブアプリケーションフレームワーク：Django 1.2.5 (SDK同梱のやつ) DjangoテンプレートではHTML5を使う予定。 といったところですね。 とにかく、自分にとって新しい技術を使って作ることでそれらを習得することも大きな目的の一つです。特にpython/Django/GAE/HTML5あたりは自分にとって全部初物です。 今後も、開発時の記録（主に技術面・設定面）などをぼちぼち更新していきたいと思います。botの公開目標は一応3月中旬なのですが…できるのか俺？<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=381&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>さて、現在GoogleAppEngine(GAE)を使ってtwitterbotを作ってます。自分にとっては最初のwebサービス(?)。その現時点(2012年1月)での開発環境をメモしておきます。</p>
<ul>
<li>マシン：MacbookPro 15-inch, Early 2011</li>
<li>OS：OS X Lion 10.7.2</li>
<li>IDE：Eclipse Helios SR2
<ul>
<li>追加インストールしたもの：PyDev for Eclipse, Google Plugin for Eclipse 3.6</li>
</ul>
</li>
<li>開発言語：python 2.5.6
<ul>
<li>Lion上だとデフォルトは2.7系だったので、GAE開発のためにmacportsで入れなおした記憶があります。</li>
</ul>
</li>
<li>SDK：GoogleAppEngine SDK 1.6.1</li>
<li>利用するウェブアプリケーションフレームワーク：Django 1.2.5 (SDK同梱のやつ)</li>
<li>DjangoテンプレートではHTML5を使う予定。</li>
</ul>
<p>といったところですね。</p>
<p>とにかく、自分にとって新しい技術を使って作ることでそれらを習得することも大きな目的の一つです。特にpython/Django/GAE/HTML5あたりは自分にとって全部初物です。</p>
<p>今後も、開発時の記録（主に技術面・設定面）などをぼちぼち更新していきたいと思います。botの公開目標は一応3月中旬なのですが…できるのか俺？</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=381&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/01/14/osx%e4%b8%8a%e3%81%a7gaepythondjango%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%aetwitterbot%e3%81%ae%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e3%83%a1%e3%83%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>『集合知プログラミング』の勉強会に行きました＋α</title>
		<link>http://webforthenext.wordpress.com/2012/01/09/%e3%80%8e%e9%9b%86%e5%90%88%e7%9f%a5%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%80%8f%e3%81%ae%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e8%a1%8c%e3%81%8d%e3%81%be%e3%81%97%e3%81%9f/</link>
		<comments>http://webforthenext.wordpress.com/2012/01/09/%e3%80%8e%e9%9b%86%e5%90%88%e7%9f%a5%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%80%8f%e3%81%ae%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e8%a1%8c%e3%81%8d%e3%81%be%e3%81%97%e3%81%9f/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 09:38:15 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>
		<category><![CDATA[集合知]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=371</guid>
		<description><![CDATA[『集合知プログラミング』ってなんだ 昨年の12月15日、atndさんで見つけた、以下の勉強会に出てきました。 第13回「集合知プログラミング」真面目に勉強する会 @外苑前 きっかけは、「自分が働いているNGOの支援者データベースに蓄積された情報から、より有意義な情報を見つけるためにどうすればいいか」と考えていたことでした。「それには、いま現在自分が持っている知識とは全く別の視点が必要ではないのか？」と思っていたこともあります。「もしかしてそれが集合知なのかも」ということですね。 とはいっても、この勉強会は一冊の本『集合知プログラミング』を参加者で輪読していく連続もので、しかもこの回が最終回。ということで、それでも参加OKなのか主催者のひとりであるKshi_Kshiさんにtwitterで問い合わせたところ、快諾をいただきましたので参加してきました。当日の朝に買った本を持って（汗）。 勉強会では、簡単な自己紹介のあとに、Kshi_KshiさんがLDA(Latent Dirichlet Allocation)の紹介をされてました。これまでの回のフォロー、といった位置づけだったようです。が、いきなりで正直よくわからなかったです…。参考となるスライドを紹介されたましたのでそちらを参考にしてください。 LDA入門 View more presentations from tsubosaka その後は、最終回ということもあってか、自習の時間が長く取られており、参加者それぞれが自分で設定した目的のために黙々と作業する、というスタイルでした。 自分では、とりあえずその日の朝に買ったばかりの本を読んで、集合知を扱う際には教師あり学習と教師あり学習とがあること、自分の目的から言えば教師なし学習があっていること、本の目次から言えば、 3章　グループを見つけ出す 10章　特徴を発見する が該当するのでしょうか。そして、実際のデータを思い浮かべて、それが何に使えるかを考えることに時間を費やしました。でも、やっぱりちょっとは手を動かしつつ実際のデータを使ってみて感覚をつかみたいところでしたが、当日はそこまでたどり着きませんでした。 自習時間の後に、各自なにをやっていたかを共有して終了しました。本を読み進める人、ひたすら動くものを作る人などさまざま、けっこう自由な感じですね。 とにかく、当日勉強会に参加された皆様、（今更ですが…）お疲れ様でした。大変刺激になりました。かなーり畑違いな人間を受け入れてくださってありがとうございました。 なお、この勉強会の参加者を中心としたGoogleグループもあるので、興味のある方は登録してみてください。過去の勉強会のときのプレゼン資料も共有されていますよ。 Googleグループ：集合知の会 次回、『入門ソーシャルデータ』に続く なお、この勉強会はこの回で終わり。次からは、『集合知プログラミング』の続編と位置づけられているらしい『入門 ソーシャルデータ』をまた輪読形式で進めていくとのことで、そちらにも参加する予定です。 第1回「入門 ソーシャルデータ」真面目に勉強する会 @外苑前 ただし、こちらの本はタイトル通り、現在広く利用されているソーシャルサービス（TwitterやFaceboo、LinkedInなど）データのデータを取り扱うものなので、自分の当初の目的とはちょっと離れるかもしれません。でも、個人的にtwitterbotを作っている最中ですし、なによりも「約2時間集中せざるをえない空間」というのが新鮮だったので、今後もなるべく参加していきたいと思います。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=371&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>『集合知プログラミング』ってなんだ</h2>
<p>昨年の12月15日、atndさんで見つけた、以下の勉強会に出てきました。</p>
<p><a title="第13回「集合知プログラミング」真面目に勉強する会 @外苑前" href="http://atnd.org/events/23196" target="_blank">第13回「集合知プログラミング」真面目に勉強する会 @外苑前</a></p>
<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113644/webfornext-22/ref=nosim/" rel="nofollow" target="_blank"><img class="alignright" style="border:none;" src="http://ecx.images-amazon.com/images/I/51FgSThMzVL._SS200_.jpg" alt="集合知プログラミング" /></a></p>
<p>きっかけは、「<a href="http://www.ngo-jvc.net/" target="_blank">自分が働いているNGO</a>の支援者データベースに蓄積された情報から、より有意義な情報を見つけるためにどうすればいいか」と考えていたことでした。「それには、いま現在自分が持っている知識とは全く別の視点が必要ではないのか？」と思っていたこともあります。「もしかしてそれが集合知なのかも」ということですね。</p>
<p>とはいっても、この勉強会は一冊の本<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113644/webfornext-22/ref=nosim/" rel="nofollow">『集合知プログラミング』</a>を参加者で輪読していく連続もので、しかもこの回が最終回。ということで、それでも参加OKなのか主催者のひとりである<a href="https://twitter.com/kshi_kshi" target="_blank">Kshi_Kshiさん</a>にtwitterで問い合わせたところ、快諾をいただきましたので参加してきました。当日の朝に買った本を持って（汗）。</p>
<p><span id="more-371"></span>勉強会では、簡単な自己紹介のあとに、Kshi_Kshiさんが<a href="http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation" target="_blank">LDA(Latent Dirichlet Allocation)</a>の紹介をされてました。これまでの回のフォロー、といった位置づけだったようです。が、いきなりで正直よくわからなかったです…。参考となるスライドを紹介されたましたのでそちらを参考にしてください。</p>
<div id="__ss_5284594" style="width:425px;">
<p><strong><a title="LDA入門" href="http://www.slideshare.net/tsubosaka/tokyotextmining" target="_blank">LDA入門</a></strong><iframe src='http://www.slideshare.net/slideshow/embed_code/5284594' width='425' height='348' scrolling='no'></iframe></p>
<div style="padding:5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/tsubosaka" target="_blank">tsubosaka</a></div>
</div>
<p>その後は、最終回ということもあってか、自習の時間が長く取られており、参加者それぞれが自分で設定した目的のために黙々と作業する、というスタイルでした。</p>
<p>自分では、とりあえずその日の朝に買ったばかりの本を読んで、集合知を扱う際には教師あり学習と教師あり学習とがあること、自分の目的から言えば教師なし学習があっていること、本の目次から言えば、</p>
<ul>
<li>3章　グループを見つけ出す</li>
<li>10章　特徴を発見する</li>
</ul>
<p>が該当するのでしょうか。そして、実際のデータを思い浮かべて、それが何に使えるかを考えることに時間を費やしました。でも、やっぱりちょっとは手を動かしつつ実際のデータを使ってみて感覚をつかみたいところでしたが、当日はそこまでたどり着きませんでした。</p>
<p>自習時間の後に、各自なにをやっていたかを共有して終了しました。本を読み進める人、ひたすら動くものを作る人などさまざま、けっこう自由な感じですね。</p>
<p>とにかく、当日勉強会に参加された皆様、（今更ですが…）お疲れ様でした。大変刺激になりました。かなーり畑違いな人間を受け入れてくださってありがとうございました。</p>
<p>なお、この勉強会の参加者を中心としたGoogleグループもあるので、興味のある方は登録してみてください。過去の勉強会のときのプレゼン資料も共有されていますよ。</p>
<p><a href="https://groups.google.com/group/StudyGroup_CI" target="_blank">Googleグループ：集合知の会</a></p>
<h2>次回、『入門ソーシャルデータ』に続く</h2>
<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873115132/-22/ref=nosim/" rel="nofollow" target="_blank"><img class="alignright" style="border:none;" src="http://ecx.images-amazon.com/images/I/513gAGruDDL._SS200_.jpg" alt="『入門 ソーシャルデータ』" /></a></p>
<p>なお、この勉強会はこの回で終わり。次からは、『集合知プログラミング』の続編と位置づけられているらしい<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873115132/-22/ref=nosim/" rel="nofollow" target="_blank">『入門 ソーシャルデータ』</a>をまた輪読形式で進めていくとのことで、そちらにも参加する予定です。</p>
<p><a href="http://atnd.org/events/23451" target="_blank">第1回「入門 ソーシャルデータ」真面目に勉強する会 @外苑前</a></p>
<p>ただし、こちらの本はタイトル通り、現在広く利用されているソーシャルサービス（TwitterやFaceboo、LinkedInなど）データのデータを取り扱うものなので、自分の当初の目的とはちょっと離れるかもしれません。でも、個人的にtwitterbotを作っている最中ですし、なによりも「約2時間集中せざるをえない空間」というのが新鮮だったので、今後もなるべく参加していきたいと思います。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=371&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2012/01/09/%e3%80%8e%e9%9b%86%e5%90%88%e7%9f%a5%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%80%8f%e3%81%ae%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e8%a1%8c%e3%81%8d%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://ecx.images-amazon.com/images/I/51FgSThMzVL._SS200_.jpg" medium="image">
			<media:title type="html">集合知プログラミング</media:title>
		</media:content>

		<media:content url="http://ecx.images-amazon.com/images/I/513gAGruDDL._SS200_.jpg" medium="image">
			<media:title type="html">『入門 ソーシャルデータ』</media:title>
		</media:content>
	</item>
		<item>
		<title>そろそろ再開。</title>
		<link>http://webforthenext.wordpress.com/2011/07/17/%e3%81%9d%e3%82%8d%e3%81%9d%e3%82%8d%e5%86%8d%e9%96%8b%e3%80%82/</link>
		<comments>http://webforthenext.wordpress.com/2011/07/17/%e3%81%9d%e3%82%8d%e3%81%9d%e3%82%8d%e5%86%8d%e9%96%8b%e3%80%82/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 01:29:46 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[GAEでウェブサービスをつくる]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=213</guid>
		<description><![CDATA[ずいぶんご無沙汰しましたが、またぼちぼちブログを更新していきたいと思います。 以前別ブログでもやっていましたが、ウェブサービスの作成過程の記録を残していこうと思います。コードネームはSK。サッカーに関するものです。それ専用のカテゴリも作りましたのでそちらでどうぞ。 開発環境は、先日買ったmacbookpro上でつくっていきます。バックエンドはGoogle App Engine。もういい加減使えるようにならないと。言語はpython。いつのまにかGAEでdjangoの1.2が使えるようになっていたので、これも使います。 さて、こんどこそ一年以内で公開にこぎつけたいと思います。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=213&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ずいぶんご無沙汰しましたが、またぼちぼちブログを更新していきたいと思います。</p>
<p>以前別ブログでもやっていましたが、ウェブサービスの作成過程の記録を残していこうと思います。コードネームはSK。サッカーに関するものです。<a href="http://webforthenext.wordpress.com/category/gae%E3%81%A7%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B/">それ専用のカテゴリも作りました</a>のでそちらでどうぞ。</p>
<p>開発環境は、先日買ったmacbookpro上でつくっていきます。バックエンドはGoogle App Engine。もういい加減使えるようにならないと。言語はpython。いつのまにかGAEでdjangoの1.2が使えるようになっていたので、これも使います。</p>
<p>さて、こんどこそ一年以内で公開にこぎつけたいと思います。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=213&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2011/07/17/%e3%81%9d%e3%82%8d%e3%81%9d%e3%82%8d%e5%86%8d%e9%96%8b%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>このブログをMovableType5からWordPressに移行した</title>
		<link>http://webforthenext.wordpress.com/2011/03/27/%e3%81%93%e3%81%ae%e3%83%96%e3%83%ad%e3%82%b0%e3%82%92movabletype5%e3%81%8b%e3%82%89wordpress%e3%81%ab%e7%a7%bb%e8%a1%8c%e3%81%97%e3%81%9f/</link>
		<comments>http://webforthenext.wordpress.com/2011/03/27/%e3%81%93%e3%81%ae%e3%83%96%e3%83%ad%e3%82%b0%e3%82%92movabletype5%e3%81%8b%e3%82%89wordpress%e3%81%ab%e7%a7%bb%e8%a1%8c%e3%81%97%e3%81%9f/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 13:05:07 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[このblogについて]]></category>
		<category><![CDATA[movabletype]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=86</guid>
		<description><![CDATA[タイトル通り、このブログをMovableType5からWordpress.comに移行しました。 たんにエクスポート/インポートしただけなので、下記の作業はこれから手作業で行います。 画像ファイルの移行 記事内のURLの変換 .htaccessでも301転送設定 以前はMovableTypeの勉強を兼ねて自分のブログでいろいろしていましたが、そろそろその役目もなくなってきたこともあり、またいままでは,勤め先のドメイン内に置いていたこともあって、単語検索的にもあまりいい影響もあたえないような気がしていたので、いっそのことということでwordpress.comに移行しました。 今後はもうブログ自体の仕組み自体よりも記事内容に集中するようにしたいです…<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=86&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>タイトル通り、このブログをMovableType5からWordpress.comに移行しました。</p>
<p>たんにエクスポート/インポートしただけなので、下記の作業はこれから手作業で行います。</p>
<ul>
<li>画像ファイルの移行</li>
<li>記事内のURLの変換</li>
<li>.htaccessでも301転送設定</li>
</ul>
<p>以前はMovableTypeの勉強を兼ねて自分のブログでいろいろしていましたが、そろそろその役目もなくなってきたこともあり、またいままでは,<a href="http://www.ngo-jvc.net/">勤め先のドメイン</a>内に置いていたこともあって、単語検索的にもあまりいい影響もあたえないような気がしていたので、いっそのことということでwordpress.comに移行しました。</p>
<p>今後はもうブログ自体の仕組み自体よりも記事内容に集中するようにしたいです…</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=86&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2011/03/27/%e3%81%93%e3%81%ae%e3%83%96%e3%83%ad%e3%82%b0%e3%82%92movabletype5%e3%81%8b%e3%82%89wordpress%e3%81%ab%e7%a7%bb%e8%a1%8c%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>このブログをMT4からMT5に移行したので、作業メモを残しておく</title>
		<link>http://webforthenext.wordpress.com/2010/11/07/mt4mt5/</link>
		<comments>http://webforthenext.wordpress.com/2010/11/07/mt4mt5/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 16:29:20 +0000</pubDate>
		<dc:creator>HOSONO Junya</dc:creator>
				<category><![CDATA[MovableType関連]]></category>

		<guid isPermaLink="false">http://webforthenext.wordpress.com/2010/11/07/mt4mt5/</guid>
		<description><![CDATA[このブログは MovableType4 で運用していたのですが、昨日これを MovableType5 に移行したので、そのときの作業メモを残します。JVC公式サイトを MT5 でリニューアルするにあたって、そのための技術テストを行うための移行となります。 ちなみに、単にシステムごと MT5 にアップグレードしたのではなく（そういう記事は検索するとたくさん出てきますね）、ブログ単体で MT4 から MT5 に移しました。システムごとアップグレードしたほうが楽なのでしょうが、しばらくは MT4, MT5 両者の並行運用が必要なので、ブログ単体だけの移行が必要になった次第です。 また、いわゆるMTの標準機能にある「バックアップ/復元」を使おうかとも考えましたが、これは移行元/先のMTのバージョンが同じであることが推奨されているので、今回は利用しませんでした。 以下、実際に行なった移行作業になります（多少順序は前後してたかも知れません）。 MT5 で移行先ブログを作成する（URL指定はMT4の現行ブログとは別にする） 現行ブログで「記事のエクスポート」を行う これにはブログ記事、コメント、トラックバックが含まれる エクスポートしたデータを、移行先ブログで「記事のインポート」を使ってインポートする 移行先ブログにつくられるデフォルトのテンプレートをすべて削除する 移行先ブログで、現行ブログと同じようにテンプレートを設定する 現行ブログでは、もともと各テンプレートは「ファイルにリンク」させていたので、これらのファイルを一旦ダウンロードする 移行先ブログのフォルダ内にダウンロードしたファイルをアップロードする 新規テンプレートを作成する際に、アップロードしたファイルをリンク先に指定していく この時点で、移行先ブログ側に足りないプラグインがあることがわかったりするので、必要に応じて追加・設定していく この時点で、テンプレート内で blog_id などを直接した記述は修正しておく（MT4上とMT5上とでblog_idはおそらく異なってくるので） 移行先ブログで、現行ブログと同じようにカテゴリとフォルダを設定する 現行サイトから画像などのデータを一旦ダウンロードし、移行先ブログのフォルダ内にアップロードする 普通にアイテムとして登録されている画像を格納しているフォルダだけでなく、WindowsLiveWriter を使って画像をアップロードすると作られるフォルダなども忘れずに移行する 特殊な設定ファイルを一旦ダウンロードし、移行先ブログのフォルダ内にアップロードする 例） .htaccessやga.php(GoogleAnalytics) など ブログ全体を再構築して、ただしく表示されることを確認する 現行ブログを、フォルダ・URL指定を変更して再構築しておく この時点で現行ブログ自体のデータやMT4上設定をすべて削除してもいいのだろうが、念のために残しておく 現行ブログの（それまでの）URLに対応するフォルダをフォルダごと削除する 移行先ブログのURL指定をいま削除したフォルダの名前（＝これまでのURL）に変更して再構築する 以上になります。 この方法の欠点は、ウェブページが移行できてないこと（今回はもともとなかったので問題なし）、アイテムとしての情報が残らないことくらいでしょうか。 また、MT5 の管理画面には「検索/置換」機能があり、移行前後でテンプレートやブログ記事内の特定の記述を一気に変更＝置換したい時などに非常に便利だと思われます。 ご参考までに。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=71&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>このブログは MovableType4 で運用していたのですが、昨日これを MovableType5 に移行したので、そのときの作業メモを残します。JVC公式サイトを MT5 でリニューアルするにあたって、そのための技術テストを行うための移行となります。</p>
<p>ちなみに、単にシステムごと MT5 にアップグレードしたのではなく（そういう記事は検索するとたくさん出てきますね）、ブログ単体で MT4 から MT5 に移しました。システムごとアップグレードしたほうが楽なのでしょうが、しばらくは MT4, MT5 両者の並行運用が必要なので、ブログ単体だけの移行が必要になった次第です。</p>
<p>また、いわゆるMTの標準機能にある「バックアップ/復元」を使おうかとも考えましたが、これは移行元/先のMTのバージョンが同じであることが推奨されているので、今回は利用しませんでした。</p>
<p>以下、実際に行なった移行作業になります（多少順序は前後してたかも知れません）。</p>
<ol>
<li>MT5 で移行先ブログを作成する（URL指定はMT4の現行ブログとは別にする） </li>
<li>現行ブログで「記事のエクスポート」を行う
<ol>
<li>これにはブログ記事、コメント、トラックバックが含まれる </li>
</ol>
</li>
<li>エクスポートしたデータを、移行先ブログで「記事のインポート」を使ってインポートする </li>
<li>移行先ブログにつくられるデフォルトのテンプレートをすべて削除する </li>
<li>移行先ブログで、現行ブログと同じようにテンプレートを設定する
<ol>
<li>現行ブログでは、もともと各テンプレートは「ファイルにリンク」させていたので、これらのファイルを一旦ダウンロードする </li>
<li>移行先ブログのフォルダ内にダウンロードしたファイルをアップロードする </li>
<li>新規テンプレートを作成する際に、アップロードしたファイルをリンク先に指定していく </li>
<li>この時点で、移行先ブログ側に足りないプラグインがあることがわかったりするので、必要に応じて追加・設定していく </li>
<li>この時点で、テンプレート内で blog_id などを直接した記述は修正しておく（MT4上とMT5上とでblog_idはおそらく異なってくるので） </li>
</ol>
</li>
<li>移行先ブログで、現行ブログと同じようにカテゴリとフォルダを設定する </li>
<li>現行サイトから画像などのデータを一旦ダウンロードし、移行先ブログのフォルダ内にアップロードする
<ol>
<li>普通にアイテムとして登録されている画像を格納しているフォルダだけでなく、WindowsLiveWriter を使って画像をアップロードすると作られるフォルダなども忘れずに移行する </li>
</ol>
</li>
<li>特殊な設定ファイルを一旦ダウンロードし、移行先ブログのフォルダ内にアップロードする
<ol>
<li>例） .htaccessやga.php(GoogleAnalytics) など </li>
</ol>
</li>
<li>ブログ全体を再構築して、ただしく表示されることを確認する </li>
<li>現行ブログを、フォルダ・URL指定を変更して再構築しておく
<ol>
<li>この時点で現行ブログ自体のデータやMT4上設定をすべて削除してもいいのだろうが、念のために残しておく </li>
</ol>
</li>
<li>現行ブログの（それまでの）URLに対応するフォルダをフォルダごと削除する </li>
<li>移行先ブログのURL指定をいま削除したフォルダの名前（＝これまでのURL）に変更して再構築する </li>
</ol>
<p>以上になります。</p>
<p>この方法の欠点は、ウェブページが移行できてないこと（今回はもともとなかったので問題なし）、アイテムとしての情報が残らないことくらいでしょうか。</p>
<p>また、MT5 の管理画面には「検索/置換」機能があり、移行前後でテンプレートやブログ記事内の特定の記述を一気に変更＝置換したい時などに非常に便利だと思われます。</p>
<p>ご参考までに。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/webforthenext.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/webforthenext.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/webforthenext.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/webforthenext.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/webforthenext.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/webforthenext.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/webforthenext.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/webforthenext.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=webforthenext.wordpress.com&amp;blog=19842015&amp;post=71&amp;subd=webforthenext&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://webforthenext.wordpress.com/2010/11/07/mt4mt5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/00d4d67e91a86d421eff95045895b4ce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
	</channel>
</rss>
