概要

LEAF WriterとGakuNin RDMを用いたTEI/XMLファイルの編集環境の試作を行いましたので、備忘録です。

参考

以下の記事で、LEAF WriterをNext.jsから使用する方法を紹介しました。

特に、以下のnpmパッケージを使用しています。

https://www.npmjs.com/package/@cwrc/leafwriter

上記で編集対象とするTEI/XMLファイルの入出力にあたり、GakuNin RDMを使用してみます。GakuNin RDMのAPIをJavaScriptから使用する方法について、以下も参考になりましたら幸いです。

使い方

以下がプロトタイプシステムのURLです。(色々と不具合が含まれる点にご注意ください。)

https://rdm-leaf-editor.vercel.app/

UIはClaude 3.7 Sonnetに作成してもらっています。

「サインイン」ボタンを押すと、認証画面に進むので、ログインします。

ログイン後、リダイレクトされ、プロジェクトの一覧が表示されます。

TEI/XMLファイルが含まれるディレクトリまで移動します。ファイル名に「.xml」が含まれる場合、「Leaf Writer」の列に「編集」ボタンが表示されます。

LEAF Writerの編集画面に遷移するので、テキストを編集します。作業が完了したら、画面右上の「保存」ボタンを押します。

GakuNin RDMのUIから確認してみると、バージョンごとに保存されていることが確認できます。

実装

GakuNin RDMからのファイルの取得および更新は以下で行っています。

e)}e)}x:x:puac}i}rpucaccc}i}orcPo)feorocoPoo)frlcrnmh};t)trlncnrnnmh}b;ccctt:eosee,(h;ut:tetossee,o(ooohsmttaA!r`resemtttaAd!nnnrassihduronasnsnihduyrsssostTsroetewsttTtsbroet:etoowyroeedrhsayr:oTeledrhsllnik<s:sopnwniky<os:sobpeeencnesp:roeacnsepvbp:rlor..egnto"inwigtneoo"ionreewf,:rnG{zstf,r::i=nP{zbsorruisEaeEuidsUa,errrEnsneTt.rrnnss>neTt.Toorctg"iorecgtte"ioerrrtr>=,okost,rr{w=,okx((oiin)rpiiin)t""ron{a:(oonnBa:(ngw{nngglw{=`a`s,oa`fiBeu=biBaete.p(tewtatd"[aa:cfreaacfri"heextpoeet,Ftrtepntric(Fltcrelh$)iieh$ere({:;lcn({srCuaeatuapoorc$Ct]rcornlc{oi,lcnTt,erno,eseesetn{sexn{sse/{s.ttTpnxtTt:)(ootmyoe";kn(lpkx,:es"eetne:n(r$}.})e{`sc`;sr,to,peanosttnpuesosnen}t.s`Tseyt.pasettua}st))u;;s}`);

上記で使用するURLは以下です。

consturl=`https://files.rdm.nii.ac.jp/v1/resources/${project}/providers/${provider}/${id}?kind=file`;

以下のAPIから取得可能なJSONデータから、値を確認できます。(以下のURLには権限の関係でアクセスいただけないはずです。)

https://api.rdm.nii.ac.jp/v2/files/67da847416000900109e0454/

{}"}da"""}"}"}tita,r,ladyt""""""""""""}"""e"}"}"}"}"}"}i""""""""""ptgcnkpspmldde,tcclp,v,c,m,n,tnimuddrhs::eruhaiairaaaax"}"auuaa"}"}e"}o"}e"}o"}"}a"}"}knopeoete"iiemntzotsttth,dgrrtrl,drlmltldl,drl,dsfvllwnml{":bdcedheveteera""osrriei"}a""si"}mi"}ai"}ei"}a""gi"}a"""oeoendlf6u"k""""ir___asmsw"eeonnrtitinrenrdnr"nrtitenrtti:""atle""7"t:o::::ditmc"hdhn:nnntke""adyoke""nke""ake"":ke""adytke""}ayd::deor::dfeueaoor:e5altts_slhm""pnslhmtslhmtslhmslhm""p"slhm"p"{""a"ais"t"""7rludes"2o[__hf"are::es"ares"area"are{"are::e:"are":e:""::d:""8l"b"0f/2"icia{":5a]uvio:tet"":tet":tet_:tet:tet":tett"hh"hh4e:4:1i60:zhft:6d,seplefa{"::efa:efarefaefa{":{efay{:"tt"":"tt7s5.l79eeie""sersd{d""6{d""{d""e{d""{d""w{d""pwtthhhtt4"{mnxed3"dded{a:"rs"e"::7"{"::{"::c"::"::z""::e"zpptt"tpp1,pum"a,o_"d"4:_i:r:4f::o::vn:"nvsstthtss6"ll,8sp:":9"co""{0i"{"{r"{"{9o"{:o9::pptp::0,l"4fa:f30an{:{h}3l{h}{h}d{h}{h}gd{hdg/ssts/0,,7stn"7dn"t4ettstt"et"e"/::p:/04thu"2de_:{tastt"tt,stn"af/sra91o"l2087cp4"pp:pp"po,pi/:dp06r:l02fdo1s8sssssdilffmmi00a,25a4m6:3::{:::e.eii/f..10g"5-fdm/b/////"rsllrrnr00e/-0d9e/d/////d.eed.id99"00334nacaaaaamrssmrime0,13-a8tp2ppppp.d...d..00.-18e"i0iiiiinmrrnman41x29c9:.0.....i.ddi.ci50m1T0dr1rrrrrinmmin.i49lT011td0ddddd.i...ij."e"08c1rm8mmmmmainnaipa,0,0:bau.b.....c.iic./c4:48den8nnnnn.aii.aw.52623,iaiiiiijc..jczj49:ffi9iiiiip.aap.vp":4ee.5.....jccj9/,5441a"aaaaavp..dpg9.b6c,ccccc2jjo//2.699......vppwrf/434fjjjjjjf1/neif0643ppppppivlnli812d//////lr11del90d7vvvvvvee/aese579a222222ssrrdr/s0Za7///////oee/?o/Z""7ffnfnn6ussbus6",,8iioioo7roo4rf7,6lldldddcuu5lsdeeeeeeeaerrm=ta6ssssss8sccpho86//////4/ee/tr4866w6ww7wss"ta7b77z7zz4z//,pg4a4dvdvv1wwse1f0a9a9969zz:6838g8gg0gv60e44/4//0/99/705a7c7?"0pggrd0644o4f,9r/da9c81m1o0ppm80336m6r0vrr.404b0e0m1ioon717d0n0a0dvvi40bc0t0t9eiii19529s9=erdd.6e000/0j0seea00b00?0s4/rrc04b11f1o5oss.05b00o0n4s/j94889r9"/fop0/0beme,"sss/0"d80a0,tffd12a4t4osso0595=5rttw9854j4aoonec//s/grrl05?vomeaao42fene/gga5aor&t6eed4frsfa7///""miidd66b,aolaa774tntt8dd5=sea4aamj/r_788ps?%r444/of5e177?noBc644d"rto011i,mar066rard000etgs900c=e/000tjt?099%s%f1002o5o0006nDr911m"=me00o,ba099d4t4eee5=500=mj444rps"55e"o,44n,n""d",,e,r",

まとめ

LEAF-Writer Commonsについては、GitHubをデフォルトのストレージおよび認証システムとして使用しています。

https://leaf-writer.leaf-vre.org/

今回開発したシステムは、GitHubの代わりにGakuNin RDMを使用しているといった関係です。

LEAF Writerをnpmパッケージとして公開してくださっている方々に感謝いたします。