ArchivematicaのPreservation planningにおいて、Normalizationのルールを追加する

概要 ArchivematicaのPreservation planningにおいて、Normalizationのルールを追加する方法の備忘録です。 背景 拡張子が.jpgである画像をArchivematicaに投入した際、以下のようにFormatがJPEGのものに対してtifファイルを保存用に作成するルールを用意しているにもかかわらず、tifファイルが作成されないことがありました。 そこで、以下のような履歴の画面から、タスクの内容を確認しました。 結果は以下です。 具体的には以下のような記載になっており、該当するルールが存在しない、ということが記載されています。 F N i o l t e n f o o r r m m a a l t i : z i I n m g a g 1 e 1 e ( c R f a 0 s 5 t d e - r 8 ) f : c 6 E - x 4 c 7 h 0 a 4 n - g a e 6 a e b 9 l - e 4 a I 2 m 6 a e g f e 9 8 F f i 1 l 8 e 6 . F j o p r g m a t - ( N C o o m r p u r l e e s s o e r d ) d : e f E a X u I l F t C r o u m l p e r e f s o s u e n d d I t m o a g n e o r 2 m . a 2 l . i 1 z e ( b f i o g r - e p n r d e i s a e n r ) v a ( t f i m o t n / 6 4 5 ) そこで、fmt/645に対するルールを追加します。 ...

2025年4月24日 · 2 分 · Nakamura

れきちずをNext.jsで使用する

概要 れきちずをNext.jsで使用する方法を調べてみましたので、備忘録です。 背景 以下の記事で、「れきちず」の使い方を紹介しました。 そして、2025年4月4日に「全国版が公開」されたことを知りました。 https://rekichizu.jp/ そこでNext.jsを用いて作成したアプリケーションへの導入にあたり、その使い方を調べてみました。 デモアプリ 以下のようなアプリケーションを試作しました。 https://rekichizu-next.vercel.app/ja/ 使用方法の調査にあたり、公式サイトで提供されている地図の切り替えや重ね合わせ機能、および検索機能などを再現することを目的としました。この実装にあたり、以下のReactライブラリを使用しました。 https://visgl.github.io/react-maplibre/ 開発メモ 検索機能 検索機能には、GeoLODのAPIを利用させていただきました。なお、「れきちず」の公式サイトでは、専用の検索APIが用いられているようでした。 https://geolod.ex.nii.ac.jp/doc/api/ react-maplibre 本ライブラリを使用して、やりたいことの多くを実現できました。一方、TerrainControlではTerrainのON/OFFと合わせてピッチを変更することが難しい?、useMapではaddLayer/removeLayerが難しい?など、いくつか苦労した点もありました。 まとめ 「れきちず」およびNext.jsを用いたアプリケーション開発にあたり、参考になりましたら幸いです。 「れきちず」の開発に関わる方々に深く感謝いたします。

2025年4月9日 · 1 分 · Nakamura

IIIFの多角形アノテーションをTEI/XMLで表現する一例

概要 IIIFの多角形アノテーションをTEI/XMLで表現する一例について紹介します。 方法 TEI/XMLでは、zoneタグとpoints属性を使用して、多角形のアノテーションを表現することができます。 https://www.tei-c.org/release/doc/tei-p5-doc/en/html/ref-teidata.point.html 例 動作確認のため、以下の記事で紹介したアノテーションツールに、TEI/XML形式でのエクスポート機能を追加しました。 具体的には、以下のようなダウンロード時のオプションを追加しました。 ダウンロード結果として得られるTEI/XMLの例は以下です。ulx, uly, lrx, lryで矩形を記述しつつ、pointsで多角形の情報を記述しています。 < < < < ? ? ? T / x x x E T m m m I E l l l < < < I - - x t / t / f / > v m m m e t e t a f e o o l i e x e c a r d d n H < i t < x s < < c s e e s e f / H > b / t i s / s / s i l l = a i f e o b > m u s u s i o " d l i a d o i r u r u m n h h h e e < < < l d y < d l f < < < r f < < < r i = r r t r D t / p / s / e e > p / y e a g z z f a g z z f l " e e t > e i t u p o s D r > p > c r o o a c r o o a e 1 f f p s t i b u u o e > > s e a n n c e a n n c > . = = : c l < t l < b r < u s S a p e e e p e e e 0 " " / > e t / l i p / l c p / r c o m s h > s h > " h h / S i t e c > p i e > p c > m e a i u u a i u u t t w t t i S a > c D > e e A m c l l m c l l e t t w m l T t t t P a e I D s e x x e x x n p p w t e i l m i u t s n e t = A u = = A u = = c : : . > > t e t o b i c f s e " s r " " s r " " o / t l > > n l o > o c x h = l 5 4 = l 2 9 d / e e S i n r > t t " = 3 7 " = 1 9 i w w i t c S m t h " 1 8 h " 9 3 n w w - m a t a h p t h 4 " t h 7 " g w w c t t m t e s t t " t t " = . . . > i t i r : p t u p t u " t t o o > o e / s p u l s p u l u e e r n n . / : s l y : s l y t i i g d / : y = / : y = f - - / I a l / = " / / = " - c c n n b . d / " 3 d / " 3 8 . . s f o n l d 1 0 l d 3 7 " o o / o u d . l 9 7 . l 0 0 ? r r 1 r t l n . 8 " n . 4 1 > g g . m . d n 3 d n 4 " / 0 a t g l d " l l d " r r " t h o . l r . l l e e > i e . g . l x g . l r l l o j o g r = o g r x e e n s p . o x " . o x = a a o j . = 1 j . = " s s u a p j " 2 p j " 2 e e r p / p 5 2 / p 2 8 / / c i a / 5 6 a / 7 4 x x e / p a 0 " p a 3 9 m m i i p 9 i p 1 " l l i / i " l / i " / / i i / r i / l t t f i i l y i i l r e e / i i r = i i r y i i 3 f i y " f i y = / / 4 / f = 3 / f = " c c 3 3 / " 7 3 / " 4 u u 7 4 3 2 3 4 3 3 0 s s 6 3 4 1 1 3 4 5 9 t t 8 7 3 8 " 7 3 7 5 o o 6 6 7 9 6 7 3 " m m / 8 6 " a 8 6 " / / m 6 8 n 6 8 a s s a / 6 a a / 6 a n c c n c / n = c / n a h h i a R a " a R a = e e f n 0 = 校 n 0 = " m m e v 0 " 異 v 0 " 中 a a s a 0 C 源 a 0 サ 央 / / t s 0 を 氏 s 0 ン 公 r r . / 0 変 物 / 0 プ 論 e e j 1 0 更 語 3 0 ル 社 l l s " 1 " " " 3 " 蔵 a a o > / > / 版 x x n f p p f p " n n " u o o u o g g > l i i l i p / / l n n l n o t t / t t / t i e e f s s f s n i i u = = u = t _ _ l " " l " s a a l 5 4 l 2 = l l / 3 7 / 2 " l l 0 1 8 0 0 9 . . / 4 , / 9 9 r r d , 3 d , 3 n n e 2 7 e 3 , g g f 0 3 f 0 4 " " a 8 2 a 4 0 u 7 u 5 9 t t l 4 l 6 y y t 5 7 t 2 p p . 4 8 . 1 9 e e j 1 , j 9 9 = = p 2 3 p 8 3 " " g , 0 g , , a a " 1 8 " 3 3 p p 9 5 7 p p s 8 1 s 5 0 l l a 4 2 a 1 2 i i m 2 m c c e 5 7 e 2 2 a a A 5 , A 7 8 t t s 1 3 s 2 4 i i = 0 0 = 9 9 o o " , 8 " , , n n h 2 h 3 3 / / t 0 1 t 5 7 x x t 8 2 t 7 0 m m p 7 2 p 5 2 l l s 7 s " " : 5 , : 2 2 / 4 3 / 7 8 s s / 1 7 / 3 4 c c d 2 3 d 2 9 h h l , 2 l , , e e . 2 . 3 4 m m n 1 4 n 0 0 a a d 9 7 d 6 9 t t l 0 8 l 2 6 y y . , . p p g 5 3 g 2 9 e e o 3 7 o 2 9 n n . 1 3 . 0 3 s s j 4 2 j 9 , = = p , " p , 4 " " / 2 / / 3 0 h h a 0 > a 0 9 t t p 8 p 4 6 t t i 7 i 5 " p p / / " : : i 5 i / i 3 i / i 1 i r p f 4 f e u / , / l r 3 2 3 a l 4 0 4 x . 3 8 3 n o 7 7 7 g c 6 " 6 . l 8 / 8 o c 6 > 6 r . / / g R R r 0 0 n g 0 0 s 0 0 d 0 0 s s 0 0 t d 0 0 r l 1 3 u / " " c s / / t c > > u h r e e m / a 1 t . r 0 o " n ? " > ? > 以下は、Oxygen XML Editorで表示した例です。 ...

2025年4月8日 · 8 分 · Nakamura

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

CETEIceanとXPathを使って特定の要素にスクロールする

概要 CETEIceanとXPathを使って特定の要素にスクロールする方法を調べたので備忘録です。 デモ 以下のURLからお試しいただけます。 https://next-ceteicean-router.vercel.app/xpath/ ページにアクセス後、スクロールし、以下のように表示されます。 XPathの取得 上記では、以下の「校異源氏物語テキストDB」のXMLファイルを対象にしています。 https://kouigenjimonogatari.github.io/tei/01.xml そして、以下のXPathを指定しています。 /TEI/text[1]/body[1]/p[1]/seg[267] このXPathの取得にあたっては、Oxygen XML Editorを用いて、対象要素を右クリックして、「Copy XPath」から取得することができました。 スクロールの実装 以下で紹介したアプリをベースにします。 GitHub上のソースコードは以下です。 https://github.com/nakamura196/next-ceteicean-router/blob/main/src/components/xpath/Render.tsx 特に以下の部分で、XPathをCETEIceanによって作成される要素名に変換し、scrollIntoViewによってスクロールしています。 R } f e , e a c c i } t c o o f [ c t n n . . . c ) c i } t h . s s r r t ( o ; o f e D u t t e e o t n x t n X n n t } t i a s p p L e s p e u P u s ( a ) a D t e r x l l o i t a i l a l t t r b b i ; r o a E a p a a w C t C l t l a g e l n g c の f w a c c e o r h o , h t r e h o l e ] 修 f X t e e r n e , n R a g t a c i t ) 正 e p h ( ( C t s t e r e E v k n E ; c a / / a e u e s g t l i : e l t t = ( s n l n u e E e o : e ( h [ e t t t l t l m r " m ( r A ( R R t E e e : c " e ) = a / - ) e = e . l m n e c n w , Z ; f f F e e t " n e t = " X a . d . I m n . s t n . > / p " - c o c R e t s m e t s T a " z u c u S n ) c o r e t { E t ) ] r u r T t r o " r y I h r m r _ { o t , " l / e e e O = l h , e t ( n n n R l " . e ? t t t D r I , b x 先 = ) . , E e n a t 頭 \ e R s t c [ の / { v E u o k 1 ス | a D l V g ] ラ \ l _ t i r / ッ [ u N . e o b シ | a O s w u o ュ $ t D i ( n d を ) e E n { d y 削 / ( _ g C [ 除 g T l o 1 , Y e l ] P N o / " E o r p t , d [ e e = 1 i V ] - a " / $ l y s 1 u e e " e l g ) l [ a o 2 s w 6 " 7 H ; ] t T " e M ; i L - E プ l レ e フ m ィ e ッ n ク t ス ; を 追 加 まとめ 他にも良い方法があるかもしれませんが、参考になりましたら幸いです。 ...

2025年3月27日 · 3 分 · 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

GakuNin RDMのストレージに、mdx.jpのオブジェクトストレージを追加する

概要 GakuNin RDMのストレージに、mdx.jpのオブジェクトストレージを追加する方法です。 手順 mdx.jp mdx.jpのオブジェクトストレージの利用申請を行い、アクセスキーとシークレットキーを控えます。 GakuNin RDM S3 Compatible Storageを有効にします。 S3互換サービスとしてmdx S3DSを選択して、控えたアクセスキーとシークレットキーを入力します。 バケットの一覧が表示されるので、接続したいバケットを選択します。 結果として、「ファイル」メニューからアクセスできるストレージに、mdx.jpのオブジェクトストレージが追加されます。 今後、ドラッグ&ドロップにより、ファイルのアップロードなどを行うことができます。 まとめ GakuNin RDMとmdx.jpのオブジェクトストレージの接続にあたり、参考になりましたら幸いです。

2025年3月21日 · 1 分 · 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

TEI/XMLから検索システムを構築する際のDTS(Distributed Text Services)のdts:wrapperの応用例

概要 TEI/XMLから検索システムを構築する際のDTS(Distributed Text Services)のdts:wrapperタグの応用例に関するメモです。 DTS(Distributed Text Services)は以下です。 Cayless, H., Clérice, T., Jonathan, R., Scott, I., & Almas, B. Distributed Text Services Specifications (Version 1-alpha) [Computer software]. https://github.com/distributed-text-services/specifications` 参考 DTSの構築例として、以下なども参考になりましたら幸いです。 例 以下の「デジタル延喜式」を例とします。 https://khirin-t.rekihaku.ac.jp/engishiki/ 本システムでは、TEIを用いて作成したXMLデータから、検索時の単位となる部分を抽出し、それをJSON形式のデータに変換した上で検索を行っています。JSONデータの例は以下です。JSON:APIに準拠した記述を採用しています。 http://khirin-t.rekihaku.ac.jp/engishiki/jsonapi/item/39100101.json { } " } " } j , d s a o t n " " } a " " " } a v m " t i a p e e : y d t i r t p " t " s a " } { e : r " " ] " ] " ] " " ] " " " " : i " l " i l j , s , v , u c , m m t x o : i : " b a y h o p a a e h m { n n 3 u b o i l d t n m u l " { k " } " 9 t e " " k " " " a e " i b m " : s s i 1 e l : 3 i 3 : 3 t g 式 f e b : " e t 0 s " 9 " 9 9 e o " e r n " : l e 0 " : [ - : - [ " d r s " a " 1 f " m 1 : 1 1 " y t : i < . { " h " 0 " - [ : " " l ? 0 : r , 1 { 正 0 正 : : " " x " e " 親 0 親 " h : m , { f , 1 " 2 [ " t l " 1 0 h t " : 諸 2 t p h v 諸 王 5 t s t e " 王 年 - p : t r h 年 満 0 s / p s t 満 " 3 : s i t 条 - k : p 1 / h n : 項 5 k i / = / 1 " h r k \ / " , i i h " j , r n i 1 s i - r . o n a i 0 n - . n \ a a r - " p . e a i r k . e . e i r n o k h e c r i a k o g h k i d / a u h i f k . a n o u a k g r . c u = m a . . \ a c j a " t . p c U / j / . T 1 p i j F . / i p - 0 i i / 8 / i f i \ " i / i " f 2 i ? / / f > r e e n 2 n k g / < i i e T h s n E a h g I k i i u k s x / i h m H % i l - 2 k n 7 F i s 4 H % = 3 - 2 \ - 7 F " 7 4 H h 4 3 - t - - 7 t 3 7 4 p 9 4 3 : / - - / m 3 7 / a 9 4 w n / - w i p 3 w f a 9 . e g % t s e 2 e t 5 F i . 0 0 - j 6 0 c s 9 0 . o " 0 o n , 2 r " . g , t / i n f s / / f 1 u . l 0 l \ / " 2 > 0 \ 0 n , / 0 < / d d t e s f : a w u r l a t p . p j e p r g " x , m l n s : d t s = \ " h t t p s : / / w 3 i d . o r g / a p i / d t s # \ " > \ n < d i v t y p e = \ " o r i g i n a l \ " > < p a n a = \ " 項 \ " c o r r e s p = \ " # p a g e 5 0 6 9 \ " x m l : i d = \ " o - i t e m 3 9 1 0 0 1 0 1 \ " > \ n 凡 諸 王 年 満 十 二 、 毎 年 十 二 月 、 \ n < o r g N a m e s a m e A s = \ " # 京 職 \ " > 京 職 < / o r g N a m e > \ n 移 \ n < o r g N a m e s a m e A s = \ " # 宮 内 省 \ " > 宮 内 省 < / o r g N a m e > \ n 、 \ n < o r g N a m e s a m e A s = \ " # 宮 内 省 \ " > 省 < / o r g N a m e > \ n 以 \ n < o r g N a m e s a m e A s = \ " # 京 職 \ " > 京 職 < / o r g N a m e > \ n 移 、 即 付 \ n < o r g N a m e s a m e A s = \ " # 正 親 司 \ " > 司 < / o r g N a m e > \ n 令 勘 会 名 簿 、 訖 更 送 \ n < o r g N a m e s a m e A s = \ " # 宮 内 省 \ " > 省 < / o r g N a m e > \ n 、 明 年 正 月 待 \ n < o r g N a m e s a m e A s = \ " # 太 政 官 \ " > 官 < / o r g N a m e > \ n 符 到 、 始 預 賜 時 服 之 例 、 < / p > < / d i v > < d i v t y p e = \ " j a p a n e s e \ " > < n o t e t y p e = \ " s u m m a r y \ " > \ n 衣 替 え 手 当 て の 受 給 年 齢 に 達 す る 皇 族 へ の 支 給 開 始 手 続 き に 関 す る 規 定 \ n / n o t e > < p a n a = \ " 項 \ " c o r r e s p = \ " e n g i s h i k i _ v 3 9 . x m l # i t e m 3 9 1 0 0 1 0 1 e n g i s h i k i _ v 3 9 _ e n . x m l # i t e m 3 9 1 0 0 1 0 1 \ " x m l : i d = \ " j a - i t e m 3 9 1 0 0 1 0 1 \ " > \ n 皇 族 の 年 齢 が 数 え で 十 二 歳 に 達 し た ら 、 十 二 月 に \ n < r u b y > \ n < r b > \ n 京 職 \ n / r b > \ n < r t p l a c e = \ " r i g h t \ " > \ n き ょ う し き \ n / r t > \ n < / r u b y > \ n が \ n < r u b y > \ n < r b > \ n 宮 内 省 \ n / r b > \ n < r t p l a c e = \ " r i g h t \ " > \ n く な い し ょ う \ n / r t > \ n < / r u b y > \ n に 通 知 し 、 宮 内 省 は 京 職 の 通 知 書 類 を \ n < r u b y > \ n < r b > \ n 正 親 司 \ n / r b > \ n < r t p l a c e = \ " r i g h t \ " > \ n せ い し ん し \ n / r t > \ n < / r u b y > \ n に 下 し て 正 親 司 が 保 管 す る 皇 族 の 台 帳 と 照 合 さ せ よ 。 正 親 司 は こ の 作 業 が 終 わ っ た ら 通 知 書 類 を 宮 内 省 に 送 れ 。 翌 年 正 月 に \ n < r u b y > \ n < r b > \ n 太 政 官 \ n / r b > \ n < r t > \ n だ い じ ょ う か ん \ n / r t > \ n < / r u b y > \ n の 通 達 を 受 領 し て か ら 、 衣 替 え 手 当 て の 支 給 を 開 始 せ よ 。 \ n < / p > < / d i v > < d i v t y p e = \ " e n g l i s h \ " > < n o t e t y p e = \ " s u m m a r y \ " > \ n A g e o f R o y a l R e c i p i e n t s f o r S e a s o n a l C l o t h i n g \ n / n o t e > < p a n a = \ " 項 \ " c o r r e s p = \ " e n g i s h i k i _ v 3 9 . x m l # i t e m 3 9 1 0 0 1 0 1 e n g i s h i k i _ v 3 9 _ j a . x m l # i t e m 3 9 1 0 0 1 0 1 \ " x m l : i d = \ " e n - i t e m 3 9 1 0 0 1 0 1 \ " > \ n E v e r y y e a r i f \ n < s e g x m l : i d = \ " f o o t n o t e 3 9 1 0 0 1 0 1 0 1 \ " > \ n a \ n p r i n c e o r p r i n c e s s \ n / s e g > \ n r e a c h e s \ n < s e g x m l : i d = \ " f o o t n o t e 3 9 1 0 0 1 0 1 0 2 \ " > \ n t w e l v e y e a r s o l d \ n / s e g > \ n , t h e C a p i t a l O f f i c e s h o u l d r e p o r t t h a t \ n i n f o r m a t i o n v i a \ n < s e g x m l : i d = \ " f o o t n o t e 3 9 1 0 0 1 0 1 0 3 \ " > \ n a p a r a l l e l m e m o r a n d u m \ n \ n < s e g r e n d = \ " i t a l i c \ " > \ n i \ n / s e g > \ n \ n < / s e g > \ n t o t h e M i n i s t r y o f t h e R o y a l \ n H o u s e h o l d i n t h e t w e l f t h m o n t h . T h e n t h e M i n i s t r y s h o u l d s e n d t h e \ n m e m o r a n d u m t o t h e R o y a l F a m i l y R e g i s t e r O f f i c e t o c h e c k t h e l i s t a g a i n s t \ n t h e i r e x i s t i n g r o s t e r . A f t e r f i n i s h i n g a l l o f t h e s e p r o c e d u r e s , t h e \ n R o y a l F a m i l y R e g i s t e r O f f i c e s h o u l d r e t u r n t h e m e m o r a n d u m t o t h e \ n M i n i s t r y . T h e p r i n c e o r p r i n c e s s i n q u e s t i o n w i l l r e c e i v e s e a s o n a l \ n c l o t h i n g a f t e r t h e C o u n c i l o f S t a t e ' s o r d e r i s i s s u e d i n t h e f o l l o w i n g \ n N e w Y e a r . \ n < / p > < / d i v > \ n / d t s : w r a p p e r > \ n < / T E I > " 検索結果は以下のように表示されます。校訂文(@type=“original”)、現代語訳(@type=“japanese”)、および英訳(@type=“english”)を表示しています。 ...

2025年3月15日 · 13 分 · Nakamura

Omeka Sで非公開サイトを共有する

概要 Omeka Sで非公開サイトを共有する機会があったので、備忘録です。 関連モジュール まず以下のモジュールを確認しました。 https://omeka.org/s/modules/Guest/ 上記では、Guest Privateモジュールも紹介されており、使い分けの方法をChatGPTに問い合わせました。 Omeka S の Guest モジュール と Guest Private モジュール の使い分けについて説明します。 1. Guest モジュール guest ロール を追加し、ゲストユーザーとして登録できるようにする。 管理画面へのアクセス権限はなし 。 API経由でログイン・ログアウト・登録・パスワード更新などが可能。 公開サイトのみ閲覧可能 (非公開サイトや非公開ページは見られない)。 用途 : 公開サイトに一般ユーザーを登録させ、ログイン機能を提供する。 2. Guest Private モジュール このモジュールを追加すると、さらに2つのロールが追加される: (1) guest_private_site 公開サイト + 非公開サイトを閲覧可能 (ただし、非公開ページや非公開リソースは見られない)。 用途 : サイト全体を非公開にしつつ、特定のユーザーにサイトの閲覧権限を与えたい場合。 (2) guest_private 公開サイト + 非公開サイト + 非公開ページ + 非公開リソースを閲覧可能 。 用途 : 非公開リソースを含む、特定のコンテンツを許可されたゲストユーザーだけに見せたい場合。 質問: 非公開サイトに指定したユーザーだけ閲覧できるようにしたい 解決策 Guest Private モジュールをインストールする → 通常の Guest モジュールでは非公開サイトの閲覧ができないため、Guest Private が必要。 ...

2025年3月13日 · 1 分 · Nakamura

ArchivesSpaceをDockerで起動する

概要 ArchivesSpaceをDockerで起動する機会がありましたので、備忘録です。 方法 以下に記載されています。 https://docs.archivesspace.org/administration/docker/ 以下のようにcloneした上で、コンテナを起動します。 g c d i d o t c a k c r e l c r o h n i c e v o e m h s p t s o t p s p a e s c : e u / p / g i - t d h e u t b a . c c h o m / a r c h i v e s s p a c e / a r c h i v e s s p a c e ドキュメントでは、以下のように記載されていますが、Public User interfaceは3001ポート、Staff User Interfaceは3000ポート、およびバックエンドシステムには4567ポートでアクセスできました。 ...

2025年3月11日 · 1 分 · Nakamura

Omeka Sのファイルをmdx.jpのオブジェクトストレージに保存する

概要 Omeka Sのファイルをmdx.jpのオブジェクトストレージに保存する方法に関する備忘録です。 ベースとするモジュール Amazon S3との連携を可能にする以下のモジュールをベースとします。 https://omeka.org/s/modules/AmazonS3/ 本モジュールでは、Omeka Sで取り扱う画像や動画といったメディアのファイルをAmazon S3に保存するための拡張機能を提供します。 一方、endpointの指定ができないため、mdx.jpのオブジェクトストレージなどを対象にすることはできませんでした。 モジュールのカスタマイズ 上述した背景を踏まえて、Amazon S3以外のオブジェクトストレージを利用できるように、モジュールをカスタマイズしました。カスタマイズした結果は、以下のリポジトリで公開しています。 https://github.com/nakamura196/Omeka-S-module-AmazonS3 なお、カスタマイズについては、エディタとしてCursorを使用し、s3互換のオブジェクトストレージにも対応したいという依頼をclaude-3.7-sonnetに提出し、その結果を反映しています。 結果、上記のモジュールを使用することにより、Omeka Sで登録したメディアが以下のようなURLでアクセス可能になりました。 https://s3ds.mdx.jp/<バケット名>/large/3e0a78e1cbc239f37cfff0e777c40c2f9b2f5c92.jpg 以下は、filesディレクトリを、mdx.jpに接続したCyberduckで表示した例です。 モジュールの設定内容は以下のとおりです。カスタムエンドポイントURLという項目が追加されており、https://s3ds.mdx.jpを指定することで、mdx.jpのオブジェクトストレージを利用できるようになりました。 なお、上記の画面キャプチャで表示されているとおり、mdx.jpのオブジェクトストレージにファイルが保存される設定をしても、現時点ではWrong region. Please use region of a bucket:と表示されてしまいます。この点は、今後修正予定です。 モジュールのインストール 今回フォークして作成したカスタムモジュールをインストールするには、以下の手順を踏む必要があります。 c g c c d i d o t m < A p モ c m o ジ l a s ュ o z e ー n o r ル e n が S i 格 h 3 n 納 t s さ t t れ p a て s l い : l る / デ / ィ g - レ i n ク t o ト h - リ u d > b e . v c o m / n a k a m u r a 1 9 6 / O m e k a - S - m o d u l e - A m a z o n S 3 A m a z o n S 3 Omeka Sにおいて、ソースからモジュールを使用するには、おおよそ共通して上記のような手続きが必要になります。 ...

2025年3月7日 · 1 分 · 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

DrupalのSortableviewsモジュールを使って、コンテンツを並び替えて、その結果をフィールドに保存する

概要 DrupalのSortableviewsモジュールを使って、コンテンツを並び替えて、その結果をフィールドに保存する方法について紹介します。 https://www.drupal.org/project/sortableviews 以下のように説明されています。 This one is similar to Draggableview module except it can save the position value ( After drag and drop the question ) into custom content type field. これは DraggableViews モジュールと似ています が、ドラッグ&ドロップで並び替えた後の 位置情報をカスタムコンテンツタイプのフィールドに保存できる 点が異なります。 インストール 通常の方法でインストールできました。 コンテンツタイプの作成 ソート対象のコンテンツタイプを作成します。ここでは、teamというコンテンツタイプを対象にします。 そして並び順の重みを保存するためのweightフィールドを作成しました。 Viewsの作成 作成したViewsは以下です。 まず、フォーマットを「Sortable table」にします。この時、field to use for weightの項目で、重みを保存したいフィールドを選択します。 次に、フィールドで「Sortableviews: Drag and drop …」を追加します。これにより、以下のようにドラッグ&ドロップのためのアイコンが表示されます。 さらに、並び替え基準として、「weight(昇順)」に設定しておきます。 最後、ヘッダーの部分で、「Save Sortableviews changes」を追加します。これにより、並び替え後に、「変更を保存」ボタンが表示されます。 APIからの利用 今回の設定では、ソート結果はfield_weightに保存されるため、例えば以下のようにAPIから利用できます。 /jsonapi/node/team?sort=field_weight 昇順に並び替えた結果を取得できます。これにより、decoupledな構成でもソート結果を利用することができます。 ...

2025年3月2日 · 1 分 · Nakamura

DrupalのSearch API Algoliaモジュールを試す

概要 DrupalのSearch API Algoliaモジュールを試す機会がありましたので、備忘録です。 https://www.drupal.org/project/search_api_algolia インストール Drupal 11では、以下でインストールできました。 c o m p o s e r r e q u i r e ' d r u p a l / s e a r c h _ a p i _ a l g o l i a : ^ 3 . 1 ' 設定 モジュールのインストール後、サーバとインデックスの設定を行います。 Add server Algoliaの設定画面で確認できる設定情報に基づき、サーバを作成します。ここでは、Write API Keyを使用しました。 ...

2025年3月1日 · 1 分 · Nakamura

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

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

2025年2月21日 · 1 分 · 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 プラグイン向けに、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

Omeka Sにサイズが大きいファイルをアップロードする

概要 Omeka Sに比較的サイズが大きい(200MB超)ファイルをアップロードする機会がありましたので、備忘録です。 具体的には、3Dモデルを保存するために使用される3次元ファイル形式の.glbファイルをアップロードします。 課題 通常、比較的サイズが大きいファイルをGUIからアップロードを試みると、 以下のように「POST request exceeded maximum size」となることがあります。 これを対応方法の例を紹介します。 php.ini の設定変更 Omeka SはPHPの設定によってアップロードサイズの制限を受けるため、まずは php.ini の設定を確認・変更してください。 u p m p o a l s x o t _ a _ e d m x _ a e m x c a _ u x s t _ i i f z o i e n l _ e = t s i i 5 m z 1 e e 2 M = = 3 5 0 1 0 2 M 変更後はWebサーバー(ApacheやNginx)を再起動してください。ただし、デメリットとして共有ホスティングでは変更できない場合などがあります。 ...

2025年2月5日 · 1 分 · Nakamura