AtoM REST APIによるデジタルアーカイブ構築の検証

はじめに AtoM (Access to Memory) は、アーカイブ機関向けのオープンソースWebアプリケーションです。世界中の図書館・文書館・博物館で、資料記述の管理に利用されています。 AtoMの操作は通常Web UIから行いますが、REST APIを使えば外部システムとの連携やバッチ処理が可能になります。本記事では、現実的な業務シナリオ に沿ってAPIを一通り試し、Web UIでの反映も確認していきます。 APIプラグインの開発経緯や実装の詳細は、別記事 AtoMのREST APIを拡張するプラグインを開発した話 をご覧ください。 利用するAPI arRestApiPlugin (AtoM標準): 資料記述(Information Object)のCRUD arExtendedApiPlugin (独自開発): 所蔵機関・典拠レコード・受入記録・タクソノミー・機能記述・デジタルオブジェクトの操作 全28エンドポイントの一覧は開発記事を参照してください。 事前準備 # e # e x x A p A p t o P o o r I r M t キ t の ー U A ( A R T A P L O d I ( M m _ 環 _ i K 境 U n E に R Y 合 L > = わ = " せ " S y て h e o 変 t t u 更 t t r ) p i - : n a / g p / s i l - o > k c e a G y l l - h o h o b e s a r t l e : " 6 > 3 0 A 0 P 1 I " k e y で 設 定 ) APIキーはAtoMの管理画面(Settings > Global)で設定・確認できます。 ...

2026年2月15日 · 32 分 · Nakamura

AtoMのREST APIを拡張するプラグインを開発した話

はじめに AtoM (Access to Memory) は、アーカイブ機関向けのオープンソースWebアプリケーションです。ISAD(G)、ISAAR(CPF)、ISDFなどの国際標準に準拠した記述管理機能を提供しており、世界中の図書館・文書館・博物館で利用されています。 AtoMには arRestApiPlugin という標準のREST APIプラグインが同梱されていますが、以下の制約があります: 情報オブジェクト(資料記述)のCRUD が中心で、カバー範囲が限定的 所蔵機関(Repository) 、典拠レコード(Actor) 、受入記録(Accession) のAPIがない タクソノミー (分類語彙)の操作APIがない デジタルオブジェクト のアップロードAPIが実用的でない 機能記述(Function) のAPIがない これでは、外部システムとの連携やバッチ処理による大量登録といった業務ニーズに応えられません。 本記事では、これらの課題を解決するために開発した arExtendedApiPlugin の実装について解説します。 このプラグインを使って実際に業務シナリオを実行した記事もあります:APIで構築する図書館デジタルアーカイブ — AtoM業務シナリオ実践ガイド arExtendedApiPlugin の概要 エンドポイント一覧(全28エンドポイント) リソース メソッド エンドポイント 説明 サマリー GET /api/summary 各エンティティの件数 所蔵機関 GET /api/repositories 一覧(検索・ページネーション) GET /api/repositories/:slug 詳細取得 POST /api/repositories 新規作成 PUT /api/repositories/:slug 更新 DELETE /api/repositories/:slug 削除 POST /api/repositories/:slug/logo ロゴアップロード DELETE /api/repositories/:slug/logo ロゴ削除 典拠レコード GET /api/actors 一覧 GET /api/actors/:slug 詳細取得 POST /api/actors 新規作成 PUT /api/actors/:slug 更新 DELETE /api/actors/:slug 削除 受入記録 GET /api/accessions 一覧 GET /api/accessions/:slug 詳細取得 POST /api/accessions 新規作成 PUT /api/accessions/:slug 更新 DELETE /api/accessions/:slug 削除 タクソノミー GET /api/taxonomies 全タクソノミー一覧 POST /api/taxonomies/:id/terms 用語追加 PUT /api/taxonomies/terms/:id 用語更新 DELETE /api/taxonomies/terms/:id 用語削除 機能記述 GET /api/functions 一覧 GET /api/functions/:slug 詳細取得 POST /api/functions 新規作成 PUT /api/functions/:slug 更新 DELETE /api/functions/:slug 削除 デジタルオブジェクト POST /api/informationobjects/:slug/digitalobject アップロード Note : 資料記述(Information Object)のCRUDは、既存の arRestApiPlugin が提供する POST/GET /api/informationobjects を使用します。 ...

2026年2月15日 · 15 分 · Nakamura

AtoM(Access to Memory)のAPIを使って、オブジェクトを登録してみる

概要 AtoM(Access to Memory)のAPIを使って、オブジェクトを登録する方法の備忘録です。 APIの有効化 以下にアクセスします。 /sfPluginAdminPlugin/plugins arRestApiPluginを有効にします。 APIキーの取得 以下に、APIキーを生成する方法が説明されています。 https://www.accesstomemory.org/en/docs/2.9/dev-manual/api/api-intro/#generating-an-api-key-for-a-user ユーザ名とパスワードでもAPI接続できるようですが、今回はREST API Keyを発行しました。 エンドポイント AtoMでは、「典拠レコード」や「機能」など、複数のメニューが提供されていますが、APIによって利用できるのは、以下のみのようです。 See the subsequent pages for more details on each endpoint, and available parameters. There are three endpoints available: Browse taxonomy terms Browse information objects Read information object Download digital objects Add physical objects この点は、ArchivesSpaceのほうが豊富なAPIが提供されており、軍配が上がるかもしれません。 https://archivesspace.github.io/archivesspace/api/ また、以下のソースコードを確認すると、CreateActionが可能なものは、informationobjectsとphysicalobjects、digitalobjectsに限定されているようでした。 https://github.com/artefactual/atom/tree/qa/2.x/plugins/arRestApiPlugin/modules/api/actions ただ機械的に一括登録を行いたい場面は、主にinformationobjectsだと考えられるため、これらの機能のみで十分かもしれません。 physical objectsの登録 以下のようなクラスを用意します。 # c | l a e s x s d d p e e o A f f r p t i l s u p a i e a u p r # i e C _ o e s a p f l d r r e f l l i a l e s i s d l i s レ s i n d f r s _ a e _ n p ス r e e i _ . n w k p s } : # a a a s } p = t o ポ e p p p # r p p : p p n t d u a o e i e u u u e h ( n ン s r r r e r r r r t _ o r m r y _ l B t t t l y f u s ス p i i i 作 s i i i i : _ t l e d k f a h h h f s " r e を o n n n 成 u n n n n ( e = e . " " s _ _ _ . " " i { l 確 n t t t さ l t t t t s n = = = y h R C i s b b h A C c s , = 認 s ( ( ( れ t ( ( ( ( e v o : e E o c t y 6 e u o a e e " f f た f j f f l ( o o o s a S n r t 4 a t n l l s r . 物 " " オ = " s " " f o s s s . d T t 認 i e d h t _ f e e s 理 ス レ ブ 作 o エ レ ) v . . . g e - e 証 n s = e o e o . l q t オ テ ス ジ r 成 n ラ ス : e g g g e r A n の g r r n b u f u a ブ ー ポ ェ e さ . ー ポ r e e e t s P t ヘ = b s i t j r . e t ジ タ ン ク s れ d : ン r t t t e I - ッ = a z - e l h s u ェ ス ス ト p た u ス i e e e n = - T ダ a s = a T c } e t s ク コ : の o 物 m { : d n n n v K y ー f u e t y t / a s _ ト ー 情 n 理 p r e v v v ( { e p を " t 6 { i p s a d . c が ド { 報 s オ s e { = ( ( ( " y e 作 { h 4 o e ( p e p o 作 : r e ブ ( s r T " " " a " " 成 u _ . n " s i r o d 成 e . ジ r p e r a u p p : : s s b " : e / s s e さ { s j ェ e o s u t s a i e t 6 : l p , t れ r p s ク s n p e o e s _ a " r r 4 " f h ( i ま e o o ト u s o ) m r s k p a n i e f a , y p u n し s n n I l e n _ n w e i p a n n " p s h r た p s ( D t . s u a o y _ p m g c B p p i y l [ ! o e ) : , s e r m r " k l e . o a l h c s , 2 " n . t . l e d ) e i } e d s i y a i 0 ) s t { i a t " " " y c : n e i c s l c h 0 e e r n t e ) ) ) , a { c ( c a i o a e , . x e d u x t p o a t c b l a s t s e s t i a d u { i a j _ d 2 t } u n _ } o s e t a o l e o e 0 a " l t c " n s ( h u n _ c b r 1 t ) t = o ) / w ' _ t / o t j s ] u . 4 d j o a b h j b s e = : s g ) e s r s y _ s j " c s _ e ) } o d c t b o e t e c t " n } i e 6 n c s l o ( ) " " i s 4 " t ) f d ' ' ) } s . e i ) . " ) h } d d , : e " ' e a ) ) c d } o e " d r ) e s ( , ' a j s s c o i n i = ' p ) h y s i c a l _ o b j e c t s ) 以下で実行します。 ...

2025年3月12日 · 16 分 · Nakamura

AtoM(Access to Memory)をDockerで起動する

概要 AtoM(Access to Memory)をDockerで起動する機会があったので、備忘録です。 マニュアル 以下に記載があります。 https://www.accesstomemory.org/es/docs/2.9/dev-manual/env/compose/ g c e d i d x o t p c a o k c t r e l o t r o m n C c e O o M m - P p b O o S s q E e a _ / F u 2 I p . L x E - = d h " t $ t P p W s D : / / d / o g c i k t e h r u / b d . o c c o k m e / r a r c t o e m f p a o c s t e u . a d l e / v a . t y o m m l . " g i t a t o m そして、以下を実行します。 ...

2025年3月12日 · 2 分 · Nakamura