はじめに
GakuNin RDMは、国立情報学研究所(NII)が提供する研究データ管理プラットフォームです。Open Science Framework(OSF)をベースに構築されており、APIを通じてプロジェクトの操作を自動化できます。
本記事では、Node.jsからGakuNin RDM APIを使って以下の操作を行う方法を紹介します。
- プロジェクトの作成・設定
- Wikiの作成・更新
- メンバーの追加
- GitHub連携 + Vercelによる自動デプロイ
事前準備
パーソナルアクセストークンの取得
- GakuNin RDMにログイン
- 設定 > パーソナルアクセストークンに移動
- 新しいトークンを作成(スコープ:
osf.full_read、osf.full_write)
プロジェクトの初期化
.envファイルにトークンを保存します。
.gitignoreも作成しておきます。
APIクライアントの作成
GakuNin RDMのAPIはJSON:API形式を採用しています。まず汎用的なクライアントをlib/client.jsとして作成します。
ポイント:
- 認証 :
Authorization: Bearer {token}ヘッダーで認証 - Content-Type :
application/vnd.api+json(JSON:API仕様) - Node.js 18以降の組み込み
fetchを使用(追加パッケージ不要)
プロジェクトの作成
プロジェクト情報の更新(説明・ライセンス)
作成直後のプロジェクトには説明やライセンスが設定されていません。PATCHで更新します。
利用可能なライセンス一覧はGET /v2/licenses/で取得できます。主なIDは以下の通りです。
| ライセンス | ID |
|---|---|
| CC-By Attribution 4.0 | 5f8935e4b8b8270007b1efaa |
| CC0 1.0 Universal | 5f8935e4b8b8270007b1efac |
| MIT License | 5f8935e5b8b8270007b1efb4 |
Wikiの作成と更新
Wikiページの作成
POST /nodes/{node_id}/wikis/でWikiページを作成します。content属性に初期内容をMarkdownで指定します。
Wikiコンテンツの更新
Wikiの内容更新は新しいバージョンをPOSTで作成 する方式です。直接PATCHでは更新できません。
!
注意 : homeページは削除・リネームできません。内容の変更はバージョン追加で行います。
Wikiコンテンツの取得
メンバーの追加
ユーザーIDで追加
メールアドレスで招待
GakuNin RDMアカウントを持っていないユーザーもメールで招待できます。
0
GitHub連携 + Vercel自動デプロイ
ここからは、GakuNin RDMのGitHub Add-onを活用して、ファイルをRDMにアップロードするとVercelに自動デプロイされる 仕組みを構築します。
全体の流れ
1
1. GitHubリポジトリの作成
まず、連携用のGitHubリポジトリを作成します。
2
2. GakuNin RDMのGitHub Add-on設定
GitHub Add-onの設定はAPI経由では行えないため、Web UIから設定します。
- プロジェクトページ(例:
https://rdm.nii.ac.jp/{node_id}/)を開く - Settings → Add-ons に移動
- GitHub を有効化し、GitHubアカウントを認証
- 連携するリポジトリとブランチを選択
!
Add-onの設定はOAuth認証フローが必要なため、現時点ではAPI経由での操作はできません。
設定が完了すると、GakuNin RDMのファイルストレージにGitHubリポジトリの内容が表示されます。RDM上でファイルを追加・更新すると、GitHubリポジトリにも反映されます。
3. VercelとGitHubリポジトリの連携
Vercelのダッシュボードから設定します。
- Vercelにログイン → Add New Project
- 先ほどのGitHubリポジトリをインポート
- ビルド設定を構成(フレームワークに応じて自動検出)
- Deploy
これだけで、GitHubリポジトリへのpushをトリガーにVercelが自動ビルド&デプロイを行います。
4. 動作確認
以下の流れで自動デプロイを確認できます。
- GakuNin RDMのプロジェクトページでGitHubストレージにファイルをアップロード
- GitHubリポジトリにコミットが自動作成される
- Vercelがpushを検知し、自動的にビルド&デプロイ
- 数十秒〜数分後、公開サイトに反映
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