Introduction to Dataspaces with Eclipse EDC - Experiencing Data Exchange Flows in a Local Environment

Introduction In recent years, the importance of data sharing and distribution between organizations has been growing. However, simply exposing APIs makes it difficult to control “who” can access “which data” under “what conditions.” Dataspaces are a concept designed to solve this challenge. They provide a mechanism for data owners to maintain sovereignty while securely sharing data with trusted parties. In this article, we will use Eclipse EDC (Eclipse Dataspace Components), an implementation platform for dataspaces, to experience data exchange flows in a local environment. ...

January 21, 2026 · 35 min · Nakamura

How to Use @elastic/react-search-ui with React 19 + Next.js 15.5

Introduction When trying to use @elastic/react-search-ui in a project using React 19 and Next.js 15, you may encounter the following dependency error. n n p p m m e e r r r r o o r r E p R e E e S r O L r V e E a c c t o @ u " l > d = n 1 o 6 t . 8 r . e 0 s o < l v 1 e 9 " f r o m @ e l a s t i c / r e a c t - s e a r c h - u i @ 1 . 2 3 . 1 This article explains the cause of this problem and how to resolve it in detail. ...

January 19, 2026 · 8 min · Nakamura

Draco Compression of GLB Files - 87% Size Reduction and Impact on Precision

When delivering 3D models on the web, file size is a critical concern. This article describes a case where Draco compression was used to reduce a GLB file by 87%, along with precautions during compression (particularly regarding UV coordinates). https://3dtiles-viewer.vercel.app/glb-viewer.html Data Used Model: Rotunde Brunnen (a rotunda with a fountain) Source: Sketchfab Format: GLB (glTF 2.0 Binary) What is Draco Compression? Draco is an open-source 3D mesh compression library developed by Google. It is supported as a standard extension in glTF 2.0 as KHR_draco_mesh_compression. ...

January 17, 2026 · 11 min · Nakamura

Displaying Over 3 Million Point Cloud Data Points Smoothly in a Browser - Building a Potree LOD Viewer

When trying to display large-scale point cloud data (LiDAR/LAZ) in a web browser, the browser may crash due to insufficient memory. This article introduces how to display millions of points without stress using Potree’s LOD (Level of Detail) technology. https://3dtiles-viewer.vercel.app/potree-lod-viewer.html Data Used Data Name: Utah State Capitol Source: OpenTopography Download URL: https://object.cloud.sdsc.edu/v1/AUTH_opentopography/www/education/MatlabTopo/Utah_state_capitol.laz File Size: 15MB (LAZ compressed) Point Count: 3,481,512 points Location: Salt Lake City, Utah, USA Challenge Trying to load this data directly with Three.js or similar libraries may cause the browser to freeze. ...

January 17, 2026 · 27 min · Nakamura

Record of Migrating mirador-annotations to Mirador 4.x

Background mirador-annotations is a plugin that adds annotation functionality to the IIIF viewer Mirador. The previous project had the following configuration: Build tool: nwb (Create React App based) UI library: Material-UI v4 Mirador: 3.x React: 17.x However, the following problems were occurring: nwb maintenance stopped - nwb has not been updated for a long time, causing frequent dependency conflicts npm install failures - Old dependencies made setup in new environments difficult Security vulnerabilities - Numerous vulnerability warnings in old packages To resolve these issues, we decided to migrate to: ...

January 13, 2026 · 10 min · Nakamura

mirador-rotation-plugin Feature Enhancements

Overview The following features have been added to mirador-rotation-plugin: 90-degree rotation buttons Manifest and rotation angle specification via URL parameters UI improvements (reset button icon change) Help feature (dialog explaining how to use) New Feature Details 1. 90-Degree Rotation Buttons Previously only a 1-degree increment slider was available, but buttons for quick 90-degree rotation have been added. Implementation Details The following changes were made to src/plugins/MiradorRotation.js: i i c } m m o ; p p n c u o o 9 s o p r r 0 t n d t t 度 s a 回 h t t R R 転 a e o o の n n V t t ハ d e i a a ン l w e t t ド e R w e e ラ R o p L R ー o t o e i t a r f g a t t t h t i ( I t e o w c I 9 n i o c 0 n n o = d n = o f r w r f ( o I o r d t d m o i a , m r t ' e i { @ ' c o m @ t n r u m i o i u o + t / i n a i / ) ( t c i d i o c = i o n o > r n s n e : - s { c m - t n a m i e t a o w e t n R r e o i r t a i a l a 9 t / l 0 i R ) o R ; n t o a t } t a ) e t ; L e e R f i t g ' h ; t ' ; Two buttons were added to the UI: ...

January 8, 2026 · 12 min · Nakamura

Integrating Next.js + next-auth with GakuNin RDM via OAuth2

Introduction This article explains how to integrate the research data management platform “GakuNin RDM” with a Next.js application using OAuth2. Since GakuNin RDM provides an API compatible with OSF (Open Science Framework), implementation can be based on the OSF OAuth2 flow. This article provides a detailed explanation of the implementation using next-auth and the pitfall of automatic access token refresh. What is GakuNin RDM? GakuNin RDM (Research Data Management) is a research data management service provided by the National Institute of Informatics (NII). ...

January 6, 2026 · 24 min · Nakamura

[AWS Amplify] Pitfalls When Setting Up Custom Domains with Sakura Internet Domains

Introduction When I tried to set up a subdomain managed by Sakura Internet for an app hosted on AWS Amplify, I encountered an issue where it was stuck at “Verifying domain ownership…” and would not proceed. The cause was a specification unique to Sakura’s DNS. I hope this is helpful for those experiencing the same issue. Environment AWS Amplify Hosting Sakura Internet Domain Control Panel Name servers: ns1.dns.ne.jp / ns2.dns.ne.jp Symptoms After setting the CNAME records as instructed by Amplify’s custom domain setup screen, the status remained at “Verifying domain ownership…” indefinitely. ...

January 4, 2026 · 5 min · Nakamura

Dydra JSON-LD Serialization Behavior and Workaround

Overview Dydra is an excellent cloud-based RDF triple store, but in some cases its JSON-LD serialization may produce output that differs from expectations. This blog post explains the observed behavior and the workaround we implemented. Observed Behavior Expected Output In the JSON-LD specification, URI references are commonly output in object form as follows: { } " " " } " } @ @ p , p i t r " r " d y o @ o @ " p v i v i : e : d : d " w " w " " : a : a : h s s t [ A " G " t " t h e h p p t t n t s r r t e t : i p r p b s a s / : u : t : e E t / e / x n e / d / a t d s B s m i T e y e p t o p " p l y " o : o e " : l l . ] i { i c , { a a o . . m e e / t t i h h t e e e r r m s s / c c 1 a a " n n , . . i i o o / / a t d x d / r 0 e x s a s b / c 0 d x . 1 . 2 . 3 " 4 . . . " Output Observed in Dydra In Dydra’s JSON-LD endpoint, some URI references were observed to be output as plain strings: ...

December 29, 2025 · 15 min · Nakamura

How to Navigate to the Detail Page of a File Uploaded via the GakuNin RDM Waterbutler API

What is the Waterbutler API Waterbutler is a file storage abstraction layer developed by the Center for Open Science (COS). It is used in OSF (Open Science Framework) and GakuNin RDM, providing a unified API for file operations across various storage providers (OSF Storage, Amazon S3, Google Drive, Dropbox, etc.). Main Features File upload and download File/folder creation, deletion, move, and copy Metadata retrieval Endpoints GakuNin RDM: https://files.rdm.nii.ac.jp/v1 OSF: https://files.osf.io/v1 Reference Links Waterbutler GitHub OSF API Documentation Problem After uploading a file using the GakuNin RDM Waterbutler API, there are cases where you want to navigate directly to the file’s detail page. ...

December 29, 2025 · 6 min · Nakamura

Pinata V3 API Group Feature Implementation Guide

This article summarizes the pitfalls and solutions when using the group feature with Pinata’s Files API v3. Background There are cases where you want to manage files uploaded to Pinata by groups and retrieve only files belonging to a specific group. For example, storing input images used in an NFT registration form in an “input” group and allowing image selection only from that group. Pitfalls 1. Legacy API and V3 API File Management Are Separate Problem: Files uploaded with the legacy API (pinFileToIPFS) cannot be retrieved with the V3 API (/v3/files). The reverse is also true. ...

December 28, 2025 · 12 min · Nakamura

Drupal Update Procedure on Sakura Rental Server

This summarizes the procedure for updating Drupal from 10.1.5 to 10.6.1 on Sakura Rental Server. Environment Server: Sakura Rental Server Drupal: 10.1.5 → 10.6.1 Installation type: Traditional (tarball, no web/ directory) Preparation Creating a Working Directory Backups are saved outside www (to prevent web access). m k d i r - p / h o m e / [ u s e r n a m e ] / b a c k u p s / d r u p a l File Backup c t d a r / h - o c m z e / f [ u / s h e o r m n e a / m [ e u ] s / e w r w n w a m e ] / b a c k u p s / d r u p a l / d r u p a l _ b a c k u p _ $ ( d a t e + % Y % m % d ) . t a r . g z [ d r u p a l _ d i r e c t o r y ] / Database Backup On Sakura Rental Server, the --no-tablespaces option is required. ...

December 26, 2025 · 9 min · Nakamura

Created a Tool to Extract Opening Pages of Each Volume from IIIF Manifests

Introduction In digital archives using IIIF (International Image Interoperability Framework), materials consisting of multiple volumes or chapters are sometimes combined into a single Manifest. In such cases, there is a need to create links to the opening page of each volume or chapter. This time, I created a simple web tool that extracts the label and first Canvas URL of each volume (range/structure) from IIIF Manifests. Tool URL: https://nakamura196.github.io/iiif-manifest-extractor/ GitHub: https://github.com/nakamura196/iiif-manifest-extractor Features Batch processing of multiple Manifest URLs (one URL per line) List display of labels and first Canvas URLs for each volume/chapter Export in CSV/JSON format Real-time display of processing progress Usage Open the tool Enter Manifest URLs in the text area (multiple lines accepted) Click the “Extract” button Results are displayed in table format Download as CSV/JSON as needed Sample You can verify the behavior with the following Manifest URLs. By entering multiple URLs, you can also verify the batch processing behavior. ...

December 25, 2025 · 6 min · Nakamura

Investigation Record of 404 Errors with CloudFront + App Runner

Introduction When trying to host Cantaloupe (an IIIF image server) on AWS App Runner with CloudFront placed in front of it, I encountered a problem where all requests returned 404 errors when accessed through CloudFront. This article records the investigation of the cause, the solutions I tried, and the conclusion. Environment Application: Cantaloupe 5.0.5 (IIIF image server) Hosting: AWS App Runner CDN: Amazon CloudFront Region: ap-northeast-1 (Tokyo) Problem Overview Symptoms Access Method Result Direct access to App Runner 200 OK Access via CloudFront 404 Not Found What Was Confirmed When 404 was returned via CloudFront, the response header contained server: envoy. This indicates that the request was reaching App Runner’s internal proxy (Envoy). ...

December 24, 2025 · 8 min · Nakamura

How to Properly Load Local JSON Files in Nuxt 4 SSG

Introduction When performing Static Site Generation (SSG) with Nuxt 4, you may want to load data from local JSON files to generate static pages. However, it is not as simple as Next.js’s getStaticProps, and there are several pitfalls to be aware of. This article introduces the correct approach discovered through trial and error. Problem: Why Simple fs Reading Doesn’t Work First Approach (Failed) c } o ; n i } c r ❌ s f o e t c c c c r n t T ( o o o o e C s u h f i n n n n t l t r i e m s s s s u i n s t p t t t t r e r c o n n e a d h r f p f d t s w o L t s a u a J p a e o . t l t S s o i s c m = h l a O i n t n a e P N d s ' l t a = a = . e e r t D a w t p e a . a a h f a = s w t s i w s r p o a e t a = . s a o r r i r e w n k = v i t p e ( a s e m a a d i e a r p i t d a t . s ) o m h F t j y r p . i a f s n { t o r l ) e o c ( r e e ; t n ' t s S c ( ( f ( o y h ) f s ' l n ( ; i ' p v c ` l ) a e ( / e ; t ( f d P h p u a a ' r l t t ) o l a h ; c P / : e a $ s t { s s h f t . , i r c l i w ' e n d u P g ( t a ) ) f t , - h = 8 } > ' ' ` p ) ) { u ; ; b l i c / d a t a ' , f i l e P a t h ) ; This approach has the following problems: ...

December 11, 2025 · 22 min · Nakamura

Implementing a Multilingual Historical Map with MapLibre GL JS + Rekichizu

Following the multilingual support (Japanese, Hiragana, English) added to the historical map service “Rekichizu,” this article introduces how to implement a map with language switching using MapLibre GL JS. What is Rekichizu? Rekichizu is a web service that lets you browse maps of the late Edo period (around 1800-1840) in a modern design. Multilingual support was added in November 2025, and the following three styles are provided. Language Style URL Japanese https://mierune.github.io/rekichizu-style/styles/street/style.json Hiragana https://mierune.github.io/rekichizu-style/styles/street/style_hira.json English https://mierune.github.io/rekichizu-style/styles/street/style_en.json Simple HTML Version Here is an example implemented with plain HTML + JavaScript without any framework. The display language is switched based on a GET parameter (?lang=en). ...

December 10, 2025 · 15 min · Nakamura

Constraint Design for IIIF-Compatible Facsimile Description Using TEI ODD

Introduction When describing metadata for digital images in TEI (Text Encoding Initiative), the facsimile element is used. Particularly in IIIF (International Image Interoperability Framework) compatible digital archives, it is important to properly describe references to manifests, canvases, and the Image API. This article introduces how to define the constraints needed for facsimile descriptions as a schema using ODD (One Document Does it all). Guidelines Followed This ODD is based on the “Linking with IIIF Images” specification introduced in the Japanese TEI guidelines: ...

December 10, 2025 · 15 min · Nakamura

ODD Chain Tutorial

This is a tutorial for learning how to customize schemas using the “chain” feature of TEI ODD. What is ODD Chain There are two approaches to ODD chaining: 1. Inheritance (Vertical Chain) References a parent ODD using the source attribute to inherit customizations. T E I _ a l l → B a s e O D D → D e r i v e d O D D → F u r t h e r d e r i v a t i o n . . . 2. Combination (Horizontal Chain) Uses specGrp and specGrpRef to integrate multiple ODDs. ...

December 9, 2025 · 12 min · Nakamura

Customizing the TEI Classical Text Viewer to Display Illegible Sections (gap)

Introduction When digitizing East Asian classical texts, it has become common to mark them up in XML following TEI (Text Encoding Initiative) guidelines. The “TEI Classical Text Viewer” developed by the International Institute of Humanistic Research is a convenient tool that can easily display such TEI/XML files in a browser. Official site: https://tei.dhii.jp/teiviewer4eaj Web version: https://candra.dhii.jp/nagasaki/tei/tei_viewer/ This time, I customized this viewer to support displaying <gap> tags that indicate illegible sections. This article introduces the customization method. ...

December 9, 2025 · 14 min · Nakamura

How to Highlight Arbitrary Regions in Mirador 4

Introduction The IIIF viewer Mirador has a search feature that can highlight search results for manifests that support the IIIF Search API. However, there are cases where you want to highlight arbitrary regions even for manifests that do not support the Search API. This article introduces a method for achieving highlight display based on annotation information from external data sources, using Mirador’s internal API. Demo Highlight Generator Form - Generate highlights from a form Use Cases Highlighting text regions extracted by a custom OCR system Displaying regions of objects detected by machine learning Visualizing annotations stored in an external database Displaying search results for IIIF servers that do not support the Search API Implementation Basic Mechanism Mirador uses Redux internally, and search results can be registered through the receiveSearch action. By passing JSON in IIIF Search API format to this action, you can display highlights from arbitrary data sources. ...

December 7, 2025 · 24 min · Nakamura