はじめに

GakuNin RDMは、国立情報学研究所(NII)が提供する研究データ管理プラットフォームです。Open Science Framework(OSF)をベースに構築されており、APIを通じてプロジェクトの操作を自動化できます。

本記事では、Node.jsからGakuNin RDM APIを使って以下の操作を行う方法を紹介します。

  • プロジェクトの作成・設定
  • Wikiの作成・更新
  • メンバーの追加
  • GitHub連携 + Vercelによる自動デプロイ

事前準備

パーソナルアクセストークンの取得

  1. GakuNin RDMにログイン
  2. 設定 > パーソナルアクセストークンに移動
  3. 新しいトークンを作成(スコープ:osf.full_readosf.full_write

プロジェクトの初期化

mnnkppdmmiriinnrisdttma-l&yl&dcodterndvm

.envファイルにトークンを保存します。

GRDM_TOKEN=your_personal_access_token_here

.gitignoreも作成しておきます。

.neondve_modules/

APIクライアントの作成

GakuNin RDMのAPIはJSON:API形式を採用しています。まず汎用的なクライアントをlib/client.jsとして作成します。

rcci}c}a}meoofo;soqnntnA"ycci}ci}irduss(hsuCnoofoffeuitt!rttocnnoncttlrTohnss(ps(oh(ueeBTOwhotfttbtt!nrrr.(AOKereuoirsoene"SKEnainnuodoretwsxdEENedztcrpynes.rpo_N)wea-tlt)ss.tnseotUrtTii.oeetsreR={Esiyo=o{b=kxwa.tnLropnno)ttjsvpr=ne`sdaEus"=ro:"r$yw{=rso=)or{:e{=arn."c(`qB=iao=({che"B"uA{twr=)otsGeaeSJa(=;rntsRapsEmSfi`efp.Drpt_eOet$2qiseMel(UtNt{0ug:n_rimRh.crm4e(/TceLoshee)s)/.O$at}dt(stt;aGK{th$,ru.hr,pRETio{irtoeiDNOodphnledth.MKn,aeg,x}uer_iE/taitradTsNvphdfo($ndmO}na}eyp){e.Kn`dt`r(t;pnrnEo,.h;sbiausiNta,ootl,i;p}dnhl.sib;ys};Bae+o))Actjd;;fS.syaEjio)i_pnnlU/"{eRv.,dL2e"n(};v$;"{)r;es.status}):${text}`);

ポイント:

  • 認証 : Authorization: Bearer {token} ヘッダーで認証
  • Content-Type : application/vnd.api+json(JSON:API仕様)
  • Node.js 18以降の組み込みfetchを使用(追加パッケージ不要)

プロジェクトの作成

cc}cccoo)oonnd};nnnssa,sss==tttta}too>>ayt,ll{d:pttcneePUaeriao..rRrt{:ittdlloLeableeooj:q"uegIggeu=nt:od((cheoer""ttsads"y=PUttwe:M:rRIpasydoLDs}i"{"aj:::t,Rpte"/=erac,a/rso.tbrreejddcdeqaeaIa1mqurctDt2.uecta:anish".".irt,i,die(Pda.("r;nta"Pooac.Ojd../SeeljlTcIipi"tdn/b,")ka/,;sbc".cl/h1int2eom/ndlte)"s;)/;",{

プロジェクト情報の更新(説明・ライセンス)

作成直後のプロジェクトには説明やライセンスが設定されていません。PATCHで更新します。

a}w)ad};ia,tttia}r}aydt,e,r:p:tdn}ll}eereo,ai,q{:nisdcytcduobceoeieae"dur_paontsnetilyrnsatoIepir:se:(ddstcih:"e,:ieg"i{Psonh2p{A"{nst0stT,:e_2:yC:h6pH"o"{e"{l,:,de"`rl/sin:coed[ne"ssYe/os$u"{r,noOidrdeg:Iadn"}i5/"zf`,a8,t9i3{o5ne"4]b,8b8270007b1efaa"},

利用可能なライセンス一覧はGET /v2/licenses/で取得できます。主なIDは以下の通りです。

ライセンスID
CC-By Attribution 4.05f8935e4b8b8270007b1efaa
CC0 1.0 Universal5f8935e4b8b8270007b1efac
MIT License5f8935e5b8b8270007b1efb4

Wikiの作成と更新

Wikiページの作成

POST /nodes/{node_id}/wikis/でWikiページを作成します。content属性に初期内容をMarkdownで指定します。

c}cco)oond};nnsa,ssttta}toayt,lw:ptncweieraoi.k{:imnklibetio"u:eIg=wtnd(ie"t"aksh:=Wwi:oiasm"wki"{e#iit,"k,MiIry.Ded:qRa"uet,esase.wtaii(rdk"c;iPhIOdSP)Tr;"o,je`c/tn\ond\ens/${nodeId}/w"i,kis/`,{

Wikiコンテンツの更新

Wikiの内容更新は新しいバージョンをPOSTで作成 する方式です。直接PATCHでは更新できません。

a}w)ad};ia,ttta}ayt,r:ptceeroq{:inubte"ueswtntiet(ks:"i:P-"Ov{#SeTrM"sy,ioR`ne/ssw"ei,akricsh/$P{rwoijkeicItd\}n/\vnersions/`,"{,

!

注意 : homeページは削除・リネームできません。内容の変更はバージョン追加で行います。

Wikiコンテンツの取得

c)co;on`{nshstthtterpacesdos:en/rt=/sea:naptwi{a.=irAtduamtwf.haenoitirtciih.zr(aaects.i.jotpne/:xvt2`(/B)we;iakriesr/M$$a{{rwTkiOdkKoiEwINnd}}`/c}on}tent/`,

メンバーの追加

ユーザーIDで追加

a}w)ad};ia,ttta}r}ayt,e,r:ptpblueereiasq{:irbteubmlire"uiiossctson:toesgs(nsirh{"t:oaiPrnppdOi{:hsaSbi:tTu"ca"tw:{:,orrit{`str/"eutn,"eyo,,pdee:s/"$u{"snreoerdased"I",d}|i/dc":ownr"tirtieb"uIt|Do"r"sa}/d`m},i,n{"

メールアドレスで招待

GakuNin RDMアカウントを持っていないユーザーもメールで招待できます。

GRDM_TOKEN=your_personal_access_token_here

0

GitHub連携 + Vercel自動デプロイ

ここからは、GakuNin RDMのGitHub Add-onを活用して、ファイルをRDMにアップロードするとVercelに自動デプロイされる 仕組みを構築します。

全体の流れ

GRDM_TOKEN=your_personal_access_token_here

1

1. GitHubリポジトリの作成

まず、連携用のGitHubリポジトリを作成します。

GRDM_TOKEN=your_personal_access_token_here

2

2. GakuNin RDMのGitHub Add-on設定

GitHub Add-onの設定はAPI経由では行えないため、Web UIから設定します。

  1. プロジェクトページ(例:https://rdm.nii.ac.jp/{node_id}/)を開く
  2. SettingsAdd-ons に移動
  3. GitHub を有効化し、GitHubアカウントを認証
  4. 連携するリポジトリとブランチを選択

!

Add-onの設定はOAuth認証フローが必要なため、現時点ではAPI経由での操作はできません。

設定が完了すると、GakuNin RDMのファイルストレージにGitHubリポジトリの内容が表示されます。RDM上でファイルを追加・更新すると、GitHubリポジトリにも反映されます。

3. VercelとGitHubリポジトリの連携

Vercelのダッシュボードから設定します。

  1. Vercelにログイン → Add New Project
  2. 先ほどのGitHubリポジトリをインポート
  3. ビルド設定を構成(フレームワークに応じて自動検出)
  4. Deploy

これだけで、GitHubリポジトリへのpushをトリガーにVercelが自動ビルド&デプロイを行います。

4. 動作確認

以下の流れで自動デプロイを確認できます。

  1. GakuNin RDMのプロジェクトページでGitHubストレージにファイルをアップロード
  2. GitHubリポジトリにコミットが自動作成される
  3. Vercelがpushを検知し、自動的にビルド&デプロイ
  4. 数十秒〜数分後、公開サイトに反映
GRDM_TOKEN=your_personal_access_token_here

3

活用例

例えば、研究データ(XMLやJSON)とWebフロントエンドを同一リポジトリで管理するプロジェクトでは、研究者がRDM上でデータを更新するだけで、技術的な知識がなくてもWebサイトが自動的に更新される仕組みを実現できます。

API操作のまとめ

今回作成したNode.jsクライアントで対応できる操作の一覧です。

操作メソッドエンドポイント
プロジェクト作成POST/v2/nodes/
プロジェクト更新PATCH/v2/nodes/{id}/
プロジェクト削除DELETE/v2/nodes/{id}/
Wiki作成POST/v2/nodes/{id}/wikis/
Wiki更新POST/v2/wikis/{id}/versions/
Wikiコンテンツ取得GET/v2/wikis/{id}/content/
メンバー追加POST/v2/nodes/{id}/contributors/
メンバー削除DELETE/v2/nodes/{id}/contributors/{user_id}/
ライセンス一覧GET/v2/licenses/
ファイル一覧GET/v2/nodes/{id}/files/{provider}/
!

Add-on管理 (GitHub連携など)はPATでは操作できません(403)。Web UIから設定してください。

おわりに

GakuNin RDMのAPIはOSF APIv2に準拠しており、JSON:API形式でプロジェクトの作成から各種設定まで幅広く操作できます。GitHub Add-onとVercelを組み合わせることで、研究データの管理からWebサイト公開までのパイプライン を構築できます。

本記事のコードは以下で公開しています。

https://github.com/nakamura196/grdm-api-client

参考