概要

Alfrescoのファイルに対して、Archivematicaを使ってAIPを作成する方法の一例です。

以下が成果物のデモ動画です。

https://youtu.be/7WCO7JoMnWc

システム構成

今回は以下のようなシステム構成とします。複数のクラウドサービスを利用していることに特に意味はありません。

Alfrescoは、以下の記事を参考に、Azure上に構築したものを使用します。

Archivematicaとオブジェクトストレージはmdx.jpを使用し、分析環境はGakuNin RDMを使用します。

オブジェクトストレージへのファイルアップロード

Alfrescoからファイルをダウンロード

Alfrescoからのファイルダウンロードにあたっては、REST APIを使用します。

https://docs.alfresco.com/content-services/6.0/develop/rest-api-guide/

OpenAPIに準拠しており、以下などを参考にしました。

https://api-explorer.alfresco.com/api-explorer/

例えば以下により、Alfrescoのユーザ名とパスワード、およびホスト名を環境変数から読み込み、メタデータの取得やコンテンツのダウンロードを行うことができました。

#fiif#crmmrl%oppo%a%moom%srrsdddddttbeeeeaAfffftors/pneseeni"A"s#l#ssss}#ces}s}_"A"ig"AR"usteeg"A"us}rbows}bnq6bC_"r"eoeeee)rnee)d"r"fe"re"rerxxe"r"re)eisie)su4sli"g"l.allllBeclle"g"t"gt"llycct"g"llsn.tl/e/inAsfedffffadoffbss_suf:ee_sfpamhf0isi0eil:v.n_...."""sed.''.""u:mdepin:nrd=.rrrpsrpsrn:no=.""oraf.""0mtm0ntfevvdupt_uptinehaa_aagealrfooni_eeeteeteeoou_uonykoi_sp_psp_t_rreosaadsaactdecudcu(stfidIdscfdsstltltddtfdrus_epldiacooc:_ebrtesreesri_actectssa.ndeDe:t"eppurfurfueep"elteddeeeztorro(sobersgbrsgacdehbeheavtafs_:{bouhtore.re.rs_u{b"pain.behrttrscsonweu"welrepoupolg(e(to_isunreinnq_nq_n_itsu:u=tr(wu""eeeoesv=otg:otsertrgtrfedrfarndegslamsududnd_egtasorg::.lb.le(r_(r_ds'i("i,ib":ol(e,deereeNeeNopl(u_r(ui(io6ifA(oodh"sdh=e:z":z(co🔍kpd(f"eo.esbosbod(af"rpe=ott"lopa4p,Pb=vsoe"on=aamstseres.A=rurstuntunest.AlaqspeeuydeyIoe.=sl:sft'tstet,e{yiIttPstapsgesgeIthtP,tur.u(ntn_nnvovrgtft"i{aieisr:m,ndraIr==io.(.(draIheeptb(pbdcbeClereo.""{apolos)oet()resfsne"e"_)(r"ssa_ibuoorl)rits=u*:slpnfna:psv(s:gqelesxxc:sg:tptpnit3td4bi:bde.s"esl'."gtsafeeulo_eccotesohaan_eeoeoengoesli:h:eial"ltefaf.eenrto.n.trapnsns=ves:ref=c:e:oguf_s.tojp:p:t)_ugsdhyraveteT(t.",l.af"a"nee,h:th(rst"t"e:h:teei,_:yt=r'eg,lfubt',dBsa}-Io"se3_oi,i,nIo"pt.rd"_hFuAnee.s6iBeatl"inDs,.a0snootDs,u(cn"a,daeLvt{nte4oa{rsr))n{otgd)t(n{n{(ttuoawtal)F(e(arenssi,:kd}{eea)s"s"s}{_rnmba{ts_'nsr}n/i[cdee/"trt.t.te/plte")aeUAveg:cjc'day_au(suTyRylaa,e()))SL(le{osaat}ilr,sipepfltno,:EF'ftsdo{cta:dfl(meqe,fhhtuaR_A._eenec*a.:r")e"u"rets'PLphl('ne":i{e:o:e:neap)AFaofc,cptvssusosdufS_ss.rotdeatcut"t"dcetiSTstped'imlror:tEreor_lWAwade]csu)/lixe_/speORosed,t(e:a}mcqia=a:RGrsn_)}p)eeudpstDEdwtc=:"iope:ieh'T)oir)/uts/l))_raeN-tits-f,Hidldod"o"td.Of}sene,n,reheS".nef,fexTset)a"a"aai'eni:umsmouds)lcaleeuletfoltsesttr_.ds-s:sp-sope}/aau/)ka('pggtp=s)uee_uTs)b""pbrw.l::aluoditierec"shc)dc/t:/oaraedl(sllefetfs(r)rre)e})es):sNccooon//evv,eerrssiioon"ns}s/)/11//nnooddeess//{{nnooddee__iidd}}"/content"

オブジェクトストレージにファイルをアップロード

boto3と、オブジェクトストレージのENDPOINT_URLACCESS_KEYSECRET_KEYおよびBUCKET_NAMEなどを使用して、ファイルのアップロード(とダウンロード)を行います。

ifi#cmrmlpop%aomo%srrsdddtdteeeoMfffotb/dseonx"MA"s#l#easssu"A"ted"A"sntbC_"dr"eonceeep"r"rxo"r"evosli"xg"lladcclll"g"ycw"g"l3/inCsfodperffos:ensfi0eil:v.a_ose.'eaa.a:fospprl:of.m4ntievddistssnwwbdibetraobisp_t_ereon__33dssu(ljliiajl3om:_nbr.ttkk_'p__cseefEnsdee_rd(tobee_eec,oaske_c.fsoxte(c_ctxssonnuyyliceelptsiebc(stpl.eesvvrincctfa_3lljefe_ailile(l==eter_,tn_efep"lnteopf(on_senhac_.ctfahnay,b=v=ootustafmlpbti,mtdnoessr__mi(eiau_oUe(._bvovro..=lkaelsetcnnposddelersgg=ecet(nhkalb(too4r)ri.eebeyc=_rst,emaojsrwtb:bdgtton_ep)t.tesaet)neooeeeetdisoa:ru_,dcr:lnss=tnnopdsst)pnet)oveeTevv3o=_.h:la:f_:a=rn((.iakg,omandFuv""cnceeaeia_ae(MMltcytod,lmfl)"DDi_e=eb_eeisMXXeussnjfd,leD__nrsevei:e)XAStl_c(clf(:_CE(,kr"te{isECCeeM_(eleNERytDn}elDSE,_Xa"_fPSTk_m)p.O__eBeabIKKyU)tuNEE,C:hcTYYK)k_""E:eU))TtR__LNn"Aa)MmEe",)object_name,file_path)

ただし、本記事執筆時点の最新のboto3を使用すると、以下のエラーが発生してしまいました。

https://github.com/boto/boto3/issues/4401

boto3==1.35.99のバージョンを使用することで、とりあえずエラーを回避できました。

Archivematicaを用いたAIPの作成と保存

以下の記事を参考に、指定したprocessing_configオプションに基づき、transferを開始します。

例えば以下のように、ArchivematicaのHOST, USER, API_KEYを用い、さらに/api/v2beta/package/メソッドを用いることで実現できます。

ififi#cmrmrmlpopop%aomomo%srrrsddtdt.teeocAffotrob/mseeranC"AA"s#lsa#s}A}A}t"AR"u#lie#d}#iirrnqesbl_"mr"eoepep)p)r"re"rofnaffeevuesii"Cg"llaliAliia"gt"llcctstei6/enlsfodf_PfCCsAsuoasoaaspuism40nii:v.a_.kI.""l""l""fr:lnptaprd=cteA}d""""cdeAormtp2tteevddhehACihaiACecoaarcrniailp)e=ntppcalpnnpso_:_nreooyeuoeopeuorhcmtacoscftofidayaretfisora_tbr.tsatnnsintn(iaehnec:t"in.C_{mptosa.Cerrtm(obeet=dhttt_thtsvtsse:{o_vl""peehcs[vlet.ssonneoe."k.oeeei((fsssnpeilpa"""ei"ei=sAieesvv=orrnd:edrnlmosseisAe_areoat:::soareplpple(ssiteyeitfanttroiPlutbncthsncbnrooiyf(oo.z-bs"bz-,t_rr_nnIfuhotahntei:cotenaCn,b=vsg=aTue:uaTiu))tg.is.t"=arnnes.qsdlboe.etyglgtylcu::y(_hd=edi:macgsedue_ivovrgt{ip(f"(ipoaipsco:eobeno_s:ee.de4elereeoe".*"oecdetospfbnpa,sdcibsjonr)ritnn"h*n"arnta"u_asfeooutsttb:bdev":o*":t((,f}t{guteednngsoeooen(:s":issi/hl(uh6r_f"(.nnss=v""tsottogao"i4_pi]"p(veeT(Afa,"enrrppcld.tago)=r"M"pAl_),t(iao"byt"=sFuA_Appfu:is/tc:6ph:taeMUpl::i.uootvia4e,a(l)_Sii""Khipnr2otle,pcusHEKc,,eedta,bnionrc:reOReaya:ileb_occoe"l)S"yt{{do)otaunaocs,,:T)iesn:pasu_tdes"{ortat/eipiesidh)+an*srlip6dao(soaep/"[,U)oa4}tnlinta"ij,"nU:nc:h_onad:_sCaIak{:ucg)e"koomDlap"ua_renne)ga,itcs+y"t::etdio=}e/h{,onso"ns"}nfes,tt."_il.-rpgfgT,a.eythtppheeea.an"tedv]hne(:cr""osAssd,Mtte_ra(jA,n)sPd)oIta.n_rrd=KadedEn"caYsot"fda)ee)r(_)type:str="standard",accession:str=None,processing_config:str=None):

AIPの可視化

作成されたAIPに対する可視化処理は、以下の記事で紹介したツールを使用しました。

ウェブアプリ化

上記の一連の処理を使用するGradioアプリの例は以下です。

ifd#ddmreeepofGmmomroord"AR"teafi]o]tde]a.tao"re"rxd=nn,u,iex,lllw"gt"yci=pttsalagfnsu:eogduplcmourrl:trscoor]p#rrotguggerp[wnaeoantluuete.wsrtrr=il"_cdsassrittttIn=.s.."peafhicdIk::eppuEunl[T=FTAts2l(oo_D_nuurofxrNftoelpi[ieli=9a).titttnu"cno"eaxalnlxfo[5gatad__te:nrdtbafetrnagsas=dp[pp(ef_beco(be=2isk(iaut(,atole=los"angk(sTrttiNcax=h"axc0grttah_ooes("oAb(o-=iars=pnn(klIelf"ms)k=ae,dPlaA7npk:Cft{a,e=bII9eo_l"chtsr"ePDdvrii.l,aI=l-etde/iseD"=4r:ntek:""f"Ttmn_:,:0as(pticstIv/.d{7-krDe{d}sb"9C)rtotb",5l:baw)r7)aiosnA(0I2esklIe4D"-ne_oP)a)at=ia}2,0Tdd"-fr}(47u"t0A9eabId)s5P0k-f_40id"cd5b,30"-"ob]u7t0p4u-ta"_2,d4i0rb)53d5390",

まとめ

考慮不足の点が多いかと思いますが、APIを用いたArchivematicaの利用にあたり、参考になりましたら幸いです。