<?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="https://webforthenext.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://webforthenext.wordpress.com</link>
	<description>次の段階、次のつながり、次の時代、次の世代・・・、さまざなま『次』のために、NPO/NGO や web で何ができるのかを考えます。</description>
	<lastBuildDate>Tue, 30 Apr 2013 17:14:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">19842015</site><cloud domain='webforthenext.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://secure.gravatar.com/blavatar/b16ea3673c0535edf4754aa9cd51dbea6e8e70a68c310d81f6bd91e8169d4c75?s=96&#038;d=https%3A%2F%2Fs2.wp.com%2Fi%2Fwebclip.png</url>
		<title>web for the next</title>
		<link>https://webforthenext.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://webforthenext.wordpress.com/osd.xml" title="web for the next" />
	<atom:link rel='hub' href='https://webforthenext.wordpress.com/?pushpress=hub'/>
	<item>
		<title>iPadでExcelを使う方法のひとつ。Office Web Apps</title>
		<link>https://webforthenext.wordpress.com/2013/05/01/ipad%e3%81%a7excel%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95%e3%81%ae%e3%81%b2%e3%81%a8%e3%81%a4%e3%80%82office-web-apps/</link>
					<comments>https://webforthenext.wordpress.com/2013/05/01/ipad%e3%81%a7excel%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95%e3%81%ae%e3%81%b2%e3%81%a8%e3%81%a4%e3%80%82office-web-apps/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Tue, 30 Apr 2013 17:14:40 +0000</pubDate>
				<category><![CDATA[PCやソフトの使い方]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=685</guid>

					<description><![CDATA[iPadを持ってる人が一度は考えたことがあること。 「これでMS Office（特にExcel）が使えればいいのに…」 はい、私もその通りです。で、それにトライした多くの方々がブログなどでその苦労を書かれてますね。類似の &#8230; <a href="https://webforthenext.wordpress.com/2013/05/01/ipad%e3%81%a7excel%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95%e3%81%ae%e3%81%b2%e3%81%a8%e3%81%a4%e3%80%82office-web-apps/" class="more-link"><span class="screen-reader-text">iPadでExcelを使う方法のひとつ。Office Web Apps</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>iPadを持ってる人が一度は考えたことがあること。</p>
<p><strong>「これでMS Office（特にExcel）が使えればいいのに…」</strong></p>
<p>はい、私もその通りです。で、それにトライした多くの方々がブログなどでその苦労を書かれてますね。類似のアプリを使ったり（<a href="https://itunes.apple.com/jp/app/quickoffice-pro-hd-edit-office/id376212724?mt=8">QuickOfficePro</a>だったり<a href="https://itunes.apple.com/jp/app/documents-to-go-standard-office/id317117961?mt=8">Documents to Go</a>だったりAppleのNumbersやKeynoteだったり）、Googleドキュメントに手を出したり…。</p>
<p>しかしどの方法もOfficeとの互換性に多かれ少なかれ課題があることに変わりはありません。なかには、Windowsパソコンにリモート（LogMeInかな）でログインしてみたりする強者もいましたが、これはこれでかなりスキルや設備のある人じゃないと無理ですし。</p>
<p>うーん、やっぱり無理なのか、MSがiPad用Officeを出すまで待たねばアカンのか…と思っていたのですが、ひょんなことから解決策を見つけました。</p>
<p>昨年辺りから、MSは「<a href="http://www.microsoft.com/ja-jp/office/365/default.aspx" title="Office365">Office365</a>」と称してOffice機能を含めたクラウド形式のグループウェアを推進しようとしています。本来は有料のこのサービスですが、同社のクラウドサービスである<a href="http://windows.microsoft.com/ja-jp/skydrive/download" title="SkyDrive">SkyDrive</a>のユーザーには、このOffice機能（<a href="http://office.microsoft.com/ja-jp/web-apps/" title="Office Web Apps">Office Web Apps</a>）がクラウドサービスとして提供されています。しかも<strong>無料</strong>！</p>
<p>要は、インターネットにつながっていればブラウザのなかでOfficeが動く、というものですね。…ということは、そうです、<strong>iPad</strong>（のSafariのなか）<strong>でもOfficeが動くのです！</strong></p>
<p>「これか、これなのか！」と思って試してみたところ、まさに「これ」でした！</p>
<p>画面は、こんな感じです。</p>
<p><a href="https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif"><img data-attachment-id="691" data-permalink="https://webforthenext.wordpress.com/2013/05/01/ipad%e3%81%a7excel%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95%e3%81%ae%e3%81%b2%e3%81%a8%e3%81%a4%e3%80%82office-web-apps/img_0038/" data-orig-file="https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif" data-orig-size="640,480" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="IMG_0038" data-image-description="" data-image-caption="" data-large-file="https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif?w=640" src="https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif?w=300&#038;h=225" alt="" width="300" height="225" class="aligncenter size-medium wp-image-691" srcset="https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif?w=300 300w, https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif?w=600 600w, https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>互換性に関しても、普通のOfficeと100%完全互換、というわけではなさそうですが、他社アプリなどに比べれば、なんといっても本家MS自身のサービスですから、その度合いは比べ物になりません。互換性については以下のページに記載がまとめてありました。</p>
<ul>
<li><a href="http://office.microsoft.com/ja-jp/web-apps-help/HA010369179.aspx">ブラウザーと Excel でのブックの使用の相違点</a></li>
</ul>
<p>ただし、VBA周りは弱そうですね。このあたりは、一口に「Excel」と言っても、Excelのどの機能を必要としているかによって、どの代替方法が適切かは変わってくるので、自分にある方法を選べばいい、と割り切ったほうがいいでしょう。私のとってはこのOffice Web Appsはかなり有効です。</p>
<p>また、クラウドサービスですから、売切のアプリよりも今後の機能強化も期待できそうですし。</p>
<p>それと、もちろんネット回線は必須です（このへん、ウェブのオフライン機能が充実していけば、ネット回線はゆくゆくは必須ではなくなっていくのかな？）。Wi-Fi環境なら快適に動きますし、ためしに<a href="http://dream.jp/mb/sim/" title="ServersManの格安SIM">ServersManの格安SIM（500円/月）</a>を入れたWi-Fiルーターでも、若干もっさりするけどちゃんと動きました。</p>
<p>これで、制限付きとは言え「Excel入りのiPad」を手に入れたことになりました。しばらくはこれを使っていこうと思います。</p>
<p>「Excel入りのiPad」に関心のある方は、一度試してみても損はないと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2013/05/01/ipad%e3%81%a7excel%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95%e3%81%ae%e3%81%b2%e3%81%a8%e3%81%a4%e3%80%82office-web-apps/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">685</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="https://webforthenext.wordpress.com/wp-content/uploads/2013/05/img_0038.gif?w=300" medium="image" />
	</item>
		<item>
		<title>『サッカーと独裁者』を読みました</title>
		<link>https://webforthenext.wordpress.com/2013/04/28/%e3%80%8e%e3%82%b5%e3%83%83%e3%82%ab%e3%83%bc%e3%81%a8%e7%8b%ac%e8%a3%81%e8%80%85%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/</link>
					<comments>https://webforthenext.wordpress.com/2013/04/28/%e3%80%8e%e3%82%b5%e3%83%83%e3%82%ab%e3%83%bc%e3%81%a8%e7%8b%ac%e8%a3%81%e8%80%85%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Sun, 28 Apr 2013 09:11:55 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=679</guid>

					<description><![CDATA[原題は、&#8221;AFRICA UNITED -How Football Explains Africa-&#8220;。 2006年からケニアのナイロビに新聞記者として駐在した英国人の著者（アストン・ヴィラのサポー &#8230; <a href="https://webforthenext.wordpress.com/2013/04/28/%e3%80%8e%e3%82%b5%e3%83%83%e3%82%ab%e3%83%bc%e3%81%a8%e7%8b%ac%e8%a3%81%e8%80%85%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/" class="more-link"><span class="screen-reader-text">『サッカーと独裁者』を読みました</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/gp/product/4560081875/ref=as_li_tf_il?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4560081875&amp;linkCode=as2&amp;tag=webfornext-22"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;ASIN=4560081875&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=webfornext-22" class="alignleft"></a><img src="http://www.assoc-amazon.jp/e/ir?t=webfornext-22&amp;l=as2&amp;o=9&amp;a=4560081875" width="1" height="1" border="0" alt="" style="border:none!important;margin:0!important;" />原題は、&#8221;AFRICA UNITED -How Football Explains Africa-&#8220;。</p>
<p>2006年からケニアのナイロビに新聞記者として駐在した英国人の著者（アストン・ヴィラのサポーター）が、紛争や貧困といったアフリカの暗い話題以外の記事を書こうとして、各国の政治や社会の問題を、サッカーの視点（その国の代表チームだけでなくリーグ戦や街角でのサッカーも）から描くことはできないか、として各国を回って取材したものです。</p>
<p>10の章があり、一章ごとに1 〜2カ国を取り上げ、その国に赴いてサッカー関係者などにインタビューを重ねたり実際にサッカー観戦しています。外国人による取材が制限される国や地域ではその苦労ぶりも垣間見れます。</p>
<p>近年のその国の歴史を振り返ることで社会概要をとらえ、そこから何がその国の問題なのかも提示します。そのなかでは、政治や選挙のためにサッカーが文字通り利用される場面もあれば、サッカーこそが唯一の希望であるかのような国もあります。一口に「アフリカ」といっても、そのどれもに独自の歴史や社会を持つ人々が暮らしており、取り上げられている国も、章順に、エジプト、スーダンとチャド、ソマリア、ケニア、ルワンダとコンゴ民主共和国、ナイジェリア、コートジヴォワール、シエラレオネとリベリア、ジンバブエ、そして南アフリカ、と多種多様です。</p>
<p>例えば、コートジヴォワールにとってのドログバ選手は、単なる優秀な一サッカー選手ではなく、おそらく敗戦後や高度経済成長時の日本にとっての美空ひばりや長嶋茂雄といったアイコンのような存在なのでしょう。しかし、この本ではそうした有名人ばかりではなく、普通の市井の人々がサッカーにどう関わって暮らしているのか、も描かれています。</p>
<p>オーガナイズが行き届いたJリーグを見慣れた者にとっては、アフリカ各国のサッカーを取り巻く混沌さを読むと、まるで熱病にかかったかのように頭がクラクラして妙に息苦しくなってきます。この辺りは著者と訳者による記述の妙、といっていいでしょう。</p>
<p>それぞれの章自体は短編といってよく、その読後感は章によってそれぞれですが、個人的にはソマリアが好みでした。</p>
<p>残念なのは、取材期間が2006年から2010年初頭となっているので、アフリカ初開催となった南アフリカワールドカップのことが入っていないことと、やはりもう少し章ごとにボリュームが欲しかったところでしょうか。</p>
<p>もちろん、実社会のなかでサッカーによって変えることができる範囲など、たかが知れているのかもしれません。しかし、サッカーならばできることもある。多くの人々を集め、一つのことに向かって歓喜できること。そうしたことが、社会を少しでも良い方向に向けるために役立つのであれば、サッカーも捨てたものではないのかもしれません。</p>
<p>ただ、そうした希望をあっさりと打ち壊すのに十分なほど、今のアフリカ各国がいまだ多くの社会的課題を抱えていることもまた真実で、それを改めて教えてくれる一冊です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2013/04/28/%e3%80%8e%e3%82%b5%e3%83%83%e3%82%ab%e3%83%bc%e3%81%a8%e7%8b%ac%e8%a3%81%e8%80%85%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">679</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&#038;ASIN=4560081875&#038;Format=_SL160_&#038;ID=AsinImage&#038;MarketPlace=JP&#038;ServiceVersion=20070822&#038;WS=1&#038;tag=webfornext-22" medium="image" />

		<media:content url="http://www.assoc-amazon.jp/e/ir?t=webfornext-22&#038;l=as2&#038;o=9&#038;a=4560081875" medium="image" />
	</item>
		<item>
		<title>『ビッグデータの衝撃』を読みました</title>
		<link>https://webforthenext.wordpress.com/2013/02/17/%e3%80%8e%e3%83%93%e3%83%83%e3%82%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e8%a1%9d%e6%92%83%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/</link>
					<comments>https://webforthenext.wordpress.com/2013/02/17/%e3%80%8e%e3%83%93%e3%83%83%e3%82%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e8%a1%9d%e6%92%83%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Sun, 17 Feb 2013 03:08:42 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=657</guid>

					<description><![CDATA[この本も、「なぜもっと早く読まなかったのだオレは」本ですね。 自団体の支援者データに対して、もっと分析をして効果的な広報や支援者対応ができるのではないか、そのためには「支援者には多分こういう人が多いはず」といった思い込み &#8230; <a href="https://webforthenext.wordpress.com/2013/02/17/%e3%80%8e%e3%83%93%e3%83%83%e3%82%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e8%a1%9d%e6%92%83%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/" class="more-link"><span class="screen-reader-text">『ビッグデータの衝撃』を読みました</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/gp/product/4492580964/ref=as_li_tf_il?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4492580964&amp;linkCode=as2&amp;tag=webfornext-22"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;ASIN=4492580964&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=webfornext-22" class="alignleft"></a><img src="http://www.assoc-amazon.jp/e/ir?t=webfornext-22&amp;l=as2&amp;o=9&amp;a=4492580964" width="1" height="1" border="0" alt="" style="border:none!important;margin:0!important;" />この本も、<strong>「なぜもっと早く読まなかったのだオレは」</strong>本ですね。</p>
<p>自団体の支援者データに対して、もっと分析をして効果的な広報や支援者対応ができるのではないか、そのためには「支援者には多分こういう人が多いはず」といった思い込みでなく、きちんとデータ分析をした上で取り組みたい、という考えから手に取りました。もちろん、このレベルよりももっと基礎的な統計的基礎を踏まえてでないと、ということはわかってますワカッテマス。</p>
<p>ちまたで聞くようになった「ビッグデータ」というものについて、わかりやすく書いてくれています。いくつかキーとなる考え方をメモしておきます。</p>
<h2>ビッグデータの特徴</h2>
<p>データを取り扱う仕組みはこれまでにもあった。それとビッグデータは何が違うのか。</p>
<ul>
<li>Volume：データ量が極端に多い</li>
<li>Variety：多様なデータ、正規化されていない（既存のRDBに入れにくい）データ</li>
<li>Velocity：発生頻度や更新頻度が極端に速い</li>
</ul>
<h2>ビッグデータの活用パターン分類</h2>
<table>
<tr>
<td style="border:1px solid #AAAAAA;"><strong>個別最適・バッチ型</strong><br />・購買履歴を元にした個別クーポン配信<br />・コピー機の故障予測</td>
<td style="border:1px solid #AAAAAA;"><strong>個別最適・リアルタイム型</strong><br />・オンラインストアでの商品リコメンド</td>
</tr>
<tr>
<td style="border:1px solid #AAAAAA;"><strong>全体最適・バッチ型</strong><br />・SaaSの機能改善<br />・ウェブサイトの導線改善</td>
<td style="border:1px solid #AAAAAA;"><strong>全体最適・リアルタイム型</strong><br />・飛行機便の遅れ予測</td>
</tr>
</table>
<h2>ビッグデータの活用レベル</h2>
<p>以下の順で一歩ずつ進めていく必要がある、と。</p>
<p>過去／現在の把握<br />
　↓<br />
パターンの発見<br />
　↓<br />
予測<br />
　↓<br />
最適化</p>
<h2>活用のための戦略フレームワーク</h2>
<table>
<tr>
<td style="border:1px solid #AAAAAA;"><strong>コア・社内</strong><br />自社独自のデータで、他者にとっても価値のあるデータ<br />・POSデータ、会員の購買履歴など</td>
<td style="border:1px solid #AAAAAA;"><strong>コア・社外</strong><br />他者独自のデータで、自社にとって利用価値の高いデータ<br />・他社サービスの会員情報など</td>
</tr>
<tr>
<td style="border:1px solid #AAAAAA;"><strong>コンテキスト・自社</strong><br />自社独自のデータであるが、差別化にはつながらないデータ<br />・財務データや社員の個人情報など</td>
<td style="border:1px solid #AAAAAA;"><strong>コンテキスト・他者</strong><br />外部から比較的容易に入手可能なデータ<br />・地図データ、政府公開データ、Facebookのプロフィールなど</td>
</tr>
</table>
<h2>これらを活かすために</h2>
<p>読むほどになるほどなるほど、という感じでした。なんとなく出来そうだなとイメージできたのは、【１】個別最適・バッチ型（コア・社内としての支援者データに対して、支援者への個別アプローチ、そのための過去の把握〜パターンの発見）、【２】全体最適・バッチ型（サイト改善）、の２つでしょうか。</p>
<p>次は、統計の基礎の本を読むのと同時に、前に読んだ『<a href="http://www.amazon.co.jp/gp/product/4873113644/ref=as_li_tf_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4873113644&amp;linkCode=as2&amp;tag=webfornext-22">集合知プログラミング</a><img loading="lazy" src="http://www.assoc-amazon.jp/e/ir?t=webfornext-22&amp;l=as2&amp;o=9&amp;a=4873113644" width="1" height="1" border="0" alt="" style="border:none!important;margin:0!important;" />』もちょっと読みなおしてみようと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2013/02/17/%e3%80%8e%e3%83%93%e3%83%83%e3%82%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e8%a1%9d%e6%92%83%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">657</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&#038;ASIN=4492580964&#038;Format=_SL160_&#038;ID=AsinImage&#038;MarketPlace=JP&#038;ServiceVersion=20070822&#038;WS=1&#038;tag=webfornext-22" medium="image" />

		<media:content url="http://www.assoc-amazon.jp/e/ir?t=webfornext-22&#038;l=as2&#038;o=9&#038;a=4492580964" medium="image" />

		<media:content url="http://www.assoc-amazon.jp/e/ir?t=webfornext-22&#038;l=as2&#038;o=9&#038;a=4873113644" medium="image" />
	</item>
		<item>
		<title>いまさらですが『夜と霧』を読みました</title>
		<link>https://webforthenext.wordpress.com/2013/01/27/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e3%81%a7%e3%81%99%e3%81%8c%e3%80%8e%e5%a4%9c%e3%81%a8%e9%9c%a7%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/</link>
					<comments>https://webforthenext.wordpress.com/2013/01/27/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e3%81%a7%e3%81%99%e3%81%8c%e3%80%8e%e5%a4%9c%e3%81%a8%e9%9c%a7%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Sun, 27 Jan 2013 05:24:49 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=616</guid>

					<description><![CDATA[少し前にNHK『100分で名著』という番組でこの本を取り上げており、そこでは「震災後、被災地でこの本が多く読まれている」というかたちで紹介されていました。 恥ずかしながらいままで読んだことがなかったので、これを機会に読ん &#8230; <a href="https://webforthenext.wordpress.com/2013/01/27/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e3%81%a7%e3%81%99%e3%81%8c%e3%80%8e%e5%a4%9c%e3%81%a8%e9%9c%a7%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/" class="more-link"><span class="screen-reader-text">いまさらですが『夜と霧』を読みました</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/dp/4622039702/ref=as_li_tf_til?tag=webfornext-22&amp;camp=243&amp;creative=1615&amp;linkCode=as1&amp;creativeASIN=4622039702&amp;adid=0X68G6203563XZ4EDNMZ"><img loading="lazy" src="https://i0.wp.com/ec2.images-amazon.com/images/I/41X13RTCGRL._SL500_AA300_.jpg" width="300" height="300" class="alignleft" /></a></p>
<p>少し前に<a href="http://www.nhk.or.jp/meicho/famousbook/14_frankl/index.html">NHK『100分で名著』</a>という番組でこの本を取り上げており、そこでは「震災後、被災地でこの本が多く読まれている」というかたちで紹介されていました。</p>
<p>恥ずかしながらいままで読んだことがなかったので、これを機会に読んでみました。太平洋戦争での敗戦後、多くの方が読んで励まされたというこの本が、いま震災被災地で読まれている、というのはどういうことなのか。</p>
<p>結果、<strong>「なぜもっと早く読まなかったのだオレは」本</strong>の今年第一号となりました。</p>
<p>本の内容自体はさまざまなところで紹介されていますし、たとえ僕が本書のなかで「ここが核心だ」と思った部分をここに引用したとしても、その前後の過程を踏まえてでないと、おそらく正確に理解・把握することは難しいように思えます。なので、ぜひご自身で読んでみてください。後悔はしないでしょう。もしかしたら、つらい時に読んだほうが効くかも。</p>
<p>世の中と自分の人生とに絶望しかかっていて「この先どうやって生きていけばいいのか」という人に対して、「人生を生きること」をどう捉えればいいのか、というヒントが示されています。ただ、「世の中にはこんなに過酷な状況の人がいるんだから、オレなんかが泣き事を言ってはいけない」というような「下には下がいるのだから我慢しろ」的な発想ではないのでご安心を。</p>
<p>そして、震災被災地で読まれているということは、「そのようにして考えざるを得ない」ほどまでに追い詰められた人たちが今もまだ多くいる、ということであると思うので、そのことはきちんと覚えておかなければならないことでしょう。でも、別にそれほどでなくても、将来にむけて不安を持っている人にとっても、今後を考えるヒントにはなるのではないでしょうか。うーん、でも若い人にはどうかなー…</p>
<p>もちろん、この本を読んだからといって、その人の人生が楽になる、ということはないでしょう（そんなん逆にコワい）。しかし、ちょっとは楽になるかもしれない、自分の周りにあった夜や霧が晴れるかもしれない、そんな本です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2013/01/27/%e3%81%84%e3%81%be%e3%81%95%e3%82%89%e3%81%a7%e3%81%99%e3%81%8c%e3%80%8e%e5%a4%9c%e3%81%a8%e9%9c%a7%e3%80%8f%e3%82%92%e8%aa%ad%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">616</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="http://ec2.images-amazon.com/images/I/41X13RTCGRL._SL500_AA300_.jpg" medium="image" />
	</item>
		<item>
		<title>TOPSY API 有料化の影響を受けた</title>
		<link>https://webforthenext.wordpress.com/2013/01/24/topsy-api-%e6%9c%89%e6%96%99%e5%8c%96%e3%81%ae%e5%bd%b1%e9%9f%bf%e3%82%92%e5%8f%97%e3%81%91%e3%81%9f/</link>
					<comments>https://webforthenext.wordpress.com/2013/01/24/topsy-api-%e6%9c%89%e6%96%99%e5%8c%96%e3%81%ae%e5%bd%b1%e9%9f%bf%e3%82%92%e5%8f%97%e3%81%91%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Wed, 23 Jan 2013 19:19:39 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=611</guid>

					<description><![CDATA[久々にブログに投稿します。 2013年の年明けから、JVCウェブサイトの個別ページで表示していたtwitterトラックバックが表示されなくなりまして、ちょっと時間ができたので調べたところ、表示に利用していたjQueryの &#8230; <a href="https://webforthenext.wordpress.com/2013/01/24/topsy-api-%e6%9c%89%e6%96%99%e5%8c%96%e3%81%ae%e5%bd%b1%e9%9f%bf%e3%82%92%e5%8f%97%e3%81%91%e3%81%9f/" class="more-link"><span class="screen-reader-text">TOPSY API 有料化の影響を受けた</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>久々にブログに投稿します。</p>
<p>2013年の年明けから、<a href="http://www.ngo-jvc.net/">JVCウェブサイト</a>の個別ページで表示していたtwitterトラックバックが表示されなくなりまして、ちょっと時間ができたので調べたところ、表示に利用していたjQueryのプラグイン（<a href="http://www.moretechtips.net/2009/11/twitter-trackbacks-widget-jquery-plugin.html">Twitter Trackbacks Widget &#8211; A jQuery Plugin</a>）内で利用していた<a href="http://code.google.com/p/otterapi/">TOPSYのAPIの制限が適用されたため（01/08/2013の欄）</a>でした。</p>
<p>とりあえず、TOPSYでAPI KEYを取得してそれをプラグインに埋め込んだので表示は再開されましたが、これは30日間のフリートライアルで、それ以降は有料の商用アカウントに移行するかどうかしなければならないので問い合わせてね的な感じ。</p>
<p>さて、どうしますかねぇ…</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2013/01/24/topsy-api-%e6%9c%89%e6%96%99%e5%8c%96%e3%81%ae%e5%bd%b1%e9%9f%bf%e3%82%92%e5%8f%97%e3%81%91%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">611</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>MylynとGithubを連携させる</title>
		<link>https://webforthenext.wordpress.com/2012/05/11/mylyn%e3%81%a8github%e3%82%92%e9%80%a3%e6%90%ba%e3%81%95%e3%81%9b%e3%82%8b/</link>
					<comments>https://webforthenext.wordpress.com/2012/05/11/mylyn%e3%81%a8github%e3%82%92%e9%80%a3%e6%90%ba%e3%81%95%e3%81%9b%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Thu, 10 May 2012 22:45:16 +0000</pubDate>
				<category><![CDATA[twitterbot]]></category>
		<category><![CDATA[Web関連]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=595</guid>

					<description><![CDATA[今後の開発で使ってみようと思って、MylynというEclipse上のタスク管理プラグインを入れてみた。それを先日設定したGitHubと連携させるための、GitHub Mylyn Connectorを設定してみたので、やっ &#8230; <a href="https://webforthenext.wordpress.com/2012/05/11/mylyn%e3%81%a8github%e3%82%92%e9%80%a3%e6%90%ba%e3%81%95%e3%81%9b%e3%82%8b/" class="more-link"><span class="screen-reader-text">MylynとGithubを連携させる</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>今後の開発で使ってみようと思って、MylynというEclipse上のタスク管理プラグインを入れてみた。それを先日設定したGitHubと連携させるための、<a href="https://github.com/blog/852-github-mylyn-connector-for-eclipse">GitHub Mylyn Connector</a>を設定してみたので、やったことを残していく。</p>
<p><span id="more-595"></span></p>
<p>Eclipse MarketplaceからGitHub Mylyn Connectorをインストール。</p>
<p>File-&gt;Import  の画面でGitHub Task Repositoriesを選択。GitHubのユーザーIDとパスワードを入力。対象となるリポジトリを選択。エラーが出て、タイトル表記が空欄の選択肢がGitHub上のリポジトリの数だけ出てきたが、チェックボックスは押せて選択できる。すると、Eclipse上のTask Repositoriesのウィンドウで、該当のリポジトリが表示される。</p>
<p>Eclipse上のTask ListウィンドウのNewTaskのアイコンから、(Local)ではなくて&#8221;(GitHubリポジトリ）issues&#8221;を選択すると、タスクの関連情報を入力するウィンドウが作成されるので、タイトルやDescriptionを記入してsubmitボタンを押す。これでTask Listウィンドウに新しいタスクが作成された。ただ、タスクの左側に表示される◯印は、白（deactivate）のまま。タスクのステータスはopen。</p>
<p>この時点で、GitHubの管理画面をみると、issueが作成されてた！よしよし。</p>
<p>そしてEclipse上に戻って、タスクの◯印を紫に（activate）して、いくつかのファイルを更新してみると、Package ExplorerでのFocus on Active Taskも機能する。</p>
<p>しかし、作業が終わったものとしてタスクのウィンドウでステータスをcloseにしてsubmitボタンを押しても、ステータスが更新されない。もちろんGitHub側のissueもそのまま。<strong>なぜ？？</strong></p>
<p>試しに、<a href="http://outputlog.blogspot.jp/2011/04/githubissue.html">こちらの記事</a>を参考に、GitHubとして変更をコミットする際に、コミットコメントのなかに&#8221;fixed #1&#8243;と記入してコミットしてみた。その後push。これでGitHub側にコミットは反映されて、issueのステータスもclosedに変わった。ここでEclipseのタスクのウィンドウのSynchronize Incoming Changesボタンを押すと、タスクがclosedに変化した。</p>
<p>しかし、GitHub上のコミットとタスクとで、完全にタイミングが連動させる必要はないはず。小さなタスクごとにコミットしてたらキリがないし。なので、GitHub側からissueをcloseにしてみると、それがMylynのタスク側にも反映された。</p>
<p>すぐに原因がわからないので、しばらくは</p>
<ul>
<li>タスク作成（オープン）：Mylyn側</li>
<li>タスククローズ：GitHub側</li>
</ul>
<p>という運用で使っていこう。うーむ、だれか詳しい方、原因を教えて下さい。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2012/05/11/mylyn%e3%81%a8github%e3%82%92%e9%80%a3%e6%90%ba%e3%81%95%e3%81%9b%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">595</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>OSX/Eclipse上でGAE/P SDK1.6.5でDjango1.2を使ったプロジェクトを作って、Deployして、ついでにgithubで管理するまで</title>
		<link>https://webforthenext.wordpress.com/2012/05/02/osxeclipse%e4%b8%8a%e3%81%a7gaep-sdk1-6-5%e3%81%a7django1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%80%81depl/</link>
					<comments>https://webforthenext.wordpress.com/2012/05/02/osxeclipse%e4%b8%8a%e3%81%a7gaep-sdk1-6-5%e3%81%a7django1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%80%81depl/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Tue, 01 May 2012 16:34:22 +0000</pubDate>
				<category><![CDATA[GAEでウェブサービスをつくる]]></category>
		<category><![CDATA[twitterbot]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=554</guid>

					<description><![CDATA[もう完全に自分用メモエントリー。 もろもろをだいぶ忘れていたので一から環境準備をやり直した際の手順をそのまま記しておく。各種環境も更新されたいたので以下にまとめておく。 GAE/P SDK：1.6.5 Python：2. &#8230; <a href="https://webforthenext.wordpress.com/2012/05/02/osxeclipse%e4%b8%8a%e3%81%a7gaep-sdk1-6-5%e3%81%a7django1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%80%81depl/" class="more-link"><span class="screen-reader-text">OSX/Eclipse上でGAE/P SDK1.6.5でDjango1.2を使ったプロジェクトを作って、Deployして、ついでにgithubで管理するまで</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>もう完全に自分用メモエントリー。</p>
<p>もろもろをだいぶ忘れていたので一から環境準備をやり直した際の手順をそのまま記しておく。各種環境も更新されたいたので以下にまとめておく。</p>
<ul>
<li>GAE/P SDK：1.6.5</li>
<li>Python：2.7</li>
<li>Django：1.2.5</li>
</ul>
<div><span id="more-554"></span></div>
<h1>1.まずEclipse上でGAEプロジェクトを作成</h1>
<p>Eclipse上で、File -&gt; New -&gt; Others で、PyDev -&gt; PyDev Google App Engine Project を選択。Project nameを指定する画面で、Grammar Versionは2.7を選択。Interpreterでも、python2.7を選択。Google App Engine Directory を選択する画面では、dev_appserver.py, appcfg.pyがある場所とうことで、/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine を選択。するとたくさんlibを選ぶ画面が出てくるので、ここで lib/django_1_2 も一応選択しておく。これでprojectはできた。</p>
<p>作成したprojectのpropertiesも見ておく。ResourceのText file encodingはUTF-8にしておく。</p>
<p>次に、お約束で、srcフォルダを作っておき、各ソースはこの下に作ることにする。</p>
<h1>2.Djangoを入れてみて動かす</h1>
<p>さて、次にGAEでDjangoを動かせるようにする。関連するドキュメントは以下のとおり。</p>
<ul>
<li><a href="http://code.google.com/p/google-app-engine-django/">google-app-engine-django</a> ：本文最初にあるようにもうout of date。ただし、Helper自体のダウンロードはここから行う。</li>
<li><a href="http://www.deck.cc/django_1.2_on_google_app_engine.html">Django 1.2 on Google App Engine</a>：上のoutotfdateの記事を参考に、Django1.2に対応させたもの。Django1.2自体のzipアーカイブを作る形式になっている。</li>
<li><a href="https://developers.google.com/appengine/articles/appengine_helper_for_django">Using the Google App Engine Helper for Django</a>（<a href="https://developers.google.com/appengine/articles/appengine_helper_for_django?hl=ja">日本語ページ</a>）：なので現在の基本はここ。</li>
<li><a href="https://developers.google.com/appengine/docs/python/tools/libraries27#Django">Third-party Libraries in Python 2.7#Django</a>：本家ドキュメントの最新部分。ただし、上の記事との差分のみ。</li>
<li><a href="http://gyktech.blogspot.jp/2011/01/google-app-enginedjango1241.html">Google App EngineでDjango1.2を動かす1</a>：HelperのダウンロードからEclipseの画面を貼り付けながら日本語でやってくれている。とてもありがたい。ちょっと手順は逆になったが、これを参考にする。</li>
</ul>
<p>現在のSDK1.6.5の時点では、もうDjango1.2自体はSDK内に入ってるのだから、それ自体のzipアーカイブなどをわざわざ別途用意する必要はないはず。ただし、Helperはダウンロードしてproject内に保持する、ということかな。</p>
<p>Helperを<a href="http://code.google.com/p/google-app-engine-django/downloads/detail?name=appengine_helper_for_django-r117.zip">ここ</a>からダウンロードする。現時点ではr117。これを、Eclipse上でsrcフォルダにimportする。ArchiveFileを選択して、いまダウンロードしたzipファイルを選択。select all してfinish。これで、srcフォルダ内にappengine_helper_for_djangoフォルダ以下が解凍された。その中のappengine_djangoフォルダやファイルをsrcフォルダ直下に移動した。これで、srcフォルダとappengine_djangoフォルダのアイコンがパッケージのもの（？）に変更された。で、中見がカラになったappengine_helper_for_djangoフォルダ自体は削除。</p>
<p>解凍されてきたapp.yaml内の記述を、今回の環境にあわせるために以下のように簡単に訂正。</p>
<pre style="background-color:#eeeeee;">application：自分のアプリケーション名
runtime: python27
threadsafe: true
libraries:
- name: django
  version: "1.2"</pre>
<p>ここで、GAELauncherを起動して、File-&gt;Add Existing Applicationでprojectのsrcフォルダを選択し、ポートを8081とかに設定。そしてRunボタンを押すと、なんと動いた模様。さっそくブラウザで見てみると、</p>
<pre style="background-color:#eeeeee;">Fatal error when loading application configuration:
Invalid object:
threadsafe cannot be enabled with CGI handler: main.py</pre>
<p>とのことなので、app.yamlのthreadsafeをfalseにすると、It worked! の画面が表示された。</p>
<p>なお、この時点でGAELauncherのログには、</p>
<pre style="background-color:#eeeeee;">The rdbms API is not available because the MySQLdb library could not be loaded.
Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging</pre>
<p>の2つのワーニングが出てる。まぁあとにしよう。</p>
<h1>3.そのままでデプロイしてみる</h1>
<p>ではこれをデプロイ（本番環境にアップロード）してみる。GAELauncherのDeployボタンを押すだけで、デプロイは成功した。しかし本番URLでアクセスしてみたら、でかでかと</p>
<pre style="background-color:#eeeeee;">Error: Server Error</pre>
<p>と出た。Dashboard（本番環境の管理画面）のログを見てみると、</p>
<pre style="background-color:#eeeeee;">File "/（本番URL）/appengine_django/__init__.py", line 152, in LoadDjango
 from google.appengine.dist import use_library
 ImportError: No module named dist</pre>
<p>とのこと。これは「distというモジュールのインポートに失敗した」ということだろう。いろいろ調べたら、公式ドキュメントのなかに以下のページが見つかった。</p>
<p><a href="https://developers.google.com/appengine/docs/python/python27/newin27#Supported_Third-Party_Libraries">What&#8217;s New in Python 2.7 （の途中）</a></p>
<pre style="background-color:#eeeeee;">The <code>google.appengine.dist</code> package has been removed, so methods like <a href="https://developers.google.com/appengine/docs/python/tools/libraries#Django">use_library()</a> 
and webapp_django_version() are no longer available.</pre>
<p><strong>…え！？</strong>　distパッケージは（Python2.7で）削除された？　でもローカルのSDKでは動いてるよ？　しかもこのパッケージを呼び出してるのはHelperのなかからだけど…？　はっ、もしかして、「Helperは、&#8221;Django1.2&#8243;には対応しているが、&#8221;Python2.7&#8243;には対応してない（GAE本番環境のPython2.7では使えない）」ということか？outofdateってそういう意味なの？ってことはもしかして、全部やり直し？　<strong>ガーン…orz</strong></p>
<h1>4. さてどうするか。</h1>
<p>…気を取り直して、今後の方針として、以下の2つが考えられるかな。</p>
<ol>
<li>Python2.5に戻して、Helperを使ってやる</li>
<li>Python2.7のままで、Helper以外の方法を使ってDjangoを入れる</li>
</ol>
<p>どっちかといえば、2が可能なら2のほうがいいな。言語のバージョンはなるべく新しいものに沿ったほうがなにかとうれしいものなので。よし、再調査開始！</p>
<h1>5.（あらためて）Djangoを入れてみて動かす</h1>
<p>さて調べてみたら、以下の記事が見つかった。</p>
<ul>
<li><a href="http://masayangdiary.blogspot.jp/2011/12/gae-16django-12.html">GAE 1.6+Django 1.2</a></li>
<li><a href="http://en.blog.surfingstudio.com/2011/11/23/using-django-1-2-on-google-app-engine-with-python-2-7-runtime/">Using Django-1.2 on Google App Engine with Python-2.7 runtime</a></li>
</ul>
<p>どちらもHelperは使用してない様子。Django自体になれてないのでどうにも飲み込みが遅いが、後者は、ローカル環境にDjangoをインストールして、そのユーティリティであるdjango-admin.pyというやつを使ってプロジェクトを（おそらく雛形含めて）作成している。でも、前者は一から手で書いてる様子。ここでは前者を参考にして、下記のファイルを手で作成・記述した。一部は、Helperから作られた記述も取り入れている。</p>
<p>app.yaml</p>
<pre style="background-color:#eeeeee;">application: (アプリケーション名)
version: 1
runtime: python27
api_version: 1
threadsafe: false
handlers:
- url: /.*
  script: main.py
libraries:
- name: django
  version: "1.2"
env_variables:
  DJANGO_SETTINGS_MODULE: 'settings'</pre>
<p>main.py</p>
<pre style="background-color:#eeeeee;">import os
def main():
    import django.core.handlers.wsgi
    # Google App Engine imports.
    from google.appengine.ext.webapp import util
    app = django.core.handlers.wsgi.WSGIHandler()
    util.run_wsgi_app(app)</pre>
<p>settings.py</p>
<pre style="background-color:#eeeeee;">MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
)
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.load_template_source',
    'django.template.loaders.app_directories.load_template_source',
#     'django.template.loaders.eggs.load_template_source',
)
TEMPLATE_CONTEXT_PROCESSORS = (
#   'django.core.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
#    'django.core.context_processors.media',  # 0.97 only.
#    'django.core.context_processors.request',
)
INSTALLED_APPS = (
    'testapp'
)
ROOT_URLCONF = 'urls'
import os
ROOT_PATH = os.path.dirname(__file__)
TEMPLATE_DIRS = (
    ROOT_PATH + '/templates',
)</pre>
<p>urls.py</p>
<pre style="background-color:#eeeeee;">from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^testapp/', 'testapp.views.home')
# Uncomment this for admin:
#     (r'^admin/', include('django.contrib.admin.urls')),
)</pre>
<p>これで、srcフォルダのとなりにtestappフォルダを作ってHelloWorldをtemplates/testappフォルダ内のテンプレートを使って表示させるサンプルを作ってみたところ、動いた！ついでにDjangoのバージョンも django.VERSION で表示させてみたら、1.2.5.final.0と表示された。</p>
<p>…なんだ、もうHelperは必要なく、あっさり動くんじゃないか。</p>
<h1>6.（あたらめて）そのままでデプロイしてみる</h1>
<p>さて、肝心なのはこの次だが、deployしてみたところ、あっさり動いた。django.VERSIONもSDKと同じく1.2.5.final.0と表示された。Yes!!</p>
<h1>7.これをgithubで管理させる</h1>
<p>さて、難関は突破したので、あとは勢いで。</p>
<p>Eclipse上でGitを使うためのプラグインであるEGitのインストールや、github上でのSSHキーの登録はすでに<a title="OSX LionでEgitからgithubにSSH接続するエラーが解決した" href="https://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/">こちらの記事</a>を書いた時にしているので、それはクリアしたものとして、このプロジェクトをgithubで管理させてみる。</p>
<ol>
<li>github上でリポジトリを作成。</li>
<li>Eclipse上のプロジェクトの右メニューからTeam-&gt;Share Project を選択し、次の画面でGitを選択。次の画面で、Use or create repository in parent folder of project を選択し、Create Repositoryボタンを押してfinish。</li>
<li>念のため、この時点で全ファイルを一度コミットしとく。</li>
<li>今度は、プロジェクトの右メニューからTeam-&gt;Remote-&gt;Push を選択し、Destination Git Repository画面がでる。各項目の設定は以下のとおり。
<ol>
<li>URI：ssh://git@github.com:22/（アカウント名）/（リポジトリ名）.git</li>
<li>Host：github.com</li>
<li>Repository path：（アカウント名）/（リポジトリ名）.git</li>
<li>Protcol：ssh</li>
<li>Port：22</li>
<li>User：git</li>
<li>Password：空欄</li>
<li>Store in Secure Store：チェックする</li>
<li>nextボタン</li>
</ol>
</li>
<li>SSHパスフレーズの再入力と、githubのサイトに訪れての確認を促されたので言われたとおりにする。</li>
<li>次にでるPush Ref Specifications画面で、Source refでmaster[branch]を選択し、Add All Branch Specボタンを押して、next。次の画面でfinish。</li>
</ol>
<p>これでPushまで完了。github側でいままで作ったソースがリポジトリに格納されていることが確認できた。</p>
<p>ふ〜、ここまで長かったが、この記事はここまで。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webforthenext.wordpress.com/2012/05/02/osxeclipse%e4%b8%8a%e3%81%a7gaep-sdk1-6-5%e3%81%a7django1-2%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%80%81depl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">554</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>
	</item>
		<item>
		<title>OSX LionでEgitからgithubにSSH接続するエラーが解決した</title>
		<link>https://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>https://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>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Sun, 12 Feb 2012 16:15:30 +0000</pubDate>
				<category><![CDATA[twitterbot]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=548</guid>

					<description><![CDATA[OSX Lion上、Eclipseでの開発にgitを使ってみようと思ってEgitプラグインを入れたのですが、これがどうにもgithubにSSHでつながってくれなかったのですが、それが解決したのでメモしときます。ちなみに、 &#8230; <a href="https://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/" class="more-link"><span class="screen-reader-text">OSX LionでEgitからgithubにSSH接続するエラーが解決した</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></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>
]]></content:encoded>
					
					<wfw:commentRss>https://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>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">548</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?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>https://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>https://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/#respond</comments>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Wed, 08 Feb 2012 17:51:56 +0000</pubDate>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=537</guid>

					<description><![CDATA[さて、ちょっと遅くなりましたが、前回の続きです。 4.3 友人関係グラフの作成 ここでは、これまでに作成してきたデータを可視化させる方向に話が進みます。可視化することによってわかってくることがあるので、といったことですね &#8230; <a href="https://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/" class="more-link"><span class="screen-reader-text">『入門ソーシャルデータ』第4章を読む（2）</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>さて、ちょっと遅くなりましたが、<a title="『入門ソーシャルデータ』第4章を読む（1）" href="https://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="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png"><img loading="lazy" data-attachment-id="542" data-permalink="https://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/cap4-05/" data-orig-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png" data-orig-size="353,301" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="cap4-05" data-image-description="" data-image-caption="" data-large-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png?w=353" class="aligncenter size-medium wp-image-542" title="cap4-05" src="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png?w=300&#038;h=255" alt="" width="300" height="255" srcset="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png?w=300 300w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png?w=150 150w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-05.png 353w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>そうか、最大クリークが43個もあるので、ほぼ球形のような図になってしまいました。描画もちらついてるし。でもマウスでぐりぐり動かせます。</p>
<h2>4.4 まとめ</h2>
<p>この章のこれまでの流れを振り返って、他の章とおなじく「こんなこともやってみれば？」という宿題が書かれてます。まぁ後日、ということで。</p>
<p>よし、とにかく『入門ソーシャルデータ』第４章、最後までやってみました。章の後半は、とにかくRedisにデータを入れてはじめて分析に役立つ、という流れになってきていたので、どんどん入れていったほうが面白そうですね。</p>
<p>最後までお付き合いいただきましてありがとうございました！それでは<a href="http://atnd.org/events/24531">勉強会</a>当日お会いしましょう！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://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>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">537</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hosonojunya</media:title>
		</media:content>

		<media:content url="https://webforthenext.wordpress.com/wp-content/uploads/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>https://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>https://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>
		
		<dc:creator><![CDATA[HOSONO Junya]]></dc:creator>
		<pubDate>Sun, 05 Feb 2012 16:17:58 +0000</pubDate>
				<category><![CDATA[集合知/ソーシャルデータ関連]]></category>
		<guid isPermaLink="false">http://webforthenext.wordpress.com/?p=468</guid>

					<description><![CDATA[今週金曜日（2012/2/10）、こちらのイベントでプレゼンを担当します。 第4回「入門 ソーシャルデータ」真面目に勉強する会 @神泉(渋谷) このイベントは、オライリーの『入門ソーシャルデータ』を参加者同士で一章ずつ担 &#8230; <a href="https://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/" class="more-link"><span class="screen-reader-text">『入門ソーシャルデータ』第4章を読む（1）</span> の続きを読む <span class="meta-nav">&#8594;</span></a>]]></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="https://i0.wp.com/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="https://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="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png"><img loading="lazy" data-attachment-id="504" data-permalink="https://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/cap4-01/" data-orig-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png" data-orig-size="986,596" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="cap4-01" data-image-description="" data-image-caption="" data-large-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png?w=986" class="aligncenter size-medium wp-image-504" title="cap4-01" src="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png?w=300&#038;h=181" alt="" width="300" height="181" srcset="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png?w=300 300w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png?w=600 600w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>ここで、Nameは独自のものを指定する必要があるみたいです（ここではなにも考えずに&#8221;socialdata_hosono&#8221;としました）。無事アプリケーションを作ると、consumer key と consumer secret が発行されました。</p>
<p><a href="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png"><img loading="lazy" data-attachment-id="506" data-permalink="https://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/cap4-02/" data-orig-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png" data-orig-size="988,552" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="cap4-02" data-image-description="" data-image-caption="" data-large-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png?w=988" class="aligncenter size-medium wp-image-506" title="cap4-02" src="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png?w=300&#038;h=167" alt="" width="300" height="167" srcset="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png?w=300 300w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png?w=600 600w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-02.png?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></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="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png"><img loading="lazy" data-attachment-id="507" data-permalink="https://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/cap4-03/" data-orig-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png" data-orig-size="665,523" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="cap4-03" data-image-description="" data-image-caption="" data-large-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png?w=665" class="aligncenter size-medium wp-image-507" title="cap4-03" src="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png?w=300&#038;h=235" alt="" width="300" height="235" srcset="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png?w=300 300w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png?w=600 600w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-03.png?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>なるほど、twitterさんに、</p>
<ul>
<li>タイムラインのツイートを見る。</li>
<li>フォローしている人を見る。</li>
</ul>
<p>この２つの機能を、socialdata_hosono というアプリケーションに使わせてやっていいですか？という問い合わせが発生したわけですね。許可するためにアカウント名とパスワードを入力すると、PINが発行されました。</p>
<p><a href="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png"><img loading="lazy" data-attachment-id="508" data-permalink="https://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/cap4-04/" data-orig-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png" data-orig-size="674,402" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="cap4-04" data-image-description="" data-image-caption="" data-large-file="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png?w=674" class="aligncenter size-medium wp-image-508" title="cap4-04" src="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png?w=300&#038;h=178" alt="" width="300" height="178" srcset="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png?w=300 300w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png?w=600 600w, https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></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>（ちなみに、上の表示の&#8221;Fetched〜&#8221;の部分だけ標準エラー出力に書き出しているあたりがちょっと親切ですねw）</p>
<p>なお、本に記載もありますが、ソース内で使っている <a href="https://dev.twitter.com/docs/api/1/get/friends/ids">/friends/ids API は一度の呼び出しで5000のIDを返す</a>そうです。このソースではそのたびに&#8221;Fetched〜&#8221;の行を出しつつループする、という形になっており、上限を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ページの一番下のソースは、&#8221;screen_name1$friends_ids&#8221;というキーに対して、pythonのリスト内包表記を用いて、1,2,3…と順繰りに追加（sadd）していってそれを表示(smember)する、というだけのことですね。保管されるデータは、</p>
<ul>
<li>キー：&#8221;screen_name$friends_ids&#8221;</li>
<li>値：set([&#8216;1&#8242;,&#8217;2&#8217;,&#8217;3&#8217;&#8230;])</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 &#8211; Followers</td>
<td>Abe</td>
<td>あるユーザーがフォローしているものの、相手はそのユーザーをフォローしていないという相手</td>
</tr>
<tr>
<td nowrap="nowrap">差集合２：Followers &#8211; 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>&#8220;functools.partial&#8221; というのが何をしているのか</li>
<li>Redisに格納されるデータがどんな感じか</li>
</ul>
<p>ということでしょう。</p>
<p>まず&#8221;functools.partial&#8221;ですが、うーん、これは正直自分でも正確に理解できているかどうかわかりませんが、ざっくり言うと「特定の関数を一部分だけ修正して新しい関数を作り出している」ということでしょう。専門用語では「部分適用」というらしいです。それをこの本では「ラッパー」という言葉で表現している、と。そしてここでは、</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>キー：&#8221;screen_name$(引数で指定したscreen_name)$friend_ids&#8221;</li>
<li>値：set([(フォローしている人たちのuser_id)])</li>
</ul>
<p>と、</p>
<ul>
<li>キー：&#8221;screen_name$(引数で指定したscreen_name)$follower_ids&#8221;</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>キー：&#8221;screen_name$(引数で指定したscreen_name)$info.json&#8221;</li>
<li>値：引数で指定したscreen_nameのユーザー情報（JSON形式）</li>
</ul>
<div>と、</div>
<div>
<ul>
<li>キー：&#8221;user_id$(引数で指定したscreen_nameに該当するuser_id)$info.json&#8221;</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>
]]></content:encoded>
					
					<wfw:commentRss>https://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>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">468</post-id>
		<media:content url="https://2.gravatar.com/avatar/2dd56d2cf2e14163fdcac7c1a1abbea2196e73fa5d29ba36f4973aebfdb53427?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="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-01.png?w=300" medium="image">
			<media:title type="html">cap4-01</media:title>
		</media:content>

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

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

		<media:content url="https://webforthenext.wordpress.com/wp-content/uploads/2012/02/cap4-04.png?w=300" medium="image">
			<media:title type="html">cap4-04</media:title>
		</media:content>
	</item>
	</channel>
</rss>
