科研費データベース(KAKEN)の情報をプログラムから取得する方法を解説します。

1. はじめに

KAKENは、国立情報学研究所(NII)が提供する科学研究費助成事業データベースです。OpenSearch APIを利用することで、研究課題の情報をプログラムから取得できます。

2. 事前準備:アプリケーションIDの取得

KAKEN APIを利用するには、CiNiiでアプリケーションIDを取得する必要があります。

  1. CiNii API利用登録にアクセス
  2. 必要事項を入力して登録申請
  3. 承認後、メールでApplication ID(appid)が届く

注意 : 登録から承認まで時間がかかる場合があります。

3. APIエンドポイント

研究課題をさがす

https://kaken.nii.ac.jp/opensearch/

研究者をさがす

https://nrid.nii.ac.jp/opensearch/

4. 主要パラメータ(研究課題をさがす)

パラメータ説明必須
appidアプリケーションID82RKpPlZiIjbqKwFDO3D
qb研究課題番号で検索19K20626
kwフリーワード検索IIIF
qa研究課題名で検索デジタルアーカイブ
qg研究者の姓名で検索中村覚
qm研究者番号で検索80802743
formatレスポンス形式-xml(デフォルト: html5
rw1ページの件数-20, 50, 100, 200, 500
lang言語-ja, en

△: いずれか1つ以上が必要

その他の検索パラメータ

パラメータ説明
qc研究種目で検索
qd審査区分/研究分野で検索
qe研究機関で検索
s1, s2助成期間(From/To)で検索
qfキーワードで検索

詳細は公式ドキュメントを参照してください。

5. 使用例

例1: 課題番号で検索

curl"https://kaken.nii.ac.jp/opensearch/?appid=YOUR_APPID&qb=19K20626&format=xml"

例2: キーワードで検索

curl"https://kaken.nii.ac.jp/opensearch/?appid=YOUR_APPID&kw=IIIF&format=xml&rw=50"

例3: 研究者番号で検索

curl"https://kaken.nii.ac.jp/opensearch/?appid=YOUR_APPID&qm=80802743&format=xml"

6. レスポンス形式

format=xmlを指定した場合、以下のようなXMLが返されます。

レスポンス例(19K20626)

<<?g/xr<<<<gmatsig/rlnottr<<gattaeau/s/rnvAarmnr<uu<<<<<<<satewltstlurmtacm/pk/p/unAraRIPALrlmiwae<<<<<mre<<<<<<<<ke<<pv<<<mtwsrenewilLatatmidjp/e/eoykkkkkkkkerseeeditvmAaidsdras>irlrebneoe<<<pn<emjweeeeeeeeyitnrrinoeawrosuePrthsyedgespbrffgerrnbeoyyyyyyyywoadiardtrradn>lxad>tt>NortaTsuairierecrwwwwwwwwodrDoleiaayrs=t>gt>xIuririolmvscsirtdoooooooorOtadlcrll>d>"s1eirpapmImystttnlieohec>SLrrrrrrrrdfDtOAteCl>1><>derwslIbeumlaNlnneahtiddddddddLAaefwCcoA.1/2=coa::FenqteelayNadreasiwt>Aaotsw0<s0"ojr/lriuin>NmNal>cdttsssssssssae2wrsCta"/t<Kred/aTieotaeamNh>u>eeeeeeeetr>0adto>rta/AdcNknEaCnn>m>meaesqqqqqqqq>d22rA>s4deoriKStuagIwoc><eemruuuuuuuu>03dm3t5AntttEeTmk=ade/yeNfeeeeeeee1->o5>5mcaIeNtybe"re=jsyo>uinnnnnnnn90u010oolnmH=penjd="oeommscccccccc-3n000udRdsI"er.aN"1bq<mibceeeeeeee0-t050nieeP-k==n"u2"<<Tu/i=ea========43>000tnsxePa""i>m5//ief="rl""""""""-100<>gu>rRkp1ib2eidtnu"Y123456780<<0/=lPOer9.e"rnelclte""""""""1//0t"taJnoKar>aspeelya>>>>>>>><ed<UsgEhj2c=dta>=N"prITROO/nitT>eCie0."Cir"a>e=IEDCmsdriaF>T"c6j1ott1m"="IIFRe<tDenl--t2p9dum"e><"2F<<<k/aacdC81"6/K<ete>>/e0<//akrttio"9"g2/=ingr2kkk<<eteCrs?K>r0c"ot<ia2keee//yD>oet>2a6a8n>/vd"eyyykkwasc>0n2t0>fe"ywwweeottt6t6e8an>swoooyy<re>C2/"g0mN8torrrwwd>o6K<o2ia0ardddok>s"A/sr7lm8td>>>rretKtey4ye0u>ddy>Eiq>3N>2s>>wNtu"a7CoHlem4orIenre3dd->co><e>Pel/=R=er"O"=epJ1"srE"peoC/rajT>ire-ncc1cht9ie_Kprc2aNl0luo6_ms2ibe6ned/vr"<e>//s>utrilg>ator">

7. 取得できる主な情報

要素説明
awardNumber課題番号
title研究課題名
category研究種目(若手研究、基盤研究など)
member研究者情報(氏名、所属、研究者番号、役割)
projectStatus研究状態(granted: 実施中、project_closed: 完了)
keywordListキーワード
periodOfAward研究期間
overallAwardAmount配分額(直接経費、間接経費、合計)
paragraphList研究概要

研究者の役割(role属性)

説明
principal_investigator研究代表者
co_investigator_buntan研究分担者
co_investigator_renkei連携研究者

8. プログラムからの利用例

JavaScript/TypeScript(Next.js)

t}t}a)}f}y;y;s:upnrridjpgtcpmkygacuuucicrneaeoneoeriaeeenrpPorrrofoecmslspbattrmycaprnlllnnttKeeetaTKnleibwnIos...s(suiXa:a:iriategoeoftdmtssst!troMkrtttkI:odrruI:ieeernnLesc'umledr?sdndsuaaarexnthpteen:sy::sc:serrrresmppMreiin?Pt??tt<lcccsplaaeir'ot:rsr:{K:isrKhhhporrmnIn:otiaotia=PPPon=ssbgd:sjrnssksnrnkaaanseee;:steigttetigenrrrseaKKr'strcn;ranrfnneaaae.waasctritgirMiegPwmmmoakk=torin;ntent,rsss=kieeriing=g?mgcoU...)tnn{i'ng;;:b[hjRsssaXXn;g;{e]KeLeeewrrmmg;sr;ac(tttaeell;t[kt'(((its((r]eh'''tupxxi;n|taqfrommnPtpbofnnllgrnpp'res,:;ousi,mtnejl:dacu.gseel/'gthltrtnc>,r'(leardtka,u;xni?({aanrttn:kpt'l(IgepIx.)d,snIdmt;)t.d)lo;grn);'Srii;)tani;rng.itanI}cgd;.(:j)p)s/;torpienngs)e:arKcahk/e'n)P;roject|null{

Python

iid#pmmerppf使ooojrrfup}rir##etteraefoctlrsoXtrxcaprtMemh=m"""oerL=ql_saqfnse=u.k"pbosptfeeah=p"reouEestkti:mnrTttret{da=sn.csenp"gtefhe_s:r"r.Nr_.p:a:esookEranqtnmal/pt"uaeskejkp_xettemea_imsurneckidltsi_nted,"s_npt(n,.cgrTg.go(orrnedrjeaiteeeeni(sct.u!pta_ar=o(sicln"d.,2s1E:j0e9Tpp0.Ks/a:c2toro0rpan6,emt2nse6as=n"pept,paa)_rr"icaYdhmO:/sU")Rs_tArP)PID")dict|None:

9. 注意事項

  1. 利用規約の遵守 : 短時間に大量のアクセスは避けてください
  2. キャッシュの活用 : 同じデータを繰り返し取得する場合はキャッシュを利用しましょう
  3. 所属情報について : APIで取得できる所属は「採択時点」のものです。現在の所属とは異なる場合があります
  4. エラーハンドリング : APIが利用できない場合のフォールバック処理を実装しましょう

10. 参考リンク