記事一覧

1134 件の記事があります

📚DH週間トピックス — 2026年6月28日週

DH週間トピックス — 2026年6月28日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

ネイティブ macOS アプリの使い方デモ動画を(半)自動で撮る:vhs と「自走デモモード」

デジタルアーカイブ向け macOS ネイティブ(SwiftUI)アプリの使い方デモ動画を(半)自動で撮る方法。CLI は vhs で完全自動化し、GUI はアプリ自身に「自走デモモード」を組み込んで screencapture でウィンドウ単位録画、ナレーション・字幕の同期、パート分割と再結合までをまとめました。

macosswiftswiftuivhs

💾macOS で Sleuth Kit と Brunnhilde を動かしてディスクイメージを解析する(フォルダのコピーとの違い)

FAT16 テストイメージに対し Sleuth Kit(fls/icat/fiwalk/tsk_recover/mmls)と Brunnhilde を macOS で実行し、削除済みファイルの復元やディスクイメージ解析がフォルダのコピーと何が違うかを確認した記録。

sleuthkitbrunnhildemacosデジタルアーカイブ

🗂️macOS で Brunnhilde を動かしてファイル群を特性記述する(Siegfried によるフォーマット識別)

born-digital/デジタル化ファイル群の特性記述(characterization)を行う Brunnhilde を macOS(Apple Silicon)に導入し、Siegfried による PRONOM フォーマット識別レポートが出るまでを確認した記録。

brunnhildesiegfriedmacosデジタルアーカイブ

🦠macOS での ClamAV 動作確認と、EICAR テストファイルが常駐アンチウイルスに隔離される挙動

デジタルアーカイブの SIP 作成ワークフローで使う ClamAV を macOS(Apple Silicon)で動作確認した際、EICAR テストファイルがディスク到達と同時に消える現象の原因を切り分けた記録。XProtect ではなく常駐型アンチウイルスのオンアクセス・スキャンが原因だった。

clamavmacoshomebrewセキュリティ

🗂️Archivematica で backlog のファイルをフォルダに並べ替えて 1 つの SIP にしたとき、元の構造と並べ替え後の構造はどこに記録されるか

backlog のファイルを arrange でフォルダ分けして 1 SIP にまとめたとき、元の構造と並べ替え後の構造が SIP/AIP のどこに記録されるかを実データで整理する。

archivematicametspremisdigitalarchive

📥DataAccessioner:受入時点でチェックサムと技術メタデータを固定するツール

DataAccessioner は受入(accessioning)の段階で MD5 と FITS による技術メタデータを取得し、配列前のファイル同一性を固定するデスクトップツールです。

archivematicadigitalarchivepremisfits

🗃Archivematica の Backlog による評価選別と、開発版で廃止された Appraisal タブ

Archivematica の Backlog と Appraisal(評価選別)機能を検証。開発版で廃止された Appraisal タブの経緯、Backlog 検索での評価選別、配列で構造を変えても原状が METS に残る仕組みを実機で確認した記録。

archivematicadigitalarchivedockerplaywright

📚DH週間トピックス — 2026年6月21日週

DH週間トピックス — 2026年6月21日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

🌐OSS の React アプリ全体を i18n 対応する:react-i18next 導入から日本語化・テスト・PR 分割まで

成熟した OSS の React アプリに react-i18next で i18n を後付けし、日本語化・複数形・テスト(vitest/Playwright)・ページ単位の PR 分割・ロケール遅延ロードまで行った実践記録。

reacti18nextplaywrightoss

📦デジタルアーカイブの SIP 作成をネイティブ macOS アプリ化する — 開発・署名・公開の記録

born-digital/デジタル化ファイルから SIP を作るネイティブ macOS アプリを、本家(BitCurator/Linux)の代わりに Swift で実装し、署名・notarization して公開した記録。

デジタルアーカイブmacosswiftsiegfried

📚DH週間トピックス — 2026年6月14日週

DH週間トピックス — 2026年6月14日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

📚DH週間トピックス — 2026年6月7日週

DH週間トピックス — 2026年6月7日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

🔍Miradorのページ送りでズームが引き継がれる — preserveViewportの既定と、@latestの落とし穴

Miradorでページを送ると、前のページの拡大率・表示位置がそのまま引き継がれます。これはosdConfig.preserveViewportの既定(true)の挙動です(windowではなくosdConfig配下が正しい置き場所)。Mirador 3.3.0〜4.0.0で既定はずっとtrueで、未リリースのmainではfalseに変わっています。挙動の意味とソース上の制御点、ページごとにcanvasサイズが違うときにリセット(false)が自然な理由、mirador@latestで既定挙動が動く落とし穴と対策(バージョン固定+設定の明示)をまとめます。

miradoriiifopenseadragonfrontend

🎬自分の声のクローンで技術解説動画を作る — Marp手描き図・録音テレプロンプター・ElevenLabs PVC×v3・継ぎ目の余韻

Marp スライド + ElevenLabs の Professional Voice Clone(PVC)× v3 で、自分の声でナレーションするスライド形式の技術解説動画を作る制作ノウハウ。roughjs による手描き風の図、クローン学習用の録音テレプロンプター、v3 のチャンク独立生成による『音色の継ぎ目』を余韻でマスクする方法、読み間違いの検出と補正、シリーズ全体の重複をマルチエージェントで校正する運用までをまとめます。

elevenlabsvoicecloningmarproughjs

Dockerのメジャーアップグレードでリバースプロキシ(Traefik)が停止した障害の記録

apt-get upgradeでDocker Engineがメジャーバージョンアップしたことをきっかけに、リバースプロキシのTraefikがDocker APIへ接続できなくなり、配下のDrupalにアクセスできなくなった障害の調査と復旧、再発防止の記録です。Docker EngineがAPIの最小サポートバージョンを引き上げたことで、Traefik内蔵のDockerクライアントが古いAPIで接続を試みて拒否されていました。

dockertraefikdrupalreverse-proxy

📚DH週間トピックス — 2026年5月31日週

DH週間トピックス — 2026年5月31日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

🗺️集計と検索が中心のアプリでデータ層を Firestore から Postgres(Neon)へ移行した記録

地図上に文学作品を紐づけるアーカイブアプリのデータ層を、Firestore から Postgres(Neon)+ Drizzle へ移行した経緯を整理しました。読み取り課金で詰まった原因と、集計・ファセット・全文検索というワークロードの形から見た向き不向きについて書いています。

firestorepostgresneondrizzle

🔁vercel.json の redirects で別ドメインへ全パスを 308 転送するときの詰まりどころ

Next.js (output: 'export') を Vercel から GitHub Pages にデプロイ先を移し、Vercel 側は vercel.json の redirects で全 URL を新ドメインに 308 転送して SEO 集約を狙った際、framework 自動検出と trailing slash 周りで複数回ハマった経緯と、最終的に動作した設定をまとめます

vercelnextjsgithubpagesredirect

🔍Next.js 16 本番ビルドで useRouter().push() が無音で no-op になる事象と回避策

Next.js 16 + next-intl 構成の Web アプリで、本番ビルドのみ useRouter().push() が無音で no-op になり、検索ページの対話操作が一通り機能しなくなる事象を観測した記録。history.pushState + popstate による回避策と切り分けの過程をまとめます

nextjsnextintlreactdebugging