Zenodoを使ってGithubのレポジトリのDOIを取得

深層学習系の研究では、論文に記載した実験を行ったときのプログラム一式をGithub等で公開するのが普通になってきています。

一方、Nature系の論文誌など自然科学系の論文誌では、プログラムコードを公開するだけでなくDOI(Digital Object Identifier)を付与することが求められることがある。
DOIは永久的に変更できないレポジトリに対して付与するユニークなIDである。学術論文のほとんどには自動的にDOIが付与される。DOIを”https://doi.org/”の後に続けてブラウザに入力するとその対象のURLに飛ぶ。論文誌によってはDOIのない対象を参考文献として認めない。

Github自体にはコードをフリーズして永久に保存する機構がないため、DOIの発行者となることができない。そのため、ZenodoやFigshareといった外部のリポジトリに連結してDOIを獲得する必要がある。簡単に言えば、Githubのある時点のリリースを外部リポジトリがダウンロードして、アーカイブに保存し、その保存したアーカイブに対してDOIを発行する。

まあ、気持ち的には内容証明付き郵便のようなもの。この場合、郵便局が外部リポジトリで、ある時点でのプログラム一式の内容を保証してくれる。これにより、プログラムコードを動かして実験した結果の追試が正確にできる。情報系では、このあたりの制約は緩く、ある程度性善説Github等のリリースを論文作成時点でのプログラムセットとして信用していてDOIまで求められないことが多い。多分、自然科学系では「誰が最初に○○したか」が非常に重要になるため、研究成果を得るために使用したプログラムコードをDOIで保証することが求められるのだと理解している。
(生粋の情報畑なので違っていたら申し訳ない)

Zenodoを使ったDOIの取得法は下記のGithubドキュメントに書かれている。ZenodoはOpenAIREとCERN(欧州原子核研究機構)によって運営されており、DOIを付与したアーカイブCERNのデータセンターに保管されているため、確実なバックアップが取られている。ちなみにCERNWorld Wide Web (www)を開発した機関なので、情報系にも関連が深い(今このページが見えているのもCERNの功績があってのこと)。

docs.github.com

少し分かりにくいのは、Githubリポジトリのオーナーであっても、ユーザーがpublicになっていないとZenodoに接続されたリポジトリリストに対象のGithubリポジトリが出てこないことがあることと、取得したDOIはGithub側に自動的には表示されず、ZenodoのGithubページに行って、取得したDOIを手動でコピーしてGithub側に書き込む必要がある点。