Snorql — 複数の SPARQL エンドポイントを手軽に探索できるブラウザ UI を公開しました

Snorql — A Browser-Based UI for Exploring Multiple SPARQL Endpoints https://nakamura196.github.io/snorql/ はじめに / Introduction SPARQL エンドポイントを手軽に試せるツールが欲しい ── そう思ったことはありませんか? Have you ever wanted a quick, easy way to try out SPARQL endpoints? SPARQL は Linked Open Data (LOD) を検索するための標準クエリ言語ですが、エンドポイントごとに UI が異なったり、そもそも UI が用意されていなかったりします。そこで、1 つの統一的な UI から複数のエンドポイントを切り替えて使える ツールとして Snorql を公開しました。 SPARQL is the standard query language for searching Linked Open Data (LOD), but each endpoint often has a different UI — or none at all. To solve this, I published Snorql, a tool that lets you switch between multiple endpoints from a single, unified UI. ...

2026年2月8日 · 10 分 · Nakamura

Mirador ビューア埋め込み設定

IIIF画像の表示に Mirador ビューアを使用する方法について説明します。 参考実装 埋め込み方式は、Stanford University Libraries の Stanford Digital Repository を参考にしています。書誌情報の上部にビューアを埋め込み、メタデータと画像を同一ページで閲覧できるようにしています。 ファイル構成 a ├ │ ├ │ └ p ─ ─ ─ p ─ ─ ─ s / p └ s └ . w u ─ r ─ e e b ─ c ─ n b l / v / i i c M . c n o i l / d m r o m e p a c i x o d a r . n o l a h e r d t n V o m t i r l s e / / w i e t r e . m t / s x # # # M 埋 環 i め 境 r 込 変 a み 数 d コ 設 o ン 定 r ポ ー ビ ネ ュ ン ー ト ア 本 体 URLパラメータ /mirador/index.html は以下のURLパラメータを受け付けます: ...

2026年2月7日 · 13 分 · Nakamura

Omeka SのIIIF Serverモジュールで、PLYファイルがIIIFマニフェストのitemsに出力されない問題の調査

概要 Omeka SのIIIF Serverモジュールで、PLYファイルがIIIFマニフェストのitemsとして出力されないが、GLBファイルは正常に出力される問題を調査しました。 前提条件:Omeka Sの設定 デフォルトでは、PLYファイルはOmeka Sにアップロードできません。以下の設定が必要です。 PLYファイルアップロード時のエラー デフォルト設定では、PLYファイルのメディアタイプ(application/octet-stream)と拡張子(.ply)が許可されていないため、アップロードエラーが発生します。 設定の追加 管理画面の「設定」→「セキュリティ」で以下を追加してください: 許可されるメディアタイプ : application/octet-stream を追加 許可されるファイル拡張子 : ply を追加 原因 PLYファイルの処理コードがモジュールに実装されていませんでした。 GLBファイルには明示的な拡張子チェックと型変換のコードが存在しますが、PLYファイルには同様のコードが存在しませんでした。 技術的詳細 GLBファイルの処理(修正前から存在) TraitMedia.php (format()メソッド) i } f ( $ $ i } m e f e x d t ( i e $ r a n e e T s x t y i t u p o e r e n n n s = = i ' = o m = s n o t d ' r = e a t = l p o = / p l g l o ' l i w g t c e l f a r b - t ( ' b i p ) i o a n n t { a / h r o i y c n ' t f ; e o t ( - ( s s t t r r e i a n m g ' ) ) $ { t h i s - > r e s o u r c e - > s o u r c e ( ) , P A T H I N F O _ E X T E N S I O N ) ) ; IiifTypeOfMedia.php i } f ( $ $ i } m e f e x d t ( i e $ r a n e e T s x t y i t u p o e r e n n n s = = i $ = o m = s n e t d ' r = i a t = a p o = I p l i l o ' i i w g f c e l T a r b y t ( ' p i p ) e o a s n t { [ / h $ o i m c n e t f d e o i t ( a - ( I s s d t t ] r r e i = a n m g ' ' ) M ) o $ d { m e e l d ' i ; a - > s o u r c e ( ) , P A T H I N F O _ E X T E N S I O N ) ) ; IIIFマニフェストのitems生成フロー メディアタイプの判定 (TraitMediaInfo.php) ...

2026年2月6日 · 9 分 · Nakamura

3D Gaussian Splatting Viewer の開発 - Spark.jsを使ったブラウザ実装

3D Gaussian Splatting(3DGS)ファイルをブラウザで閲覧できるビューアを開発しました。本記事では、3DGSの概要と、通常のPLY Viewerでは表示できない理由、そして専用ビューアの実装について解説します。 デモ: https://3dtiles-viewer.vercel.app/3dgs-viewer.html?manifest=https://3dtiles-viewer.vercel.app/iiif/ply/manifest.json なぜ通常のPLY Viewerでは3DGSを表示できないのか 3DGSファイルは拡張子が.plyであるため、一見すると通常のPLYファイルと同じように扱えそうに見えます。しかし、Three.jsのPLYLoaderで読み込んでも正しく表示されません。 通常のPLYファイルと3DGS PLYファイルの違い 通常のPLY(メッシュ/点群): e p p p p p p e p l r r r r r r l r e o o o o o o e o m p p p p p p m p e e e e e e e e e n r r r r r r n r t t t t t t t t t y y y y y y y v f e f f f u u u a l r l l l c c c c i t o o o h h h e s e a a a a a a t x t t t r r r 5 0 u 1 x y z r g b 0 c 0 e r l h 0 d e u a 0 e e r n i n t v e r t e x _ i n d i c e s 3DGS用PLY: ...

2026年2月6日 · 15 分 · Nakamura

3D点群データの世界:PLY、ガウシアンスプラッティング、Potreeの関係を整理する

! 本記事はAI(Claude)との対話をもとに構成・執筆しています。内容の正確性には注意を払っていますが、誤りや不正確な記述が含まれている可能性があります。お気づきの点があれば、コメントでご指摘いただけると助かります。 3D点群データを扱う場面が増えています。文化財のデジタルアーカイブ、都市の3Dスキャン、自動運転のためのLiDAR計測など、応用分野は広がる一方です。しかし、PLY、LAS、ガウシアンスプラッティング、Potreeといった関連する用語が多く、それぞれの位置づけや関係性が掴みにくいと感じる方も多いのではないでしょうか。 本記事では、これらの技術やフォーマットがどのようにつながっているのかを整理してみます。 点群(Point Cloud)とは 点群とは、3D空間中の点の集合によって物体や空間の形状を表現するデータ形式です。各点は最低限の位置情報(x, y, z)を持ち、それに加えて色(r, g, b)、法線ベクトル、反射強度などの属性を付与できます。 点群の取得方法は主に以下のようなものがあります。 LiDAR(Light Detection and Ranging) :レーザー光を照射し、反射光の往復時間から距離を計測します。航空測量、自動運転、地形調査などで広く利用され、1回のスキャンで数億〜数十億点のデータが得られることもあります。 SfM(Structure from Motion) :複数の写真から3D構造を復元する手法です。カメラ位置の推定と三角測量を組み合わせて密な点群を生成します。比較的安価な機材で実施でき、文化財のデジタル記録などで活用が広がっています。 3Dスキャナ :構造光やレーザーを用いて対象物の表面形状を直接計測します。建築物の現況調査や製造業での品質管理に用いられます。 取得方法によって点群の密度、精度、付随する属性が異なり、それが後段のファイル形式選択にも影響します。 PLY(Polygon File Format) 汎用的な3Dデータの器 PLYはスタンフォード大学で3Dスキャンデータの保存用に開発されたフォーマットです。正式名称は「Polygon File Format」で、もともとはポリゴン(メッシュ)データの保存を主な目的としていました。 PLYの最大の特徴は汎用性 にあります。ヘッダ部に属性の定義を記述し、データ部に頂点ごとの値を格納するシンプルな構造で、ASCII形式とバイナリ形式の両方をサポートしています。そして重要なのは、PLYは点群専用の形式ではない ということです。同じ .ply という拡張子であっても、中身はまったく異なるデータを格納できます。 PLYが格納できる3種類のデータ PLYファイルは、ヘッダの内容によって大きく3種類のデータを表現します。 ① メッシュ(Mesh) 頂点(vertex)に加えて面(face)の情報を持ちます。面は通常、三角形の頂点インデックスのリストとして記述されます。3Dスキャナの出力やCGモデルの保存に用いられます。 p f e p p p e p e l o l r r r l r n y r e o o o e o d m m p p p m p _ a e e e e e e h t n r r r n r e t t t t t t a a y y y y d s v f e c e f f f a l r i r l l l c i i t o o o e s e a a a t 1 x t t t 1 . 3 u 0 6 x y z 5 c 7 7 h 8 7 a 8 2 r 6 8 6 i n t v e r t e x ← _ i f n a d c i e c が e あ s る → メ ッ シ ュ このようなファイルは135万以上の三角形で構成されたメッシュデータであり、ビューアで開くと滑らかな表面として描画されます。 ...

2026年2月5日 · 10 分 · Nakamura

KAKEN OpenSearch API の使い方

科研費データベース(KAKEN)の情報をプログラムから取得する方法を解説します。 1. はじめに KAKENは、国立情報学研究所(NII)が提供する科学研究費助成事業データベースです。OpenSearch APIを利用することで、研究課題の情報をプログラムから取得できます。 2. 事前準備:アプリケーションIDの取得 KAKEN APIを利用するには、CiNiiでアプリケーションIDを取得する必要があります。 CiNii API利用登録にアクセス 必要事項を入力して登録申請 承認後、メールでApplication ID(appid)が届く 注意 : 登録から承認まで時間がかかる場合があります。 3. APIエンドポイント 研究課題をさがす h t t p s : / / k a k e n . n i i . a c . j p / o p e n s e a r c h / 研究者をさがす h t t p s : / / n r i d . n i i . a c . j p / o p e n s e a r c h / 4. 主要パラメータ(研究課題をさがす) パラメータ 説明 必須 例 appid アプリケーションID ○ 82RKpPlZiIjbqKwFDO3D qb 研究課題番号で検索 △ 19K20626 kw フリーワード検索 △ IIIF qa 研究課題名で検索 △ デジタルアーカイブ qg 研究者の姓名で検索 △ 中村覚 qm 研究者番号で検索 △ 80802743 format レスポンス形式 - xml(デフォルト: html5) rw 1ページの件数 - 20, 50, 100, 200, 500 lang 言語 - ja, en △: いずれか1つ以上が必要 ...

2026年2月5日 · 15 分 · Nakamura

Three.js + React Three Fiber で GLTF モデルのテクスチャが荒く表示される問題と解決策

概要 React Three Fiber を使用して GLTF モデルを表示した際、テクスチャがぼやけて見える、または荒く表示される問題に遭遇しました。本記事では、その原因と解決策を解説します。 症状 GLTF モデルのテクスチャがぼやけて表示される 他の 3D ビューアでは正常に表示される同じモデルが、自作のビューアでは荒く見える dpr(デバイスピクセル比)や antialias を設定しても改善しない 原因 Three.js r152 以降、デフォルトの出力カラースペースが変更されました。 GLTF モデルのテクスチャは通常 sRGB 色空間 で保存されています。しかし、Three.js のデフォルト設定では出力が Linear 色空間 になっているため、以下の問題が発生します: テクスチャの補間処理が Linear 空間で行われる ミップマップの生成が正しい色空間で行われない 結果として、テクスチャがぼやけたり、色がおかしくなる 解決策 Canvas の onCreated コールバックで outputColorSpace を設定します。 Before(問題のあるコード) i < m C / p a c d g < C o n a p l S a r v m r = c n t a e = { e v s r { { n a { a [ e s = 1 a > C { , n a { t n 2 i v p ] a a o } l s s i i a } t s i : f o r n t o : r m u [ e ' 5 @ , } r } e 5 a , c t 5 - ] t , h r f e o e v / : f i 5 b 0 e r } ' } ; After(修正後のコード) i i < m m C / p p a c d g } o } < C o o n a p l } n } S a r r v m r = a p p t t C g c n t t a e = { n r o o o r l e v s r { { t e w n n e . n a { a M i s e e e a o e s = a a e r M M t u > C a { t l r P a a e t a s { h i v r p p d p n . a e e p p = u v T p m s D f i i { t a H o i : r e n n ( C s R s n a r g g { o E i ( t w e : E l } E t w r i n x g o i i u n c T p l r f f o n e g e H o S r r n d , B : R s } p o o : o u E u ) a m m w f ' E r c [ . f h . e = e ' ' 5 d e i A : > @ t , e r g C = r h v : h E 1 { e r 5 i - S , T a e , c t p F H c e e r e i R t ' 5 P u r l E - ; ] i e f m E t , x , o i . h e r c S r f l m T R e o R a o G e v a n n B / : t c e C f i e M o i 5 o ' a l b 0 , , p o e p r r } 2 i S ' } ) n p ; } g a , c e ; 各設定の説明 outputColorSpace: THREE.SRGBColorSpace 最も重要な設定 。出力カラースペースを sRGB に設定することで、テクスチャが正しく表示されます。 ...

2026年2月5日 · 8 分 · Nakamura

Nuxt Content + trailingSlash設定で静的ファイルへのリンクが404になる問題と解決策

概要 Nuxt 3/4 + Nuxt Content の環境で trailingSlash: "append" を設定している場合、コンテンツ内のPDFや画像などの静的ファイルへのリンクが404エラーになることがあります。 発生条件 以下の条件がすべて揃った場合に発生します: Nuxt 3/4 + Nuxt Content を使用 nuxt.config.ts で trailingSlash: "append" を設定 Markdownやコンテンツ内に静的ファイル(PDF、画像など)へのリンクがある 問題の詳細 症状 コンテンツ内で以下のようなリンクを記述した場合: < a h r e f = " / u p l o a d s / d o c u m e n t . p d f " > 資 料 を ダ ウ ン ロ ー ド < / a > 生成されるHTMLでは、リンクが以下のように変換されてしまいます: ...

2026年2月4日 · 7 分 · Nakamura

IIIF Georeference ViewerへのLinked Places Format対応

概要 IIIF Georeference Viewerにおいて、地理空間データの相互運用性を向上させるため、Linked Places Format (LPF) に準拠したデータ構造をサポートしました。本記事では、LPFの概要と実装の詳細について説明します。 Linked Places Format (LPF) とは Linked Places Format は、Pelagios Network が策定した地名辞典データの相互運用フォーマットです。GeoJSONを拡張し、Linked Data (JSON-LD) の概念を取り入れることで、異なるデータセット間での場所情報の共有・連携を可能にします。 LPFの特徴 JSON-LD互換 : @id や @context を使用したセマンティックWeb対応 GeoJSON拡張 : 標準的なGeoJSON構造を維持しつつ、メタデータを追加 リンク機能 : 外部データセットへの参照を links 配列で表現 時間情報 : when プロパティによる時間的な情報の記述 公式仕様 GitHub: https://github.com/LinkedPasts/linked-places-format JSON-LD Context: https://raw.githubusercontent.com/LinkedPasts/linked-places/master/linkedplaces-context-v1.1.jsonld 従来のフォーマットとの比較 従来のフォーマット(metadata オブジェクト) { } " " } " } " } t p , g , m y r " e " " e " " " " " p o r o t c t i l t u x e p e m y o a d a a r y " e s e p o d " b g l w : r o t e r a : e s " h t u r " d t l " : " " i r y : i a " " : : F e c " n " h : " e s e : " a : t [ h " a " C P t t " " t 5 t : o { o e { p 電 工 t 9 u o i s : 気 学 p 3 r { r n " / 実 部 s 6 e d t : / 験 " : , " s " e 室 ] / 6 , " , [ x " , / 3 : 1 a , m 4 3 m a 4 [ 9 p p , 6 . l s 9 6 7 e . 7 9 6 . a 6 0 2 o p , , 3 r p 1 1 g . 3 7 8 / g 8 5 2 p o 4 1 , l o " 7 a . ] 3 c g 5 e l . / / 7 1 d 1 2 J 5 3 d 1 " X 2 , X 3 Q 3 E ] A 8 d W S p t g t 8 " , 従来のフォーマットでは、metadata オブジェクト内に全てのメタデータを格納していました。これはシンプルですが、以下の課題がありました: ...

2026年2月4日 · 24 分 · Nakamura

Mirador 4用回転プラグインの開発とnpm公開

はじめに IIIFビューアであるMiradorの最新版(Mirador 4)に対応した回転プラグイン「mirador-rotation」を開発し、npmで公開しました。本記事では、プラグインの開発から公開、そして実際に利用するための統合方法について解説します。 背景 Mirador 3からMirador 4へのメジャーアップデートに伴い、以下の変更がありました: React 16 → React 18 Material-UI v4 → MUI v7 その他多数の依存関係の更新 これにより、既存のMirador 3用プラグインはそのままでは動作しなくなりました。 mirador-rotation-pluginの開発 リポジトリ https://github.com/nakamura196/mirador-rotation-plugin 主な機能 画像の回転機能 Mirador 4のプラグインメニューへの統合 npmへの公開 開発したプラグインはnpmで公開しています: n p m i n s t a l l m i r a d o r - r o t a t i o n mirador-integrationの更新 公式のmirador-integrationリポジトリを参考に、Mirador 4対応の統合環境を構築しました。 主な変更点 項目 旧 新 Mirador 3.x 4.0.0 React 16.14.0 18.x ビルドツール Webpack Parcel UI Material-UI v4 MUI v7 package.json 最小限の依存関係で構成しています: ...

2026年1月31日 · 9 分 · Nakamura

静的サイトでIIIF Content Search APIを実現する - Service Workerによるクライアントサイド検索

はじめに IIIF (International Image Interoperability Framework) は、デジタルアーカイブや美術館のコレクションで広く使われている画像配信の国際規格です。IIIF Content Search API を使うと、マニフェスト内のアノテーション(注釈やタグ)を検索できます。 しかし、IIIF Content Search API は通常、サーバーサイドでの実装が前提となっており、静的サイト(GitHub Pages、Vercel、Netlify など)では実現が難しいとされてきました。 本記事では、Service Worker を使ってクライアントサイドで IIIF Content Search API を実装する方法 を紹介します。この手法により、静的サイトでも Mirador などの IIIF ビューアで検索機能を利用できるようになります。 課題 従来のIIIF Search APIの仕組み [ M i r a d o r ] → G E T / s e a r c h ? q = k e y w o r d → [ サ ー バ ー ] → 検 索 処 理 → J S O N 応 答 IIIF Content Search API は、クエリパラメータ(?q=検索語)を受け取り、検索結果を JSON で返すエンドポイントを必要とします。これは動的なサーバー処理を前提としています。 ...

2026年1月29日 · 21 分 · Nakamura

JavaScriptの演算子優先順位の罠 - Vercelビルドエラーの原因を探る

はじめに Next.jsアプリケーションをVercelにデプロイしようとしたところ、ローカルでは成功するのにVercelでは失敗するという問題に遭遇しました。エラーメッセージは曖昧で、原因の特定に苦労しました。 この記事では、問題の発見から解決までの過程を共有し、JavaScriptの演算子優先順位について学んだことをまとめます。 問題の症状 エラーメッセージ E [ T r E h r r e o r r o s r p o : e c c c A i u n f r i r e c e r d r m o e p r s r s e o a r c g e c e n u d r i e r s r e i d o n m g i i n t p t a t e g h d e e i " S n / e e r p n r / e o s r d m u e C c l o t l m i s p o / o n 2 n 2 e b - n u 0 t i 3 s l " d r s e n t d o e r a . v o i d l e a k i n g s e n s i t i v e d e t a i l s . ] 特徴的な現象 ローカルビルドは成功 するが、Vercelでは失敗 毎回異なるページ でエラーが発生(22-03、24-03、25-04など) エラーの詳細が本番ビルドでは隠される 原因の発見 複数のファイルを調査する中で、以下のコードパターンを発見しました: ...

2026年1月28日 · 7 分 · Nakamura

Sketchfab APIでGLBファイルをダウンロード・表示するWebアプリを作る

Sketchfab APIを使って3DモデルをGLBファイルとしてダウンロードし、ブラウザ上でThree.jsで表示するWebアプリを作成しました。本記事では、セキュリティを考慮したアーキテクチャ設計から実装まで解説します。 やりたかったこと Sketchfab上の3DモデルをGLB形式でダウンロードしたい ダウンロードしたGLBをブラウザ上で3D表示したい APIトークンを安全に管理したい 技術スタック Next.js 16(App Router) React Three Fiber / @react-three/drei TypeScript 最初に試したこと:クライアントサイドのみで実装 最初はシンプルにHTML + JavaScriptだけで実装しようとしました。 c ) c c o ; o o n ` { } n n S s h s s k t t h } t o e t e l t r p a ' d e c e s d A a . h s : e u t l f p r t a o a / s h g b n a : o = ( s p r d A e i { i a a P . z w t I = s a a a か k t i . ら a e i t g ダ w t o l ウ a c n r b ン i h ' e . ロ t f : s u ー a p r ド f b ` o l U e . T n ) R t c o s ; L c o k e を h m e . 取 ( / n j 得 v s 3 $ o 署 / { n 名 m a ( 付 o p ) き d i ; S e T 3 l o s k U / e R $ n L { } m ` o d e l U i d } / d o w n l o a d ` , これ自体は動作しましたが、2つの問題がありました。 ...

2026年1月28日 · 13 分 · Nakamura

ODD編集Tips:その1

要素の属性を特定のものだけに制限する TEIのデフォルトでは、要素は多くの属性クラス(att.global、att.datableなど)を継承しており、多数の属性が使用可能です。特定の属性のみを許可したい場合は、以下のように設定します。 例: persNameでxml:idとcorrespのみを許可 < e / l < < e e c / a / l m l < < < < < < < c t < < a e e a ! m m m m m m l t a / a / t m n s - e e e e e e a L t < < a t < < a t e t s - m m m m m m s i t d d / t t d d / t L n S e b b b b b b s s D e a < d t D e a < d t i t p s 属 e e e e e e e t e s t d a D e s t d a D s S e 性 r r r r r r s > f c a a t e f c a a t e t p c m ク O O O O O O > > t t a f > t t a f > e o ラ f f f f f f i 要 y a t > i 関 y a t > c i d ス d 素 p R y d 連 p R y > d e を k k k k k k e の e e p e す e e p e = 削 e e e e e e n 一 > f e n る > f e n " 除 y y y y y y t 意 > t 人 > t c ( = = = = = = = な n = 物 k = h モ " " " " " " " 識 a " 情 e " a デ a a a a a a x 別 m c 報 y p n ル t t t t t t m 子 e o へ = e g ク t t t t t t l < = r の " r e ラ . . . . . . : / " r リ t s " ス g c d e p t i d I e ン e N > は l m a d e y d e D s ク i a 維 o c t i r p " s " p < d m 持 b " a t s e c / " / a e ) a b L o d m > > d t " l m l i n " o m e a " o e k a d o s . m d " e l m e d c p o m e " " o = e > o d o = m d " = i e d " o m m e a " n = e d d o o = d a t " = e e d d " d d e c " l = e e d " d r h d e " = = e " " a e t d " " l u / n l e e d d e s u > g e " l e e t a s e t / e l l e g a " e > t e e " e g > " e t t / = e / " e e > " = > / " " o " > / / p o > > t p " t > " > ポイント <classes mode="change">を使用: mode="replace"で空にすると、モデルクラスも削除され要素自体が使えなくなる 属性クラスを個別に削除 : <memberOf key="att.xxx" mode="delete"/>で不要な属性クラスを削除 必要な属性を追加 : <attDef ident="xxx" mode="add">で許可したい属性を定義 注意点 要素がどの属性クラスに属しているかは、TEI Guidelinesで確認できる att.globalを削除するとxml:id、xml:langなども使えなくなるため、必要に応じて個別に追加する 要素に属性を追加する 既存の属性クラスを維持したまま、新しい属性を追加する場合: ...

2026年1月27日 · 4 分 · Nakamura

Next Auth (Auth.js v5) の本番環境で AUTH_URL が必須な理由

概要 Next Auth (Auth.js v5) を使用したアプリケーションを Docker コンテナや本番環境にデプロイする際、AUTH_URL 環境変数を設定しないと GitHub OAuth 認証で以下のエラーが発生します: B T e h e c a r r e e d f i u r l e ! c t _ u r i i s n o t a s s o c i a t e d w i t h t h i s a p p l i c a t i o n . 開発環境 vs 本番環境 開発環境(npm run dev) 開発環境では Next.js が自動的にホスト情報を検出するため、AUTH_URL の設定は不要 です。 ...

2026年1月27日 · 4 分 · Nakamura

YOLOv11xモデルをHugging Faceに公開する

日本古典籍くずし字データセットで学習したYOLOv11xモデルをHugging Faceに公開し、Gradio Spacesでデモを作成する手順を紹介します。 概要 モデル : YOLOv11x(くずし字検出用) データセット : 日本古典籍くずし字データセット 公開先 : Hugging Face Models + Spaces 1. Hugging Face Modelsにモデルを登録 1.1 huggingface_hubのインストール p i p i n s t a l l h u g g i n g f a c e _ h u b 1.2 ログイン h u g g i n g f a c e - c l i l o g i n または Python から: ...

2026年1月26日 · 5 分 · Nakamura

IIIF画像をWeb Tile Map Serviceで配信する

IIIF Georeference Extension JSONからXYZタイルを生成し、TileServer GLで配信、MapLibre GL JSで表示するまでの手順をまとめます。 OSM上に東京大学鳥瞰図をオーバーレイ表示 概要 I ┌ │ │ └ ┌ │ │ └ ┌ │ │ └ ┌ │ │ └ I ─ ─ ─ ─ ─ ─ ─ ─ I ─ i ( ─ ─ m ( ─ ─ T ( ─ ─ M ( ─ F ─ i X ─ ─ b m ─ ─ i タ ─ ─ a 地 ─ ─ i Y ─ ─ - b ─ ─ l イ ─ ─ p 図 ─ G ─ f Z ─ ─ u t ─ ─ e ル ─ ─ L 表 ─ e ─ - タ ─ ─ t i ─ ─ S 配 ─ ─ i 示 ─ o ─ g イ ─ ─ i l ─ ─ e 信 ─ ─ b ) ─ r │ ▼ ─ e ル ─ │ ▼ ─ l e ─ │ ▼ ─ r ) ─ │ ▼ ─ r ─ e ─ o 生 ─ ─ s ─ ─ v ─ ─ e ─ f ─ r 成 ─ ─ 変 ─ ─ e ─ ─ ─ e ─ e ) ─ ─ 換 ─ ─ r ─ ─ G ─ r ─ f ─ ─ ) ─ ─ ─ ─ L ─ e ─ - ─ ─ ─ ─ G ─ ─ ─ n ─ t ─ ─ ─ ─ L ─ ─ J ─ c ─ i ─ ─ ─ ─ ─ ─ S ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ e ─ ─ ─ ─ ─ ─ ─ J ─ s ─ ─ ─ ─ ─ ─ ─ S ─ │ ─ ─ ─ ─ │ ─ ─ ─ O ─ ─ ─ ─ ─ ─ ─ │ ─ N ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ ┘ ┐ │ ┘ ┐ │ ┘ ┐ │ ┘ 必要環境 Docker / Docker Compose Python 3.x GDAL (gdal_translate, gdalwarp, gdal2tiles.py) Pillow (pip3 install pillow) mb-util GDALのインストール # b # s r u m e U d a w b o c u O i n a S n t p s u t ( t / H a D i o l e n m l b s e i t b g a a r d n l e a l w l ) g d a l - b i n p y t h o n 3 - g d a l mb-utilのインストール p i p 3 i n s t a l l m b u t i l 1. プロジェクト構成 w ├ ├ ├ ├ └ t ─ ─ ─ ─ ─ m ─ ─ ─ ─ ─ s / d d s f d o a t r o c t y o c k a l n s e / e t / r s e - / n c d o / m p o s e . y m l # # # m カ M b ス a t タ p i ム L l ス i e タ b s イ r フ ル e ァ ( ビ イ オ ュ ル プ ー シ ア ョ ン ) 2. Docker Compose設定 docker-compose.yml: ...

2026年1月23日 · 9 分 · Nakamura

Nuxt 3 プロジェクトのパッケージ更新まとめ

概要 Nuxt 3.2.3 から 3.20.2 へのメジャーアップデートを含む、依存パッケージの大規模更新を実施しました。 主要なパッケージ更新 パッケージ 更新前 更新後 nuxt 3.2.3 3.20.2 @nuxt/content 2.5.2 3.11.0 @nuxtjs/i18n 8.0.0-beta.10 10.2.1 vuetify 3.1.8 3.7.6 sass 1.58.3 1.83.4 @mdi/js 7.1.96 7.4.47 新規追加パッケージ better-sqlite3: ^12.5.0 - @nuxt/content v3 の依存 vue-i18n: ^11.0.0 - i18n モジュールの依存 対応が必要だった変更点 1. @nuxt/content v3 への移行 content.config.ts の新規作成が必要になりました。 i e } m x ) p p c } c o o o o r r l c } n t t l o ) t e n t s e { d c t y o n e t e p u t d f i n e r . e a o t : c c f u n : e o i l s ' : n n t : d p f e e a i C d { f g g o e i e . n f n ' t t i e , s e n C . n e o m t C l d C o l ' o n e n t c f e t i n i g t o , C n o ( d n { e f f i i g n ( e { C o l l e c t i o n } f r o m ' @ n u x t / c o n t e n t ' 2. @nuxtjs/i18n v10 への移行 nuxt.config.ts の変更点 i } i } 1 1 8 l ] l v } 8 l ] b } l v B n o , a u , A n o , u , a u e : c { { n e f f : c { { n o r n e f a g I a t a d p u g I o { l c c D 1 l e { l c c l t n D 1 r e o o i 8 l r e o o e i t i 8 e s d d r n b s d d : m i r n : e e : : a : e e i m : : : : c : : { z e [ " { k [ e O " " " " l L " " T n l . j e o o j e r l o / a n c c a n a y c i " " a a " " n : a 1 , , l l , , s l 8 e e l t e n i i s : l l a r s . s s / a a t u " c o o " l n n i e , o : : , a g g o , n n u u n f " " g a a D i j e , g g i g a n e e r . _ - : : e 末 t J U c 尾 s P S " " t ス " " " j e i ラ , , , a n v ッ - - e シ f f J U : ュ i i P S 削 l l " " f 除 e e , , a 外 : : l 部 f f s フ " " i i e ァ j e l l , イ a n e e ル . . : : 化 j j s s " " " " j e a n } } . . , , j j s s " " } } , , i s o → l a n g u a g e i18n.config.ts の新規作成 e } x ) p l f ) o e a ; r g l t a l c b d y a e : c f k a f L u a o l l c t s a e l d , e e : f i " n j e a I " 1 , 8 n C o n f i g ( ( ) = > ( { localesフォルダの移動 locales/ → i18n/locales/ ...

2026年1月22日 · 5 分 · Nakamura

IIIF Georeference to XYZ Tiles

IIIF Georeference Extension JSONからXYZタイルを生成し、MapLibre GL JSで表示するツール。 リポジトリ : https://github.com/nakamura196/iiif-georef-tiles GitHub Pages : https://nakamura196.github.io/iiif-georef-tiles/ 必要環境 Python 3.x GDAL (gdal_translate, gdalwarp, gdal2tiles.py) GDALのインストール # b # s r u m e U d a w b o c u O i n a S n t p s u t ( t / H a D i o l e n m l b s e i t b g a a r d n l e a l w l ) g d a l - b i n p y t h o n 3 - g d a l 使用方法 p y t h o n 3 s c r i p t s / i i i f _ g e o r e f _ t o _ t i l e s . p y < I I I F _ G E O R E F _ J S O N _ U R L > 例 p y t h o n 3 s c r i p t s / i i i f _ g e o r e f _ t o _ t i l e s . p y h t t p s : / / n a k a m u r a 1 9 6 . g i t h u b . i o / i i i f _ g e o / c a n v a s . j s o n オプション オプション デフォルト 説明 --scale 0.25 画像の縮小率 --zoom 14-18 タイルのズームレベル範囲 --output-dir docs 出力ディレクトリ --name tiles タイルフォルダ名 --work-dir work 作業用ディレクトリ --keep-work - 作業用ファイルを削除しない 処理の流れ I ┌ │ │ └ ┌ │ │ └ ┌ │ │ └ ┌ │ │ └ ┌ │ │ └ ┌ │ │ └ I ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ I ─ 1 ─ ─ 2 ─ ─ 3 ─ ─ 4 ─ ─ 5 ─ ─ 6 ─ F ─ . ─ ─ . ─ ─ . ─ ─ . ─ ─ . ─ ─ . ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ G ─ J ( ─ ─ 画 ( ─ ─ G ( ─ ─ 座 ( ─ ─ タ ( ─ ─ H ( ─ e ─ S U ─ ─ 像 I ─ ─ C g ─ ─ 標 g ─ ─ イ g ─ ─ T M ─ o ─ O R ─ ─ を I ─ ─ P d ─ ─ 変 d ─ ─ ル d ─ ─ M a ─ r │ ▼ ─ N L ─ │ ▼ ─ ダ I ─ │ ▼ ─ を a ─ │ ▼ ─ 換 a ─ │ ▼ ─ 生 a ─ │ ▼ ─ L p ─ e ─ を か ─ ─ ウ F ─ ─ 埋 l ─ ─ l ─ ─ 成 l ─ ─ ビ L ─ f ─ 取 ら ─ ─ ン ─ ─ め _ ─ ─ w ─ ─ 2 ─ ─ ュ i ─ e ─ 得 f ─ ─ ロ I ─ ─ 込 t ─ ─ a ─ ─ t ─ ─ ー b ─ r ─ e ─ ─ ー m ─ ─ み r ─ ─ r ─ ─ i ─ ─ ア r ─ e ─ t ─ ─ ド a ─ ─ a ─ ─ p ─ ─ l ─ ─ 生 e ─ n ─ c ─ ─ g ─ ─ n ─ ─ ) ─ ─ e ─ ─ 成 ─ c ─ h ─ ─ │ e ─ ─ s ─ ─ ─ ─ s ─ ─ G ─ e ─ ) ─ ─ ─ ─ l ─ ─ ─ ─ . ─ ─ L ─ ─ ─ ─ A ─ ─ a ─ ─ ─ ─ p ─ ─ ─ J ─ ─ ─ P ─ ─ t ─ ─ ─ ─ y ─ ─ │ J ─ S ─ ─ ─ I ─ ─ │ e ─ ─ ─ ─ │ ) ─ ─ S ─ O ─ ─ ─ ) ─ ─ ) ─ ─ │ ─ ─ ─ ─ ) ─ N ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ┘ ┐ │ ┘ ┐ │ ┘ ┐ │ ┘ ┐ │ ┘ ┐ │ ┘ 変換結果 元画像 地理参照後 出力ファイル d ├ ├ └ o ─ ─ ─ c ─ ─ ─ s / i s t ├ ├ ├ ├ └ n o i ─ ─ ─ ─ ─ d u l ─ ─ ─ ─ ─ e r e x c s 1 1 1 1 1 . e 4 5 6 7 8 h . / / / / / t j m s l o n # # # M 元 X a の Y p I Z L I タ i I イ b F ル r e G e G o L r e J f S e ビ r ュ e ー n ア c e J S O N ローカルで確認 c # d h d t o t c p s : / & / & l o p c y a t l h h o o n s 3 t : - 8 m 0 0 h 0 t / t p を . 開 s く e r v e r 8 0 0 0 IIIF Georeference Extension IIIF Georeference Extensionは、IIIF画像に地理参照情報を付与するための拡張仕様です。 ...

2026年1月21日 · 8 分 · Nakamura

Azure OpenAI Whisper + Speech Services で動画に英語字幕・音声を自動生成する

日本語の動画に英語字幕と英語音声を自動で付与する方法をまとめました。Azure OpenAI ServiceのWhisperとSpeech Servicesを使用します。 概要 今回の目的は、日本語音声の動画を以下のように多言語対応させることです: 日本語版 : 元の動画(日本語音声、字幕なし) 英語版 : 英語音声 + 英語字幕 使用サービス サービス 用途 Azure OpenAI Service (Whisper) 日本語音声 → 英語テキストへの翻訳 Azure Speech Services (TTS) 英語テキスト → 英語音声の合成 FFmpeg 音声抽出・動画結合 手順 1. 環境準備 必要なツール # b # p r i F e P p F w y m t i p i h n e n o s g s n t の t ラ a イ a イ l ン l ブ l ス l ラ ト リ p ー f y ル f t ( m h m p o a e n c g - O d S o ) t e n v r e q u e s t s Azure設定(.env) A A A A Z Z Z Z U U U U R R R R E E E E _ _ _ _ O O O O P P P P E E E E N N N N A A A A I I I I _ _ _ _ E A D A N P E P D I P I P _ L _ O K O V I E Y E N Y M R T = E S = y N I h o T O t u _ N t r N = p - A 2 s a M 0 : p E 2 / i = 4 / - w - x k h 0 x e i 6 x y s - x p 0 x e 1 . r o p e n a i . a z u r e . c o m 2. 動画から音声を抽出 Azure Whisper APIには25MBのファイルサイズ制限があるため、音声を圧縮して抽出します。 ...

2026年1月21日 · 9 分 · Nakamura