CiNii Books APIのJSON、クロスドメイン通信対応

2017/05/11 サンプルコードを少し修正


10月11日にCiNii Books の改修がリリースされました。
http://ci.nii.ac.jp/info/ja/index_2013.html#20131011-3
内容説明や目次の検索機能の提供や著者名ヨミの表示といった機能が追加されていますが、Li:d tech的に熱いのは、CiNii Books APIJSON対応やクロスドメイン通信への対応です。

クロスドメイン通信への対応

通常、Javascriptはセキュリティの問題から、異なるドメインのデータファイルへのアクセスは遮断されます。それを回避するためにこれまではデータの受け渡しをするためだけの別のプログラムを書くなどする必要がありました。今回の改修により、CiNii Books側でhttpヘッダに「Access-Control-Allow-Origin: *」という情報が追加されたことにより、そのような手間は不要になりました。

JSON対応

これまでデータの出力フォーマットはHTMLかRSSの2種類でしたが、JSON形式でも出力できるようになりました。JSONはHTMLやRSSに比べてよりプログラムで処理しやすいフォーマットです。そして、その中でもRDFのデータをJSONの文法に則って、Linked DataとするJSON-LDという形式で提供されています。*1
以下、CiNii Booksからタイトルに「高麗」というキーワードを含む図書のタイトルと所蔵館数を出力するサンプルです。

#coding:utf-8
import requests

baseurl="http://ci.nii.ac.jp/books/opensearch/search?"
query={"format":"json","title":"高麗","count":10}

r=requests.get(baseurl,params=query)
#for i in r.json()["@graph"][0]["items"]["rdf:li"]:#修正前
for i in r.json()["@graph"][0]["items"]:#レスポンスをJSONで受け取り、検索結果の一覧を取得
    print i["title"]+":"+i["cinii:ownerCount"]#検索結果の最初から順番にタイトルと所蔵館数を出力

#以下、出力結果
高麗:0
高麗野:4
高麗史:7
高麗史:52
高麗青瓷:2
高麗史:160
高麗史:5
高麗鏡 研究:4
高麗史節要:2
高麗犬:1

PythonのRequestsモジュールでCiNii Articlesのデータ取得 - よしなしごとをすこし修正したものです。このケースだと@graph要素直下が配列である必要はない気がしましたが…。

今回の改修でこれまでよりさらにCiNii Books APIを使用したプログラミング環境が整いました。ArticlesのAPIでも同様の実装を期待しています。

11月18日までCiNiiのアンケートが実施されていますので、是非日頃の感謝や要望を届けましょう。*2

https://portaltools.nii.ac.jp/cgi-bin/enquete/form/ciniiarticles_2013/
https://portaltools.nii.ac.jp/cgi-bin/enquete/form/ciniibooks_2013/

*1:JSON for Linking Data W3C勧告はまだ行われていませんが、一般に公開されています。JSON形式の上に@graphや@idなど語彙定義などが行われているようです。

*2:全件ダンプとか、ログの公開とか書きました…。可能な範囲で…

機関研究(Institutional Research)人材育成科目とその参考文献

カーリルで開く

九州大学で平成25年度後期から機関研究(Institutional Research)の人材育成を目的とした授業が開講しました。*1関心のある分野でしたので初回の授業に参加してきました。今後も可能な範囲で出席予定。

開講される授業は以下の5つ

  • 大学経営とIR
  • IRデータ収集・管理論
  • IRデータ分析論(平成26年度前期)
  • 大学評価とIR(平成26年度前期)
  • IRインターンシップ(平成26年度前期)

担当されるのは大学評価情報室の先生方です。今期は「大学経営とIR」「IRデータ収集・管理論」の2つが土曜日の1・2限に交互に開催されます。
カリキュラムはIRにおける5つのプロセス(1.課題・ニーズの同定・2.情報の収集・3.分析・4.提供・5.活用)にそって策定されたそうです。インターンシップは大学評価情報室での実施となるようです。

「大学経営とIR」は、大学経営におけるIRの意義やIRのニーズの基礎にある内外環境・ガバナンスの理解を目的としています。授業は講義数回と受講生による文献の報告・ディスカッションという形式です。
「IRデータ収集・管理論」は、大学におけるデータ収集・管理技能の取得を目的としています。データベース(Access、SQL)、Webアプリケーションの基礎から、DBアプリケーションの企画・仕様書策定といったカリキュラムを実習形式で行うようです。本当に初心者向けのところからスタートするということでした。

どちらのスポットでの参加や見学歓迎ということでしたので、関心のある方は是非。詳しい日程など知りたい方はご連絡いただければ。

IRに関連する文献

「大学経営とIR」での報告文献及び参考文献として例示されている文献です。授業のカリキュラムにそって項目を立てています。

大学経営・IRに関する基礎知識

大学経営
IRの基礎知識
  • ゲイリー・マクラフリン , リチャード・ハワード . "IRの理論・実務・職業倫理". IR実践ハンドブックー大学の意思決定支援. ハワード リチャード編. 玉川大学出版会, 2001, p. 233-237.
  • 中井 俊樹, 鳥居 朋子, 藤井 都百. 大学のIR Q&A. 玉川大学出版会, 2013,
大学評価の基礎知識
  • 川口 昭彦. "高等教育の歴史と質保証". 大学評価文化の定着ー大学が知の創造・継承基地となるためにー. ぎょうせい, 2009, p. 46-101.
  • 森 利枝. "アメリカ合衆国における高等教育機関のアクレディテーション". 大学評価文化の展開ー高等教育の評価と質保証. 大学評価学位授与機構編. ぎょうせい, 2007, p. 97-112.
  • 吉川裕美子. "ヨーロッパにおける高等教育機関の質保証". 大学評価文化の展開ー高等教育の評価と質保証. 大学評価学位授与機構編. ぎょうせい, 2007, p. 113-122.

大学におけるIRの位置づけ

米国の大学におけるIRの状況
  • 山田 礼子. "アメリカの高等教育機関におけるIR部門の役割と事例". 大学教育を科学する 学生の教育評価の国際比較. 山田 礼子編. 東信堂, 2009, p. 137-156.
  • 青山 佳代, AOYAMA Kayo. アメリカ州立大学におけるインスティテューショナル・リサーチの機能に関する考察. 名古屋高等教育研究. 2006, no. 6, p. 113-130.
  • ランディ・L・スウィング. 米国の高等教育におけるIRの射程,発展,文脈 (特集 日,米,欧における国際的通用力を持つ大学評価システムの形成状況と日本の課題の研究). 大学評価・学位研究. 2005, no. 3, p. 21-30.(http://www.niad.ac.jp/sub_press/sciencemag/No3/02.pdf)
日本の大学におけるIRの状況
  • 岩崎保道. IR(Institutional Research)の実施状況と特徴 ―国立大学における取り組み状況に注目して―. 関西大学高等教育研究. 2013, no. 4, p. 19-27.(http://www.kansai-u.ac.jp/ctl/activity/pdf/kiyo_no.4_pdf/kiyo_no.4_03.pdf)
  • 沖 清豪. 日本の私立大学におけるInstitutional Research (IR)の動向 (特集 IRのいま). 大学評価研究. 2011, no. 10, p. 37-45.
  • 岡田 聡志. "私立大学におけるIR機能の担当箇所と今後の方向性との関係". 高等教育における IR(Institutional Research)の役割 . 日本私立大学協会編. 日本私立大学協会附置私学高等教育研究所, 2011, p. 25-42.(http://www.shidaikyo.or.jp/riihe/result/pdf/2010_p06.pdf)
  • 高田 英一, 高森 智嗣, 森 雅生. 国立大学におけるインスティテューショナル・リサーチの機能・人・組織等に関する意識と現状 : IR担当理事に対するアンケート調査結果を基に. 大学評価研究. 2012, no. 11, p. 111-125.
IR実務者の視点から見た米国のIRの状況
  • 柳浦 猛. アメリカの Institutional Research IR とはなにか? . 国立大学財務・経営センター研究報告. 2009, no. 11, p. 220-253.(http://www.zam.go.jp/n00/pdf/ni005012.pdf)
  • 本田 寛輔. アメリカのIRと日本への示唆 (大学評価とIR). IDE. 2011, no. 528, p. 17-25.
  • 柳浦 猛. 「アメリカのIRの本質」?--日本でIRが根付いていくために必要なこと (大学評価とIR). IDE. 2011, no. 528, p. 12-17.
日本におけるIRの検討状況
  • 加藤 毅, 鵜川 健也. 大学経営の基盤となる日本型インスティテューショナル・リサーチの可能性. 大学論集. 2010, vol. 41, p. 235-250.(http://ci.nii.ac.jp/naid/110007588951)
  • 金子 元久. IR--期待,幻想,可能性 (大学評価とIR). IDE. 2011, no. 528, p. 4-12.
  • 森 利枝. "私立大学におけるインスティテューショナル・リサーチ構築に向けての検討". 高等教育における IR(Institutional Research)の役割. 日本私立大学協会編. 日本私立大学協会附置私学高等教育研究所, 2011, p. 15-24.(http://www.shidaikyo.or.jp/riihe/result/pdf/2010_p06.pdf)

教学改善に関する 取組事例

米国の 取組状況
日本の 取組状況

研究評価に関する 取組事例

  • 大場 淳. 人文社会科学の研究環境とその評価. 高等教育研究. 2000, no. 3, p. 81-105.
  • 川口 昭彦. "多様なレベルの研究評価". 大学評価文化の展開ー評価の戦略的活用をめざしてー. ぎょうせい, 2008, p. 71-73.
  • 林 隆之. 大学の研究評価の変容と科学研究のガバナンス(我が国の公共セクターにおける研究・イノベーションの評価システムとマネジメント). 研究技術計画. 2010, vol. 24, no. 3, p. 231-242.
  • 林 隆之, 山下 泰弘. ビブリオメトリクスを用いた大学の研究活動の自己分析. 情報管理. 2011, vol. 53, no. 12, p. 665-679.(https://www.jstage.jst.go.jp/article/johokanri/53/12/53_12_665/_article)
  • 林 隆之. "研究評価のための指標". 大学評価文化の展開ー評価の戦略的活用をめざして. 大学評価・学位授与機構編. ぎょうせい, 2008, p. 74-83.
  • 福富 秀夫. "地域社会に貢献する研究". 大学評価文化の展開ー評価の戦略的活用をめざして. 大学評価・学位授与機構編. ぎょうせい, 2008, p. 84-95.
  • 本多 卓也, 慶伊 富長. 自然科学系の研究評価 . 大学論集. 2005, vol. 35, p. 403-418.(http://rihe.hiroshima-u.ac.jp/pl_daigaku_2.php?k=35&y=2005&m=3)

経営改善に関する 取組事例

大学評価に関する 取組事例

日本の 取組状況
  • 江原 武一. "大学評価の効用". 転換期日本の大学改革ーアメリカとの比較. 東信堂, 2010, p. 240-274.
  • 川口 昭彦. "認証評価". 大学評価文化の定着ー大学が知の創造・継承基地となるためにー. ぎょうせい, 2009, p. 46-101.
  • 関口 正司. IRから見た大学評価の課題 (大学評価とIR). IDE. 2011, no. 528, p. 25-30.
  • 田中 弥生. "アクレディテーションとオーディット". 大学評価文化の定着 -日本の大学教育は国際競争に勝てるか?. 大学評価・学位授与機構編. ぎょうせい, 2010, p. 123-134.
  • 田中 弥生. "アセスメント ". 大学評価文化の定着 -日本の大学教育は国際競争に勝てるか?. 大学評価・学位授与機構編. ぎょうせい, 2010, p. 134-154.
  • 田中 弥生. "国立大学法人評価 ". 大学評価文化の定着 -日本の大学教育は国際競争に勝てるか? . 大学評価・学位授与機構編. ぎょうせい, 2010, p. 170-199.
「市場型大学評価」(大学ランキング)に関する基礎知識
  • 小林 雅之, 曹 燕, 施 佩君. 市場型と制度型大学評価の国際比較研究. 大総センターものぐらふ. 2007, no. 7,
  • 間渕 泰尚, 小林 雅之, 大多和 直樹. 市場型大学評価--正当化とセルフ・フィーディングの過程. 高等教育研究. 2002, vol. 5, p. 133-154.

まとめと展望

  • 加藤 善子. 機能するIR のかたち : 大学内での現実的な設計をめざして. 信州大学人文社会科学研究. 2012, vol. 6, p. 228-239.(https://soar-ir.shinshu-u.ac.jp/dspace/handle/10091/15632)
  • 秦 敬治. 日本の国立大学におけるIRの現状と課題に関する考察 (特集 IRのいま). 大学評価研究. 2011, no. 10, p. 29-36.
  • 松塚ゆかり. 高等教育のナレッジマネージメント : 米国のIRが進める学部横断的「知」の共有. 大学論集. 2010, vol. 41, p. 455-471.
  • 森 利枝. 日本の大学のIRーそれはいかにあり得るか. Between. 2009, 冬.
  • 吉田 文. 外部対応から内部改革へ-普及途上のイギリスのIR (特集 IRのいま). 大学評価研究. 2011, no. 10, p. 47-54.

*1:九州大学-お知らせ388番 IR(機関研究)人材育成に関する大学院共通教育科目の開講のお知らせ

TreeTaggerを使った英語の形態素解析

課題で英語の形態素解析をする必要があったのでツール・インストール・Pythonからの利用についてメモ。

日本語だとMeCabを使えばいいのですが。
Pythonで形態素解析 - よしなしごと

英語だとTreeTaggerというツールがあるということです。Windows・Linux・Macいずれの環境でも利用できます。
TreeTagger
英語だけではなくて、ドイツ語・スペイン語・フランス語やスワヒリ語なんかにも対応しているようです。対応している言語の一覧

オンラインで使えるツールも日本人研究者の方が作られていました。
TreeTagger Online
英文をいれてsubmitすると、結果のテキストが得られます。

インストール

公式サイトどおりの手順でインストールできました。
TreeTaggerのDownloadの項目から必要なファイルをダウンロード。以下のファイルです。

  1. 自分の環境にあったパッケージファイル
  2. tagging scripts
  3. インストールのためのシェルスクリプト(install-tagger.sh)
  4. 形態素解析したい言語のパラメータファイル

これらのファイルを任意の同一ディレクトリに保存します(とくに解凍などする必要はありません)。その後、OSのコマンドラインから保存したディレクトリに移動して、以下のコマンドを実行。

sh install-tagger.sh

これでインストール完了です。

echo "Hello world"|cmd/tree-tagger-english

とすると

Hello	UH	Hello
world	NN	world

のようなタブ区切りのデータが得られます。
左から入力した単語、品詞、入力した単語の原形となっています。

品詞は省略形で分かりにくいですが、こちらのページで訳してくださっています。

PythonからTreeTaggerを使う

どうせならPythonから使いたいので、ラッパーを探します。
公式ページのリンクにPythonラッパーへのリンクがあるのですが、いまいち動きません。
プログラミングなどのコミュニティサイトであるStack Overflowを調べていると同じような質問がありました。
python - AttributeError: 'module' object has no attribute 'TreeTagger' - Stack Overflow

この回答にしたがって、
http://cental.fltr.ucl.ac.be/team/~panchenko/def/treetaggerwrapper.py
からソースをダウンロードして、Pythonのライブラリ用のディレクトリに保存すると無事Pythonから利用することができました。

import treetaggerwrapper

tagger = treetaggerwrapper.TreeTagger(TAGLANG='en',TAGDIR='…/treetagger')#TAGDIRにはTreeTaggerをインストールしたディレクトリを指定。
tags = tagger.TagText("Save the time of the reader.")#解析したいテキストを引数に
for tag in tags:
    print tag

#以下、出力
Save	VV	save
the	DT	the
time	NN	time
of	IN	of
the	DT	the
reader	NN	reader
.	SENT	.

これで名詞だけ抜き出したり、ある名詞と共起しやすい形容詞とかの抽出とかに使おうかと。

PythonのRequestsモジュールでCiNii Articlesのデータ取得

いままでPythonの標準モジュールのurllib2を使っていましたが、Requestsモジュールがとても便利だったのでメモ。

インストール

pipやeasy_installでインストールできます。自分はMacPortsからインストールしました。

sudo port install py27-requests @1.2.3 

CiNii Articlesのデータ取得

import requests

baseurl="http://ci.nii.ac.jp/opensearch/search?"
query={"count":"200","format":"rss","journal":"図書館雑誌","api_key":********} #図書館雑誌掲載の論文をRSSの形式で200件取得
r=requests.get(baseurl,params=query)

print r.text #レスポンスの内容を表示

get関数にparamsという引数で辞書を渡せば、URLエンコーディングも含めて自動的に処理してくるのがいいですね。
以前は以下のようなコードを書いていました。別に標準モジュールでももっと簡潔にかけるとは思いますが…。

import urllib2,urllib

api_key=********
baseurl="http://ci.nii.ac.jp/opensearch/search?count=200&format=rss&journal="
query=urllib.quote_plus("図書館雑誌")
search_url=cinii_url+urlquery+"&start="+str(start)+api_key
url=urllib2.urlopen(search_url)

他にもポストでアクセスするときにはpost()というメソッドを使うといった直感的な命名、jsonで受け取ったデータを辞書やリストといったPythonのオブジェクトに変換してくれるといった便利な機能があるみたいです。

CiNiiにJSON出力機能が出たらもうちょっと追記するかも。

Code4Lib JAPAN Conference 2013に参加してきました。

台風の影響で直前までたどり着けるか不安でしたが、無事Code4Lib JAPAN Conference 2013に参加してきました。

このところ、id:kitoneid:haseharuと一緒にあれこれやってきた成果についてLTもやりました。

Conferenceの様子は以下のURLなどをご参考に。

参加者総計で60名で、大学・公共・専門図書館やベンダーとさまざまな立場の方が参加されていました。どの講演からもいろいろ刺激をうけましたが、とくにDan Chudnov(@dchud)の講演の中にあった"rough consensus and running code"が印象に残りました。他の方のお話しも含めて、技術の話だけではなくコミュニティの活動をどのように維持して活性化していくかということの工夫が随所にあっていろいろと我が身を省みる機会になりました。

プレカンファレンスでNext-L Enjuのチュートリアルからカンファレンス終了後の南三陸町図書館の見学まで参加したので満喫することができました。ブレイクアウトで遊んでたレゴとボードゲームがとても面白くて日付が変わるまで遊んでました。

キング・オブ・トーキョー 日本語版

キング・オブ・トーキョー 日本語版


お久しぶりの方もずっとお会いしたいと思っていた方と何人もお目にかかることができ、はじめての東北訪問がとても楽しいものになりました。大会実行員会のみなさまおつかれさまでした&ありがとうございます!
来年は修論に追い込まれてそうなので怪しいですが、その次の年などは運営のお手伝いなどもしたいと思います。

はてなブログの評価指標 Hatena-Indexを実装しました

id:min2-flyのアイディアtitle=Hatena-Indexを実装してみました。*1どのくらい記事を書いているかと、どのくらいはてなブックマークされているかを表す指標になります。

Hatena-Index

f:id:otani0083:20130809214204p:plain

Hatena-Indexの詳細はHatena-Index - かたつむりは電子図書館の夢をみるかをご覧くとして、Hatena-Indexは研究者の評価指標h-indexのはてな版です。記事を論文、はてなブックマークを引用に見立てており、Hatena-Indexが5であれば5以上ブックマークされた記事が5以上存在することを表します。本来は全エントリを対象に計算するのですが、今回は自分の技術的な制約から対象を30エントリに限定しています。

その他、はてなスターTwitterFacebookGoogle+などの反応もグラフに表示します。

すこしでもブログ書くモチベーションやはてなブログへ切り替えの切っ掛けになれば幸いです。

利用にあたって

いろいろと能力不足で以下のような状態です、ひろいこころで利用ください。

  • とても重いです。結果の表示に1分程度はかかります。
  • 500エラーがしばしば発生します、キャッシュがたまることによって、実行速度があるので再度お試しください。
  • はてなブログ限定です。また、はてなダイアリー時代の各種SNSの情報は取得できません。
  • ブログトップページのURLを入力してください。エントリページからは利用できません。
  • グラフの表示は右側に行くほど昔のエントリになります。
やっていること
  1. 入力されたURLをもとに、そのブログの全エントリを取得。archiveのページからスクレイピングで全エントリを取得しています。スクレイピングPythonのBeautifulsoupを利用しています。
  2. はてなのAPIからブックマーク数とスター数を取得。
  3. SharedCount: Social URL AnalyticsAPIからTwitterFacebookGoogle+の情報を取得。
  4. 各エントリのブックマーク数からHatena-Indexを計算。
  5. htmlで整形。グラフはccchartというライブラリを、テーブルはTwitter BootstrapとjQuery plugin: Tablesorter 2.0を使用しました。

ソースコードは以下においています。
otani0083/hatenaindex · GitHub

Google app engineのタイムアウト設定が60秒なので、検索して60秒超過すると500エラーが生じます。もうちょっと自由度の高い環境であれば全エントリを対象にした結果を表示できそうです。さくらVPS解約したばかりですが…。
高速化・ほかのブログサービスへの対応・全件を対象とした処理・ランキング表示などは、もうちょっと自分の技術力があがったら対応したいと思います。

Google app engineの無料枠であと6つ作れるので、次はなにを作りましょうかね。

h-indexについて参考

カーリルウィジェット使ってみました。

*1:min2-flyに伺ったところ以前にid:myrmecoleonがはてな指標[はてブの改変にともない休止中]として実装していたそうです。

時空間情報をマッピングするOmeka+Neatline #しぶ旅

2013/08/09
さくらVPSのお試し期間終了にともない、構築したサイトも閉鎖しました。

 メールマガジン人文情報学月報 [まぐまぐ!]イベントレポートで使われていたり、id:haseharuが使いやすいと言っていて、気になっていたOmekaとNeatlineを使ってみました。

 今回の直接的な切っ掛けはOmekaに対するつぶやきに対してid:kitoneから"やろうぜ #しぶ旅"といったコメントを貰ったことで、先週末友人9人でいったしぶ旅(福岡→長崎旅行)の写真をマッピングしてみることにしました。アイディアや写真ありがとうございます。

公式情報

Omekaの公式サイト情報の和訳がありますので下記をご覧ください。
Omekaについてのご紹介 - 変更履歴 はてな版
Omekaはオンライン展示や歴史・地理の教材を作るのにも利用できそうなCMSで、Neatlineは地理情報や時系列情報を可視化するためのOmekaプラグインです。

Neatline.org | Neatline in Actionのデモは面白いので是非。

手順

1.ローカル環境にインストール

Omekaをインストールしてみる - 変更履歴 はてな版の情報を参考にまずはhttp://www.mamp.info/en/index.htmlというソフトを使って、Mac上でOmekaを利用してみました。この段階では先のインストール手順に従えば特に問題なく動作しました。

2.さくらVPSの設定

ローカルで動かして問題なさそうだったので、さくらVPSの1GBをとりあえず契約してみました(月額1000円)。クレジット払いにしておけば2週間お試しで利用できます。Omekaを利用するだけなら、PHPMySQLが使えればいいのでもっと安い選択肢*1がありますし、その方が設定することも少なくてお手軽です。ただ、今回はサーバー設定の勉強と余力があったら、Pythonも動かしたいということで自由度の高いさくらVPSを選択しました。
さくらVPSの設定あたりは以下の情報などを参考に行いました。

3.Omekaのインストール

1.と同様の方法で行ったのですが、ここで躓きました。
f:id:otani0083:20130804083205p:plain
というエラーがでます。
mod_rewriteのエラーでリダイレクトがうまくいっていないみたいですが、mod_rewriteというApacheのモジュールはインストール・有効化されている、公式のドキュメントにある.htaccessファイルはアップロードされていると、ここで小一時間悩みました。結論としてはApacheのAllowOverrideが有効になっていなかったので、これを"None"から"All"に切り替えて解決しました。
f:id:otani0083:20130804103350p:plain
項目を入力していくだけでインストール完了です。

その後、画像サムネイルを表示させるために、ImageMagicをインストール。デフォルトではjpegに対応していなかったので、http://www.ijg.org/からlibjpegをあらかじめインストールしておく必要がありました。

4.Neatlineのインストール

OmekaのプラグインフォルダにNeatlineと時系列情報を扱うNeatlineSimileというウィジェットをアップロードして完了。

あとは特に設定などしなくても項目を入力していくだけで冒頭に挙げたようなページが作れます。
サーバーの設定やインストールで躓いたのですが、半日程度で作成できました。

おわりに

OmekaのOAI-PMH Harvester - library labs
OAI-PMH関連のプラグインもあるみたいなので、もうちょっと遊んでみるつもりです。さくらVPSのお試し期間が10日ほどで切れるので、それ以降に継続するかは検討中です。折角だからようこそ - CKAN日本語とかも使ってみたいところ。