設定ファイルを 1 つ書けば、研究者プロフィールの静的サイトが出る。
研究者の登録先は researchmap、ORCID、HAL、Google Scholar と分散する。それらを まとめて見せる場所は、自分で用意するしかない。その 1 枚を最小の手間で作るための 道具である。
npm install は不要であるgit clone https://github.com/cpsbvbng26-dotcom/researcher-profile.git
cd researcher-profile
# profile.json を自分の内容に書き換えて
node build.js
# dist/index.html ができます
生成物は dist/ に出力される(index.html / favicon.svg / .nojekyll)。
同梱の GitHub Actions が main への push で自動的にビルドし、GitHub Pages へ配信する。
リポジトリの Settings → Pages → Source を GitHub Actions にすること。
profile.json の項目である。すべて任意で、書かなかった節はページに出力されない。
| 項目 | 内容 |
|---|---|
name |
氏名(必須) |
nameLatin |
ラテン表記。氏名の下に小さく表示される |
initials |
ヘッダーとファビコンに使う 1〜3 文字 |
lang |
ページの言語。既定は ja |
title / description |
ページタイトルと説明文 |
tagline |
氏名の下に置く紹介文 |
siteUrl |
公開先の URL。canonical と og:url に使われる |
ogImage |
SNS 共有用画像の URL |
accent / accentDark |
指し色。ライト用とダーク用 |
footer |
フッターに出す文字列 |
identifiers |
ORCID などの識別子。{ label, value, url } の配列 |
credentials |
修了証。{ name, items: [{ code, title, issuer, url, verify }] } の配列 |
areas |
領域。{ name, detail } の配列 |
links |
リンク。{ name, items: [{ name, note, url }] } の配列 |
labels |
見出しなどの文言。下記の既定値を個別に上書きできる |
sections |
節をどの順に出すか。書かなかった節は出ない。既定は ["credentials","areas","papers","links"] |
claim |
主張。statement と refute(どうすれば覆るか) と rows。refute が無いと生成が止まる |
verification |
検証。{ note, items: [{ name, detail }] } |
withdrawn |
撤回。{ note, items, recordUrl, recordLabel }。消さずに残すための節である |
contact |
連絡。criticism(批判・誤りの指摘の宛先)が必須で、他の連絡先より前に出る |
works |
制作物。論文と同じカードの形である |
blocks |
自由記述の節。{ id, title, html, anchors } |
jsonld |
構造化データ。そのまま出力に入り、CSP のハッシュも付く |
alternates |
言語ごとの版への hreflang |
headExtra |
<head> にそのまま入れる行 |
extraNav |
手で書いたページへの導線。{ name, url } |
taglineHtml |
tagline の HTML 版 |
claim に refute が無いと、contact に criticism が無いと、生成が止まる。
反証の手順を書けない主張は、主張ではなく宣伝である。批判の宛先を先に書かない連絡先は、 連絡先ではなく飾りである。どちらも、後から足せる注意書きではなく、書かなければ出ない形にした。
labels の既定値{
"eyebrow": "Profile",
"credentials": "修了証・資格",
"credentialsNote": "各カードから発行機関の検証ページを開けます。",
"areas": "領域",
"links": "リンク",
"verify": "確認",
"skip": "本文へスキップ",
"themeToggle": "テーマを切り替える"
}
日本語以外で使う場合は、lang と labels を差し替えること。
{
"name": "山田花子",
"nameLatin": "HANAKO YAMADA",
"initials": "HY",
"identifiers": [
{ "label": "ORCID", "value": "0000-0000-0000-0000", "url": "https://orcid.org/0000-0000-0000-0000" }
],
"credentials": [
{
"name": "edX",
"items": [
{ "code": "CS50x", "title": "Introduction to Computer Science", "issuer": "HarvardX", "url": "https://..." }
]
}
],
"links": [
{ "name": "研究者プロフィール", "items": [{ "name": "ORCID", "url": "https://orcid.org/..." }] }
]
}
profile.json には作者自身の設定が入っている。動作を確かめてから書き換えること。
PROFILE_CONFIG=./others/hanako.json PROFILE_OUT=./dist-hanako node build.js
build.js が profile.json を読み、templates/page.html のプレースホルダを置き換えて
dist/index.html を書き出すだけである。生成されるのは CSS と JavaScript を内側に持つ
HTML 1 枚で、外部への通信は発生しない。
テンプレートを直接編集すれば、配色や構成も自由に変えられる。
このソフトウェアは Zenodo にアーカイブされ、DOI が付与されている。
根本卓哉 (2026). researcher-profile: 設定ファイル1つから研究者プロフィールの静的サイトを生成するツール (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.22335692
@software{nemoto2026researcherprofile,
author = {Nemoto, Takuya},
title = {researcher-profile: 設定ファイル1つから研究者プロフィールの静的サイトを生成するツール},
version = {1.0.0},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.22335692},
url = {https://doi.org/10.5281/zenodo.22335692}
}
ソースコードは Software Heritage にも保存されている。
swh:1:snp:83f09cc80821f5cd02bbc89b069753c0c53c110a
DOI が「この版を指す約束」であるのに対し、SWHID は中身のハッシュそのものである。 この識別子が指すスナップショットの内容は、保存先のサービスに依存せず検証できる。
node build.js && node verification/check_build.js
依存パッケージはない。push のたびに 23 項目を通す。
この道具の要は「設定ファイル 1 つ」であることで、裏を返すと設定が壊れても、変な HTML が出るまで気づけない。 そこを落とす。
profile.json の必須項目・入れ子の項目・色の書式(#rrggbb)・siteUrl が https であること・外部 URL に http:// が混ざっていないことが生成物に残っていないこと。** 印を足して `build.js` を直し忘れると、ページに がそのまま出る。生成は成功したように見えるbuild.js がすべて扱っていること(生成する前に分かる)空振りでないことは確認済みである。色名を入れる、欄を消す、http:// を混ぜる、領域を足したのに出ないようにする、テンプレートに新しい印を足す、外部 script を混ぜる —— 六通り壊して六通りとも落ちた。
MIT License
本リポジトリの実装(build.js / templates/page.html)は、AIコーディング支援ツール
Claude Code(Anthropic)を使用して制作している。設計・内容の確認および最終的な
判断は制作者本人が行っている。
制作過程はリポジトリの履歴から確認できる。
| 確認できること | 方法 |
|---|---|
| どのコミットが支援を受けたものか | git log --author=Claude |
| 各コミットに紐づく作業セッション | コミットメッセージ末尾の Claude-Session: トレーラ |
| 共同作成の記録 | コミットメッセージ末尾の Co-authored-by: トレーラ |
なお、生成されるページ側にはこの表示を入れていない。生成物は利用者自身の プロフィールであり、その制作手段を勝手に表明すべきではないためである。