IIIF画像に対して、多角形のアノテーションを付与するツールを作成しました。

概要 IIIF画像に対して、多角形のアノテーションを付与するツールを作成しました。 https://next-fb-anno.vercel.app/ 本記事では、このツールについて説明します。 使い方 以下がトップ画面です。IIIFマニフェストファイルのURLを入力します。「入力例を使用」からもお試しいただけます。『百鬼夜行図』(東京大学総合図書館所蔵)を使用しています。 以下のようなアノテーション登録画面が表示されます。 画面右上のログインボタンからログインできます。 アノテーション付与の方法は、以下の動画を参考にしてください。 https://youtu.be/9RMqaXTaOzE 開発した背景 以下の記事で説明したように、Mirador 3の mirador-annotations プラグイン向けに、Firestore用のアダプタを開発しました。 このmirador-annotations プラグインについて、多角形のアノテーション付与を行いづらいという意見がありました。 そこで、主に多角形のアノテーション付与を支援するために、本ツールを開発しました。また、アノテーション付与を実装するためのライブラリであるAnnotoriousについて、Reactライブラリが公開されていたので、この調査も兼ねて実装しました。 https://annotorious.dev/react/openseadragon-iiif/ さらに、上記の記事で紹介したmirador-annotations プラグインのFirestore用のアダプタを流用することで、同じFirebaseのサービス(AuthenticationとFirestore)を使用するようにしました。 そのため、本ツールの右上のボタンに、Miradorへのリンクを付与しました。 これにより、本ツールで編集を行い、IIIFマニフェストファイルのメタデータを含む、情報の表示にはMiradorを使用する、といった使い方が可能になるかと思います。 多角形のアノテーションを付与するための既存ツール IIIF画像に対してアノテーションを付与する機能を持つ既存ツールは数多く存在します。ここでは、IIIF画像に対して多角形のアノテーションを付与する機能を有するツールと、本ツールとの差分を紹介します。 ここでは、国立国会図書館で公開されている「和泉国絵図」を例とします。 Omeka Classic + IIIF Toolkit 以下の記事でセットアップ方法や使い方を紹介しています。 https://zenn.dev/nakamura196/books/2a0aa162dcd0eb IIIF Toolkitでは、Mirador 2が使用されており、ポリゴンアノテーションが提供されています。 今回にニーズに対しては、多角形アノテーションではなくポリゴンアノテーションである点と、Omeka Classicのセットアップ(サーバの準備や維持)が必要になる点が課題として挙げられます。 Recogito Recogitoでは傾斜したボックス形式のアノテーションを付与することはできましたが、多角形のアノテーション付与はできないようでした。 また、以下のように、pctを用いてIIIF画像にアクセスするようで、画像が表示できないケースが多くありました。 Glycerine: Image Annotation Workbench 本ツールが最も今回のニーズに合致していました。 https://glycerine.io/ おそらく本ツールと同じ「Annotorious(のver.2)」が使用されており、多角形によるアノテーションのほか、複数人による共同作業も可能でした。 唯一の課題として、登録したアノテーションの一括登録機能が提供されていませんでした。この点に対して、今回開発したツールでは、読み込んだIIIFマニフェストファイルに対して、ログインユーザが登録したユーザが付与したアノテーションを一括エクスポートする機能を設けました。 これにより、本ツールで付与したアノテーションを一括エクスポートし、他の可視化ツールで使用する、といった使い方が容易になります。 なお、以下の記事で紹介したように、Mirador 3の mirador-annotations プラグインにも付与したアノテーションをダウンロードする機能が提供されています。しかい、この機能はCanvasごとにダウンロードする仕様となっており、複数ページから構成される場合には、ページごとにダウンロードする必要がありました。 工夫点および開発メモ 本ツールの開発にあたり、工夫した点などを紹介します。 入力するIIIFマニフェストのv2およびv3対応 入力するIIIFマニフェストファイルはv2とv3、どちらでも対応できるようにしました。この実現にあたり、以下の記事で紹介した@iiif/parserを使用しました。 ...

2025年4月2日 · 4 分 · Nakamura

Omeka Sのモジュールアップデート情報(2025-03-27)

概要 Omeka Sの運用において、モジュールのアップデートが必要になったものを紹介します。 IIIF Server https://omeka.org/s/modules/IiifServer/ 2024年2月にリリースされた3.6.18を使用していましたが、IIIFマニフェストファイル生成時に、サムネイル画像がおかしくなる不具合が確認されました。 2025年3月時点で最新の3.6.24に更新したところ、本不具合が解消しました。なお、このアップデートには、Commonモジュールの更新も必要でしたので、参考になりましたら幸いです。 https://omeka.org/s/modules/Common/ Google Analytics https://github.com/Libnamic/Omeka-S-GoogleAnalytics 2023年頃から使用していましたが、PHPのあるバージョンからwarningが表示されるようになりました。 また本モジュールの更新も、2023年から行われていませんでした。 そこで以下の記事でも紹介したように、Analytics Snippetモジュールを使用したほうがよさそうでした。 以下で更新履歴が確認できますが、こちらは最新のリリースが2025/1になっています。 https://omeka.org/s/modules/AnalyticsSnippet/ まとめ Omeka Sの運用にあたり、参考になりましたら幸いです。

2025年3月27日 · 1 分 · Nakamura

Mirador 4プラグイン開発:任意の角度で画像を回転するプラグインで、角度の初期値を設定できるようにしました。

概要 任意の角度で画像を回転するMirador 4プラグインで、角度の初期値を設定できるようにしました。 リポジトリは以下です。 https://github.com/nakamura196/mirador-rotation-plugin デモページは以下です。角度および矩形を初期設定とともに、画像を回転させることができます。 https://nakamura196.github.io/mirador-rotation-plugin/ 背景 以下の記事で、本プラグインについて説明しています。 一方、課題として、角度の初期値を与えることができませんでした。 これに対して、以下の記事で紹介したように、Mirador 4の標準機能として、角度の初期値を与えることができるようでした。 合わせて、以下の「mirador-image-tools」プラグインについて、webpackからViteに変更されていたので、この変更を「mirador-rotation-plugin」にも反映することにしました。 https://github.com/ProjectMirador/mirador-image-tools GitHub Pagesでの公開 GitHub Pagesでの公開にあたり、「mirador-image-tools」のvite.config.jsを以下のように変更しています。これで、npm run build:demoにより、GitHub Pagesで公開するためのディレクトリを作成することができるようになりました。 https://github.com/nakamura196/mirador-rotation-plugin/blob/main/vite.config.js i i i i i i i e } m m m m m m m x ) p p p p p p p V p b ) e } o } p ] r } s } ; o o o o o o o i o a , s , p , l , e , e , r r r r r r r t r s p } { } b e i l t e } u r { } s a } r o p t t t t t t t e t e r u x n o i s , g e o l , v p o : o b } : b } i c c a m b p ] i a n c } l i ' e e r { r f p { { p c d c u , u , l l M l d i u l , n c カ a l v a @ r n t e s a k o e p e i o e r } s i l } r } s d u a u e z i u { } s t ス m o i } e s t : : : d a t f g g n f r s l u m o , o l i , o , o : d t d r e l g , : ( タ e s f : : e e c f h i l f a o s d t p l e i u d b e f f n l e o } u e c e : D d i n s } ) ム : e c c t } } s { ' f t r l o f i u c . : D t l x n r : : n i o a l x u , r { : h : e O n a e , [ , プ B ( o o r { { t 4 i o f e b r g l e e i y u t p c t l r m u t t a g } c e ' p p s m t b } ラ ' u p n n y c i } c i } s d 4 n f m r U S o u t s n { r O p e u e { { r e m e p e p s l , e [ s [ j s t : e T u u ) グ f n r s s d o f a f / e 4 e r o R y m r s v : u O r t m y N a : O r u s o r ' m ] s : i : O p i c l ) イ i d o t t e { n c c f } c t c ' m 6 C o ' m L n a d . . t p n : a : a t p n t e b e r a , . x o [ D ( l o o ; ン x l c m s ( o o o o c ( o : o ' o m f T c t e e G ' D t a p m s ' t a : t a a e p j _ ' { n ' O b d n a を - e e d d o t d n n r c c c i } n h e n , n s ' o i f n I d i i l f : e : M i l F l c a : s t , s l : u . t d 追 o : s i e / e s d s 各 o o o f s d a a c r s f s f ' n P } / o i v T i r o : i : i o : { i s t c e : o i o e e 加 u s s m s d m o e t フ ( n n n a c o e w w o ( r o i r i @ p o a p n n . H s : n l t / [ r n l : : t t a s a r l n n r し t a . t o r e o l m ァ c s s s ( w o l m a a n e . l l c g v r d t f a e G U t s [ e r s ( ' a s [ e - r n t { d e d L t : て p s e D S c m S e o f イ o t t t s a n e o i i s r c e e / i o e h r c C I B ' t : ' U u r f e d : . N { ' d u d s - n ) o s デ u y n i r / o r . / i ル n t i s . / t t o r o . U i } t m : o k o T _ , r _ R e c s o . a R o e _ j a a : ' ィ t n v r c デ S c l s l を s s d s a t o l s l ) d e R n e i p } m a n H P u { _ L , r ' r { . m e m , . _ s m { d j レ - c . D ィ r S o r e ル t r e t t l o r f f e e r L d f j s a g f U A e t T i m , D O e a ' j - e ( a s ク s G = i レ c t g c s ー c s a s f e g c s s . { r T e r s e t f ' e i B G , e o n a l b s c : s f { w x ト t I r ク S a ( 内 ト f P t t . s . ( 階 . . l ! o o x o / s h r g . g _ E s P d t ' P j : t x i a a ' リ r T p ト t t ' の = デ i a P s i . l ' 層 r r o = r P . m p ' ' o l j ( P S t a e ) u l e ' ' l l f i , 構 u H a = リ a s M フ ィ l t a s c o F を m m g = ( a h l ; ; m o s { A s t x m u c ' , R i e l i t 造 c = U t が t . o ァ a レ e h t = F o g i 削 ( ( ( ' t t u b o G ? _ h . = d g t m e n s l を t > B h p 存 s i v イ w ク h i p ( l 除 d p ' ' E h m v g ' ' n E _ ( j > ' i . i a ( - o t f 修 u _ . a 在 s i ル a ト o = a l y ` e ( e a R E r ( l i i u ; ' S { / n s ] n k r c j a u e s 正 r { P r t す = D n リ i リ f = w e F C s オ m t e N r n ' t n r ; * e ' ( , ' e a t _ s s r r . e A e h る i g ス t に p a ( i o プ o h m O o e , e - l ? ' w , f , y d D t | - : r ' G s . か a r ト 移 f a p i ) l p m シ S . o E r w ' r ' , o s o O e j j f e , E o r 確 w e f を f 動 i t a t ) e i o ョ r r v N ; e ; ( U r ( r M s s s i a S l e 認 a c i 取 s l h t ( e v ン c e e T p U a p R m p - ' t x x l ( d ) v s i t l 得 . e . h f { s d e ) D s d ' r R c r L a k r , s ) ' e s F e o t o e r s j . s r : d i o ) o L t o _ ( t g o _ $ , s r i { ( l r s e ) o j . c r l o c ( ' c m ' . t _ / c l ' v f y a i o s P $ s , v r { e ' ; e o . = p a , t | e d e s ( f d { n i t a { u e i s . s c / = e t a o _ ( i ( . ) r d ( n a t s c { ( g s / s k d = e i n / _ a s d s ) o i d ( t h r c d i i _ . s e r o d s . t r t i t m r e d ( , c e r i n n _ e _ m ' D n r j e g ' s a { ( m i s P s e s a g t n _ u e . . c s s s ) t t d d o s r d a s c t l e v m p [ j x t . ; D ( e e S t c e t f u D o s . s d e e s s p i d m m r D P s h u r i d u t B ' r ' n x x _ a r e o o c i a t } l s r i t s A ] c d t _ t , m / S D r t P l i , r p _ S , / ? e ] i ) h o s r i , h a y v e u _ E i n ' n . \ , ' S r c r ) t . e ' c t ' _ n ' c , j / d r c D , f ; h ' : d t , P d m i s s . ' e c i i ) $ ) e o f A e i e r x * u m D t r f l ; { ; t m r i i T x r s c ? \ t o i o ) i e d r o y l m H . a $ . f ' r ; l ) e u ' e p h d / j 8 , ) r e ; s e ) s s o t o ] s ' ; o ) t , , t : r m r , $ ) ' o ; P r ' t l - { / , s t a f { u , . ' r } r t o c m / , o ) } c d h r r t e e m t , , ' i } c e u r t i i a ) r ` e c r r a r m t a ; e ) : u e ) . a p i s c ; r . ; u d o o _ y t t s ' r o r n t n o r i ) l r t . e c r u v ; ) - . j s y e e ) r m s t ( . : , o e ' s a . } t t _ r . ) t a a : _ g ' ; r t . / s ) u i u ' * ) ; e o r m ' , n l i , = - ) r > f p ) a o l , d ( r u o _ { c g r m e i - o : n r c / o k t ' t s r ) a _ u t _ e : i / o * } n ' ) . ] ; ' e , , s . j s ' ) , まとめ Mirador 4のプラグイン開発にあたり、参考になりましたら幸いです。 ...

2025年3月26日 · 12 分 · Nakamura

Mirador 4で、初期読み込み時に、画像の回転や範囲指定を行う

概要 Mirador 4で、初期読み込み時に、画像の回転や範囲指定を行う方法を紹介します。 背景 2025年3月現在、Mirador 4の開発が進められています。alpha版を以下で確認することができます。 https://github.com/ProjectMirador/mirador/releases おそらくMirador 4からの機能かと思いますが、以下のFAQで初期設定の方法が記述されています。 https://github.com/ProjectMirador/mirador/wiki/Frequently-Asked-Questions#q-how-do-i-change-the-view-of-an-image-to-zoom-to-a-certain-area 具体的には、以下のように、initialViewerConfigを用いることで、初期設定ができました。 https://github.com/ProjectMirador/mirador/blob/main/__tests__/integration/mirador/mirador-configs/initial-viewer-config.js e } x ; p i w } o d i ] r : n c i } m , t d a n , a ' o n i t x y z n d m w v t h : : o i e i s a i u o f f r : s a m 9 7 y m e a a I l b 3 8 o : s u d [ d V n 4 2 u t l o { : i a , , 0 I t r e i n . d ' ' w l e 0 : { , h e N e 0 t r a d 0 ' t C v 7 h p o i t , t s n g o t : f a p / i t s s / g i p : i : o e / i n c / i { P i i f o f i . s y i h i f a t z . r i o h v o o a a n m r r : v d f a a ' o r r f r d t a a m r t r u - h t s b i m e o s u u t s m t t e s o o u . m m o ' l s r , o . g o o / k r m g a g / n o m i o a f d n e i s f t e s s / t o s b / j o e b c j t e / c 2 t 9 / 9 2 8 9 4 9 3 8 / 4 c 3 a ' n , v a s / c a n v a s - 4 7 1 7 4 8 9 2 ' , 応用 上記を応用して、以下のような初期設定を行ってみました。 ...

2025年3月26日 · 8 分 · Nakamura

Next.jsでUniversal Viewerのnpmパッケージを使用する

概要 Next.jsでUniversal Viewerのnpmパッケージを使用する方法の備忘録です。 インストール 以下でインストールします。 n p m i u n i v e r s a l v i e w e r 実装 useEffectを使うため、クライアントコンポーネントとして実装する必要があるようでした。 またdivタグにuvクラスを与えることで、cssが当たるようになりました。 ' i i i } f } c } e u m m n u o ) x s p p t m c x n u } r n s l ) p e o o e a v y コ c s , e S s s o , o r r r n ? w ン t e c r i t < S t r a < r c t t f i : h ポ i E o e n [ u d R : d d / t l a f ? ー o f n q i m r i を V i i s } ビ d i { d c e n : ネ n f u s u t a n v 無 i f n v t } ュ i d e y e s u ン e n t i ( n 効 e a g y w h d j a b ー v e n u n t m s ト V c i r ' i ( i 化 w l : l i e i u l a ワ > f t s a V : b t の i t v { e u f d し e s e d i s s i c ー a ' e m i e r 実 e ( e ( v e = 、 r e = t g p t g k を u E i e s r i 装 w ( r i ' ' s " ク , { h h l i n g 読 l f c w t n e ) s n u , t u ラ = { : t a f I r み t f e r g r a i n , v イ = : y y t o 込 e f r i C = l t i { " ア d > ' : C e u み V c r P n o > v v c ン y 1 ' o m n 中 i t o r g m i } e m v c ト n 0 6 ' n s d . e m o p { e r a , l サ a 0 0 f t : : . w } p o w = s n a イ m % v l e . e ' s n e a i x s ド i ' h e n ' ' r f n e r r l f y s で c , ' x t c # r e { n を e v e w N の ( , ' : e f o x t イ q i s h a み ( , n 0 m t ( ン u e t ] m レ ) ' t f { ポ i w , ) e ン c e 0 ' d ー r e = ダ = e r f r y m ト e r c " リ > n ' 0 e n a し ( a u ン t , ' a a n て ' d n v グ P e , c m i 初 u i v " す r r t i f 期 n s a る o ' ' c e 化 i t s s コ m , ' s v / I t ン i t e e n y ポ s , r s d l ー e s m e e ネ . c a / x = ン r v l i : { ト e , v n { s i d c o x e e v w l y w x , i v w e . d e h r c x t ( ' s y h V } ) s w : i : ' h e ) ' w V } 1 e i ) 0 r e 0 C w % o e ' m r , p P o r h n o e e p i n s g t ) h ) t , { : { ' 6 0 v h ' } } > < / d i v > 他にも使用可能なオプションがあるかと思いますが、cvで処理ロードするcanvasのインデックス、xywhで表示する矩形を指定することができました。 ...

2025年3月23日 · 4 分 · Nakamura

IIIF georeference extensionの可視化ツールの改修

概要 IIIF georeference extensionの可視化ツールの改修を行いましたので備忘録です。 以下で公開しているツールです。 https://github.com/nakamura196/iiif_geo 以下のように、現代地図と画像の並列表示機能を提供します。 改修内容 IIIF georeference extensionに基づくデータ作成を支援するツールとして、Allmapsがあります。 https://allmaps.org/ 以下で使い方を紹介しています。 今回の改修では、上記ツールで作成されるデータを読み込めるようにしました。 https://annotations.allmaps.org/images/2e1d3f991aad6cb4 以下が表示例です。 https://nakamura196.github.io/iiif_geo/ja?u=https://annotations.allmaps.org/images/2e1d3f991aad6cb4 まとめ IIIF georeference extensionの応用にあたり、参考になりましたら幸いです。

2025年3月19日 · 1 分 · Nakamura

Miradorで画像を表示し、CETEIceanでテキストを表示するサンプルアプリ

概要 TEI/XMLファイルを読み込み、Miradorで画像を表示し、CETEIceanでテキストを表示するサンプルアプリを作成しました。以下のURLからお試しいただけます。 デモサイト https://nakamura196.github.io/ceteicean-mirador/ 背景 これまでにも、同様の機能を提供するアプリケーションを開発してきました。 Next.js を使用した実装例 XSLT を使用した実装例 今回は、HTMLとプレーンなJavaScriptのみを使用して実装する方法をご紹介します。 対象データ 以下の校異源氏物語テキストDBを対象とします。 https://kouigenjimonogatari.github.io/ 実装方法 ソースコードは以下のリポジトリで公開しています。 https://github.com/nakamura196/ceteicean-mirador 実装のポイント 1. CETEIcean の behaviors を利用した pb タグの処理 以下のコードでは、CETEIcean の behaviors を利用して pb タグのクリック時の挙動を定義しています。 c } t ) . t } ; a e , d i g f p } d : r i b B a g : l i } c i } c p p } r e { 不 p u p e f o f o b b ) e h 要 h r b f t p n c p n . . c i } ; t a な i e タ u 属 ( b c s ( o b ペ s t ク a o f u v 要 c : グ n p 性 e . o t c n . ー t e リ d n c i } r i 素 : の c b を l s r o s s ジ x ッ d s ( o f n o を 処 t 引 . e r c r t e 番 p t ク E t z n c i } r 非 理 i = き h t e o r t 号 a C イ v o s ( o f p s 表 o 継 a A s r e z A を g o ベ e z n t z n g b ( 示 = n d ぐ s t p r s o t 表 e n ン n o e o s ( o ; { = > o A t 属 e p n t 示 N t ト t n I z n t s T > ( c t r 性 s ) e r u e を L e d o e u o d e u t i か p I i m n 追 i I ) n E s r P d o l m r b ら { d b t 加 s d e l u f a o c ) e i u z = u = t { E e r a g c u n b t o = t = e = l m f c e u m { t u e n e e e n e e a e ( m e . t ( e l c ( l ` e t m n c E s e n c e " I . o " . [ r h e t e l u n t r ( n d g r d g P ( i n ) E e r t . e " " を e r a e a " s t l m f . c a n , 取 t e t t g c . { e e a c r t " 得 A s a A e l g = m n c r e e ) e t p - t i e e t e e a E ) l t . z t $ c t d n E a t l . r r o r { k A o t & l t e e { g i e n i p " t c & e e D m e b p e b a , t u = m D o e t u l - u g r m s e o c n A t a i t e f i e z u n c u t t e c d e N u b n o r t u m ( t ( e " ( u n u t n f . m e " r " ( , " m c t . e a g e n t i c ' n } t e q E c e n t e b o # z " ] i ( u l e t t F i u r ' o ) ` o " e e E A F r - t r , n ; n d r m l t r a p e e e ( a y e e t a g b ( s I ) t S n m r g m " " p d a e t e i m e ) n " ) ) " { - l . n b e n ; " ) ; ; " z e c t u n t ) ; ; o c l . t t ( ) n t o h e ( ) ; e o s a ( ) , - r e s " , i ( s A s d ` t t a " t ( t m ) e " r e ; i t i A - e b s z i u " o - t ) n s e ) e u ( ; [ r " i f s d a a = c m " e e $ " A { ) s z ; " o ) n ) e I { d } " ] ` ) ; 2. Mirador でのページ遷移処理 pb タグをクリックした際に、TEI/XML ファイルから Canvas の URI を取得し、Mirador のページ遷移を実行します。 ...

2025年3月14日 · 6 分 · Nakamura

ピラミッドTIFFの作成において、ImageMagickがうまく動作しないケースがある?

概要 IIIFの画像配信に向けたピラミッドTIFFの作成において、ImageMagickがうまく動作しないケースがあり、調査してみました。 参考 以下のようなページで、変換方法が説明されています。 https://samvera.github.io/serverless-iiif/docs/source-images#creating-tiled-tiffs Using the VIPS command line # v # v i i F p F p & & o s o s & & r r t e v r a i a x i m f t p 3 f s r s t - s o a e c a u c t m h v r t i p a e c _ f _ n e b f i n s a s m e o i n a a l u m d v g r a e e s c g s . o e e o t v u _ u e r i w r m c m i c p e a t e _ g h _ i i e i m m . a m a a t n a g g i g e e f a e . l . v o p t u h i o t a f u p t u c t p t h e u _ a m t i n p _ m n _ i a e i m g l m a e a g . g e t e . i . t f v i f 0 - t - i - t l n i e l 3 e - \ p - y p r y a r m a i m d i d - c - o c m o p m r p e r s e s s i s o i n o n j p j e p g e g - t - i t l i e l - e w - i w d i t d h t h 2 5 2 6 5 6 - t - i t l i e l - e h - e h i e g i h g t h t 2 5 2 6 5 6 \ Using ImageMagick c o n - - - ' v d d c p e e e o t r f f m i t i i p f n n r : s e e e o o s u u t t s t r i i p c f f j u e f f p t _ : : e _ i t g g i m i e m a l n \ a g e e g e - r e . g a . t e t t i o e i f m - f e p ' - t y a r r l y a p = m h 2 i a 5 d 6 s o x = f 2 t f 5 r 6 u e 対象データ 以下の画像を使用させていただきます。 ...

2025年3月11日 · 18 分 · Nakamura

mdx.jpのオブジェクトストレージとIIP Image(IIIF Image Server)を使ってIIIF画像を配信する

概要 mdx.jpのオブジェクトストレージとIIP Image(IIIF Image Server)を使ってIIIF画像を配信する試行の備忘録です。 以下の記事の続きです。 Docker版IIP Image 以下で、IIPImage serverのDocker Imageが公開されていましたので、こちらを使います。 https://hub.docker.com/r/iipsrv/iipsrv 以下の記事などを参考に、Dockerをインストールします。 https://qiita.com/Marron-chan/items/570c7c7baaae3b4d6b11 実行 前回の記事に倣い、以下のようにmdx.jpのオブジェクトストレージをマウントします。 s 3 f s s a t o r u 1 9 6 ~ / s 3 m o u n t p a s s w d _ f i l e = ~ / . p a s s w d - s 3 f s u r l = h t t p s : / / s 3 d s . m d x . j p u s e _ p a t h _ r e q u e s t _ s t y l e a l l o w _ o t h e r 注意点として、前回の記事から、-o allow_otherを追加しています。これを追加しないと、次のコンテナ起動時に以下のエラーが発生しました。 ...

2025年3月7日 · 6 分 · Nakamura

s3fs を使用してmdx.jpのオブジェクトストレージをファイルシステムのようにマウントする方法

概要 s3fs を使用してmdx.jpのオブジェクトストレージをファイルシステムのようにマウントする機会がありましたので、備忘録です。 1. 事前準備 Ubuntu を対象とします。 ✅ s3fs のインストール s s u u d d o o a a p p t t u i p n d s a t t a e l l s 3 f s ✅ 認証情報の設定 mdx.jpのオブジェクトストレージの アクセスキー と シークレットキー を ~/.passwd-s3fs に保存。 echo “ACCESS_KEY:SECRET_KEY” > ~/.passwd-s3fs chmod 600 ~/.passwd-s3fs # セキュリティのため権限変更 2. S3 ストレージをローカルにマウント ✅ マウントポイントを作成 ...

2025年3月6日 · 1 分 · Nakamura

Mirador3のFirebase連携annotationsプラグインにおいて、メールアドレスによる登録を可能にしました。

概要 Mirador3のFirebase連携annotationsプラグインを開発しています。 こちらについて、これまではGoogleアカウントによるログイン機能のみを提供していましたが、メールアドレスによるログイン機能を追加しました。 機能紹介 以下、ログインボタンを押した場合です。 メールアドレスによるログインの場合、アカウントの新規作成が可能です。 ログイン後、ユーザに関する情報を表示するようにしました。 アイコンをクリックすると、ログアウトボタンが表示されます。 まとめ IIIFを用いたアノテーションの作成と共有において、参考になりましたら幸いです。

2025年2月21日 · 1 分 · Nakamura

vttファイルからTEI/XMLを作成する

概要 vttファイルからTEI/XMLファイルを作成する方法の備忘録です。 さらに、IIIFマニフェストから、vttファイルおよびTEI/XMLファイルにアクセスできるようにしてみます。結果、以下のように、TEI/XMLファイルがSeeAlsoに関連づけられ、また「Annotations」タブから、vttファイルの内容にアクセスできます。 https://clover-iiif-demo.vercel.app/?manifest=https://movie-tei-demo.vercel.app/data/sdcommons_npl-02FT0102974177/sdcommons_npl-02FT0102974177_vtt.json 参考 以下の「The Ethiopian Language Archive」における取り組みを参考にしました。特に、TEI/XMLの構造化方法が特に参考になりました。 https://dev.jael.info/documentation/ 例 以下で作成したvttファイルを対象とします。 具体的には、以下の『県政ニュース 第1巻』(県立長野図書館)を使用します。 https://www.ro-da.jp/shinshu-dcommons/library/02FT0102974177 TEI/XMLの作成 作成したTEI/XMLファイルの例は以下です。 https://movie-tei-demo.vercel.app/data/sdcommons_npl-02FT0102974177/sdcommons_npl-02FT0102974177.xml 具体的には以下です。 < < < ? ? t / x x e < < t m m i t / T / e l l C e < t E < < T i - - o i f / e I t / t / E C m m r H i < < < < f i > e < < t e < t I o o o p e l t / p / n / s / i H i f / r / e x b e > r d d s u a e i < t u < < p o < n o < s l e H i < < < < f e < r i t o < < < < < < < < < < b x p e e c s d D t t i b d a / u t n o u b / o e a e l t / p / n / s / i v c e H > d t / a / a / a / a / a / a / a / a / a o t u l l h e e l i t l i v < a b e o t r i < < b u D d a e i < t u < p o < n o < s l i h v e y i < < < < < < < < < < t n < a n < a n < a n < a n < a n < a n < a n < a n < a d > s e x r s e t l i s a l v l s t e c b m / r i r e e d D t t i b p u t n o u p o e s a i a > m w w w w w w w w w w i n u n n u n n u n n u n n u n n u n n u n n u n n u n y > h h m m > c S l e c t i i a i S e s e l o < < < m e b c s r e e l i t l b e o t r u D i n s d e h h h h h h h h h h m o n o n o n o n o n o n o n o n o n > r r a l > t e S a r l c i c t > S D S n t a / i / o f l e c > r s e t l i l s t e c r e o g i e l e e e e e e e e e e e t s o t s o t s o t s o t s o t s o t s o t s o t s o e e t n m > t t i a e l a m 昭 t e t o i v < a m < i n S D > > c S l e c i S e s e c s n e o r i n n n n n n n n n n l a t t a t t a t t a t t a t t a t t a t t a t t a t t f f y s t 県 m i b b n a t t 和 m s r g t a l v p p m o t t e > t e S a c t S D e c D n > n i t a a t a a t a a t a a t a a t a a t a a t a a t a a = = p = > 政 t o u i c b i > 3 t c u r l i i a r u p g a r s m > t t a m t e D > e w D e a a a a a a a a a a n i r t i r t i r t i r t i r t i r t i r t i r t i r t " " e " ニ > n t l e i o 0 > > c > e l c i i b r r r u c t 県 m i t t m s e s h e b b b b b b b b b b e o t i o t i o t i o t i o t i o t i o t i o t i o t i h h n h ュ S o i l n 年 t > a e l n l i > g c > > 政 t o i > t c s c e s u s s s s s s s s s s > n = o n = o n = o n = o n = o n = o n = o n = o n = o t t s t ー t r t t i S に > 県 b n a t i n e t ニ > n o > > c > n c n o o o o o o o o o o B " n B " n B " n B " n B " n B " n B " n B " n B " n t t = t ス m > y a t t 長 政 i c b > s t t > ュ S n > = > i l l l l l l l l l l l # B l # B l # B l # B l # B l # B l # B l # B l # B p p " p t 中 > r y m 野 ニ l e i h > = ー t S " t u u u u u u u u u u o t l o t l o t l o t l o t l o t l o t l o t l o t l : : h : 第 > 村 g > t 県 ュ i l e " ス m t 2 = t t t t t t t t t t c 1 o c 2 o c 3 o c 4 o c 5 o c 6 o c 7 o c 8 o c 9 o / t / 1 覚 e > が ー t t i r h t m 0 " e e e e e e e e e e k " c k " c k " c k " c k " c k " c k " c k " c k " c / t / 巻 < t 制 ス y a t > t 第 > t 2 m = = = = = = = = = = k k k k k k k k k w w p w < / = 作 > r y 信 t 1 > 5 s " " " " " " " " " " x e > x e > x e > x e > x e > x e > x e > x e > x e > w w : w / d " し 第 g > 州 p 巻 - " 0 0 0 0 0 0 0 0 0 0 m n m n m n m n m n m n m n m n m n w w w t i h た 1 e デ s < 0 > 0 0 0 0 0 0 0 0 0 0 l d l d l d l d l d l d l d l d l d . . / . i s t 記 巻 t ジ : / 2 : : : : : : : : : : : = : = : = : = : = : = : = : = : = t t p t t t t 録 < = タ / t - 0 0 0 0 0 0 0 0 0 0 i " i " i " i " i " i " i " i " i " e e u e l r p 映 / " ル / i 1 0 0 0 0 0 1 1 1 1 1 d # d # d # d # d # d # d # d # d # i i r i e i : 像 t h コ w t 8 : : : : : : : : : : = t = t = t = t = t = t = t = t = t - - l - > b / 。 i t モ w l " 0 2 3 5 5 0 0 1 2 3 " 2 " 3 " 4 " 5 " 6 " 7 " 8 " 9 " 1 c c . c u / 次 t t ン w e > 0 5 8 0 5 3 8 8 3 3 a " a " a " a " a " a " a " a " a 0 . . o . t c の l p ズ . > . . . . . . . . . . b > b > b > b > b > b > b > b > b " o o c o o r 8 e s r 作 0 5 5 5 5 5 5 5 5 5 1 ♪ 2 今 3 男 4 ♪ 5 か 6 ♪ 7 そ 8 そ 9 > r r l r r e タ > : 県 o 成 0 0 0 0 0 0 0 0 0 0 " ♪ " 年 " 女 " 〜 " く " " の " の " ま g g c g > a イ / 立 - 0 0 0 0 0 0 0 0 0 0 > ♪ > は > 青 > < > て > ♪ > 日 > 結 > た / / . t ト / 長 d " " " " " " " " " " < 選 年 / 県 < 午 果 こ r r n i ル c 野 a / / 挙 や u 下 / 後 、 れ e e r s v を r 図 . c x x x x x x x x x x u の 婦 > に u 8 長 と l l g e 収 e 書 j h m m m m m m m m m m > 当 人 お > 時 野 同 e e 1 c 録 a 館 p a l l l l l l l l l l た 層 け 県 時 a a d . o す t 所 / n : : : : : : : : : : り は る き 知 に s s s 0 m る i 蔵 s g i i i i i i i i i i 年 も 投 っ 事 、 e e d " m 。 v 資 h e d d d d d d d d d d 。 ち 票 か に 県 / / l > o 「 e 料 i > = = = = = = = = = = 2 ろ 率 り は 議 x x / n 地 c < n " " " " " " " " " " 月 ん 、 、 、 会 m m s s 方 o / s t t t t t t t t t t の の 全 県 前 議 l l c . 選 m p h 1 2 3 4 5 6 7 8 9 1 総 こ 国 下 知 員 / / h o 挙 m u u " " " " " " " " " 0 選 と の 一 事 6 t t e r 終 o b - " 挙 、 上 斉 の 1 e e m g る n l d に こ 位 に 林 名 i i a / 」 s i c 引 の を 即 寅 の / / t l 、 . s o き 老 占 日 氏 当 c c r i 「 o h m 続 人 め 開 が 選 u u o c 地 r e m い も る 票 当 も s s n e 方 g r o て 今 立 が 選 決 t t " n 選 / > n 、 年 派 行 。 定 o o ? s 挙 p s 4 8 な わ < し m m > e 後 u / 月 8 成 れ / ま / / s 初 b l の を 績 ま u し s s / の l i 県 迎 を し > た c c b 県 i b 市 え 収 た 。 h h y 議 c r 町 た め 。 < e e / 会 d a 村 と ま < / m m 4 開 o r と は し / u a a . か m y 八 い た u > / / 0 る a / 木 え 。 > r r / 」 i 0 早 、 < e e " 、 n 2 の そ / l l > 「 / F 選 の u a a h 三 z T 挙 慎 > x x t 十 e 0 で 重 n n t 年 r 1 、 な g g p 度 o 0 長 投 / / : を / 2 野 票 t t / 賄 1 9 県 ぶ e e / う . 7 1 り i i c 県 0 4 1 が _ _ r の / 1 6 老 a a e お " 7 万 い l l a 台 > 7 有 の l l t 所 c " 権 表 . . i 」 c > 者 に r r v 、 0 信 の 一 n n e 「 < 州 関 徹 g g c す / デ 心 さ " " o す l ジ は を m む i タ 非 伺 t t m 土 c ル 常 わ y y o 木 e コ な せ p p n 建 n モ 高 て e e s 設 c ン ま い = = . 」 e ズ り ま " " o 、 > よ す a a r 「 県 う 。 p p g 明 立 で < p p / る 長 す / l l l く 野 。 u i i i 正 図 < > c c c し 書 / a a e く 館 u t t n 健 所 > i i s や 蔵 o o e か 資 n n s に 料 / / / 」 < x x b 、 / m m y 「 r l l / 幕 e " " 4 を f . と > s 0 じ c / た h < 善 e / 光 m l 寺 a i の t c 御 y e 開 p n 帳 e c 」 n e 、 s > 「 = 勇 " ま h し t い t 水 p 防 : 訓 / 練 / 」 r 、 e 「 l お a 国 x じ n ま g ん . 民 o 謡 r 大 g 会 / 」 n < s / / n s o t t r e u > c t u r e / 1 . 0 " ? > IIIFマニフェストファイルの作成 上述したTEI/XMLファイルをseeAlsoに持つIIIFマニフェストファイルを作成しました。 ...

2025年2月21日 · 32 分 · Nakamura

clover-iiifをNext.jsで使用する

概要 clover-iiifをNext.jsで使用するサンプルリポジトリを作成したので、備忘録です。 https://clover-iiif-demo.vercel.app/ 背景 clover-iiifは以下のように説明されています。 https://github.com/samvera-labs/clover-iiif Extensible IIIF front-end toolkit and Manifest viewer. Accessible. Composable. Open Source. (日本語訳)拡張可能な IIIF フロントエンドツールキットとマニフェストビューア。 これをNext.jsで使用します。 データ 「校異源氏物語(国立国会図書館所蔵)」をサンプルデータとして使用します。 https://dl.ndl.go.jp/pid/3437686 リポジトリ 以下で公開しています。 https://github.com/nakamura196/clover-iiif-demo 以下を参考にしました。 https://samvera-labs.github.io/clover-iiif/docs/composing クライアントサイドでの実行にあたり、以下のような工夫が必要でした。 " i i i c ) c } c } e u m m m o ; o ; o ; x s p p p n { n c c r ) n r ) p e o o o V s s o o e ; s e ; o r r r i t s t n n t < t t < r c t t t e = s s s u a / u S / t l w V > r W t t r r < a W r u < S i R d { e i : o n t V r o n s W u d e e y r e i r s m i i t r p o s e n a n u コ w m f k e a ( c e i k ( e r p f t c a s ン e p a C a n l w c n k e a " t m e ポ r o l o r i e e l = s C n u ; , i S ー r s n c f > r e e o s l c e ネ = t e t h e > n e t { a ン ( e P s i f t > f r ト d " } n a t i a e W S r c を y @ t r I i = l n o u o h 動 n s a d f > l t r s m P 的 a a = m C b k p a に m m s = o { a ; e " r イ i v n c n n a ン c e = s t k s e m ポ ( r e e = e x s ー a = u a n { t ト / > s r t < } / } ( c e c = d d S l { S h { i f y f S o e P m v r n r R v a a a > o a o を e r r n L m m m 無 r c a i o i 効 - h m f a " c " 化 i P s e d r " n ) i a . s i e ; e i r g t n a x f a e I g c t / m t d . t / v s ( } . " n i ( ' . ; a e ) m < v w ; a / i e n d g r i i a " f v t ) e > i , s } o t > n ' " ) ; " h t t p s : / / d l . n d l . g o . j p / a p i / i i i f / 3 4 3 7 6 8 6 / m a n i f e s t . j s o n " ; まとめ 不完全な点もあるかと思いますが、参考になりましたら幸いです。 ...

2025年2月17日 · 3 分 · Nakamura

Mirador 3の mirador-annotations プラグインで、付与したアノテーションをダウンロードする

概要 Mirador 3の mirador-annotations プラグインで、付与したアノテーションをダウンロードするための設定に関する備忘録です。 https://mirador-annotations.vercel.app/ 背景 以下の記事で、アノテーションをGoogleのFirestoreに登録する方法を紹介しました。 ここで登録したアノテーションをダウンロードするにあたり、mirador-annotationsプラグインでダウンロードオプションが提供されていたので、その方法について紹介します。 方法 以下がデモページのソースコードになりますが、exportLocalStorageAnnotationsというオプションをtrueにすることで、ダウンロードアイコンが表示されました。 i i i i c c } m m m m m o o ; i p p p p n n a } i w } w } r o o o o s s n , d i , i ] a r r r r t t n a e : n d s n l , d t t t t o d x d e i d o o e c t a p ' o f d o a r m a L A n o a p a o d w a e w d . i n o n d n t t d r e : u B s e v r n c n p f i e a t m l a : d i a o a o o i o r p L o { t r M e d t l t i g n : t o ' S O [ a w o a S o n : e c , i p { n e r t t t t = ( r a d e i r i o A U { c : l e n f ( f o r d r { a S B B e c r n a a l n ( t a y s o o P g p v c o r D t n m l e t = a a r P e : f u A e s n a a f i ' g d r ' I v g n a ' g m i a h d a e e u h , i n p f t ) s A l l t r s t r t I n : t t [ a e o p = d n : p . d f r m : > ) o ' s . o r / t a t : . r f / n = a n r / a m r 1 e > t n u / n d o 2 w i o e i n i m 7 n o t , i o s . L e n a i t t 0 o w s t f a . c : i . t e s 0 a A o h i s r . l n f n a o c 1 S n a s r n s s : t o l ' v P r r A 3 o t s , a l c c s n 0 r o e r u / ' r n 0 a t , d g i ; c 0 g A a i n t / e d r n d L o a A a t s e o t n d p m ] x c A n a t d u ) ' a d o p e i s ; ; l a t t r s e S p a e ( p u t t t r c l m o e i ( a a s r r o ` n y . a ' n l v o g ; s o a a r e ' c s n g A ; a I n / d l d o m a S , t a p t a n t o e t i e r n i f r a d o e ' g p n s ; e o t : i J s / n S / / t O o ? U N b c r j a l e e n ) x c v , p t a o / s r 2 I t 9 d 9 = b 8 $ u 4 { t 3 c t ' a o , n n v a s I d } ` ) , ダウンロードによって得られるJSONファイルの例は以下です。canvas毎にダウンロードできます。 ...

2025年2月14日 · 16 分 · Nakamura

Mirador 3の mirador-annotations プラグイン向けに、Firestore用のアダプタを開発しました。

概要 Mirador 3の mirador-annotations プラグイン向けに、Firestore用のアダプタを開発したので備忘録です。以下でお試しいただけます。 https://mirador-annotations.vercel.app/ 背景 Mirador 3の mirador-annotations プラグインは、デフォルトではローカルストレージにアノテーションが保存されます。 一方、以下の記事で紹介したように、アダプタを変更することで、ローカルストレージではない場所にアノテーションを保存することもできます。 そこで、今回はGoogleのFirestoreに保存するためのアダプタを開発しました。 使い方 ユーザごとにアノテーションを保存できる仕組みとしました。 そのため、まず以下のボタンから、ログインを行います。 ログイン後、自分が付与したアノテーションが表示されます。 アノテーションの登録方法に違いはありません。 ログアウトすると、アノテーションが非表示となります。 リポジトリ ソースコードは以下で公開しています。 https://github.com/nakamura196/mirador-annotations 特に、以下が今回開発したアダプタです。 https://github.com/nakamura196/mirador-annotations/blob/master/src/FirestoreAnnotationAdapter.js また、以下がログインを行うためのボタンです。 https://github.com/nakamura196/mirador-annotations/blob/master/src/GoogleAuthButton.js 開発される際には、.env.exampleを参考に、FirebaseのAPIキーなどを.envに記入します。 https://github.com/nakamura196/mirador-annotations/blob/master/.env.example まとめ 本アプリを使用することで、ユーザごとに、IIIF画像に対するアノテーションを簡単に管理できるようになると思います。 なお、冒頭でご紹介した本アプリのデモ環境に登録されたデータは任意のタイミングで削除する可能性があるのでご注意ください。

2025年2月14日 · 1 分 · Nakamura

IIIFマニフェストファイルからOCR結果を含むTEI_XMLファイルを作成するプログラム

概要 IIIFマニフェストファイルからOCR結果を含むTEI_XMLファイルを作成するプログラムを作成しました。このプログラムの使用方法について説明します。 仕組み IIIFマニフェストファイルのURLを指定して、NDL古典籍OCR-LiteによるOCR結果を含むTEI/XMLファイルを作成します。 https://github.com/ndl-lab/ndlkotenocr-lite 使い方 以下のノートブックにアクセスしてください。 https://colab.research.google.com/github/nakamura196/000_tools/blob/main/IIIFマニフェストファイルからTEI_XMLファイルを作成するプログラム.ipynb そして、一つ目の再生ボタンを押します。 完了したら、「実行」という部分のmanifest_urlとoutput_dirの値を更新して、セルを実行します。 output_dirに、OCR結果を含むTEI/XMLファイルが出力されます。 出力例 以下のように、ページおよび行ごとのOCR結果を含むファイルが作成されます。 < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ? ? T t f t t / p p d / s b p / / / / t b a l s l s l s / a l s l s l s l s l s l s l s l s l s l s l s l s l x x E e i i i t u u a p o i t b s f t e o b b e b e b e a b b e b e b e b e b e b e b e b e b e b e b e b e b m m I i l t t i b b t u u b r i o i e x d / g / g / g b / g / g / g / g / g / g / g / g / g / g / g / g / l l H e l l t l l e b r l b u l i t y n > > > > n > > > > > > > > > > > > > - - x e D e e l i i > l c > t l r e H > > = t t t = t t t t t t t t t t t t m m m a e S > e c s 2 i e a > c D e " y y y " y y y y y y y y y y y y o o l d s t O S a h 0 c D r e e a 1 p p p 2 p p p p p p p p p p p p d d n e c m C t t e 2 a e g D s d " e e e " e e e e e e e e e e e e e e s r > t R m i r 5 t s e e c e = = = = = = = = = = = = = = = l l = > > 結 t o > - i c t s > r t " " " t " " " " " " " " " " " " " 果 > n N 0 o > = c > y 本 本 本 y 本 本 本 本 本 本 本 本 本 本 本 本 h h h : S D 1 n " > p 文 文 文 p 文 文 文 文 文 文 文 文 文 文 文 文 r r t t L - S h e " " " e " " " " " " " " " " " " e e t h m 古 2 t t = = f f p t t 典 9 m t " n n n " n n n n n n n n n n n n = = : t > O < t p p = = = p = = = = = = = = = = = = " " / p C / > s a " " " a " " " " " " " " " " " " h h / s R d : g 1 3 4 g 1 2 3 4 5 6 7 8 9 1 1 1 t t w : < a / e " " " e " " " " " " " " " 0 1 2 t t w / / t / " " " " " p p w / p e i c c c c c c c c c c c c : : . i u > i f o o o f o o o o o o o o o c c c / t i b i a r r r a r r r r r r r r r o o o / e i l f c r r r c r r r r r r r r r r r r w w i f i . s e e e s e e e e e e e e e r r r w w - . s d = s s s = s s s s s s s s s e e e w w c d h l " p p p " p p p p p p p p p s s s . . . l e . h = = = h = = = = = = = = = p p p t t o . r i t " " " t " " " " " " " " " = = = e e r i > t t # # # t # # # # # # # # # " " " i i g t c p z z z p z z z z z z z z z # # # - - / c . s o o o s o o o o o o o o o z z z c c n . u : n n n : n n n n n n n n n o o o . . s u - / e e e / e e e e e e e e e n n n o o / - t / - - - / - - - - - - - - - e e e r r 1 t o i 1 3 4 i 1 2 3 4 5 6 7 8 9 - - - g g . o k i " " " i " " " " " " " " " 1 1 1 / 0 k y i > > > i > > > > > > > > > 0 1 2 r r " y o f 国 空 ゆ f あ ・ 中 住 ね に は は な " " " e e > o . . 外 せ ふ . つ ・ 川 ぬ ら く じ つ り > > > l l . a d < み か d た ・ ノ < れ ま め か ぬ こ お ほ e e a c l / 二 ほ l い ・ 中 / 給 れ て し れ ぼ ぼ ど a a c . . s < < . < ・ 川 s は て う う な し す が s s . j i e / / i / ・ 宿 e ぬ も し て ど て て み e e j p t g s s t s ・ に g ま な と な の ふ さ の / / p / c > e e c e ・ て > ゝ ら 世 が 給 し ぐ い x x / r . g g . g ・ 之 に は を ら へ た り と m m r e u > > u > ・ 源 。 ぬ 思 ふ ば り の な l l e p - - ・ 氏 わ を ひ ま 。 。 ほ が / / p o t t ・ 十 れ 。 知 じ な い そ か t t o / o o ・ 六 は こ ぬ く み ど く ら e e / i k k ・ 才 か よ れ こ た ら ち ざ i i i i y y ・ < く ひ ば そ を う い り / / i i o o ・ / 人 な < 思 さ た さ し c c i f . . ・ s に ん / ひ へ し き け u u f / a a ・ e < < s < < と < < s s / 0 c c ・ g / / e / / < / / t t 0 f . . ・ > s s g s s / s s o o f 1 j j ・ e e > e e s e e m m 1 1 p p ・ g g g g e g g / / 1 a / / ・ > > > > g > > s s a 3 i i ・ > c c 3 e i i ・ h h e d i i ・ e e d - f f ・ m m - 1 / / ・ a a 1 8 s s ・ / / 8 c o o ・ r r c 2 t t ・ e e 2 - o o ・ l l - 7 _ _ ・ a a 7 3 o o ・ x x 3 2 g g ・ n n 2 2 a a ・ g g 2 - i i ・ / / - 6 _ _ ・ t t 6 3 2 2 ・ e e 3 4 0 0 ・ i i 4 0 2 2 ・ _ _ 0 - 3 3 ・ a a - 1 1 1 ・ l l 1 9 0 0 ・ l l 9 e / / ・ . . e d A A ・ r r d 3 0 0 ・ n n 3 f 5 5 < g g f 0 _ _ / " " 0 d 4 4 s d 9 / / e t t 9 6 0 0 g y y 6 6 0 0 > p p 6 e 2 2 e e e / / / = = / m A A " " m a 0 0 a a a n 5 5 p p n i _ _ p p i f 4 4 l l f e _ _ i i e s 0 0 c c s t 0 0 a a t " 2 2 t t < / _ _ i i / > 0 0 o o t 0 0 n n i 0 0 / / t 1 2 x x l . . m m e t t l l > i i " " f f / / s s f f c c u u h h l l e e l l m m / / a a f f t t u u y y l l p p l l e e / / n n 0 0 s s / / = = d d " " e e h h f f t t a a t t u u p p l l : : t t / . . / j j r p p p e u g g l r " " a l > > x . n o g c . l o c r . g r n g s d s s t d r l u / c s t c u h r e e m / a 1 t . r 0 o " n ? " > ? > まとめ 不完全な点もあるかと思いますが、参考になりましたら幸いです。 ...

2025年1月30日 · 10 分 · Nakamura

Omeka SのImage ServerでのCORS対応

概要 Omeka SのImage ServerでのCORS対応に関する備忘録です。 背景 以下の記事で、Omeka SのIIIF ServerモジュールでのCORSエラーへの対応方法を紹介しました。 上記の設定により、IIIFマニフェストファイルはダウンロードできるようになりましたが、以下のように、画像がダウンロードできなくなるケースがありました。 A c c e s s t o i m a g e a t ' h t t p s : / / x x x / i i i f / 2 / 8 4 5 5 / f u l l / 8 6 , / 0 / d e f a u l t . j p g ' f r o m o r i g i n ' h t t p s : / / u v - v 4 . n e t l i f y . a p p ' h a s b e e n b l o c k e d b y C O R S p o l i c y : T h e ' A c c e s s - C o n t r o l - A l l o w - O r i g i n ' h e a d e r c o n t a i n s m u l t i p l e v a l u e s * , ' , b u t o n l y o n e i s a l l o w e d . この症状への対処方法について紹介します。 ...

2025年1月27日 · 2 分 · Nakamura

AppSheetを使ってデジタルコレクションを構築する

概要 AppSheetを使ってデジタルコレクションを試作してみましたので、備忘録です。 対象データ 以下の記事と同じデータを利用しています。 具体的には、『東京帝國大學本部構内及農學部建物鳥瞰圖』(東京大学農学生命科学図書館所蔵)をサンプルデータとして使用します。 https://iiif.dl.itc.u-tokyo.ac.jp/repo/s/agriculture/document/187cc82d-11e6-9912-9dd4-b4cca9b10970 成果物 以下のURLからアクセスいただけます。 https://www.appsheet.com/start/092a3ff4-1074-4e27-bbd1-f4820da77511 画像の一覧機能や、 地図へのマッピング機能、 簡単な集計機能を提供します。 作成方法 アプリの初期設定 アプリを作成します。 データソースとして、Google Sheetsを選択します。ちなみに、「AppSheet Database」を使用した場合、Free Planではデプロイできませんでした。 結果、デフォルトで地図表示、およびデータの一覧を表示するページ(View)を作成してくれました。 データ 「データ」タブに移動して、設定を行います。 例えば、使用しない項目には、「SHOW?」列のチェックを外します。また、「KEY?」と「LABEL?」に対して、「identifier」と「title」を割り当てました。 次に、「DISPLAY NAME」で、アプリ上で表示する名称を入力します。 さらに、検索に使用したい項目にのみ、「SEARCH?」列にチェックを入れます。 加えて、今回はデータの閲覧のみを行うため、「Read-Only」の設定を行います。 Views(マップ) Views(マップ)はデフォルトのまま使用しました。 Views(main) ここでは、View nameを「Browse」に変更して、View typeとして「card」を選択して、Positionには「next」を与えました。Positionについては、メニューにおいて「Browse」が「Map」の左にくるようになります。 さらに、レイアウトについて、それぞれの要素に割り当てるカラムを設定します。例えば以下では、画像を表示する列として、「_image_url」を指定しています。 結果、一覧画面が以下のように表示されます。 Views(chart) 以下のように、新規にViewを追加します。 そして、「Chart columns」に、ここではカテゴリが格納されたカラムを設定しました。結果、画面右部のように表示が変わります。 その他 その他、アプリの見た目を変更します。 設定 > Theme & Brand から、例えば、ヘッダーにロゴなどが表示されるように変更します。 また、今回の初期設定では「Map」Viewがはじめに開いてしまうので、「Browse」が表示されるように、「Views」の設定を変更します。 Preview ここまでのところでプロトタイプはほぼ完成です。Previewモードで確認することができます。デフォルトで、各レコードの詳細画面も表示されます。 ...

2025年1月8日 · 1 分 · Nakamura

Pythonを使ってOmeka Sにメディアをアップロードする方法

概要 Pythonを使ってOmeka Sにメディアをアップロードする方法の備忘録です。 準備 環境変数を用意します。 O O O M M M E E E K K K A A A _ _ _ S S S _ _ _ B K K A E E S Y Y E _ _ _ I C U D R R E E L N D = T E h I N t T T t Y I p = A s L : = / / d e v . o m e k a . o r g / o m e k a - s - s a n d b o x # 例 初期化します。 ...

2025年1月3日 · 7 分 · Nakamura

aleph-r3fを試す

概要 以下の記事で、Aleph 3D viewerを紹介しました。 その後調べた結果、以下のリポジトリの存在も知りました。 https://github.com/aleph-viewer/aleph-r3f 以下のように説明されており、react-three-fiberとshadcn/uiを使用している点に違いがあるようでした。 Aleph is a 3D object viewer and annotation/measurement tool built with react-three-fiber and shadcn/ui 以下のように、アノテーション付与機能なども改良されているようでした。 今回の記事でも、菊池市デジタルアーカイブで公開されている「石淵家地球儀」の3Dデータを使用します。 https://adeac.jp/kikuchi-city/catalog/e0001 使い方 以下で閲覧いただけます。 https://iiif-aleph-r3f.vercel.app/ アノテーションタブで、アノテーションの付与を行うことができました。 アノテーションデータのインポート/エクスポートを行うことができ、JSON形式でのエクスポート結果は以下でした。 [ ] { } " } " } " } " } " } " " p , n , c , c , r , l d o " " " o " " " a " " " a " " " o " " " " " a e s x y z r x y z m x y z m x y z t i _ _ _ _ b s i " " " m " " " e " " " e " " " a s x y z o e c t : : : a : : : r : : : r : : : t E " " " r l r i l a a i u : : : d " i o - 0 - " - 0 - P - 1 - T - - - o l e : p n 0 . 0 : 0 . 0 o 0 . 1 a 0 0 0 n e 0 0 0 r t " . 6 . . 6 . s . 1 . r . . . " r , , , " " i : 0 2 7 { 1 4 7 i 1 7 4 g 0 0 0 : " : 大 o 6 5 4 1 3 5 t 5 6 3 e 0 0 1 : 西 n { 6 6 2 6 0 6 i 9 7 7 t 2 0 1 { " 洋 " 9 8 4 2 0 9 o 2 0 8 " 3 9 6 t X " : 0 1 5 7 3 8 n 2 7 8 : 6 7 8 r Y , 3 7 4 7 1 5 " 1 1 4 4 8 4 u Z " 9 3 4 5 0 1 : 8 1 2 { 9 9 0 e " 初 2 5 3 3 1 6 8 5 1 9 4 0 , め 6 2 8 9 1 8 { 7 8 4 3 6 0 て 8 7 7 5 9 7 9 1 4 0 6 4 の 1 8 0 8 7 0 9 1 4 9 8 9 ア 7 4 0 2 9 4 5 4 4 5 5 2 ノ 0 1 1 5 0 4 9 8 4 3 7 0 テ 2 5 0 4 3 5 2 4 1 9 9 9 ー 0 4 9 5 2 2 0 3 0 7 1 5 シ 0 , 7 9 , 9 5 , 4 9 0 9 ョ 4 7 5 4 1 4 ン , , , 9 6 7 " 2 5 , , カスタマイズ 「石淵家地球儀」を表示するにあたり、以下のようにソースコードを編集する必要がありました。 ...

2024年12月29日 · 12 分 · Nakamura