「情報管理」をkindleで読む
前に作ったJ-Stageの論文をkindleで読めるよう変換するスクリプトですがいまのところ特に問題なく使えています*1。公開後、図表等の画像もちゃんと表示するように少し手を加えました。
- るるるkindle
http://haseharu.hatenablog.com/entry/2013/03/17/071008
まとめてダウンロードできたら便利かもねえ、と思いつつ。でも全部読むことないし。
1論文あたり3-4MBくらいの容量になるようです。図表等の画像がなければ100-200KB程度。新しいkindle paperwhite欲しいなあとも思いつつ。
*1:といっても情報管理くらいしか読んでないのですが
シェルスクリプト × Web API
シェルスクリプトでWeb API的なものを使うメモ。
たぶんWeb API的なものをつかってデータをがーっともらってくる場合、シェルスクリプトが一番手軽です。
ほんの数行でかけます*1。
たとえば、CiNii API(RDF)を通じてNCIDを使って資料タイトルを取り出す。
1件だけなら1行*2。
curl "http://ci.nii.ac.jp/ncid/AA12227144.rdf" | xpath '//rdf:RDF/rdf:Description/dc:title[1]/text()'
看護・保健科学研究
いいですね。
100件とか1000件とかある場合。while文で。
AA12227144 AA11354292 AN00023058 AN10507651
NCIDを別ファイル(ncid.txt)で用意しておいて、
while read id do DATA=$(curl "http://ci.nii.ac.jp/ncid/${id}.rdf") TITLE=$(echo ${DATA} | xpath '//rdf:RDF/rdf:Description/dc:title[1]/text()') echo ${id}'\t'${TITLE} >> ncid_result.txt done < ncid.txt
で回します。
AA12227144 看護・保健科学研究 AA11354292 千葉看護学会会誌 = Journal of Chiba Academy of Nursing Science AN00023058 榮養學雑誌 AN10507651 日本精神科看護学会誌
無事データとれてます。
他にもたとえば、dc:languageあたりもとりたいよ、という場合、
LANGUAGE=$(echo ${DATA} | xpath '//rdf:RDF/rdf:Description/dc:language/text()')
で追加していけばおっけーです。
NCIDのマッチングが失敗した場合、別途失敗したNCIDをncid_false.txtに書き込む処理をif文で組み込んでみます。
while read id do DATA=$(curl "http://ci.nii.ac.jp/ncid/${id}.rdf") FLAG=$(echo ${DATA} | grep 'DOCTYPE html') if [ "${FLAG}" == "" ] then TITLE=$(echo ${DATA} | xpath '//rdf:RDF/rdf:Description/dc:title[1]/text()') LANGUAGE=$(echo ${DATA} | xpath '//rdf:RDF/rdf:Description/dc:language/text()') DATE=$(echo ${DATA} | xpath '//rdf:RDF/rdf:Description/dc:date/text()') OWNERCOUNT=$(echo ${DATA} | xpath '//rdf:RDF/rdf:Description/cinii:ownerCount/text()') echo ${id}'\t'${TITLE}'\t'${LANGUAGE}'\t'${DATE}'\t'${OWNERCOUNT} >> ncid_result.txt else echo ${id} >> ncid_false.txt fi sleep 1 done < ncid.txt
AA12227144 看護・保健科学研究 jpneng 2001 5 AA11354292 千葉看護学会会誌 = Journal of Chiba Academy of Nursing Science jpn 1996 49 AN00023058 榮養學雑誌 jpn 1941 406 AN10507651 日本精神科看護学会誌 jpn 1990 82
実はCiNiiでRDF取得する場合、失敗したときの値はxmlで返ってきません。「html」で表示されるため失敗時の条件判断は「grep 'DOCTYPE html'」で判定、という感じにしてあります。
Red Data Books
はじめに
リードテックラボ、CiNii Booksで遊んでみる、の巻です*1。このところ id:kitone と id:otani0083 とあーでもないこーでもない、とやっていた成果の一部として「Red Data Books」というサービスを作りました。まだ試験公開でまったく機能が揃っていませんが。トップページに表示されているのは全国の大学図書館で1冊しか所蔵されていない図書です。ランダムに表示される仕組みになっています。
- Red Data Books
「へー、それだけ?」という反応かなと思います。はい、いまのところそれだけです。
しくみ
技術的な詳細は id:otani0083 が近々発表する予定なので、ここでは書きません。
このサービスの肝となっているのは「どの図書館がどんな本を持っているのか」というデータです。「全国の大学図書館における所蔵館数Nの図書リスト」であったり「各図書館が所蔵している図書リスト」があってはじめて「所蔵館数1の本をランダムで表示する」ということが実現できます*2。
上のようなデータを集めるのは大変だけど今回のように実際に取得できた場合どんなことができるのか。下記のささくれエントリーのような視点で今後、機能を追加していきたいとおもっています。
http://cheb.hatenablog.com/entry/2013/08/24/173533
旅のみちづれ
たぶんきっと id:otani0083 と id:kitone の粋な計らいで。さきほど、Skype参加でたのしそうな旅にまぜてもらえたので少しブログを書きたいと思います。内容はタイトルにぜんぜん関係なくただの作業メモです。
CiNiiのリンクの種類
必要があってCiNii Articlesの外部リンクとGETリクエスト内容の対応関係を調べていました。
GETでは、
name=*
でリンク先の情報と、
id=*
で具体的な個別アイテムのIDを渡しているようです。しかし、けっこういろいろあってびっくり。
機関リポジトリ
http://ci.nii.ac.jp/lognavi?name=ir&lang=jp&type=pdf&id=http%3A%2F%2Fhdl.handle.net%2F11094%2F24780
name=ir , でJAIRO連携分です。
URLデコード後
http://hdl.handle.net/11094/24780
idで渡しているのは上のようにターゲット先となるURLがそのまま渡されています*1。
CiNii PDF オープンアクセス , 定額アクセス可能 , 未公開 , 有料
http://ci.nii.ac.jp/lognavi?name=nels&lang=jp&type=pdf&id=ART0010004370
name=nels , NII-ELS分ですね。
J-stage
name=jstg , idはirと同じくURLです。
URLデコード後
http://japanlinkcenter.org/DN/JST.JSTAGE/nmc/52.697?from=CiNii
JOIでリゾルブしていてfrom=CiNiiも渡していますね。
CrossRef
http://ci.nii.ac.jp/lognavi?name=crossref&id=info:doi/10.1093/gji/ggs116
name=crossref , idはDOIです*3。
日経BP
name=rss , idはURLです。
こちらをみるとまだ種類はあるようです。
http://ci.nii.ac.jp/info/ja/articles/manual_bib.html
以上、ざっくりとメモを。また気がついたら更新します。
参考文献情報からDOIを同定する「Reference Search」
はじめに
リードテックラボ、DOIで遊んでみる編です*1。別件の作業の副産物的なものとして、先日CrossRefから公開されたCrossRef metadata search betaのAPIを使って、論文や図書等で引用、参考にされている文献の情報をいれてDOIを検索・同定しフルテキストへたどりつくことができる「Reference Search」を作ってみました。
たとえば、こんな感じの「参考文献情報」のテキストを入れて検索し、
Paul Gray, 2002, 'Knowledge Management', Information Systems Management, vol. 19, no. 1, pp. 89-93 |
当該論文へのフルテキストURL(DOI)を取得するためのツールです。
Reference Search
http://haseharu.org/labs/ref_search/
画面はこんな感じ。
論文を読んでいて引用あるいは参考文献として上げられているテキストデータを特に整形することなくぽいっと検索窓にいれて検索する、あるいはテキスト選択してBookmarkletをクリック、でDOIが同定できてそのままフルテキストを読める(読めない場合もありますが)という感じです。
つかいかた
「論文タイトル、雑誌名、巻号、ページ数」に関するデータをサイトの検索窓へコピペするか入力するか、「論文タイトル、雑誌名、巻号、ページ数」をテキスト選択してBookmarkletを動かす、の2種類で動きます。
使ったもの
基本的にはCrossRefのAPIに「整形していないテキストをまるごと渡してDOIを同定する」機能があるためそれをそのまま使いました。ただしこの機能を使う場合POSTでデータを渡してあげる必要があります。
- CrossRef metadata search beta API
- Bluetrip
補足
DOIのRAとして最大のCrossRefではSimple text queryというサービスを提供しています。今回作った「Reference Search」と同じものです。が、CrossRefのSimple text queryは2010年から「登録制」となってしまい、メールアドレスを登録した上で、利用時にメールアドレスも入力しなければいけない、非常に使い勝手が悪いサービスになりました。あとわざわざサイトにいって「テキストを入力する」のも面倒で、このサービスおもしろそうだなと思ったものの結局自分は一度もまともに使ったことがありません。というわけでAPI公開に合わせて、登録不要で、Bookmarkletから簡単にDOIの検索ができるものがあれば自分も使うんじゃないかと思い作ってみました。
おわりに
今回は取り上げませんでしたが、CrossRef metadata search betaという仕組み自体はけっこうおもしろいです。
- CrossRef metadata search beta
ファセット(資料タイプ、OA、分野、刊行年)による検索結果の絞り込み、ORCIDとの連携など、おもしろいことやってます*5。
- Easily add publications to your ORCID profile
Visual Current Awareness!
はじめに
リードテックラボ、いつもお世話になってるカレントアウェアネスを可視化して遊んでみよう編です。ちょうど一年前、canvasでかりかり書いてたものがあるのでカレントアウェアネスを可視化するのはリードテックラボ的には2度目になります。
- Visual Current Awareness
こんな感じでカレントアウェアネスが可視化されます。
説明
「丸」でカレントアウェアネスの記事を表しています。丸の大きさが違いますが大きさの違いは「はてなブックマーク」数の違いです。はてなブックマークでブックマークされている記事ほど大きく表示される、という仕組みです。カーソルを丸にのせていただくとツールチップでタイトルとはてなブックマークの数が表示されます。
丸かツールチップ上のタイトルをクリックするとカレントアウェアネスの記事を読むことができます。トップページに表示されるのは「カレントアウェアネス R」(CA-R)の記事です。
- CA-R [default]
- CA-E
- CA
- ALL(上の3つ全部。表示されるまでに少し時間かかります)
となっていて、丸の意味は以下の通りです。
- 大きさ → 「はてなブックマーク」の数
- 色 → 緑が「未読の記事」、青が「既読の記事」
処理の流れと使ったもの
PHPでカレントアウェアネスポータルのRSSをそれぞれ取得、はてなブックマークAPIではてなブックマークの数を取得した後、D3.jsにて可視化、というシンプルなものです。
- D3.js
- CAポータルのRSS
- CA,CA-R,CA-Eのリソースを取得
- はてなブックマークAPI
- はてぶ数の取得
- http://b.hatena.ne.jp/help/api
- Visual Hacker News
- 今回、ほとんどこれをそのまま使わせてもらっています。
- https://github.com/ricardmo/vishna
- Twitter Bootstrap
- ツールチップが動かなくなったのでコメントアウトしちゃいましたが
console.logって知ってるかい?
そんな出だしではじまる手紙をこのページに書いてみようと思う。
宛先は10数年後のきみとぼく、だ。
「console.logって知ってるかい?」
中身はこれだけ。
唐突にこんな質問をして、それで終わる。
このページを開いたとき、きみは怪訝な顔をするかもしれない。
すっとそのままページを閉じてしまうだろうか。
それとも誰かに聞いてみるのだろうか。
もしかするとにやっとしているかもしれない。
あるいはすでにこのページを「再現」できる環境にないかもしれない。
それは正直なところ分からない。
答えを一つ書いてしまおうと思う。
console.logはJavascriptでよく使われているデバッグ用の関数だ。
これは答えの一つ。
きっときみはこの答えを読んで「だからなに?」と思うだろう。
そう。 これはたくさんある(はずの)答えの一つに過ぎない。
最後に。
Li:d tech(リードテック、と読む)というものがあってぼくたちはそこで少しずついろんなことを共有している。仕事も生活もいつも全部楽しいことばかり、といいたいところだけど、ところがどっこい、割と思うようにいかないし辛い時期もある。でもそーゆうのも全部ふくめて「悪くない」とも感じている。
いつかきみとそんな話をできたら嬉しい。