なにかのカタチ

カタチのなにか

あれも終わらなかった、これも終わらなかった、というかあれやったんだっけ、と思いながら、年度末で金曜日なのに終電だぞ、と駅まで歩く道の途中でだんだんと足取りが重くなっていって駅の改札前で定期がない?とやや打ちひしがれそうになっていたら、駅に隣接したお店でガラス越しにうちの会社のホープの2人が身振り手振りも交えてなにやら議論している姿が見えたので、ガラス越しに2人に手を振って電車に乗り込む。絶対邪魔したよな、と思いつつも2人の笑顔とあの2人が議論をしてる姿に少し気持ちが前向く。定期はカバンの中に普通にあった。

何をしたかったんだっけ

もともと何をしたくてこの業界にきたんだろうと最近よく考える。いや、そんなにしょっちゅう考えてないかもしれないけど、なんとなくいまはそう思ってた気がしたからそういうことにしたいとおもう。学生時代の専門は情報処理、中学校くらいからゲーム作りを、プログラムで生計を立てていきたい、と進路を選んできた。でも、ちょっと別の道を歩こうかと思い今に至る。その道をずっと歩んでいたとしたら、今自分がいる場所から見える風景はどの程度違っているのだろう。

こどもはとにかくすごい

こどもはとにかくすごい。何がすごいって、たぶん全部すごい。すごいってなんだ、といわれれば困るけど、表現力がないからすごいとしかいいようがなくってとにかくすごい。たぶん伸びていこうとする姿勢というかまなざしというかその存在自体がまぶしいんだろう。

GEEKS

先週、2歳のこどもが本棚から嬉しそうに持ってきた本の一冊。ジョンカッツ著、飛鳥新社でノンフィクション。学生時代に読んでたけど、いつごろ出たやつかなと思ったら2001年に出ている。いやそんなに昔になるのか、と少しびっくり。1人のライターと2人のギークのものがたり。kindleで出ているのか、買ってもいいかも。テクノロジーが世界を変えると信じて疑わない。そうそう、と当時の自分は思っていたし、その後、社会に少し出たりして、いろいろあるんだな、と思ったけれども、シンプルにそう考えてもそれはそれで間違っていないし、そういう根っことして必要なのだろうと思う。彼らはその後、どうなったのだろう。

花束

昨日、今日とお昼休みに花束を受け取りにいった。退職される方への感謝の花束。今の職場はもともと自分がきた2年前は自分も含めて4人のチームだったけど、1年後に1人、それから昨日今日と1人ずつ抜けていって、いよいよ今日、自分1人になった。離れたいくつかのサイトに他に4人ほどいて、そちらも含めてチームなのだけども、同じ部屋で働いていたこの4人が一番ミニマムで考えた時の自分にとってのチーム、という意味。週明けに1人、1ヶ月後くらいにたぶん1人、と増員予定だけども、この状況はそれなりの重さで受け止めているつもり。あと、このタイミングで少しずついろんなことを変えていくつもり。

オープンプラットフォームな学術論文等レコメンドサービス「so_reco」の公開

はじめに

オープンプラットフォームな学術論文等レコメンドサービス「so_reco」(social recommender)を公開しました*1
chrome.google.com

動きはこんな感じ。

www.youtube.com

オープンプラットフォームといいつつ現在のところ14の出版社のプラットフォーム(Elsevier,Nature,AIP,APS,Springer,Wiley,IOP,Science,SAGE,OUP,Cell Press,RSC,ACS,Taylor&Francis)といくつかのDB/サービスプロバイダのプラットフォーム(J-STAGE,Web of Science,NDL Search,CiNii Article/Books,OCLC Worldcat,Pubmed)での動作です。「so_reco」をインストールいただけると、先ほどのプラットフォーム上での論文(図書含む)閲覧ログを取得し始めます。その上で、他ユーザの閲覧ログを利用して、レコメンドをする、という仕組みです。

ここまで読んで、ん、と思った方、たぶん正解です。公開直後でほとんどユーザがいないので、多分インストールいただいてもほとんどレコメンドされないと思います。

それだと使えないんじゃないの

1年前に作った「oaFinder」の機能とリンクリゾルバとの連携機能も追加しました。ので、ご興味ある方はぜひインストールしていただけると幸いです。オープンアクセス論文の発見性改善には多少つながり、リゾルバ通じて文献複写依頼でもしておくかみたいな使い方もできます*2

chrome.google.com

仕組み

ユーザ名は乱数発生させて作っています。また、ローカルストレージに記録しておく仕組みにしたのでユーザ側で任意のタイミングでリセットできます。という意味で個人が特定されない形でログを収集しています。

一番かなめとなる仕組みは、閲覧ログの収集、でしょうか。URLとして取得するというより複数のプラットフォームで「ユーザが今どの論文のページにいるのか」という部分を識別させる必要がありそういう風に作りました。

LODチャレンジ2017

本アプリは、LODチャレンジ2017参加アプリです。LODチャレンジは4年目、4回目。詳細はこちらに書いてあるのでご興味ある方はご覧いただけると。

idea.linkdata.org

データ部分はデータセット部門にエントリしてます。

idea.linkdata.org

*1:サービスというかエクステンションというか、あまり意識して使ってません

*2:もちろんどこまで何ができるかは利用者側の環境によりますが

年が明けたことになりました

もろもろあって、なんとなく年が明けてないよな、年明けって実はまだだよねっていう気分だったのですが、一応、さきほど年が明けたことにしました。もう一個、明日締め切りの案件が残っているのですが、まあがんばります。

たぶん今書かないとあとで書かないだろうなという気がしたので、来年の自分に向けてとりあえず振り返りを書いておきます。

2017年、仕事では転職。生活ではこどもの関係で家族で大阪へ。初飛行機。

自分のためではなく、WordPressにもけっこう触る機会がありました。特に某サイトへのアクセスが多く、年末はたちあげるとすぐにサーバダウンというアクセス過多でサーバのチューニングに追われていました。

数年ぶりに図書館系のイベントに参加。NDLの保存フォーラム。3年くらい前のJaLCイベント以来かな。

いわゆる一般的な年明けの時期にキセルの新譜を買って聞いています。

2017年にやるぞ、と1年前に書いたエントリから1つずつ採点すると、
・今年こそラズパイを買う(何年目?, 3年目?)。
→ 買わなかった

・1日に何度か深呼吸をする。
→ しなかった

・家族の写真を管理する良い方法を考える。
→ とりあえず新しいNASを買った

Androidアプリ作り。
→ しなかった

・リードテックも少しだけ活動を復活?
→ あまりしなかった

ということで5点くらいかな。2018年にしたいこと。
・なにはともあれラズパイを買いたい
Androidアプリ作り
・家族で旅行
・新しいカメラを書いたい
・アパートを少し整える
・庭の手入れ
iphoneそろそろ買い替え?

2017年にけっこう庭の木を増やしました。2018年も良いものがあれば植えたいです。

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などを公開していただければ拡張機能以外の、また別の展開も考えられると思います。