oaFinderの公開

はじめに

学術論文誌の出版社サイトに迷い込んだ研究者が目の前にある課金ボタンを押すのではなくて、オープンアクセス(OA)論文へのリンクボタンを押すこともできるようなChrome拡張機能を公開しました。

chrome.google.com

公開したのは9ヶ月ほど前です。

今年のLODチャレンジは何しようかな、と考えて、ちょうどその頃公開されていたoaDOIを触って何かに使えないかなと考えていたのでそれを使うことに。LODチャレンジへの参加は3回目、3年目です。oaFinderという拡張機能を公開してエントリーしたのは2017年1月のはじめのこと*1。今年は計画的に作っていたので、正月は返上せずにすんだかなあというところでした。

oaDOI

idea.linkdata.org

通常であれば、出版社等の論文ページにアクセスした場合、目の前の論文が読める環境(所属組織が購読あるいはオープンアクセス論文)であれば読めますが、非購読を理由に読めない場合、クリックをするごとにその論文を手に入れるためにはいくら必要で、どうやって課金するのか、と課金するしか入手方法がないような課金小径へとどんどこ導かれていく感じになります。そこで、目の前にある論文のOA論文がウェブ上のどこかにあればそこへリンクしてもらえれば嬉しいよね、ということを考えました。出版元のサイトから例えば、この論文、◯◯大学の機関リポジトリに収録されていて機関リポジトリ版であれば無料で読めますよ、とかいうことはやっぱり教えてくれないので。まあ、論文名でググったりすればいいのでしょうが、LODチャレンジ的な発想で、ちょっとスマートに実現する拡張機能を作ってみた、という感じです。

仕組み

流れはわかったけど、目の前の出版社サイトで表示された論文情報のウェブページとoaDOIで公開されているOA論文の公開アドレスをどうやってリンクさせるのだ、という点については、そこが今回の機能の肝となります。oaDOIからOA論文の公開アドレスをひっぱってくるためにはDOIが必要です。目の前にある出版社の論文サイトにはその論文のDOIが画面上どこかに表示されていて、それを抽出すればよい、ということを考えました。2015年のLODチャレンジネタ「ER Linker」でもページ全体からISSNらしき文字列を正規表現で取り出してERDB側のリンク情報と突合させて無償提供のEリソースを活用、という感じにしましたが、今回もほとんど同様でページ全体を正規表現使ってDOIを見つけてしまうやり方です*2。入手したDOIをoaDOIへWeb APIで投げればOA論文の公開ウェブアドレスを返戻するのでそれを画面上に表示します。

haseharu.hatenablog.com

出版社側の論文ページに表示された書誌事項の中にDOIが含まれている、という前提に一度立てればあとは実装方法はなんとでも、ですね。上に書いた通りの力技でもサイトごとに書き切ってやるぜ、でもそれぞれのお好みで、でしょう。幸いなことにCrossrefの方で、検証済みの正規表現があり、ある程度の精度は保証されていたので自分はこれを使いました。

https://www.crossref.org/2015/08/doi-regular-expressions.html

基本的には、目の前にあるページの全てのDOIをえいやと取り出してoaDOIからOA論文のありかのウェブページ情報をとってきます。すべてのページで動作させる設定のため、論文調査の際に論文末尾のレファレンスなどに反応して全部表示すると大変なことになるケースもあるので、3つくらいで順次消えていく設定にしてあります。拡張機能のボタンを押すと、ページ内にあるDOIに対する全てのOA論文を表示してくれます。3つ以上あって、画面から消えてしまうという場合はこちらをクリックしてください。

最後に

ここまで読んで、あれ、これってあれに似てない?と思った方、そうそう、あれです。Impactstoryが2017年3月に公開したUnpaywallです。

Unpaywall

Impactstory、無料公開の研究論文に誘導するChrome拡張機能"Unpaywall"を公開 | カレントアウェアネス・ポータル

重要なことなので、一応書いておきますが、oaFinderの方がリリースは2ヶ月早いのでぱくりではないです。Unpaywallをみて、まあoaDOIの活用法ってこれが王道だよね、と思いました。

Unpaywall公開後、oaDOIにも変化がありました。DOIを検索窓にいれさせてそのOA論文のページを表示するというトップページが消えました。当初はこんな感じ。

oaDOI


まあ、DOIを入力フォームに入力して、OA論文のウェブアドレスを入手する、なんて使い方する人はたぶんあまりいないはず。oaDOI側でも入力フォームはなくしてWeb APIをメインに出します。その後、Web APIの仕様も若干変わってしまい、oaFInder側も結構大きな修正をする必要がありました。oaDOIのWeb APIだけでは論文名などの書誌事項を提供しない仕様になってしまい、oaFinderではCrossrefのAPIも叩きにいく感じに作りかえて、とか。今は1度に2個のウェブサービスのWeb APIを叩いています。なんかここだけは正直ちょっとええーって感じ。

あとは、oaDOIのメタデータをみていると結構いろんなデータが入っていて面白い。

気がつけば11月が見えてきていて、郵便局で年賀状買っている人をみると、今年はLODチャレンジで何をやるかな、と考える程度に、年末を感じる風物詩になりつつ。

締め切りがあるという点でイベント駆動型のものづくりも悪くないなあと思う今日このごろのリードテックです。

*1:エントリーページには1月15日と書いてありました。

*2:この出版社サイトはここにDOIが書かれている、というスクレイピングを実装できれば一番綺麗なんでしょうが、我が家の正月休みもかかってますので、まずはアイディアを実装するための一番簡単な方法で実装。

J-STAGEのデータ

はじめに

ひさびさのブログ更新です。

NII-ELSのサービス終了に伴いJ-STAGEへと論文誌・学会誌等の公開プラットフォームを移行した学協会は多いだろうと思います。

J-STAGEでは論文・記事単位のアクセス分析の結果をエクセルでレポートしてくれるそうなのですが、自分も関わっている協会のアクセスレポートを見せていただいたところ、DOIとアクセス回数がずらり。1万行オーバー。30年分でこのくらいの記事数(行数)になるのか、と壮観でした。

どの記事がどのくらいアクセスされているのかな、という分析をすぐにはじめるのにはこのレポート、DOIがずらりと並んでいるだけでは分析は難しいかもしれません。これは自分が関わっている協会だけの需要じゃないよねと思い、J-STAGEから書誌情報をずらっとダウンロードしてJSTからのレポートとあれこれできるような仕組みを作りました。

J-STAGE Data

ISSNと年情報を入れれば、DOIを含む書誌情報*1をタブ区切りテキストファイルでダウンロードできます。エクセルなどでDOIをキーにJSTからもらえるレポートとマッチングするなりローカルで煮るなり焼くなり好きにしていただければ。

とりあえず公開版は1年分のみ取得可能です。また、利用制限で1回の取得分で1,000件を制限とさせていただきました*2

おわりに

というわけで、構造化データ全盛の中、XMLをテキストファイルに変換する(だけの本当に最低限の)仕組みを公開してみます。エラーはもちろんですが、こんな需要があるかも、など教えていただけると嬉しいです。

LODやらRDFやら、とかく構造化データに目が向きがちですが、XMLJSONで1万件のデータを拾えても、たぶんほとんどの人は扱いに苦労するのだろう、と思います。あくまでもそういう構造化データを使うのは、システム連携などのインフラを作る人であって、対象とするユーザと目的が違うのですが、構造化データがあるなら、扱いやすいこの手の機械可読式のアウトプット方法も残しておくといろんな人がハッピーになれるのかもしれません。

*1:DOI、論文タイトル、出版年、巻号、開始ページ

*2:単にJ-STAGE APIでの一回での取得上の上限が1,000件だっただけ。もし要望があれば対応可能な範囲で対応します。

まさかとは思ったけれども

まさかとは思ったけれども、2016年は一度もブログ更新がなかったようです。
2015年のまとめエントリを半分くらいEvernoteに書いていたのでそれをアップしようと思ったのですが、あまりにも、なので、やめました。以下、2015年と2016年を織り交ぜながら2017年の今の段階で2年分の振り返りを書いておきたいと思います。

2015年は仕事でけっこういろいろあり、もちろんそれなりの気持ちで仕事には取り組んできたつもりだけど、状況が状況なので2015年は自分なりに「(自分が)やりきるしかない」と覚悟を決めました。覚悟を決めた瞬間も覚えていて。自分がとびぬけて得意な仕事だったり、自分でなければならない仕事ではないけれども、このタイミングでここにいたのだから任された期間内は成功した部分も失敗した部分も全部最後まで見届けようと動き続けました。

あと、2015年はリードテックの福岡合宿でした。これは大成功だったんじゃないかな、と思います。2016年はLODチャレンジ以外はほとんど何もしませんでした。といってもLODチャレンジは「これで応募するよ」とメンバーには事後報告、自分一人で動いていたので、まともなリードテック活動はなかったかなと思います。メンバーに申し訳なく思っています。メンバーが東京にくるときも駆けつけることができないことが多く、こういう小さい(けれど自分にとっては大きい)ひとつひとつを切り離してしまいました。

2016年もけっこういろいろありました。2千グラムちょっとの小さいひとがうちにきてくれて。家族がひとり増えました。2月頭のことです。

働いている組織が年度で動いている部分もあり2016年3月末まではバタバタとしていました。朝6時くらいから会社にいることも珍しくなかったし、土日出勤も何度か、終電に飛び乗って一旦家に帰って車にのって高速を使ってまた会社に出勤して深夜3時に帰る->次の日出張、という目も当てられない状況の日もありました。

そんなこんなで、迎えた2016年4月。発足したばかりの新法人へと出向となりました。2015年度中に取り組んでいたのは新法人発足の準備でした。家から少し距離があるので、単身赴任的な感じになりました。

その後は、新しい法人の立ち上がりということで、ばたばたと気がつけば2016年の年末を迎えていました。

特に2016年は仕事も生活も結構変わった一年でした。(家族が)病院にいったり、(家族が)入院してまだ通院が続いていたり、とけっこういろいろありましたが、家族みな元気で年のはじめを迎えられたので、よかったです。

いつものことながら高野文子の「黄色い本」をときどき読み返していました。刊行と同時に買ってから年に何度かは読み返すなあ、と思って調べたら2002年に刊行、でびっくりしました。10年以上も読み返してるとは。あと、こちらもときどき読み返している岡崎京子のリバーズエッジがぼろぼろになったので、手に入るうちに、と愛蔵版を入手しました。

2015年と2016年をまとめて、箇条書きで。
・イベントはとりあえず2016年1月ごろに1つだけ参加したようです。
・手帳は結局、ほぼ日weeklyに戻しました。
・民間のと国のと、資格をいくつかとりました。
・LODチャレンジに2年続けてエントリしました。
・兼職が増えました。
SEO関連を少し真面目に勉強しようと調べていました。
・ちょこちょこと3DSドラクエⅧをやっていました(クリアせず)。
iOSアプリを少し書いていました。
・朝ドラ「まれ」を週末にやる再編集版でみてました。

2017年は、
・今年こそラズパイを買う(何年目?, 3年目?)。
・1日に何度か深呼吸をする。
・家族の写真を管理する良い方法を考える。
Androidアプリ作り。
・リードテックも少しだけ活動を復活?*1

ともかく健康で、また良い一年にしたいです。

本年もよろしくお願いいたします。

*1:今となっては何が「活動」なのか、というところもあり。

ER Linker のリリース

はじめに

ER Linker(E-Resources Linker) をリリースしました。

chrome.google.com


CiNii ArticlesやCiNii Books、NDL Search(NDL OPACは現在未対応)、J-Globalや各種OPACの書誌情報のページなどのあらゆるページでオープンなナレッジベースを利用したリンクを生成する拡張機能です。具体的にはオープンなナレッジベース(現在はERDB-JPに対応)に登録された情報源を利用してリンクを自動で作成し表示します。Google Chrome Extensionです。

f:id:haseharu:20150712154645p:plain

f:id:haseharu:20150712154655p:plain

f:id:haseharu:20150712154713p:plain

f:id:haseharu:20150712154726p:plain

動きの流れと仕組み

ERDB-JP(Electronic Resources Database-JAPAN)は国立情報学研究所が運用しているオープンアクセス誌を共有するための仕組みです。ERDBに登録されたデータはCC0 1.0 Universalとして公開されていて一括ダウンロード可能です。オープンなナレッジベースを活用するためのツールとしてER Linkerを作成しました*1

ERDB │ ニュース

ERDB-JPとは | ERDB-JP

具体的な動き

ページ内で「ISSNらしき文字列」をサーチし、「ISSNらしき文字列」にてERDBのリストへ検索・マッチングすることであらゆるページ上で動作するように作りました*2。あまり特殊な書き方をしていなければ、ISSNが表示されているページであれば、動作すると思います*3

最後に

ぜひ、ERDB-JPについてはWeb APIを公開していただきたいです。今回の実装において、ERDBのデータをいかに持つか、が一番の課題でした*4

*1:以前作成したどこでもリゾルバの流れを汲んでいるので、どこでもリゾルバ for ERDBとも言えます。

*2:公開直前にhttpsでの動作にはまだ未対応,ということに気がつきました。というわけでNDL OPACではまだ動作していません。

*3:動作しないページがあれば教えていただけると幸いです。

*4:Google拡張機能JavaScriptで動作しています。拡張機能内でデータを持ち、JavaScriptでERDBのリストと「ISSNらしき文字列」とのマッチングをかけてリスト生成するには少し状況が悪い場合があるのと、JSONを吐き出すAPIがあればなんの問題もないため、とりあえずAPIを立てて対応しています。もし公式のWeb APIなどを公開していただければ拡張機能以外の、また別の展開も考えられると思います。

3日目の福岡

今日はリードテック合宿の最終日。朝起きて、案の定、 id:kitone は寝ているので id:otani0083 と一緒に大濠公園をぐるりと散策。スタバでソイラテを買って戻る。

その後、CrossRef Taxonomy Interest Groupについての記事を書いて、


CrossRef Taxonomy Interest Group - Katachi

朝昼ごはんはうどんの和助で。

f:id:haseharu:20150308121332j:plain

肉ごぼうどん。上にのってるのがごぼうの天ぷら。圧巻。

さくさくしゃりしゃりでおいしかたです。

そのあと、ブックスキューブリックという本屋さんに連れて行ってもらいました。旅行中はだいたい財布のひもがゆるんでるので「コールド・スナップ」を買ってしまう。舞城王太郎、訳。図書館で借りずに買い続けているのは舞城くらい。

Amazon.co.jp: コールド・スナップ: トム・ジョーンズ, 舞城 王太郎: 本

その後、志賀島へ。

f:id:haseharu:20150308143758j:plain

id:kitoneid:otani0083 が二人でだーっと走っていってしまったので、あとを追う、の図です。

f:id:haseharu:20150308143829j:plain

f:id:haseharu:20150308144026j:plain

「Li:d tech」ではなく「Li:ed tech」となっているのがあとから分かり、あとの祭り。誰が書いたのかは内緒にしておきます。

その後、福岡空港から帰りの便に。

今回の合宿の成果もそのうち形になるかと思います。

2泊3日でお世話になりました。
また近いうちに集まって何かやりましょう。

今回で写真多め日記風エントリは一旦おしまい、でリードテックラボ風に戻ります。

CrossRef Taxonomy Interest Group

気づけば CrossRef Taxonomy Interest Group というのができてました。オントロジーとタクソノミーあたりを"Knowledge Model"と呼んでて、そのKnowledge Modelに関するノウハウやベストプラクティスなどの情報共有、コミュニティ形成あたりが目的のよう。将来的にはサービスプロバイダからの参加、フォーラムの開催なども視野に入れているみたいです。

サイト自体は2014年の12月に作っていた様子です。参加している出版社は、

  • ACM
  • AMERICAN PSYCHOLOGICAL ASSOCIATION *
  • De Gruyter
  • IOP
  • PLOS *
  • Taylor & Francis
  • Wiley

* をつけたのはあとから参加した出版社っぽいところです。

Knowledge Modelのテンプレが公開されていて、まずはそれをそれぞれ埋めて共有しましょうっていうステージの様子。2015年3月8日時点でKnowledge Modelが公開されているのは以下。

  • General Linguistics Taxonomy
  • Medical Subject Headings (MeSH®)
  • SNOMED CT
  • IOP Thesaurus
  • PLOS Thesaurus
  • Unified Astronomy Thesaurus
  • ACM Computing Classification System (CCS)
  • Thesaurus of Psychological Index Term®
  • NewsIndexer Thesaurus
  • NICEM Thesaurus

2015年3月3日にウェビナーがあったようで、その資料はこちら。
http://taxonomies.labs.crossref.org/wp-content/uploads/2015/03/2015-03-03-Webinar-CrossRef1.pdf

今後の活動が楽しみです。

2日目の福岡

リードテック合宿 in 福岡の2日目の記録です。

朝ご飯は前日のパンストックでのパンと id:kitone 特製のスムージーをいただきました。その後、ちょっと近所の図書館を見に行こう、ということで移動。お昼ご飯は、 id:shibure もおすすめの牧のうどん。肉うどんにごぼ天をつけてもらい、かしわめしはおにぎりにしてもらいました(1個70円)。

f:id:haseharu:20150307110653j:plain

f:id:haseharu:20150307110707j:plain

福岡のソウルフードとのことなので、これは外せません。やわやわ麺がスープを吸いつつ、スープを継ぎ足しながら麺が減らない様子を楽しみながら完食。普通においしかったです。

お昼ご飯後、さらに移動。休憩で寄ったコンビニでソウルフードの第2弾、ブラックモンブランを購入。こちらも普通においしかったです。

f:id:haseharu:20150307125056j:plain

そして、さらに移動。まずは伊万里図書館。

f:id:haseharu:20150307140002j:plain

「図書館」なんだなあ。記号的というかシンボル的というか。

その後、も少し移動して武雄師市図書館へ。最寄りの駐車場が満車で5分くらい待ち駐車。

f:id:haseharu:20150307162037j:plain

館内は人でごった返してました。入ってすぐに新刊本こんなに扱ってるのか、とややびっくり。武雄図書館せんべいと飴をセルフレジで購入。Tポイントが70円くらい貯まってたので全部使ってみました。はじめてでも特段迷うことなくセルフで支払うことができました。

f:id:haseharu:20150307160526j:plain

館内をきょろきょろしながら、スタバでちょっと休憩。

ジャズが流れてコーヒーの香りがする図書館は初めてでした。近くにあったら普通に使うだろうなあ。

その後、武雄温泉でまったり。

f:id:haseharu:20150307175943j:plain

選んだのは鷺の湯。外風呂とサウナが付いてる。

f:id:haseharu:20150307175929j:plain

その後、 id:otani0083 のおすすめのお店で1日のまとめ的な議論をして2日目が終了。なんだか観光ばかりじゃないか、と言われそうですが、明日*1がいよいよ合宿最終日です。

*1:これを書いてるのは3日目の朝