<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Liner Note &#187; ウェブサービスの制作</title>
	<atom:link href="http://note.openvista.jp/tag/creating-web-service/feed/" rel="self" type="application/rss+xml" />
	<link>http://note.openvista.jp</link>
	<description>情報（ユーザー中心デザイン・ユーザビリティ）と技術（ウェブプログラミング・ウェブサービス）についてのメモ書き</description>
	<lastBuildDate>Mon, 12 Sep 2011 15:12:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>PDFをウェブページとしてチェックできるようにして離脱を減らそう</title>
		<link>http://note.openvista.jp/2008/online-pdf-reader/</link>
		<comments>http://note.openvista.jp/2008/online-pdf-reader/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 20:44:56 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[プログラミング技術絡み]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/?p=883</guid>
		<description><![CDATA[PDFをウェブページ上に表示できるようにするサービスを利用して、閲覧者がページから離脱するのをなんとか減らしていこうという試み]]></description>
			<content:encoded><![CDATA[<p><amazon>4903065065, caption</amazon></p>
<p>PDFファイルは昔からブラウザ上の表示には難がありました。動作が重く、ブラウザを固まらせたり、ブラウザ側のコントロールGUIを全く別のものにすげ替えてしまったり…。詳しいところは<a href="http://www.usability.gr.jp/alertbox/20030714.html">ニールセン氏のコラム</a>に譲りますが、そのせいでPDFファイルにリンクを張るのをためらうこともあります。読み手としても「詳細はPDFで」なんて言われたら面倒くさくなってタブを閉じる人もいるでしょう。</p>
<p>これに対する対策として、ニールセン氏は<a href="http://www.usability.gr.jp/alertbox/20030728.html">要約を記したゲートウェイ・ページを用意しておこう</a>と仰っているのですが、これでは不十分でしょう。というのは、これはあくまで「ショック」を和らげるだけでしかなく、先のリンク先で挙げたユーザビリティ問題が棚上げされているからです<sup><a href="http://note.openvista.jp/2008/online-pdf-reader/#footnote_0_883" id="identifier_0_883" class="footnote-link footnote-identifier-link" title="「最善は善の敵」という現場のコストを考えた彼の主張の一貫性には納得していますが">1</a></sup></p>
<p>彼の言うようにPDFが<q>印刷物に合わせたテキスト</q>である以上、問題の完全な解決は難しいかと思いますが、一方で解決できる問題も結構あるんじゃないか、ということで今回試しに作ってみたのが<a href="http://pdf.openvista.jp/">オンラインPDFリーダ</a>です。</p>
<p>えっと、じゃデモとして試しに適当なPDFを表示してみましょう…。最近読んだ<a href="http://egamiday3.seesaa.net/article/107645749.html">図書館蔵書検索の論文PDF</a>にしましょうか。</p>
<p class="center"><a href="http://pdf.openvista.jp/view/medium/p1-19/http://www.jstage.jst.go.jp/article/johokanri/51/7/480/_pdf/-char/ja/"><img src="http://note.openvista.jp/download/2008/10/pdfviewer-screenshot.png" alt="オンラインPDFリーダのスクリーンショット" title="オンラインPDFリーダのスクリーンショット" /></a></p>
<p>ウェブページを普通に表示するときほど可読性は良くないのですが、それでもいくつかの問題は解決できてるんじゃないでしょうか。</p>
<dl>
<dt>ブラウザが固まってしまう問題</dt>
<dd>変換に時間がかかることはあっても、固まることはないでしょう(巨大なファイルを一気に変換しようとしない限り)</dd>
<dt>ブラウザ側のコントロールをすげ替えられてしまう問題</dt>
<dd>言うに及ばず。</dd>
<dt>検索できない問題</dt>
<dd>内容からテキストを抜き出して掲載しているので、ブラウザ標準の検索機能で検索できるようになっています。試しに<a href="http://pdf.openvista.jp/view/medium/p1-19/http://www.jstage.jst.go.jp/article/johokanri/51/7/480/_pdf/-char/ja/">先のPDF</a>で「とりすぎず」で検索してみてください。</dd>
<dt>コンテンツの単位が大きすぎて、部分部分にリンクを張れない問題</dt>
<dd>ページ指定が出来るので、ページの一部分だけをウェブページとして抽出することが出来ます。例えば、<a href="http://pdf.openvista.jp/view/medium/p3/http://www.jstage.jst.go.jp/article/johokanri/51/7/480/_pdf/-char/ja/">3ページ目だけ</a>とか<a href="http://pdf.openvista.jp/view/medium/p3-10/http://www.jstage.jst.go.jp/article/johokanri/51/7/480/_pdf/-char/ja/">3ページ目から10ページ目まで</a>という表示方法ができます。</dd>
</dl>
<p>大きさも3段階で変えることができます。「小さい」はざっと全体を眺める場合、「普通」は通常のプレビューとして、「大きい」はPDFをブラウザ上で全部読みたい場合に向いています。</p>
<div class="aside">
<p>本当はサムネイルを動的に生成するプログラムを併用して、このサイトで使っているスライダーコントロールのように画像の大きさを動的に変えるのが、一番直感的で望ましいかと思います<span class="weaken">(大きな画像を出力しておいてそのサイズを切り替える)</span>。が、実際に試してみたところ以下のように文字がぼやけてしまって、可読性がさらに悪くなるみたいで本末転倒になりそうなのでやめておきました。</p>
<p><img src="http://note.openvista.jp/download/2008/10/comparison.png" alt="表示画像の比較" title="表示画像の比較" /></p>
</div>
<p>なお、動作としてページ指定が無い場合は最初の5ページ<span class="weaken">(PDFが5ページ未満の場合、そのページ数だけ)</span>だけ表示しています。これは全ページを変換してしまうと処理時間がかかりすぎてしまうためです。これについては、今後ページを少し読み込んでおいて、後から動的に追加していくことで、体感速度を早くしていこうと思っています。</p>
<h3 id="t9728fa">汎用PDFゲートウェイとしてオンラインPDFリーダを使う</h3>
<p>と、ここまで書いてから<a href="http://pdfmenot.com/">PdfMeNot.com</a>というほとんど同じサービスがあることに気づきましたorz<span class="weaken">(ただ、こちらはFlashを使っていて検索ができないほか、拡張子にPDFが付いていない場合はPDFとして認識されないようです)</span></p>
<p>さて、こちらのサービスではブックマークレットやブロガー向けのPDFリンク書き換えスクリプトなど<a href="http://pdfmenot.com/tools/">サービスを汎用PDFゲートウェイとして使えるようなツールを提供している</a>ようなのですが、私もそれに倣ってみることにします<span class="weaken">(コードが短いので、ある程度参考にさせていただきました)</span></p>
<h4 id="te4fbce">ウェブ利用者向け</h4>
<h5 id="t432d0b">GreaseMonkeyスクリプト</h5>
<p>Firefoxブラウザで<a href="http://ja.wikipedia.org/wiki/Greasemonkey">Greasemonkey</a>アドオンがインストールされている場合、以下のスクリプトをインストールすることで、リンク先末尾に「.pdf」が付くリンクを自動的にオンラインPDFリーダーへのそれに変換します。</p>
<p class="center"><a href="http://pdf.openvista.jp/redirect_pdf_gateway.user.js">GreaseMonkeyスクリプト</a></p>
<h5 id="tbff7be">ブックマークレット</h5>
<p>リンク先末尾に「.pdf」が付くリンクをオンラインPDFリーダーへのそれに変換します。ご使用の際は、まず以下のリンクをブックマークに入れてください。その後は、そのブックマークをクリックするとご使用いただけます。</p>
<p class="center"><a href="javascript:(function(){var%20l=document.getElementsByTagName('a'),%20r%20=%20new%20RegExp('\\.pdf$','i');for%20(var%20i=0;%20i<l.length;%20i++)%20if%20(r.test(l[i].getAttribute('href')))%20{%20l[i].href='http://pdf.openvista.jp/view/'+l[i].href;}%20})()" onclick="alert('ご使用の際は、まずこのリンクをブックマークに入れてください');">ブックマークレット</a></p>
<h4 id="t330255">ウェブ制作者向け</h4>
<p>以下のタグを &lt;head&gt;タグ内に書き込むことで、リンク先末尾に「.pdf」が付くリンクをオンラインPDFリーダーへのそれに自動的に変換します。</p>
<div class="source-code"><div><img src="http://note.openvista.jp/wp-content/plugins/coolcode/code.png" width="16" height="16" alt="" /> <em>HTMLソースコード</em></div><pre class="source-code"><code><span class="codes-brackets">&lt;</span><span class="codes-reserved">script</span><span class="codes-code"> </span><span class="codes-var">src</span><span class="codes-code">=</span><span class="codes-quotes">&quot;</span><span class="codes-string">http://pdf.openvista.jp/pdfconvert.js</span><span class="codes-quotes">&quot;</span><span class="codes-code"> </span><span class="codes-var">type</span><span class="codes-code">=</span><span class="codes-quotes">&quot;</span><span class="codes-string">text/javascript</span><span class="codes-quotes">&quot;</span><span class="codes-code"> </span><span class="codes-var">charset</span><span class="codes-code">=</span><span class="codes-quotes">&quot;</span><span class="codes-string">utf-8</span><span class="codes-quotes">&quot;</span><span class="codes-brackets">&gt;&lt;/</span><span class="codes-reserved">script</span><span class="codes-brackets">&gt;</span></code></pre></div>
<h3 id="tcb9632">その他の情報</h3>
<h4 id="t1e20f5">URLの構成</h4>
<p>オンラインPDFリーダのURLは以下のようなルールで出来ています。</p>
<p class="titlize">http://pdf.openvista.jp/[サイズ]/[ページ指定]/[PDFのURL]</p>
<dl>
<dt>サイズ</dt>
<dd>省略可。<var>small</var>(小さい), <var>medium</var>(普通), <var>large</var>(大きい)のいずれか</dd>
<dt>ページ指定</dt>
<dd>省略可<span class="weaken">(その場合は最初の5ページを表示)</span>。<var>p1</var>のような感じでページを表示ページを指定できる。<var>p1-5</var>といったように複数ページを指定することも出来る。</dd>
<dt>PDFのURL</dt>
<dd>必須。PDFのURLを指定してください。</dd>
</dl>
<h4 id="t887ba8">更新履歴</h4>
<dl class="update">
<dt>2009-01-20</dt>
<dd>最新のPDFファイルを取得し直す機能を追加</dd>
<dd>キャッシュしたPDFを検索エンジンが取得しないように設定</dd>
<dt>2008-10-20</dt>
<dd>フォントをより美しいものに差し替えました</dd>
<dd>表示サイズをより大きくしました</dd>
<dt>2008-10-18</dt>
<dd>一部のPDFにおいて文字が表示できない問題を解消しました</dd>
<dt>2008-10-12</dt>
<dd>使用するPDF表示ライブラリを変更の副作用で、一部のPDFファイルが検索できるようになりました</dd>
<dt>2008-10-11</dt>
<dd>初リリース</dd>
</dl>
<h4 id="t582839">実装予定の機能</h4>
<ul>
<li>Googleブック検索ライクな埋め込みプレーヤーの提供</li>
<li>ページの動的追加</li>
</ul>
<h4 id="t2e639c">参考にしたリンク</h4>
<p>今回のサービスは<del><a href="http://ja.wikipedia.org/wiki/Xpdf">Xpdf</a></del><ins><a href="http://ja.wikipedia.org/wiki/Poppler">Poppler</a></ins>というオープンソースのPDFリーダライブラリを利用させていただきました。素晴らしいライブラリを作られた作者さんに感謝。</p>
<p><ins datetime="2008-10-12T23:30:56+09:00" class="block"></p>
<blockquote cite="http://b.hatena.ne.jp/ttamo/20081011#bookmark-10358811" title="id:ttamoさんのブックマーク">
<p>いいかも。ただpopplerじゃなくてxpdfなのは何故なんだぜまあxpdfも「終わった」わけじゃないのかもしらんが</p>
<p class="citation"><a href="http://b.hatena.ne.jp/ttamo/20081011#bookmark-10358811"><cite>id:ttamoさんのブックマーク</cite></a></p>
</blockquote>
<p>それは単に知らなかっただけですよ。試しに変えてみたら、コピー不可のPDFファイルも表示できるようになったのでこちらにしておきます。<br />
</ins></p>
<ul class="links">
<li><a href="http://mytexpert.sourceforge.jp/index.php?%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2FPDF%A4%CE%C1%E0%BA%EE">チュートリアル/PDFの操作 &#8211; MyTeXpert</a></li>
<li><a href="http://mytexpert.sourceforge.jp/index.php?pdftoppm">pdftoppm &#8211; MyTeXpert</a></li>
<li><a href="http://bakera.jp/ebi/topic/739">「PDF をダウンロードさせる」@水無月ばけらのえび日記</a></li>
<li><a href="http://blog.firstlife.jp/2008/05/18/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E4%B8%8A%E3%81%A7pdf%E3%82%92html%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B/">渋谷でサボるエンジニアの日記» ブログアーカイブ » サーバー上でPDFをHTMLに変換する</a></li>
</ul>
<h4 id="te4a162">謝辞</h4>
<p>以下のサイトからアイコンをお借りしました</p>
<ul>
<li><a href="http://mayosoft.net/studio/">Mayosoft® Studios</a></li>
<li><a href="http://dryicons.com/free-icons/preview/aesthetica-version-2/">DryIcons | Free Icons | Aesthetica 2.0 Icon Set</a></li>
</ul>
<ol class="footnotes"><li id="footnote_0_883" class="footnote">「最善は善の敵」という現場のコストを考えた彼の主張の一貫性には納得していますが</li></ol><img src="http://note.openvista.jp/?ak_action=api_record_view&id=883&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/online-pdf-reader/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>あるべきOPACのビジョンを決める：Making OPAC 2.0</title>
		<link>http://note.openvista.jp/2008/new-opac-vision/</link>
		<comments>http://note.openvista.jp/2008/new-opac-vision/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 22:00:13 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[ウェブサービス論]]></category>
		<category><![CDATA[ユーザビリティ]]></category>
		<category><![CDATA[図書館]]></category>
		<category><![CDATA[社会語り]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/?p=767</guid>
		<description><![CDATA[あるべき大学図書館の蔵書検索システムについて、現在ある問題をどういう風に解決して、それを使うことでどういう生活を実現したいのかということを書きました]]></description>
			<content:encoded><![CDATA[<div class="toc">
<ol>
<li><a href="http://note.openvista.jp/2008/new-opac-vision/#t01f493">目指すところは本のGoogle先生</a></li>
<li><a href="http://note.openvista.jp/2008/new-opac-vision/#t4a4129">OPACの問題点</a>
<ol>
<li><a href="http://note.openvista.jp/2008/new-opac-vision/#tbe7fa4">なぜOPACを問題にするのかーなぜ本を読むとよいのか</a></li>
<li><a href="http://note.openvista.jp/2008/new-opac-vision/#te5606a">OPACのどこが問題か</a></li>
</ol>
</li>
<li><a href="http://note.openvista.jp/2008/new-opac-vision/#t6157e9">プロジェクト定義</a></li>
</ol>
</div>
<p><amazon>9784797347104, caption</amazon></p>
<p>ご無沙汰になってしまいましたが、図書館の蔵書検索システムの話。<a href="http://note.openvista.jp/2008/what-is-next-generation-opac/">次世代OPACってなんだろう</a>という記事では、次世代OPACの機能要件を全集合として幾多挙げてみたのですが、もちろんこれを全部実装するというわけにはいきませんし、できません。</p>
<p>まず、そうした機能要件から出発するのではなく、現在のOPACの問題でどう解決したいかということをきちんと決めておかないといけません。このデザイン活動における問題の定義について、棚橋さんは『<a href="http://www.amazon.co.jp/o/ASIN/4797347104/ref=nosim/openvista-22">ペルソナ作って、それからどうするの?</a>』の中で、次のように書いています（p188-192.）。</p>
<ol>
<li>問題を発見し、それを解決することがデザイン活動の意義である以上、全てのデザインは問題を発見（=定義）することから始まる</li>
<li>ユーザビリティやユーザエクスペリエンスなど、ユーザ中心視点でデザインを行いたいならば、当然その問題も<span class="weaken">（資料請求数を増やすなどの）</span>ビジネス視点ではなく、ユーザ視点<span class="weaken">（=ユーザにとっての有用性<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_0_767" id="identifier_0_767" class="footnote-link footnote-identifier-link" title="ヤコブ・ニールセンのSmall usabilityに対置されるところのutility">1</a></sup> ）</span>で定義される必要がある</li>
<li>ユーザ視点で問題を定義するならば、当然問題はユーザの現実の生活や仕事の現場から見いださなくてはならない。</li>
<li>問題をどう定義するかは、哲学の問題。哲学とは人々の暮らしや仕事がどうあればよいか、どうあるのが望ましいか（=あるべき姿）についての考え。ユーザ視点での問題の定義にはこの哲学が必要となる。</li>
<li>このあるべき姿と今ある現実とのギャップを把握し、そのギャップを埋めるために必要となる具体策がビジョンとなる</li>
</ol>
<p>というわけで、前の記事とやや繰り返しのようになるところがあるかもしれませんが、私の考える「あるべき姿」を書いておきたいと思います。</p>
<h3 id="t01f493">目指すところは本のGoogle先生</h3>
<p>私達は本を探す手段はたくさん用意されています。つまり、地元の本屋さんや公共図書館、大学図書館、あるいはネット上の書店などいろんなところで本を手に入れることが出来るわけです。そして、そのいずれにおいても<span class="weaken">（部分的ではあるけども）</span>ネット上で在庫の有無が調べられるようになっています。</p>
<p>今は人間がOPACを探して在庫を調べたり、実際に足を運んでみたりして探しているわけだけど、これを機械が自動的に調べてくれればもっと早く目的の本が手に入れられるようになるのではないでしょうか。</p>
<p class="right-box"><img src="http://note.openvista.jp/download/2008/09/library-and-google.png" alt="図書館とGoogle" title="図書館とGoogle" /></p>
<p>求めている本の場合だけであればそれはちょっとしたスピードアップですが、それだけではなくて<em>現実の書店で本を探しているときに得られる発見</em>、「あれ、こんな本も出てるんだ、どんなのだろ」とか「これ知らなかったけど意外と良い本かも」といったような<em>検索志向だと見つからない発見も一緒に得られるような本のナビゲータ</em>、今風に言うなら本のGoogle先生<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_1_767" id="identifier_1_767" class="footnote-link footnote-identifier-link" title="正確には目的としているものは雑誌かもしれないので文献のGoogle先生と言わないといけないんですが、響きで萎えちゃいます">2</a></sup> を作りたいと思っています。</p>
<p>本屋や図書館を足で回っていると前者のスピードはどうしても落ちてしまいますが先のように道草を食いながらの新たな発見があります。一方でオンラインでの本の検索では求めている本は瞬時に出せるけど、頭の中にある本以外は出てこないと言ったような<span class="weaken">（目先の効率性と発想力との）</span>トレードオフの問題が出てきます。</p>
<p>この両者をできるだけ犠牲にしないような「効率的な」<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_2_767" id="identifier_2_767" class="footnote-link footnote-identifier-link" title="効率的とは早く目的の知識を探すことでは必ずしもないでしょう">3</a></sup> 本のナビゲータで、みなさんの血肉となっていくような（みなさんそれぞれの）よい本を見つけていってほしいと考えています。まとめて「よい読書生活をおくるためのツール」と言ってしまうとちょっと曖昧模糊となっちゃいますね。</p>
<h3 id="t4a4129">OPACの問題点</h3>
<h4 id="tbe7fa4">なぜOPACを問題にするのかーなぜ本を読むとよいのか</h4>
<p>はい。で、このあるべき姿を書いた次に、どうして大学図書館のOPACに焦点を当てるのか。それはもっと私が大学が本を読むいい機会だと考えていて、そのために<em>大学図書館のOPACをより便利なツールにしたい</em>と考えているからです。以下、少し長々とした理由になるので読みたい方は読んでください。</p>
<p>まず、大学というのは社会人になる一歩手前のモラトリアンが社会に対しての考えを固めるよい機会だと思います<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_3_767" id="identifier_3_767" class="footnote-link footnote-identifier-link" title="というのは大学を持ち上げすぎかもしれませんが、少なくとも私にとって大学以前と以後での社会観は大きく変わりました">4</a></sup> 。高校までが正解探しゲームであるなら、大学以降は自分という文脈と目の前の問題から答え≠正解を導き出すことで自分の考えと考え方を固めていく時と行えるのではないかと思います。</p>
<p>しかし、<a href="http://www.nhk.or.jp/gendai/kiroku2008/0809-1.html">NHKでも取り上げられた</a>レポートコピペ問題<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_4_767" id="identifier_4_767" class="footnote-link footnote-identifier-link" title="特集自体はあまりいいものとは思えませんでしたが">5</a></sup> を見るにつけ、考えること=面倒くさいという風潮が流布しているようにも思えます。</p>
<p class="right-box"><img src="http://note.openvista.jp/download/2008/09/cross-point.png" alt="光の交差" title="光が重なったところに新たな色が生まれるように、視点を組み合わせたところに新たな発見が生まれるわけです" /></p>
<p>考えるというのは確かに頭が疲れるという意味では面倒なことかもしれませんが、例えば考えること以外にもスポーツを続ける内にその上達のコツを発見したり、友達と映画を見た後に感想を話していると隠れた演出の意図を発見して感心したりと、新たに何かを発見することはなかなか面白いことです。ただ、その発見も<a href="http://gitanez.seesaa.net/article/77446131.html">記憶の引き出しがなければなかなか得にくい</a>ものです。</p>
<p>引き出しを増やすと言う意味では、ウェブにはいろんな知識が転がっています。が、それこそ同じ物が入っている引き出しを何度もつけてしまったり、引き出しがあっても中身がなかったりと広く引き出しを付けていくには向いていないかもしれません。一方で本を読むというのも一つの手段です。精神論や既知の事しか書いていない本でなければ、しっかりとした引き出しを作るよい手段になります。</p>
<p>えーと、読書に関する授業の小レポート<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_5_767" id="identifier_5_767" class="footnote-link footnote-identifier-link" title="コピペする人はこのブログのライセンスに従って、URLを入れておいてくださいね">6</a></sup> のようですが、要するに最初に言ったように本を読むためにもっとOPACが便利になったらいいなと言うことです。</p>
<h4 id="te5606a">OPACのどこが問題か</h4>
<p>私が問題だと思っている点は主に3つあります。</p>
<ol>
<li>検索が大学図書館内に閉じていること</li>
<li>検索結果に工夫が足りないこと</li>
<li>他のデータベースとのつながりが見られないこと</li>
</ol>
<p>まず1つにOPACが大学図書館内に閉じているというところです。未所蔵の場合、情報学研究所のデータベース（NACSIS Webcat）を使って他大学の所蔵を検索することは出来ますが、それも大学図書館に閉じています。利用者は図書館で入手したいのではなく、<em>本が入手できればよい</em>のですから、公共図書館や他の書店などにも<a href="http://note.openvista.jp/2008/what-is-next-generation-opac/#t734c51">手を伸ばしていくという方策</a>は当然考えられるはずです。</p>
<p class="information">考え方としては<a href="http://note.openvista.jp/2008/mediation-for-user-satisfaction/">誰がではなく、利用者の問題を解決することが第一</a>というのが元になっています</p>
<p>次に検索結果の表示にあまり工夫が見られないことです。私が一般の大学生をターゲットにして行った調査では、数多くの大学生は検索結果から目的の本をリストアップする過程において、<em>過去数年間に発行された資料・ページ数が厚すぎない資料を重点的にリストアップ</em>し、それ以外の資料を除外する傾向が見られます。それはそうした古い本はせっかくまとめられた内容も古く、現在にそぐわないこと<span class="weaken">（今では既に自明のことが扱われているなど）</span>があるからです。検索効率<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_6_767" id="identifier_6_767" class="footnote-link footnote-identifier-link" title="もちろん効率が全てではありませんが">7</a></sup> を考えれば、読まれやすい本を上位に置いておくほうがよいでしょう<span class="weaken">（ちなみにこれ以外にも数多くの共通した検索行動やそれを裏打ちする心理が観察できるのですが、それはまた別の機会に）</span></p>
<p>3つめに問題だと思うのは新聞・雑誌記事データベースなどの大学生だからこそ使える有用なデータベースとのつながりがほとんど皆無であることです。例えば、比較的勉強方法に熟達している大学生を調査してみると、新しくまだ本にまとめられていないトピックについてはOPACにかけても検索結果が乏しいので代わりに雑誌・新聞記事データベースを使うといった<em>適材適所の使い分け</em>をうまく行っているのですが、そうしたデータベースの存在を知らず、右往左往している大学生が多くいるのもまた事実でした。そうしたデータベースを知らずとも、多くの学生はOPACは使うのですから、こういう問題は<em>OPACの設計次第で解決可能</em>なものです。ですから、「図書館利用教育」とか「情報リテラシー教育」という名目で曖昧にするのは危険なことだと感じます。</p>
<p>そして、先に書きましたが検索志向ゆえにおこる閉じた探索方法こそが第4の問題です。</p>
<p>さて、ここまで書いて気づいたのですが、OPACというのはOnline Public Access Catalogの略、すなわちオンライン公共蔵書目録のことです。私が蔵書に限らず、利用者の求めたい、求めているはずの本を見つける検索エンジンを志向するのならば、<em>それはもはやOPACではない</em>はずです（適した資料が図書館にあるとは限りませんから）。これからはOPAC 2.0などと流行言葉を使わず、本の検索エンジンと言ってしまった方がいいのかもしれませんね。</p>
<h3 id="t6157e9">プロジェクト定義</h3>
<p>さて、今回考えたことを、最後に先に挙げた棚橋さんの本の中で挙げられているプロジェクト定義書の例（p.198.）に従って、まとまったドキュメントにしておこうと思います（ちょっと論文調になりますよ）</p>
<dl>
<dt>プロジェクトの目的（哲学）</dt>
<dd>
<p>大学生が本の探索する過程においては、様々な問題が存在する。特に学生の資料検索の中心になっているであろうOPACには、ウェブ上の検索エンジンが日々改良されるのとは対照的に多くの課題が伺える。</p>
<p>具体的な問題の検討に移ろう。まず第一に検索の範囲は文字通り当該図書館内あるいは他の大学図書館になっているのだが、実際には本は書店など様々なところでも入手可能であり、彼らの情報探索ニーズを掴み損ねる危険性がある。第二に彼らの検索行動には新しく出版された本を重視するなど一定の行動パターンが観察できるが、現在のOPACには検索結果にはそうした工夫が活かされていないものが多い。第三に雑誌・新聞記事など大学では実際の資料にアクセスできる貴重なデータベースと接続しているだが、それは「使い分け」を知らない学生には手が届いていない現状があり、OPAC側での工夫が求められる。最後に現在のキーワード型検索自体の問題点として、指定したキーワードに関連した資料を得ることが難しく<sup><a href="http://note.openvista.jp/2008/new-opac-vision/#footnote_7_767" id="identifier_7_767" class="footnote-link footnote-identifier-link" title="引用文献を根掘り葉掘り辿っていくなどある程度リテラシーのある学生においてはこの限りではないが、そうしたリテラシー教育をこの研究では前提にしない">8</a></sup> 、情報探索の視点を広げていくような提案が必要である。</p>
<p>私はOPACのあるべき姿として、これらの問題を解決し、図書館に限らず目的としているような資料を効率的に探す手段にしたいと考えている。それにより、より時間を資料の検討に割いてもらい、彼らの血肉となるような本をより多く消化していってもらえるのではないかと考えている。</p>
<p>なお、このOPACは決して「勉強専用」のものではなく、小説やライトノベルなど広く彼らの読書生活をサポートするツールにしたいと考えている。</p>
</dd>
<dt>プロジェクトのゴール（ビジョン）</dt>
<dd>
<p>先に書いたように、OPACが脱OPAC<span class="weaken">（脱館内所蔵検索）</span>を志向しているならば当該図書館の本の貸し出し冊数や来館者数の増減でその成果を図ることは難しい。また、OPACへアクセスしたユニークユーザ数も比較する基準がなく、同様に難しく、仮に設定しても裏付けの薄い数値となり目安として意味のあるものとなるかは疑問である。</p>
<p>そこで今回は、幾人かに実際に課題を課した上で資料調査の手段としてOPACを使ってもらい、その場合と従来のOPACを用いた場合とを相互に主観的定量化を行ってもらう。そして、その値が従来のOPACを上回っているという条件をこのプロジェクトのひとまずのゴールとしたい。期間の都合上、正式な計測は難しいが、継続的に利用状況を伺っていきたいとも思っている。</p>
</dd>
<dt>ターゲットユーザ</dt>
<dd>
<p>大学生から大学院生。特にまだ図書館やOPACに比較的不慣れな大学1-2回生をより重視したい。</p>
<p>まず大学1-2回生の想定ユーザ像について。彼らは初年次教育によりレポートの書き方や調べ方など基礎的な図書館利用教育を受けているとは思うが、実際にはまだ数本のレポートをこなしたり、授業の参考にするためにOPACをたまに利用する程度であろう。よって、基礎的なOPACの使い方は習熟しているが、データベースの使い分けなどはまだ難しく、時にGoogleやYahoo!などの一般の検索エンジンを頼ってしまい、考えがなかなか深まらないことも多いと思われる。</p>
<p>次に大学3-4回生の想定ユーザ像について。演習科目などをこなす日々が続き、指導教授からの指導やまた蔵書検索での限界も感じていたこともあり、論文・雑誌記事データベースを使う癖が徐々に身についていくと考えられる。3回生がサークルの執行を行うところもあり、また就職活動も3回生の秋口から冬にかけて本格化することから、3-4回生の中頃においては本を読む機会が限られていくことが考えられる。逆に4回生は順調に就職活動を終えた者、および卒業論文制作を本格化する者が増えることから本を読む機会が増えていくものと考えられる。</p>
<p>最後に大学院生の想定ユーザ像について。大学教授にも共通することだが、その研究分野の棚に並んでいる本や著者は大方把握しており、OPACを書籍検索ツールとしてだけでなく、新しい本があるか検索するツールとしても利用していると考えられる。論文・新聞記事データベースは日常的に利用しているが、研究分野に従って特定のデータベースに偏っていることも考えられる。教授などから薦められた本を借りることが多い。</p>
</dd>
<dt>実現の方法</dt>
<dd>
<p>OPACのUIの開発および全国の図書館・書店を網羅するデータベース制作作業をPHP言語によって行う。その際、効率的な開発のためにフレームワークとして<a href="http://cakephp.jp/modules/newbb/">CakePHP</a>を採用する。</p>
<p>近隣の図書館蔵書の検索には<a href="http://webcatplus-equal.nii.ac.jp/libportal/equalTop.html">Webcat Plus 一致検索</a>および独自に開発した図書館データベースを、書店の在庫検索には<a href="http://note.openvista.jp/2007/bookstore-stock-check/">書店在庫検索サービス</a>を利用する。また、発見を得るためには<a href="http://webcatplus-international.nii.ac.jp/assoc.cgi">Webcat Plus 連想検索</a>などの連想検索結果や<a href="http://imagine.bookmap.info/imagine">想-IMAGINE Book Search</a>などの複数の検索結果を比較検討する手法を検討したい。</p>
</dd>
<dt>制約条件</dt>
<dd>期間の都合上、実際のOPACシステムを作ることはできないので、OPACシステムを利用するUI部分を設計することになる</dd>
</dl>
<ol class="footnotes"><li id="footnote_0_767" class="footnote">ヤコブ・ニールセンのSmall usabilityに対置されるところのutility</li><li id="footnote_1_767" class="footnote">正確には目的としているものは雑誌かもしれないので文献のGoogle先生と言わないといけないんですが、響きで萎えちゃいます</li><li id="footnote_2_767" class="footnote">効率的とは早く目的の知識を探すことでは必ずしもないでしょう</li><li id="footnote_3_767" class="footnote">というのは大学を持ち上げすぎかもしれませんが、少なくとも私にとって大学以前と以後での社会観は大きく変わりました</li><li id="footnote_4_767" class="footnote"><a href="http://memo.openvista.jp/post/48256909">特集自体はあまりいいものとは思えません</a>でしたが</li><li id="footnote_5_767" class="footnote">コピペする人はこのブログのライセンスに従って、URLを入れておいてくださいね</li><li id="footnote_6_767" class="footnote">もちろん効率が全てではありませんが</li><li id="footnote_7_767" class="footnote">引用文献を根掘り葉掘り辿っていくなどある程度リテラシーのある学生においてはこの限りではないが、そうしたリテラシー教育をこの研究では前提にしない</li></ol><img src="http://note.openvista.jp/?ak_action=api_record_view&id=767&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/new-opac-vision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ウェブ上のフィードの広告を削ったり、絞り込んだりできるサービス「SmartFeed」</title>
		<link>http://note.openvista.jp/2008/smartfeed/</link>
		<comments>http://note.openvista.jp/2008/smartfeed/#comments</comments>
		<pubDate>Thu, 08 May 2008 08:09:37 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/?p=428</guid>
		<description><![CDATA[RSS/Atomフィードを、タイトル・カテゴリ・被ブックマーク数等々の条件から自由にフィルタリングできるサービスを作りました]]></description>
			<content:encoded><![CDATA[<div class="toc">
<ol>
<li><a href="http://note.openvista.jp/2008/smartfeed/#td60ae6">実際の使用例</a></p>
<ol>
<li><a href="http://note.openvista.jp/2008/smartfeed/#tfd8f88">自分にとって必要の無い記事を削除する</a></li>
<li><a href="http://note.openvista.jp/2008/smartfeed/#t234663">必要な記事のみ受信する</a></li>
</ol>
</li>
<li><a href="http://note.openvista.jp/2008/smartfeed/#t4c1d98">おまけ</a></li>
<li><a href="http://note.openvista.jp/2008/smartfeed/#t223bc1">自分で運用したい人のために</a></li>
<li><a href="http://note.openvista.jp/2008/smartfeed/#t3bc15c">参考にしたリンク先</a></li>
<li><a href="http://note.openvista.jp/2008/smartfeed/#t97176b">更新履歴</a></li>
</ol>
</div>
<p><a href="http://note.openvista.jp/2007/filtering-the-feed/" title="ちょっとしたアイデア(10):RSSをタグやカテゴリでフィルタリングしたい - Liner Note">去年のちょっとしたアイデア</a>で温めていて腐りかけていたネタですが、一昨日から実装を始めてさきほどできあがったのでお披露目。</p>
<p>といっても、単にフィード(RSS/Atom)を条件に基づいてフィルタリングして再配信するだけのサービスです。この手のサービスとしては既に<a href="http://feedrinse.com/" title="Filter RSS feeds with Feed Rinse">Feed Rinse</a>がありますが、日本語が使えなかったので使えるものを作ったというわけです。後で検索したら<a href="http://www.mixfeed.jp/" title="MixFeed | ホーム : RSS配信・リミックスウェブ・WEB2.0">MixFeed</a>や<a href="http://rsspipe.tmemo.jp/" title="RSSPipe">RSSPipe</a>なんかが既にやってたりしたんですが。</p>
<p class="center"><a href="http://smartfeed.openvista.jp/"><img src="http://note.openvista.jp/download/2008/05/smartfeed.png" alt="SmartFeedトップページ" title="SmartFeedトップページ" width="400" height="207" /><br />SmartFeed</a></p>
<p>詳細は<a href="http://smartfeed.openvista.jp/faq/" title="よくあるご質問:SmartFeed">よくあるご質問のページ</a>に書いてありますが、以下に一部抜粋します。</p>
<dl>
<dt>Q.これは何?</dt>
<dd>ブログサイトなどで配信されている<a href="http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89" title="フィード - Wikipedia">フィード</a><span class="weaken">(RSSやAtom等とも呼ばれています)</span>の記事を、フィード中の条件<span class="weaken">(本文に含まれる文字やカテゴリなど)</span>などでフィルタリングして、受信したい記事だけ受信できるようカスタマイズできるサービスです。また、本文に埋め込まれるインライン広告は自動的にカットしているので快適にフィードを読むことが出来ます。ご利用は無料です。</dd>
<dt>Q.どんな風に使うの?</dt>
<dd>一例ですが、フィード中の広告をカットしたり、特定の作者が書いた記事や特定のカテゴリにある記事だけのフィードを作ったりできます。</dd>
<dt>Q.対応しているフィードの種類は?</dt>
<dd>A.RSS 1.0, RSS 2.0, Atom全バージョンに対応しています。RSS 0.9, RSS 0.9xには公式には非対応です。</dd>
<dt>Q.フィルタの対象にできる条件は何ですか?</dt>
<dd>2008年5月現在、記事のタイトル、リンク先URL、本文、カテゴリ、著者名、投稿日およびその記事のはてなブックマークでの被ブックマーク数です。</dd>
</dl>
<p>ちなみに、フィードの設定にはユーザ名・パスワード云々は必要ありません。あと、使いやすいように現在見ているフィードをSmartFeedで編集するブックマークレットを置いておきます。よかったらどうぞ。</p>
<p><a href="javascript:window.open('http://smartfeed.openvista.jp/edit/'+escape(location.href), '_blank', 'resizable=1,scrollbars=1');undefined;">SmartFeedでカスタマイズ</a></p>
<h3 id="td60ae6">実際の使用例</h3>
<h4 id="tfd8f88">自分にとって必要の無い記事を削除する</h4>
<dl>
<dt>GIGAZINEのフィードから「ヘッドラインニュース」と「広告」の記事を削除</dt>
<dd>条件:「タイトル」が「ヘッドラインニュース」で「終わっている」または「AD:」から「始まっている」時は「ブロック」する</dd>
<dd><a href="http://www.pheedo.jp/f/gigazine_2" title="GIGAZINE">編集前のGIGAZINEフィード</a></dd>
<dd><a href="http://smartfeed.openvista.jp/feed/200805080436356295" title="GIGAZINE">編集後のGIGAZINEフィード</a></dd>
</dl>
<h4 id="t234663">必要な記事のみ受信する</h4>
<dl>
<dt><a href="http://www.100shiki.com/" title="百式(100SHIKI.COM) - 世界のアイディアを今日も明日も明後日も -">百式</a>で、はてなブックマークで15ユーザ以上にブックマークされている便利ツールに関する記事のみを受信</dt>
<dd>条件:「ブックマーク数」が「15ユーザ以上」で、かつ「カテゴリ」が「便利ツール」で始まっている時のみ「パス」する</dd>
<dd><a href="http://www.100shiki.com/atom.xml" title="100SHIKI">編集前の百式フィード</a></dd>
<dd><a href="http://smartfeed.openvista.jp/feed/200805090147146628" title="100SHIKI">編集後の百式フィード</a></dd>
<dt><a href="http://kaden.watch.impress.co.jp/" title="家電 Watch Title Page">家電 Watch</a>のコラム記事だけ受信</dt>
<dd>条件:「タイトル」に「[コラム]」で「始まる」時のみ「パス」する</dd>
<dd><a href="http://www.pheedo.jp/f/kaden_watch/" title="家電 Watch">編集前の家電 Watchフィード</a></dd>
<dd><a href="http://smartfeed.openvista.jp/feed/200805122132579099" title="家電 Watch">編集後の家電 Watchフィード</a></dd>
<dt>雑貨紹介サイト <a href="http://www.zakkaz.com/" title="雑貨kUkan - 雑貨好きのための雑貨紹介サイト">雑貨kUkan</a>の生活雑貨に関する記事のみ受信</dt>
<dd>条件:「カテゴリ」に「生活雑貨」が「含まれている」時のみ「パス」する</dd>
<dd><a href="http://feeds.feedburner.jp/zakkaz" title="雑貨kUkan">編集前の雑貨kUkanフィード</a></dd>
<dd><a href="http://smartfeed.openvista.jp/feed/200805080514006470" title="雑貨kUkan">編集後の雑貨kUkanフィード</a></dd>
</dl>
<h3 id="t4c1d98">おまけ</h3>
<p>フィードリーダーで読む件数が多すぎて…という方、読むフィード自体を削ってみるのもよいですが、講読しているフィードの中でも興味のある範囲だけ読むようにフィルタをかけて、フィード管理に努めてみてはいかがでしょうか。</p>
<p><ins datetime="2008-05-18T20:10:42+09:00" class="block"><br />
このサイト内でもシリーズ記事にRSSをつけてみたり、検索結果にRSSつけてみたり、もうフィードつけまくりです。ゼロからフィードを生成することが出来ないのは難点ですが、どこにでもフィードをつけて更新状況を確認できるよう提供できるのは良いかもしれませんね。<br />
</ins></p>
<h3 id="t223bc1">自分で運用したい人のために</h3>
<p>えーと、それと一応スクリプトも公開しておきますので自分のサーバ上で使いたい人はご自由にお使いください。使用する人のために注意書きを少々書いておきます。</p>
<ul>
<li>PHP5で書いてます、SimpleXML使っているので、PHP4じゃ動きません</li>
<li>依存パッケージはHTTP Client(HTTP/Client.php)とXML RPC(XML/RPC.php)です</li>
<li>各設定云々はXMLファイルで管理してます</li>
<li>設定ファイルはconfフォルダにある各フォルダに書き出しますので、confフォルダ内の各フォルダのパーミッションを777に設定してください</li>
<li>class.FeedFilter.phpにある定数selfを、設置するウェブサイトのURLに書き換えてください</li>
<li>ドメインを作って運用する<span class="weaken">(例:http://smartfeed.openvista.jp/)</span>のではなく、フォルダを掘り、そこに配置して運用する<span class="weaken">(例:http://hoge.openvista.jp/smartfeed/)</span>場合は、もう一手間かかります。.htaccessというファイルをテキストエディタで開いて、以下のようにフォルダ名を追記してください。
<div class="source-code"><div><img src="http://note.openvista.jp/wp-content/plugins/coolcode/code.png" width="16" height="16" alt="" /> <em>ソースコード</em></div><pre class="source-code"><code>RewriteCond %{REQUEST_URI} ^/フォルダ名/feed/(pass|block)-if-([a-zA-Z:]+)-([a-zA-Z]+)-([^/]+)/(.+)$
RewriteRule ^(.*)$ /フォルダ名/view.php?type=instant&amp;action=%1&amp;tag=%2&amp;cond=%3&amp;content=%4&amp;url=%5 [L]
RewriteCond %{REQUEST_URI} ^/フォルダ名/feed/([0-9]+)$
RewriteRule ^(.*)$ /フォルダ名/view.php?id=%1 [L]
RewriteCond %{REQUEST_URI} ^/フォルダ名/save/([0-9]+)$
RewriteRule ^(.*)$ /フォルダ名/edit.php?id=%1&amp;status=save [L]
RewriteCond %{REQUEST_URI} ^/フォルダ名/edit/(.+)$
RewriteRule ^(.*)$ /フォルダ名/edit.php?id=%1&amp;status=edit [L]
RewriteCond %{REQUEST_URI} ^/フォルダ名/error/(.+)$
RewriteRule ^(.*)$ /フォルダ名/index.php?status=error&amp;message=%1 [L]
RewriteCond %{REQUEST_URI} ^/フォルダ名/(faq|thanks)/?$
RewriteRule ^(.*)$ /フォルダ名/index.php?status=%1 [L]</code></pre></div>
</li>
</ul>
<dl class="download">
<dt>ダウンロード</dt>
<dd><a href="http://smartfeed.openvista.jp/smartfeed.zip">SmartFeed スクリプト一式 </a></dd>
<dt>ライセンス</dt>
<dd><a rel="license" href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_General_Public_License" title="licenses/GNU_General_Public_License - Open Source Group Japan Wiki @ SF.jp">GNU General Public License v2</a></dd>
<dd>※一部画像ファイルは<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.ja" title="Creative Commons Attribution 3.0 Unported">Creative Commons Attribution 3.0</a></dd>
</dl>
<p><ins datetime="2008-05-17T04:57:11+09:00" class="block"><br />
ワンライナー設定機能を加えました。これはURL中に設定を書くことで、事前にフォームからフィードを作成することなくダイレクトにフィードを生成することが出来る機能です。</p>
<p>URL書式は<code>http://smartfeed.openvista.jp/feed/(block or pass)-if-(対象タグ)-(条件)-(フィルタ内容)/(URL)</code>です。</p>
<p>例えば、このサイトのフィードのうち、タイトルに「サービス」を含む記事だけ抜き出すとすると、<code>http://smartfeed.openvista.jp/feed/pass-if-title-Contains-サービス/http://note.openvista.jp/feed/</code>となります。<br />
</ins></p>
<h3 id="t3bc15c">参考にしたリンク先</h3>
<ul>
<li><a href="http://php.atseason.com/?eid=620142" title="PHPのテクメモ | XMLを配列に・・・これが最適解かも">PHPのテクメモ | XMLを配列に・・・これが最適解かも</a></li>
<li><a href="http://ml.php.gr.jp/pipermail/php-users/2005-June/026307.html" title="[PHP-users 25790] Re: RSS を表示する">[PHP-users 25790] Re: RSS を表示する</a></li>
<li><a href="http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/008/index.html" title="第二章　プログラムを作って体験しよう:サーバー上のHTMLファイルを読み込みページ上に表示する">第二章　プログラムを作って体験しよう:サーバー上のHTMLファイルを読み込みページ上に表示する</a></li>
</ul>
<h3 id="t97176b">更新履歴</h3>
<div class="update">
<dl>
<dt>2009/07/21</dt>
<dd>一部のフィード（<samp>?</samp>を含むURL）での編集ができない問題を解決しました</dd>
<dt>2008/10/17</dt>
<dd>一部のフィードで編集が上手くできない問題を解決しました</dd>
<dt>2008/10/12</dt>
<dd>ファイルの最終更新日取得のタイミングをアイテム削除前からアイテム削除後に変更するようにしました</dd>
<dt>2008/10/08</dt>
<dd>他サイトに設置する上での問題点を解消しました</dd>
<dt>2008/10/07</dt>
<dd>フィードの編集が出来なくなっていた問題を解消しました</dd>
<dd>前回、修正したと思っていた問題を修正できていなかったので改めて修正しました</dd>
<dt>2008/10/03</dt>
<dd>文字エンコードが正しく検出できず、フィルタに失敗する問題を解消しました</dd>
<dd>フィードの最終更新日がうまく取得できない問題を解消しました</dd>
<dd>フィードの最終更新日を正常に知らせていなかった問題を解消しました</dd>
<dt>2008/09/20</dt>
<dd>入力値のチェックを厳しくしました</dd>
<dd>サービスのURLを変更しました。旧URLは新URLに自動的に転送されます</dd>
<dt>2008/06/08</dt>
<dd>文字エンコーディングがutf-8以外のフィードで文字化けが起きてしまう問題を解消しました</dd>
<dt>2008/05/28</dt>
<dd>一部のAtomフィードの更新がうまく通知されなかった問題を解消しました</dd>
<dt>2008/05/22</dt>
<dd>設定の再編集機能がうまく出来ていなかった問題を解消しました</dd>
<dt>2008/05/17</dt>
<dd>ワンライナー設定機能を加えました</dd>
<dt>2008/05/12</dt>
<dd>フィードの更新がフィードアグリゲータに通知されない不具合を解消しました(If-Modified-Sinceへの対応のミスが原因)</dd>
<dd>正規表現で使用する文字列が含まれているときに、うまく検索できない不具合を解消しました</dd>
<dt>2008/05/08</dt>
<dd>
以下のリンクを参考に If-Modified-Since(条件付きGET)に対応してみました。</p>
<ul class="links">
<li><a href="http://www.arielworks.net/articles/2004/0125a" title="モジュール版PHPで「If-Modified-Since」に対応する">モジュール版PHPで「If-Modified-Since」に対応する</a></li>
<li><a href="http://www.arielworks.net/articles/2004/0125b" title="PHPで「Last-Modified」を送信する">PHPで「Last-Modified」を送信する</a></li>
<li><a href="http://www.avoidnote.com/archives/2005/07/modified_since.php" title="PHP で If-Modified-Since に対応してみる -avoidnote-">PHP で If-Modified-Since に対応してみる -avoidnote-</a></li>
<li><a href="http://as-is.net/blog/archives/000956.html" title="「条件付きGET」のススメ - Ogawa::Memoranda">「条件付きGET」のススメ &#8211; Ogawa::Memoranda</a></li>
<li><a href="http://fstyle.ddo.jp/archives/2006/09/_if-modified-si.html" title="動的なページを静的に見せる If-Modified-Since">動的なページを静的に見せる If-Modified-Since</a></li>
<li><a href="http://feedanalyzer.com/" title="RSS Validator - feedAnalyzer RSSの構文チェック">RSS Validator &#8211; feedAnalyzer RSSの構文チェック</a></li>
</ul>
</dd>
<dd><a href="http://www.rssad.jp/" title="株式会社RSS広告社">RSS広告社</a>と<a href="http://www.pheedo.jp/" title="Pheedo">Pheedo</a>のインライン広告、および行動分析用の隠しタグを自動削除するようにしました</dd>
</dl>
</div>
<img src="http://note.openvista.jp/?ak_action=api_record_view&id=428&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/smartfeed/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Google検索 for iPod touchを作った</title>
		<link>http://note.openvista.jp/2008/google-search-for-ipod-touch/</link>
		<comments>http://note.openvista.jp/2008/google-search-for-ipod-touch/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 16:36:38 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/263/</guid>
		<description><![CDATA[iPod touchで利用しやすいようにビジュアルを最適化したGoogle検索ゲートウェイを作った]]></description>
			<content:encoded><![CDATA[<p><a href="http://note.openvista.jp/251/" title="Liner Note - PHP汎用スクレイピングライブラリを作ってみた">以前作ったスクレイピングライブラリ</a>を流用したので、かなり楽でした。</p>
<p>できるだけ、いつものGoogleと同じ表示に近づけたかったので、Googleさんが提供しているAPIは使用しませんでした。ちなみに2008年3月現在で、Google America<span class="weaken">(google.com)</span>はGoogle Japan<span class="weaken">(google.co.jp)</span>と違ってiPod touchに最適化されて検索がしやすいのですが、あいにく日本語検索ができません。そこで、自前でこしらえてみました。</p>
<p><a href="http://tech.openvista.jp/viewer/google/"><img src="http://note.openvista.jp/download/2008/03/google_for_touch_1.jpg" width="320" height="348" alt="Google for iPod touch 1" /><br />Google Search for iPod touch</a></p>
<p>Googleで「Google」を検索（無意味）</p>
<p><img src="http://note.openvista.jp/download/2008/03/google_for_touch_2.jpg" width="320" height="413" alt="Google for iPod touch 2" /></p>
<p>Googleで「郵便」を検索</p>
<p><img src="http://note.openvista.jp/download/2008/03/google_for_touch_3.jpg" width="320" height="417" alt="Google for iPod touch 3" /></p>
<p>あと、ブックマークレットも用意しました。以下のリンクをブックマーク後、<code>javascript:</code>以前の文字列を手動で削除ください。</p>
<p><a href="http://www.google.co.jp/javascript:q=prompt('Google%E6%A4%9C%E7%B4%A2','');if(q)location.href='http://tech.openvista.jp/viewer/google/'+unescape(q)+'.1.html'">Google検索 for iPod touch ブックマークレット</a></p>
<p>ホームボタンとしてホーム画面に置いてもいいかもしれませんね。</p>
<p>ちなみに今回は<a href="http://favicon.aruko.net/" title="Favicon API (ファビコン) α版">Favicon API</a>を使いましたので、タイトルリンク部の左にファビコンが表示されていると思います。APIを提供くださっているhirotomo kunimatsuさん、ありがとうございます。</p>
<p>また、タイトルリンク部の右には別窓で開くリンクも用意していますので、ご利用ください。</p>
<p class="caution">どうも、タイトルと本文が合っていないケースがたまに出てくるようです。99% スクレイピングライブラリの問題なので暇なときに直します。</p>
<p><ins datetime="2008-05-27T15:45:01+09:00" class="block"><br />
<a href="http://googlejapan.blogspot.com/2008/05/ipod-touch-google.html" title="Google Japan Blog: iPod touch で Google がますます便利に使えるようになりました">Google Japanでも対応されたようです、中の人お疲れ様でした。これでこのサービスもお役ご免かな。</a><br />
</ins></p>
<img src="http://note.openvista.jp/?ak_action=api_record_view&id=378&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/google-search-for-ipod-touch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPod touch専用 料理レシピ検索サービスを作った</title>
		<link>http://note.openvista.jp/2008/cooking-recipe-service-for-ipod-touch/</link>
		<comments>http://note.openvista.jp/2008/cooking-recipe-service-for-ipod-touch/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 22:04:36 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[モバイル]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/249/</guid>
		<description><![CDATA[iPod touchで快適に使えるレシピ検索サービス（powered by ボブアンドアンジー）を公開してみます]]></description>
			<content:encoded><![CDATA[<p>前々から作ろうと思ってたものなのだけど、昨夜に本格的に作りたくなったので1晩かけてやってみた。</p>
<p>何かというと、レシピをサッと検索して見やすく表示するという用途に特化したサービス。データは<a href="http://www.bob-an.com/" title="バレンタインチョコレートレシピも簡単検索！料理レシピ／ボブとアンジー">料理レシピ検索ソフトのボブとアンジー</a>から勝手に引っ張ってきてます。</p>
<h3 id="t2b6bf6">特徴</h3>
<ul>
<li>レシピを検索してサッと確認することができます</li>
<li>材料一覧には買い物の時に買い忘れをしないようにチェックボックスをつけています</li>
<li>検索結果やレシピはオフラインでも見られるように変換する機能をつけています。変換後のページをブックマークすれば、スーパーなどWi-Fiがない場所でもレシピを確認できます。</li>
</ul>
<p><a href="http://tech.openvista.jp/recipe/"><img src="http://note.openvista.jp/download/2008/02/boban.png" width="240" height="314" alt="レシピビューア スクリーンショット" /><br />ボブとアンジー レシピビューア for iPod touch</a></p>
<h3 id="t964c19">デモ動画</h3>
<dl class="video flv" id="video-boban" style="width: 360px;">
<dt style="width:248px;"><a href="#video-boban">レシピ検索デモ動画</a></dt>
<dd style="height:480px;"><object data="http://note.openvista.jp/wp-content/themes/cielo/module/flvplayer.swf?file=http://note.openvista.jp/download/movie/boban.mp4" type="application/x-shockwave-flash" width="360" height="480"><param name="movie" value="http://note.openvista.jp/wp-content/themes/cielo/module/flvplayer.swf?file=http://note.openvista.jp/download/movie/boban.mp4" /><param name="allowfullscreen" value="true" /></object></dd>
</dl>
<h3 id="tf2ba18">iPod touchのユーザビリティ小考</h3>
<p><a href="http://www.heartlogic.jp/archives/2007/10/ipod_touch_1.html" title="iPod touchの新しい可能性を見た :Heartlogic">iPod touchの新しい可能性を見た :Heartlogic</a>という記事でも書かれてあることですが、iPod touchは「PCでは煩雑 or 大げさ、でも携帯よりは情報量が欲しいし、パケ代を気にしたくない」という<em>ちょっとしたタスクを済ませるデバイスとしては非常に優秀</em>です（逆にちょっとこみいったタスクでは、キー入力性やハードウェア的な限界もあって、ええいPC使った方が早いわとなるので、あまり向いていないでしょう）</p>
<p>今回のレシピ検索というようなちょっとしたタスクなんかも気持ちよくこなせます。メールに書かれている住所をGoogle Mapsで確認したり、今から乗る電車だとどれくらいに目的地に着くのか調べたり、そういうタスクも向いているでしょう。Mac OS XのDashboardなんかはちょっとしたタスクの集合体ですね。</p>
<p>ですので、もしiPod touch向けにサービスを作るなら、できるだけオプションを少なくして、2-3ステップくらいでタスクが1巡するくらいが、iPod touchユーザにとってちょうどいい案配なんじゃないでしょうか<span class="weaken">（一応仮説なんで、具体的な数値とかについてはまた検証してみたいです）</span></p>
<p><a href="http://satoshi.blogs.com/life/2008/01/ipod-1.html" title="Life is beautiful: こんな商品が欲しい：風呂に浮かべてビデオを鑑賞できるiPod希望">アンチ・コンバージェンス論</a>から言えば、PCはより複雑なタスクを、iPod touchはこういうステップの少ないタスクをそれぞれ得意にして分化していくんじゃないでしょうか。</p>
<p>それと、ユーザビリティの話はまた改めて書こうと思ってます。</p>
<h3 id="tce53e7">権利的なお話</h3>
<p>一応、このサービスはボブアンドアンジーさんのリソースを勝手に使ってます。なので、著作権的にはクロだと思います。その点は非常に心苦しいので、当初は公開しようかしまいか迷ったのですが、いつも重宝させていただいているサイトなので、もっと便利に使えるようにしていくことが、相手方のサイトにとっても結果的にはよいのではないかと思い、公開してみました（無論、広告入れるとかはありません）</p>
<p>このサービスに限らず、スクレイピングを使っているサービスは著作権とは切っても切り離せないですね。勝手にやるにしてもこちらと相手方とがWIN-WINの関係でやっていけるのがマストだというのはこの手の物を作っていてよく意識します。</p>
<h3 id="t19d8fa">参考にした記事</h3>
<ul>
<li><a href="http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-09-13_selector-to-xpath.htm" title="Latest topics &gt; CSS3セレクタとXPathでの表現の対応表 - outsider reflex">Latest topics &gt; CSS3セレクタとXPathでの表現の対応表 &#8211; outsider reflex</a></li>
<li><a href="http://noongoro.main.jp/note/note0050.html" title="PHPの正規表現のpreg_match()関数">PHPの正規表現のpreg_match()関数</a></li>
<li><a href="http://kandk.cafe.coocan.jp/nucleus/index.php?itemid=476" title="目から鱗 w/SQLite » 正規表現でHTMLコメントを取り除くには">目から鱗 w/SQLite » 正規表現でHTMLコメントを取り除くには</a></li>
<li><a href="http://ero.movie.coocan.jp/?iPod%20touch" title="iPod touch - めもちょう">iPod touch &#8211; めもちょう</a></li>
</ul>
<img src="http://note.openvista.jp/?ak_action=api_record_view&id=344&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/cooking-recipe-service-for-ipod-touch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>はてなブックマークのコメントを見やすく表示する「はてなブックマークビューワ」を作った</title>
		<link>http://note.openvista.jp/2008/hatena-bookmark-viewer/</link>
		<comments>http://note.openvista.jp/2008/hatena-bookmark-viewer/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 10:23:08 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/244/</guid>
		<description><![CDATA[はてなブックマークの各エントリのコメント一覧を見やすくしたり、タグをグラフで表示したりする「はてなブックマークビューワ」を作りました]]></description>
			<content:encoded><![CDATA[<p>はてなブックマークのコメントをもう少し見やすくしたかったので、それっぽい物を作りました。基本的には、以下のように過去に作ったサービスのリサイクルです。まぁ、見せ方を変えることでどこまで改良できるものかという試みでもあります。</p>
<ul>
<li><a href="http://note.openvista.jp/231/" title="Liner Note - はてブバリュー：はてなブックマークのブックマーク数とコメントを点数にしてURLを評価してみる">はてブバリュー：はてなブックマークのブックマーク数とコメントを点数にしてURLを評価してみる</a></li>
<li><a href="http://note.openvista.jp/232/" title="Liner Note - はてなブックマークのタグ一覧をGoogle Chart APIを使って円グラフにしてみる">はてなブックマークのタグ一覧をGoogle Chart APIを使って円グラフにしてみる</a></li>
<li>当該エントリにつけられたブックマークコメントを一覧表示する</li>
<li>当該サイトの注目エントリを表示する</li>
</ul>
<p><a href="http://bookmark.openvista.jp/" title="はてなブックマークビューワ：ご指定のURLをブックマークコメントも含めて評価します"><img src="http://note.openvista.jp/download/2008/01/bookmark1.png" width="300" height="189" alt="ブックマークビューワ トップ画面" /></a></p>
<ul>
<li><a href="http://bookmark.openvista.jp/entry/http://note.openvista.jp/211/" title="Liner Note - 無償で商用利用できて品質の高い日本語フォント：はてなブックマークビューワ">表示サンプル</a></li>
<li><a href="http://bookmark.openvista.jp/comment/http://note.openvista.jp/211/" title="Liner Note - 無償で商用利用できて品質の高い日本語フォント：はてなブックマークビューワ">表示サンプル（軽量版）</a></li>
</ul>
<p><img src="http://note.openvista.jp/download/2008/01/bookmark2.png" width="300" height="810" alt="ブックマークビューワ 各エントリ画面" /></p>
<p>いろんな処理を統合して行っている関係上、まだちょっと重いのが難点かな。各コメントの引用やリンクボタンは個人的についていると便利かなと思って付けました。あと、ブックマークレットも用意しました。</p>
<dl>
<dt>PC用</dt>
<dd><a href="javascript:window.open('http://bookmark.openvista.jp/comment/'+escape(location.href), '_blank', 'resizable=1,scrollbars=1');undefined;">現在のページをはてなブックマークビューワで開くブックマークレット</a></dd>
<dt>iPod touch用（ブックマークに追加後、<code>javascript</code>以前の文字列を消去）</dt>
<dd><a href="http://note.openvista.jp/?javascript:window.open('http://bookmark.openvista.jp/comment/'+escape(location.href), '_blank', 'resizable=1,scrollbars=1');undefined;">現在のページをはてなブックマークビューワで開くブックマークレット</a></dd>
</dl>
<p>あと、従来のように<code>http://bookmark.openvista.jp/entry/http://example.com</code>とする代わりに、<br />
<code>http://bookmark.openvista.jp/comment/http://example.com</code>とすればグラフや得点内訳を表示しないようにできます。</p>
<p><ins datetime="2008-01-22T01:21:44+09:00" class="block"><a href="http://b.hatena.ne.jp/se-mi/20080121#bookmark-7153131" title="はてなブックマーク - se-miのブックマーク / 2008年01月21日">ID:se-miさん</a>、確かに重いですね。上記のコメント一覧のみ表示版はだいぶ軽くなりました。私もこっちを使うようになったので、こちらを標準にしてみたよ。</ins></p>
<p>なお、はてブバリューなど既存のサービスは上記サービスにリダイレクトしています。パスが変わって、グラフ画像のURLに使うパラメータを少し変えましたが、URL構造に大きな変化は加えていません。</p>
<p>なお、各種検索エンジンの検索結果が汚れないよう、コンテンツは検索エンジンにキャッシュされないようにしています。各ブックマークサービスも同様にしてくれれば嬉しいのですが…無理でしょうね。</p>
<p>以前と同じように、スクリプトも公開しておきます。</p>
<dl class="download">
<dt>ダウンロード</dt>
<dd><a href="http://bookmark.openvista.jp/bookmark.zip">はてなブックマークビューワ</a></dd>
<dd>ライセンス：GNU GPL v2</dd>
<dd>もし、ご使用になる場合は同じディレクトリにfont.ttfという名前でTrueTypeフォントを入れておいてください。</dd>
</dl>
<p>いろいろ作ってみて思ったのは（あくまで私視点ですが）良いウェブサービスというのは自分が毎日使う気になるか（そういう習慣ができるか）否かと言うところにあるような気がします。</p>
<div class="update">
<h4 id="t3a77db">更新履歴</h4>
<dl>
<dt>2008/11/25</dt>
<dd>はてなブックマークの新バージョンに対応いたしました</dd>
<dd>言及ページなどの読み込みをページ読み込み後に行うようにして、最初の読み込み速度を大幅に改善しました</dd>
<dt>2008/09/20</dt>
<dd>サービスのURLを変更しました。旧URLは新URLに自動的に転送されます</dd>
<dt>2008/07/16</dt>
<dd>はてなブックマークの関連エントリ表示機能を取り込みました</dd>
<dt>2008/05/23</dt>
<dd>★（はてなスター）がついたコメントだけを表示する機能を新たに付けました</dd>
</div>
<h3 id="t5dad3b">参考サイト</h3>
<dl>
<dt><a href="http://www.akatsukinishisu.net/itazuragaki/js/quote_markup.html" title="引用マークアップを生成 - 徒書">引用マークアップを生成 &#8211; 徒書</a></dt>
<dd>このスクリプトを拝借して改編して使用しています。</dd>
<dt><a href="http://d.hatena.ne.jp/toku-hiro/20061203" title="PHPなオブジェクト指向入門vol.3（後半） - 真夜中のプログラミングTips">PHPなオブジェクト指向入門vol.3（後半） &#8211; 真夜中のプログラミングTips</a></dt>
<dd>初めて「継承」を使ってみました。機能を追加する分にはこれが便利ですが、機能が肥大化してきた場合にはちょっと別の策を練る必要があるかも。</dd>
</dl>
<img src="http://note.openvista.jp/?ak_action=api_record_view&id=323&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/hatena-bookmark-viewer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>書籍在庫一括検索サービス ver 0.2：Making OPAC 2.0</title>
		<link>http://note.openvista.jp/2008/bookstore-stock-check-v2/</link>
		<comments>http://note.openvista.jp/2008/bookstore-stock-check-v2/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 10:27:50 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[プログラミング技術絡み]]></category>
		<category><![CDATA[図書館]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/241/</guid>
		<description><![CDATA[リアル書店在庫一括検索サービスをアップデートしました（対応店舗拡大・地域限定オプション・携帯端末対応）]]></description>
			<content:encoded><![CDATA[<p>アップデートのお知らせも、たまには新しいエントリを立てて告知してみます。</p>
<p class="right-box"><a href="http://note.openvista.jp/download/2008/01/touch_stock.png" rel="lightbox" title="在庫検索 on iPod touch"><img src="http://note.openvista.jp/download/2008/01/touch_stock.thumbnail.png" width="133" height="200" title="在庫検索 on iPod touch" alt="在庫検索 on iPod touch" /></a></p>
<h3 id="t10a8ff">機能拡充について</h3>
<h4 id="tf20cc4">対応店舗の拡大（紀伊國屋書店）</h4>
<p><a href="http://note.openvista.jp/235/" title="Liner Note - 紀伊國屋書店、旭屋書店、ジュンク堂書店の在庫情報をまとめて確認できるサービスーMaking OPAC 2.0 (1)">先日</a>作った<a href="http://tech.openvista.jp/stock/" title="書店在庫検索">書店在庫一括検索サービス</a>ですが、<a href="http://note.openvista.jp/235/#comment-1224" title="Liner Note - 紀伊國屋書店、旭屋書店、ジュンク堂書店の在庫情報をまとめて確認できるサービスーMaking OPAC 2.0 (1)">worris</a>さんに紀伊國屋書店のモバイル版サイトならより多くのサイトに対応していると教えていただいたので対応してみました（PC版では26店ですが、モバイル版では63店に対応しています）</p>
<h4 id="t853853">地域限定オプションの追加</h4>
<p>また、<a href="http://note.openvista.jp/235/#t67dd41" title="Liner Note - 紀伊國屋書店、旭屋書店、ジュンク堂書店の在庫情報をまとめて確認できるサービスーMaking OPAC 2.0 (1)">つけようと思っていた地域を限定して検索するオプション</a>も加えました。それと、以前は在庫がある書店のみ表示していましたが、ちょっと不親切だと思ったので、在庫がない書店についても表示しないのではなく、「在庫切れ」であると書き加えた上で表示するようにしました。</p>
<p>まぁ、こう一口に書くと簡単なんですが、PC版とモバイル版では取得の方法が違ってくるので<span class="weaken">（PC版は1ページだが、モバイル版は店舗毎にページが分かれている）</span>、プログラム全体を見直さないといけなかったりして結構しんどかったです。</p>
<p>モバイル版は1ページ毎に分かれているため、それだけ多くリクエストを送ると、処理が遅れますし相手のサーバにも負荷がかかります。よって、まずPC版からできるだけの情報を取得し、取得仕切れなかった分についてのみ、モバイル版のサイトにリクエストすることにしました<span class="weaken">（ちなみに、モバイル版は取得に0.6秒/1ページくらいかかります、相手のサーバの話ですからこれはどうしようもないですね）</span></p>
<p>なお、モバイル版にリクエストせずにPC版の在庫情報だけ取得する方法も「簡易版」として用意してあります。紀伊國屋書店のサーバに優しくしたい方、処理に時間をかけずにサクサク行きたい人は「簡易版」をご使用ください。</p>
<p>なお、この「簡易版」と「拡張版（モバイル取得版）」のモードオプションの導入に伴って、検索方法を一括検索一本に絞ることにしました（書店個別検索は廃止）。</p>
<h4 id="t4f2f6c">携帯端末への対応</h4>
<p>ついでに、オマケとして携帯端末<span class="weaken">（DoCoMo, au, SoftBank, iPhone/iPod touch、それにOpera Mini, NetFront）</span>からアクセスされた場合、見やすいように整形するようにしました。リンクURLも微妙にモバイル用に変えてあります。</p>
<p>まぁ、こんなとこでしょうか。あと、<a href="http://www.books-sanseido.co.jp/" title="三省堂書店">三省堂書店</a>も在庫情報を取れるようなのですが、うちのOperaではうまく検索できなかったので、ここは今回取得しないことにしました。</p>
<h4 id="t882ff9">URL変更</h4>
<p>なんだかURLがカコ悪かったので、dev.openvista → tech.openvista.jp に移動しました。もちろん、旧URLもリダイレクトしていますので別段書き換えていただかなくても、すぐにアクセスできなくなることはありません。</p>
<h4 id="tdff4cf">その他仕様変更</h4>
<p>上記のような機能追加に従って、ある程度仕様を変更します。まず、アクセスするURLは以下のように（普通に使う人は意識しなくて良いです）</p>
<p><del datetime="2008-03-18T00:17:10+09:00" class="block"></p>
<dl>
<dt>新URL</dt>
<dd><code>http://tech.openvista.jp/モード/検索地域/ISBN.ファイル形式</code></dd>
<dt>旧URL</dt>
<dd><code>http://dev.openvista.jp/書店名/ISBN.ファイル形式</code></dd>
</dl>
<p></del></p>
<p><ins datetime="2008-03-18T00:17:10+09:00" class="block"><br />
通常、簡易版と拡張版の二つのモードがありましたが、拡張版に統一しました。現在の各アイテムのページURLは<code>http://tech.openvista.jp/検索地域/ISBN.ファイル形式</code>となります。<br />
</ins></p>
<h3 id="t67347b">参考URL</h3>
<p>主に携帯端末への対応に関する参考URLです</p>
<ul>
<li><a href="http://worris.blog61.fc2.com/blog-entry-47.html" title="無用の科学あるいは錬金術 Amazon.co.jpで見た本を紀伊國屋書店で立ち読み購入するGreasemonkey">無用の科学あるいは錬金術 Amazon.co.jpで見た本を紀伊國屋書店で立ち読み購入するGreasemonkey</a></li>
<li><a href="http://miniturbo.org/memo/2006/12/29/034842/" title="miniturbo::Memo - 携帯電話での文字コード対応表 まとめ">miniturbo::Memo &#8211; 携帯電話での文字コード対応表 まとめ</a></li>
<li><a href="http://www.limy.org/program/mobile/uid.html" title="携帯端末の個体識別情報(uid)取得方法">携帯端末の個体識別情報(uid)取得方法</a></li>
<li><a href="http://sarabande.info/wiki/User-Agent#au" title="User-Agent - Sarabande Wiki">User-Agent &#8211; Sarabande Wiki</a></li>
<li><a href="http://d.hatena.ne.jp/zebevogue/20080109" title="2008-01-09 - ZeBeVogue別館">2008-01-09 &#8211; ZeBeVogue別館</a></li>
<li><a href="http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E5%9C%B0%E5%9F%9F#.E6.9C.AC.E5.B7.9E" title="日本の地域 - Wikipedia">日本の地域 &#8211; Wikipedia</a></li>
</ul>
<img src="http://note.openvista.jp/?ak_action=api_record_view&id=317&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2008/bookstore-stock-check-v2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大手4書店の在庫情報をまとめて確認できるサービス：Making OPAC 2.0</title>
		<link>http://note.openvista.jp/2007/bookstore-stock-check/</link>
		<comments>http://note.openvista.jp/2007/bookstore-stock-check/#comments</comments>
		<pubDate>Sat, 29 Dec 2007 18:17:32 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[プログラミング技術絡み]]></category>
		<category><![CDATA[図書館]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/235/</guid>
		<description><![CDATA[紀伊國屋書店、旭屋書店、ジュンク堂書店、丸善のウェブサイトから、在庫情報をまとめて取得して表示するアプリを書きました]]></description>
			<content:encoded><![CDATA[<p>題字の通り。ISBNを指定して検索すると紀伊國屋書店、旭屋書店、ジュンク堂書店、丸善などの本屋さんの在庫情報を取得して表示するアプリを書きました。旭屋書店とジュンク堂書店は在庫冊数も表示します。</p>
<p><a href="http://tech.openvista.jp/stock/" title="書店在庫検索"><img src="http://note.openvista.jp/download/2007/12/stock1.png" width="300" height="169" alt="トップ画面" /></a></p>
<p><a href="http://tech.openvista.jp/stock/ext/select/4873113423.html" title="書店在庫検索： Rasmus Lerdorf, Kevin Tatroe『プログラミングPHP 第2版』"><img src="http://note.openvista.jp/download/2007/12/stock2.png" width="300" height="171" alt="検索結果画面" /></a></p>
<p>3,000円以上する本とかだとやっぱり中身を立ち見したり、他の本と比較してから買いたいので、本屋さんに足を運んで確認するんですね。それで、一応無駄足にならないように事前に書店のサイトで在庫情報を確認するんですが、いちいち各書店の検索ボックスで入力するのが面倒なので一括検索できるようなアプリを作ったと、そういう運びです。</p>
<p><a href="http://tech.openvista.jp/amazon/" title="Amazon.co.jp 書籍検索">Amazon.co.jp ISBN検索アプリ</a>も書いておいたので、よければご利用下さい（まぁ、普通ここから使いますよね）</p>
<div class="toc">
<ol>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#t0631cb">検索オプション</a></p>
<ol>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#tc614b2">ISBN</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#te1bf77">書店名</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#t5b31f3">検索地域</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#tad9fb7">ファイル形式</a></li>
</ol>
</li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#tb2ff5f">これからつけたい機能</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#tdc3e5c">OPAC 2.0について</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#t7f251c">各書店サイト担当者様へ</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#tc66cfb">更新履歴</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#tacb717">感想・参考サイト</a></li>
<li><a href="http://note.openvista.jp/2007/bookstore-stock-check/#t9567cd">ビジターの皆様へ</a></li>
</ol>
</div>
<h3 id="t0631cb">検索オプション</h3>
<p>検索時には以下の3つのオプションが指定できます。</p>
<h4 id="tc614b2">ISBN</h4>
<p>検索する書籍についているISBNです。9桁でも10桁（旧ISBN）でも13桁（新ISBN）でも内部で勝手に変換するので、好きなものを入れてください。</p>
<p>しつこいですが、ISBNが分からない場合は<a href="http://tech.openvista.jp/amazon/" title="Amazon.co.jp 書籍検索">Amazon.co.jp ISBN検索アプリ</a>を使ってください。</p>
<h4 id="te1bf77">書店名</h4>
<p>検索対象の書店です。初期状態では紀伊國屋書店、旭屋書店、ジュンク堂書店の3書店をまとめて検索しますが、どれか1書店だけを検索することもできます。</p>
<p>なお、検索できる店舗はオンラインで在庫を検索できる店舗に限ります。ジュンク堂書店は池袋本店しか検索できないのが残念ですね。</p>
<p>ちなみに、旭屋書店とジュンク堂書店は在庫冊数も併せて表示します。紀伊國屋書店と旭屋書店は本が配置されている棚を示す地図ページへのリンクも張っています。</p>
<p>あと、お約束ですが情報の正確性は完全には保証できませんのでご了承を。情報取得元の書店サイトでも、若干のラグがあるので「実際にはないこともある」くらいの気持ちで使っていただければと思います。</p>
<h4 id="t5b31f3">検索地域</h4>
<p>検索地域を限定して検索します。47都道府県のどれかを指定してください。</p>
<h4 id="tad9fb7">ファイル形式</h4>
<p>検索結果はHTML, XML, JSONのいずれかで返却します。XMLやJSONの構造がどんな感じになっているかは実際アクセスして確かめてください。</p>
<p>なお、リクエストするURLは、<code>http://tech.openvista.jp/地域名/ISBN.ファイル形式</code>という感じの、割と直感的に理解できそうなURLにしたつもりです。</p>
<h3 id="tb2ff5f">これからつけたい機能</h3>
<p>忘れないようにメモ</p>
<ul>
<li>検索対象の店舗がある地域を限定する機能</li>
<li>行動手順からすればISBN検索ページをメインページにした方がいいかも？</li>
<li>携帯電話/iPod touchでの表示最適化</li>
</ul>
<h3 id="tdc3e5c">OPAC 2.0について</h3>
<p>OPACは図書館のデジタル蔵書検索サービスのことです。2.0ってのはうーん、プレミアムとかそういうマーケティング的なアレです、たぶん。要するに、新しい図書館蔵書検索サービスです。まぁ、OPAC 2.0についてはウェブにいろんなリソースがあるので、詳しくはそちらをご覧下さい。</p>
<ul>
<li><a href="http://toshokan.weblogs.jp/blog/2007/05/post_3cd0.html" title="図書館退屈男: うぇぶ2.0の器量を伏して">図書館退屈男: うぇぶ2.0の器量を伏して</a></li>
<li><a href="http://www13.atwiki.jp/superopac/pages/18.html" title="superopac @Wiki - OPAC2.0">superopac @Wiki &#8211; OPAC2.0</a></li>
<li><a href="http://ci.nii.ac.jp/vol_issue/nels/AN10005857/ISS0000389756_jp.html" title="CiNii - 情報の科学と技術 56(11) - 目次">CiNii &#8211; 情報の科学と技術 56(11) 「特集：図書館とWeb2.0」</a></li>
<li><a href="http://ci.nii.ac.jp/naid/110006380789/" title="CiNii - デジタルコンテンツの彼方に図書館の姿を求めて（特集：デジタルコンテンツの進展と図書館）">CiNii &#8211; 情報の科学と技術 57(9) デジタルコンテンツの彼方に図書館の姿を求めて</a></li>
</ul>
<p>それで、私は大学で図書館情報学を専攻しているんですが、卒論の題材として2.0なOPACでも作ろうかということになったんですね。もちろん巨大なOPACを作れるわけないので、そういう部分は<a href="http://next-l.slis.keio.ac.jp/wiki/wiki.cgi" title="FrontPage - Project Next-L">Next-L</a>や<a href="http://www.moongift.jp/2007/10/scriblio/" title="MOONGIFT: » 次世代型OPAC「Scriblio」:オープンソースを毎日紹介">Scriblio</a>なんかのプロジェクトに期待するとしまして、実際に作るのは一般のユーザが触れる部分（だけ）です。詰まるところ、大学図書館のOPACの検索結果を取ってきて、再構成してみると面白いかもという話です。</p>
<p>「それがこのアプリとどう関係あるんだ」と思われるでしょうけど、早い話このアプリもそのプロジェクトのパーツとして作ったというのも1つあります。ウェブにいらっしゃる図書館情報学徒の皆さんはこれを何に使うかくらいは容易に思いつかれるでしょう。他には<a href="http://www13.atwiki.jp/superopac/pages/18.html" title="superopac @Wiki - OPAC2.0">superopac@Wiki &#8211; OPAC2.0</a>などに書かれているようなところも含めてどういうOPACがよいか検討しているところです。</p>
<p>今は就活中なので当分は手が出せませんが、来年の夏くらいには初期のユーザビリティテストも終えて実際に動くモノを出していきたいなぁと思ってます。</p>
<h3 id="t7f251c">各書店サイト担当者様へ</h3>
<p>このアプリは各書店様の著作権を侵害する意図を持って書いたわけではなく、著作権（日本の法律のそれではなく一般概念として）のフェアユースの概念を意識して書きました。書店へのアクセシビリティが高まって各書店様にとってよいのではと思いますが、いかがでしょうか。</p>
<h3 id="tc66cfb">更新履歴</h3>
<dl class="update">
<dt>v 0.3.1</dt>
<dd>ブラウザのCOOKIE機能を利用して、一度選択した検索先都道府県を次回以降も選択状態になるようにしました</dd>
<dt>v 0.3</dt>
<dd>丸善24店舗を検索対象に追加いたしました</dd>
<dt>v 0.2.2</dt>
<dd>モードを廃止しました。それに伴い、各アイテムページのURLが変更になります<span class="weaken">（エンドユーザ様に行っていただく作業はありません）</span></dd>
<dt>v 0.2.1</dt>
<dd>一部、携帯端末で正常に検索できなかった問題を解決</dd>
<dd>ISBN以外の文字で検索した場合、自動的にAmazon書籍検索に引き継ぐようにした</dd>
<dt>v 0.2</dt>
<dd>紀伊國屋書店の対応店舗を拡大しました</dd>
<dd>地域限定オプションを追加しました</dd>
<dd>携帯端末に対応しました</dd>
<dt>v 0.1.1</dt>
<dd>9, 13桁ISBNで正常に表示・検索できていなかった問題を解決</dd>
<dt>v 0.1</dt>
<dd>初リリース</dd>
</dl>
<h3 id="tacb717">感想・参考サイト</h3>
<p>今回はようやくというか、やっとクラスを使ってMVC構造を意識しながら書くようになったので、ソースもそこそこまともになってきたかなと思います。それでも、まだまだ手と頭の回転が遅いので、もう少しなんとかしたいところですが。</p>
<p>AmazonECS4はページ指定のオプションが<code>Page</code>だと無効で、<code>ItemPage</code>を使わないとうまくいかなくて随分とハマりました（参考：<a href="http://developer.amazonwebservices.com/connect/thread.jspa?messageID=72945" title="Amazon Web Services Developer Connection : ItemSearchでのPage指定 ...">Amazon Web Services Developer Connection : ItemSearchでのPage指定 &#8230;</a>）</p>
<p>amazon.co.jpへのリンクについては<a href="http://note.openvista.jp/187/" title="Liner Note - Amazon LinkageプラグインーAmazonアソシエイト for WordPress">Amazon Linkageプラグイン</a>をまるまる流用できたので、結構楽できました。もち、クリック情報も表示してます。</p>
<p>作成にあたっては以下のサイトを参考にしました。どうも、ありがとうございました。</p>
<dl>
<dt>一般的な資料</dt>
<dd>
<ul>
<li><a href="http://www.jissen.ac.jp/library/frame/chap2-3.htm" title="在庫状況が分かる日本の書店">在庫状況が分かる日本の書店</a></li>
<li><a href="http://www.marusankakusikaku.jp/archives/2007/01/06-isbn-asin.html" title="ISBNコード(とASIN)のまとめ">ISBNコード(とASIN)のまとめ</a></li>
</ul>
</dd>
<dt>PHPによるウェブページの取得について</dt>
<dd>
<ul>
<li><a href="http://sticker20.seesaa.net/article/25262160.html" title="sticker20（ステッカー ニーマル） 開発ブログ: domなphp">sticker20（ステッカー ニーマル） 開発ブログ: domなphp</a></li>
<li><a href="http://blog.koshigoe.jp/archives/2007/04/phpdomdocument.html" title="KoshigoeBLOG: PHPのDOMDocumentの文字化けなど">KoshigoeBLOG: PHPのDOMDocumentの文字化けなど</a></li>
<li><a href="http://noongoro.main.jp/note/note0050.html" title="PHPの正規表現のpreg_match()関数">PHPの正規表現のpreg_match()関数</a></li>
<li><a href="http://www.marusankakusikaku.jp/archives/2007/04/14-scraping-parse.html" title="HTMLをスクレイピングして解析(パース)する">HTMLをスクレイピングして解析(パース)する</a></li>
</ul>
</dd>
<dt>PHP5のオブジェクト指向について</dt>
<dd>
<ul>
<li><a href="http://d.hatena.ne.jp/toku-hiro/archive?word=%a5%aa%a5%d6%a5%b8%a5%a7%a5%af%a5%c8%bb%d8%b8%fe" title="「オブジェクト指向」の検索結果一覧 - 真夜中のプログラミングTips">真夜中のプログラミングTipsーオブジェクト指向入門</a></li>
<li><a href="http://www.scollabo.com/banban/php/php_11.html" title="クラスとオブジェクト/PHP入門">クラスとオブジェクト/PHP入門</a></li>
<li><a href="http://www.phpbook.jp/class/index.html" title="PHPでのクラス利用">PHPでのクラス利用</a></li>
</ul>
</dd>
</dl>
<h3 id="t9567cd">ビジターの皆様へ</h3>
<p>最後になりますが、今年もこのブログをご覧いただきありがとうございました。また、来年もグーグルからお会いすることがあれば、至らない点をコメント欄やソーシャルブックマークなどからご指摘いただければと思います。</p>
<p>ちなみに、ユーザの方からお願いをいただいているWordPressのテーマ、遅れに遅れていますが、一応今も作ってます。このブログのデザインのまま配布するのも芸がないかなと思うので、いろいろと試行錯誤しているところです。年内に間に合わなくてスイマセン。</p>
<img src="http://note.openvista.jp/?ak_action=api_record_view&id=300&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2007/bookstore-stock-check/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>はてなブックマークのタグ一覧をGoogle Chart APIを使って円グラフにしてみる</title>
		<link>http://note.openvista.jp/2007/hatena-bookmark-tag-graph/</link>
		<comments>http://note.openvista.jp/2007/hatena-bookmark-tag-graph/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 06:29:01 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[プログラミング技術絡み]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/292/</guid>
		<description><![CDATA[指定したURLに関する「はてなブックマーク」でのタグ一覧を、Google Chart APIを使って円グラフにするスクリプトを書いてみました]]></description>
			<content:encoded><![CDATA[<p><a href="http://note.openvista.jp/291/" title="Liner Note - はてブバリュー：はてなブックマークのブックマーク数とコメントを点数にしてURLを評価してみる">昨日のエントリ</a>の副産物です。はてなブックマークから指定したURLのタグ一覧を取ってきて、そのトップ10をグラフ画像にして返すよなスクリプトを書きました。</p>
<p>例えば、「<a href="http://note.openvista.jp/211/" title="Liner Note - 無償で商用利用できて品質の高い日本語フォント一覧">無償で商用利用できて品質の高い日本語フォント一覧</a>」でグラフを作ると、こんな感じになります。</p>
<p><img src="http://tech.openvista.jp/bookmark/graph.cgi?url=http://note.openvista.jp/211/" width="450" height="200" alt="タグリスト" /></p>
<h3 id="ta6a9ed">使い方</h3>
<p><samp>http://tech.openvista.jp/bookmark/graph.cgi?url=グラフを作りたいURL</samp>という感じでURLを指定してください。また、以下のようにパラメータを指定することもできます。その場合は各パラメータを<samp>&amp;</samp>でつないで並べてください<sup><a href="http://note.openvista.jp/2007/hatena-bookmark-tag-graph/#footnote_0_295" id="identifier_0_295" class="footnote-link footnote-identifier-link" title="例：http://tech.openvista.jp/h-value/graph.cgi?url=http://example.com/&amp;amp;width=300&amp;amp;height=300&amp;amp;color=mono">1</a></sup></p>
<table>
<tr>
<th>必須</th>
<th>パラメータ</th>
<th>初期値</th>
<th>説明</th>
<th>例</th>
<th>例の意味</th>
</tr>
<tr>
<td>○</td>
<td>url</td>
<td></td>
<td>グラフを作りたいURL</td>
<td>u=http://example.com/</td>
<td>http://example.comを対象にした円グラフを作成する</td>
</tr>
<tr>
<td></td>
<td>width</td>
<td>450</td>
<td>画像の幅(px)</td>
<td>w=300</td>
<td>画像の幅を300pxにする</td>
</tr>
<tr>
<td></td>
<td>height</td>
<td>200</td>
<td>画像の高さ(px)</td>
<td>h=300</td>
<td>画像の高さを300pxにする</td>
</tr>
<tr>
<td></td>
<td>type</td>
<td>p3</td>
<td>グラフの種類。&#8221;p&#8221;だと平面の円グラフ、&#8221;p3&#8243;だと立体の円グラフ</td>
<td>t=p</td>
<td>グラフは平面円グラフで出力する</td>
</tr>
<tr>
<td></td>
<td>color</td>
<td>color</td>
<td>グラフをカラー(&#8220;color&#8221;)にするか、グレースケール(&#8220;mono&#8221;)にするか</td>
<td>c=mono</td>
<td>画像をグレースケールにする</td>
</tr>
</table>
<h3 id="t054557">感想など</h3>
<p>例のように、Google Chart APIはまだ漢字を習っていないようなので、Mecabを使って全部ひらがなにして送っています。あと細々とした編集としてはタグを10個までにしたり、最大値を100にして値を再配分するとかですね。</p>
<p>しかし、Google Chart APIって簡単ですねー、手軽にグラフ作成ができるとなるといろんなものをグラフ化したくなってきますw</p>
<h3 id="t67d610">参考にしたサイト</h3>
<ul>
<li><a href="http://code.google.com/apis/chart/" title="Developer's Guide - Google Chart API - Google Code">Developer&#8217;s Guide &#8211; Google Chart API &#8211; Google Code</a>
</li>
<li><a href="http://d.hatena.ne.jp/amass/20071214/1197615965" title="Google Chart APIを使ってみる(その１ 円グラフ) - めもいか">Google Chart APIを使ってみる(その１ 円グラフ) &#8211; めもいか</a></li>
<li><a href="http://hain.jp/index.php/tech-j/2007/10/15/xrea%E3%81%A7CGI%E3%81%AEPHP%E3%82%92%E4%BD%BF%E3%81%86" title="xreaでCGIのPHPを使う本当の方法 - ぎじゅっやさん">xreaでCGIのPHPを使う本当の方法 &#8211; ぎじゅっやさん</a></li>
</ul>
<ol class="footnotes"><li id="footnote_0_295" class="footnote">例：<samp>http://tech.openvista.jp/h-value/graph.cgi?url=http://example.com/&amp;width=300&amp;height=300&amp;color=mono</samp></li></ol><img src="http://note.openvista.jp/?ak_action=api_record_view&id=295&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2007/hatena-bookmark-tag-graph/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>はてブバリュー：はてなブックマークのブックマーク数とコメントを点数にしてURLを評価してみる</title>
		<link>http://note.openvista.jp/2007/hatena-bookmark-value/</link>
		<comments>http://note.openvista.jp/2007/hatena-bookmark-value/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 18:12:50 +0000</pubDate>
		<dc:creator>hash</dc:creator>
				<category><![CDATA[ウェブサービスの制作]]></category>
		<category><![CDATA[ウェブサービス論]]></category>
		<category><![CDATA[プログラミング技術絡み]]></category>

		<guid isPermaLink="false">http://note.openvista.jp/291/</guid>
		<description><![CDATA[はてなブックマークのブックマーク数とコメントを点数化してURLを評価するスクリプトを書いてみました]]></description>
			<content:encoded><![CDATA[<p>最近はどこのブログに行っても、はてなブックマークのカウンタが見られるようになって、はてなブックマーク数（量）＝コンテンツの質だと捉えられがちな向きさえある感じがします。</p>
<p>で、そのことに対する反応は<a href="http://d.hatena.ne.jp/myrmecoleon/20070718/1184775133" title="はてブ指数 - Myrmecoleon in Paradoxical Library. はてな新館">はてブ指数</a>の記事をブックマークしたときにも書いたのだけど、似たようなことは<a href="http://b.hatena.ne.jp/I11/20070720#bookmark-5320202" title="はてなブックマーク - ラージアイ・イレブンのブックマーク / 2007年07月20日">id:I11さんも言っていて</a>、それは<q cite="http://b.hatena.ne.jp/I11/20070720#bookmark-5320202">ブックマークは肯定的引用だけとは限らない。興味本位、ネガティブな評価、嘲笑などを含む。はてブ指数はダイアリーの質とは関係ない。</q>というもの。</p>
<p>で、じゃあこの<q>興味本位、ネガティブな評価、嘲笑</q>とかあるいは逆のポジティブな評価を含めて評価できないものかなと。「ブックマークコメントの内容を使えばいーじゃん」ってことで早速実装してみることにしました。</p>
<div class="toc">
<ol>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#t978dd9">何してるの？</a></li>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#t736d03">評価の例</a></li>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#t86fc3a">課題と限界</a></li>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#tb67714">評価手順</a></li>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#t83fc8a">詳しい使い方</a></li>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#te504d2">詳しい人に質問！</a></li>
<li><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#t4c542f">そのほか</a></li>
</ol>
</div>
<p>で、できたものがコレ。<a href="http://d.hatena.ne.jp/myrmecoleon/20070718/1184775133" title="はてブ指数 - Myrmecoleon in Paradoxical Library. はてな新館">id:myrmecoleon</a>さんみたく名前をつけてみる。</p>
<dl>
<dt><a href="http://tech.openvista.jp/bookmark/">はてブバリュー</a></dt>
<dd><a href="http://note.openvista.jp/download/2007/12/hatebu-value1.png" rel="lightbox" title="はてぶバリュースクリーンショット1"><img src="http://note.openvista.jp/download/2007/12/hatebu-value1.thumbnail.png" width="300" height="225" alt="はてぶバリュースクリーンショット1" /></a></dd>
</dl>
<h3 id="t978dd9">何してるの？</h3>
<p>指定したURLのブックマークからユーザのコメントを全部拾って、キーワードに引っかけて、キーワードによってポイントを足したり引いたりしたりして点数化してます。キーワードは大きく分けてコンテンツに対して<em>肯定的なモノ</em>、<em>否定的なモノ</em>、そして<em>逆接</em>の3つです。ちなみに逆接とは、例えば「いいんだけど、～がおかしい」の部分の「けど」の部分です。</p>
<p>まず、ブックマークを能動的な評価行動と考えて、まず1ブックマークあたり1ポイント加えます。肯定的なキーワードがあった場合は1ブックマークあたり10ポイント、否定的なキーワードの場合は-10ポイント、逆接は-4ポイントとしています。</p>
<p>これらを全部足しあわせて総合点を求めてます。</p>
<h3 id="t736d03">評価の例</h3>
<p>2007-12-15のAM2時くらいにはてブの<a href="http://b.hatena.ne.jp/hotentry" title="はてなブックマーク - 人気エントリー">人気エントリー</a>入りしていたものを投げてみました（数値はいずれも測定時のものです）</p>
<table>
<tr>
<th>対象（サイト名略）</th>
<th><abbr title="ブックマーク">ブクマ数</th>
<th>点数</th>
<th><abbr title="ブックマーク">ブクマ数</abbr>との差</th>
<th>加点・減点</th>
</tr>
<tr>
<td><a href="http://kensuke-miyazaki.blog.drecom.jp/archive/146" title="ドリコム退職にあたり-宮崎謙介⇒加藤謙介（＠ドリコム）の誰にも見せないつもりの日記" rel="nofollow">ドリコム退職にあたり</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://kensuke-miyazaki.blog.drecom.jp/archive/146" rel="nofollow">202 users</a></td>
<td>134 点</td>
<td>-68</td>
<td>プラス評価90<br />マイナス評価-158</td>
</tr>
<tr>
<td><a href="http://www.ideaxidea.com/archives/2007/12/yahoo_shortcutswordpress.html" title="Yahoo! ShortcutsっていうWordPressのプラグインがなんかとてつもなくすごい件について | IDEA*IDEA" rel="nofollow">Yahoo! ShortcutsっていうWordPressのプラグインが（略）</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://www.ideaxidea.com/archives/2007/12/yahoo_shortcutswordpress.html" rel="nofollow">310 users</a></td>
<td>420 点</td>
<td>+110</td>
<td>プラス評価160<br />マイナス評価-50</td>
</tr>
<tr>
<td><a href="http://d.hatena.ne.jp/masayang/20071213/1197534511" title="迷ったら狩野さん！...狩野分析法による優先度付け - masayangの日記（ピスト通勤他" rel="nofollow">迷ったら狩野さん！&#8230;狩野分析法による優先度付け</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/masayang/20071213/1197534511" rel="nofollow">256 users</a></td>
<td>294 点</td>
<td>+38</td>
<td>プラス評価80<br />マイナス評価-42</td>
</tr>
<tr>
<td><a href="http://business.nikkeibp.co.jp/article/topics/20071212/143054/" title="日本の裁判官がおかしい (ニュースを斬る)：NBonline(日経ビジネス オンライン)" rel="nofollow">日本の裁判官がおかしい</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://business.nikkeibp.co.jp/article/topics/20071212/143054/" rel="nofollow">182 users</a></td>
<td>42 点</td>
<td>-140</td>
<td>プラス評価40<br />マイナス評価-180</td>
</tr>
<tr>
<td><a href="http://coliss.com/articles/build-websites/operation/design/687.html" title="2007年ウェブデザインの６つのトレンド | コリス" rel="nofollow">2007年ウェブデザインの６つのトレンド</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://coliss.com/articles/build-websites/operation/design/687.html" rel="nofollow">144 users</a></td>
<td>140 点</td>
<td>-4</td>
<td>プラス評価0<br />マイナス評価-4</td>
</tr>
<tr>
<td><a href="http://www.xhtml-css.com/" title="XHTML-CSS Validator" rel="nofollow">XHTML-CSS Validator</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://www.xhtml-css.com/" rel="nofollow">247 users</a></td>
<td>247 点</td>
<td>±0</td>
<td>プラス評価10<br />マイナス評価-10</td>
</tr>
<tr>
<td><a href="http://web-tan.forum.impressrd.jp/e/2007/12/13/2005" title="新米Web担当者もこれで安心！8つのステップで始める実践アクセス解析（前半） | Web担当者Forum" rel="nofollow">新米Web担当者もこれで安心！8つのステップで（略）</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://web-tan.forum.impressrd.jp/e/2007/12/13/2005" rel="nofollow">344 users</a></td>
<td>366 点</td>
<td>+22</td>
<td>プラス評価30<br />マイナス評価-8</td>
</tr>
<tr>
<td><a href="http://gigazine.net/index.php?/news/comments/20071214_divx_pro_free/" title="DivX Proのシリアルナンバーが期間限定で無料配布中 - GIGAZINE" rel="nofollow">DivX Proのシリアルナンバーが期間限定で無料配布中</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://gigazine.net/index.php?/news/comments/20071214_divx_pro_free/" rel="nofollow">96 users</a></td>
<td>108 点</td>
<td>+12</td>
<td>プラス評価20<br />マイナス評価-8</td>
</tr>
<tr>
<td><a href="http://portal.nifty.com/2007/12/14/a/" title="@nifty：デイリーポータルZ：究極の飲み放題の店" rel="nofollow">究極の飲み放題の店</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://portal.nifty.com/2007/12/14/a/" rel="nofollow">111 users</a></td>
<td>163 点</td>
<td>+52</td>
<td>プラス評価110<br />マイナス評価-58</td>
</tr>
<tr>
<td><a href="http://www.itmedia.co.jp/news/articles/0712/13/news084.html" title="Second Lifeはてな版？　仮想世界「はてなワールド」β公開 (1/2) - ITmedia News" rel="nofollow">Second Lifeはてな版？　仮想世界「はてなワールド」β公開</a></td>
<td><a href="http://b.hatena.ne.jp/entry/http://www.itmedia.co.jp/news/articles/0712/13/news084.html" rel="nofollow">315 users</a></td>
<td>301 点</td>
<td>-14</td>
<td>プラス評価110<br />マイナス評価-124</td>
</tr>
</table>
<p>妥当性としてはまずまずの結果かも。最後のはてなワールドの記事はコメントの勢いからすると、減点が多すぎるかなぁ。</p>
<h3 id="t86fc3a">課題と限界</h3>
<p>すぐに分かると思うんですけど、単純な肯定 or 否定コメントをカウントしているだけなので、内容に込み入った批判などは評価ポイントとして拾えません。</p>
<p>そうしたものを拾うのならば、<a href="http://newsing.jp/" title="ソーシャルニュースサイト - newsing（ニューシング）">newsing</a>みたいな○×機能をはてな側で導入してもらうしかありませんが、はてなスターをリリースしたことから見ると対応することはないでしょうね。</p>
<p>あと、コンテンツの評価に関係ない文脈でのコメントも拾ってしまう（「私は○○がいいと思う」とか）のが難点ですね。</p>
<h3 id="tb67714">評価手順</h3>
<p>ちなみに、評価の手順はこんな感じです。</p>
<ol>
<li>ブックマークのコメントを取得</li>
<li>Mecabを使って漢字かな交じりのコメントをすべてひらがなに変換（評価の精度を上げるため）</li>
<li>コメントにキーワードが含まれているか調査</li>
<li>調査結果に基づいて、得点を算出</li>
</ol>
<p>キーワードについては、ホットエントリーや炎上しているエントリーなどを参考にして独断と偏見で決めました。コンテンツの評価が目的ですので、否定的だと思われるコメントにはできるだけ人格批判を含めないようにしました<sup><a href="http://note.openvista.jp/2007/hatena-bookmark-value/#footnote_0_293" id="identifier_0_293" class="footnote-link footnote-identifier-link" title="ただ、否定的なコメントというのは人格批判スレスレなところもあって、どこまでそれを拾うのかという線引きはムズいですね">1</a></sup> 。</p>
<p>下にWikiを置いておくので、もしコレを加えた方がいいんじゃね？というのがあったら加えてみてください。あとで参考にさせていただきます。</p>
<p class="wiki"><object data="http://tech.openvista.jp/miniwiki/?20071214" type="text/html" width="100%" height="350"><a href="http://tech.openvista.jp/miniwiki/?20071214">Wiki画面を表示</a></object></p>
<h3 id="t83fc8a">詳しい使い方</h3>
<p>基本的には、<samp>http://tech.openvista.jp/bookmark/entry/エントリーのURL</samp>という形でアクセスすると（HTML形式で）結果を返します。<samp>http://tech.openvista.jp/bookmark/xml/エントリーのURL</samp>だとXML形式、<samp>http://tech.openvista.jp/bookmark/json/エントリーのURL</samp>だとJSON形式で結果を返します。</p>
<h3 id="te504d2">詳しい人に質問！</h3>
<p>詳しい人に聞きたいことが一つ、もしご存じでしたら教えてください。URLはmod_rewriteを使って内部で書き換えてるんですが、うまくリダイレクトできないURLがあるんですね。</p>
<p>まず、URL書き換えは<samp>http://tech.openvista.jp/bookmark/entry/http://example.com/</samp>なら<samp>http://tech.openvista.jp/bookmark/index.php?o=entry&#038;u=http://example.com/</samp>となるようにしています。</p>
<p>ですが、これだと ? や # が入っているようなURL、具体的には<samp>http://tech.openvista.jp/bookmark/entry/http://gigazine.net/index.php?/news/comments/20071214_divx_pro_free/</samp>というURLがうまいこと処理できないんですね（<samp>http://tech.openvista.jp/bookmark/index.php?o=entry&#038;u=http://gigazine.net/index.php?</samp>という風に?以降が切れちゃいます）</p>
<p>仕方ないので、書き換え時にQSAオプションを付けて<samp>http://tech.openvista.jp/bookmark/entry/http://gigazine.net/index.php&#038;/news/comments/20071214_divx_pro_free/</samp>という風にしてPHP側で無理矢理URLを取得するようなことをしています。</p>
<p>あまりいい解決方法ではないと思うんですが、もっといい方法をご存じでしょうか？</p>
<p>ちなみに .htaccessファイル は以下のようになっています。</p>
<div class="source-code"><div><img src="http://note.openvista.jp/wp-content/plugins/coolcode/code.png" width="16" height="16" alt="" /> <em>ソースコード</em></div><pre class="source-code"><code>RewriteEngine on
RewriteCond %{REQUEST_URI} ^/bookmark/(entry|html|xml|json)/(.+)$
RewriteRule ^(.*)$ /bookmark/index.php?o=%1&amp;u=%2 [L,QSA]</code></pre></div>
<h3 id="t4c542f">そのほか</h3>
<p>スクリプト作成にあたっては以下を参考にしました。</p>
<ul>
<li><a href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%A5%A8%A5%F3%A5%C8%A5%EA%A1%BC%BE%F0%CA%F3%BC%E8%C6%C0API?kid=184075" title="はてなブックマークエントリー情報取得APIとは - はてなダイアリー">はてなブックマークエントリー情報取得APIとは &#8211; はてなダイアリー</a></li>
<li><a href="http://sarabande.info/2007/11/22/hatena-delicious-json/" title="PHPではてなとdel.icio.usの被ブックマーク数をJSON形式で取得する | Sarabande">PHPではてなとdel.icio.usの被ブックマーク数をJSON形式で取得する | Sarabande</a></li>
<li><a href="http://noongoro.main.jp/note/note0050.html" title="PHPの正規表現のpreg_match()関数">PHPの正規表現のpreg_match()関数</a></li>
<li><a href="http://www.net-newbie.com/trans/mod_rewrite.html" title="Apache module mod_rewrite">Apache module mod_rewrite</a></li>
</ul>
<p>最後になりましたが各ドキュメントを作成された方、Mecabを開発された方に感謝申し上げます。</p>
<ol class="footnotes"><li id="footnote_0_293" class="footnote">ただ、否定的なコメントというのは人格批判スレスレなところもあって、どこまでそれを拾うのかという線引きはムズいですね</li></ol><img src="http://note.openvista.jp/?ak_action=api_record_view&id=293&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://note.openvista.jp/2007/hatena-bookmark-value/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

