記事一覧

1134 件の記事があります

東北大学デジタルアーカイブの公開 API 調査 — OAI-PMH 経由で setSpec ごとに Excel 出力する

東北大学デジタルアーカイブ(touda.tohoku.ac.jp/collection)で利用できる公開 API を調査し、OAI-PMH を使って setSpec 単位でメタデータを取得し Excel に出力する手順を整理しました。

oaipmhiiifpythonopenpyxl

📥researchmap業績登録の選択肢整理と、個人ユーザー向けPlaywright実装

researchmapには公式の書き込みAPIとCSV/JSON/JSONLインポート機能が用意されていますが、個人ユーザーから見るとそれぞれ制約があります。本記事では選択肢を整理した上で、完全自動化とPDF添付に対応するPlaywrightスクリプトの実装を紹介します。

researchmapplaywrightpythonautomation

YAML設定で運用するNext.js管理コンソール — 複数サイト・複数アクションの一元化

複数のWebサイトに対する複数のオペレーション(デプロイ・再インデックス・バックアップ等)を、YAML 1ファイルで定義し、非エンジニアの作業者がブラウザから実行できる管理コンソールの設計を整理しました。

nextjscloudflaregithub-appyaml

GitHub App と Cloudflare Access で構築する組織向け管理コンソール

複数のデータベースサイトを運用する組織で、非エンジニアの作業者がデプロイ・データ更新を自分でトリガーできる管理コンソールを構築した記録です。GitHub App認証とCloudflare Access (Zero Trust) を組み合わせ、PATやOAuth Appとは何が違うのかを整理しました。

githubgithub-appcloudflarecloudflare-access

Drupal の Automatic Updates が動かない: `Unattended background updates` がデフォルトで無効になっている話

Drupal の Automatic Updates モジュールを入れていればセキュリティ更新が自動で当たると思い込んでいたら、cron 中の自動適用ポリシー Unattended background updates がデフォルトで無効になっていて何もしていませんでした。有効化して 10.6.3 から 10.6.7 への自動適用が動き出すまでと、その際に出る『公式サポート対象外』警告についての記録です。

drupalautomatic-updatessecuritycron

🛡AWS WAF の Geo allowlist と ASN ベース IPSet によるボット pivot 対策

Singapore Geo Block 適用後に HK/VN/ID/DE へ pivot された経緯と、Geo allowlist + Tencent/Alibaba ASN ベースの IPSet に切り替えた記録

awswafcloudfrontsecurity
メンバー限定

ElevenLabs v2 と v3 の日本語朗読品質比較 — 自分の声を学習させた合成音声による A/B 検証

ElevenLabs の Voice Cloning と v3 モデルを使い、自分の声を学習させた合成音声で日本語の技術記事を朗読させる実験を行いました。同一原稿で v2 / v3 を比較した A/B サンプルと、運用上の観察を記録します。

elevenlabsvoice-cloningpodcastyoutube

Mirador (4.0.0) の Annotations タブに OCR が出ない — supplementing motivation の落とし穴

IIIF Presentation 3 で OCR テキストを `motivation: "supplementing"` のアノテーションとして配信したら、Annona など他の viewer では出るのに Mirador 4.0.0 (projectmirador.org/embed) の Annotations タブだけ空、という現象に遭遇しました。実際に配信されている Mirador bundle を読み解いた結果、`config.annotations.filteredMotivations` のリリース版デフォルトが `['oa:commenting', 'oa:tagging', 'sc:painting', 'commenting', 'tagging']` で `supplementing` を許可していないことが判明しました。`['commenting', 'supplementing']` の配列で両対応する方法と、関連する仕様・Cookbook recipe の正しい参照を整理します。

iiifmiradorannotationpresentation-api

アクセス制御付き IIIF デジタルアーカイブの構築 — Cloudflare Access で守る Cantaloupe + S3 + Elasticsearch + Next.js

未公開 / 限定公開の歴史写真を、IIIF 規格に準拠した形でアクセス制御付きで配信するアーカイブシステムの構築記録。Cantaloupe(IIIF サーバ)+ S3 互換ストレージ + Elasticsearch(検索)+ Next.js(UI)+ Cloudflare Tunnel + Access という構成で、一般公開できない画像であっても IIIF の利点(規格準拠の高解像度ビューア / manifest 配信)を許可されたメンバー範囲内で享受できる仕組みを設計しました。外部システムからの相互運用には IIIF Auth API 2.0 への拡張が必要となる点も整理しています。

iiifcantaloupeelasticsearchnextjs

📅調整さんの出欠回答を Playwright で自動入力し、Claude Code 経由の Google Calendar MCP で判定する構成

調整さん(chouseisan.com)の出欠回答を Playwright で自動入力し、◯/△/× の判定は Google カレンダーと照合して Claude Code(claude.ai Google Calendar MCP 経由)に任せる構成を作成した記録です。fetch / fill / submit の3段階に分け、判定ルールは CLAUDE.md に記述する形にしました。

playwrightclaude-codemcpgoogle-calendar

NDL古典籍OCR-LiteとCloud Vision APIの出力差 — 酉蓮社所蔵嘉興版大蔵経『大般若経』105画像での観測

酉蓮社(旧増上寺報恩蔵)所蔵の嘉興版大蔵経のうち『大般若波羅蜜多經』巻571〜575(IIIF経由で取得した105画像)に対して、国立国会図書館のNDL古典籍OCR-Liteと Cloud Vision API DOCUMENT_TEXT_DETECTION を並べて適用し、それぞれの出力に現れた誤りの傾向を観測した記録です。NDLは仮名混入の誤検出が12頁、VisionはカラースケールやIIIF添付要素(蔵書ラベル等)の混入が105頁全てで発生しました。

ocrndl-koten-ocrgoogle-vision-apiiiif

🖼️Cantaloupe IIIFサーバから serverless-iiif への移行記録

EC2上でDocker稼働させていたCantaloupeを、AWS Lambda + CloudFrontベースの serverless-iiif(Samvera)に移行した際の調査と作業の記録です。

iiifawslambdacloudfront

💀フレームワーク移行後も退役してくれない旧 Service Worker を kill-switch SW で撤去する

Nuxt 2 + @nuxtjs/pwa で運用していた SPA を別フレームワークへ移行した直後に、返ってくる HTML が古いまま固まる事象に遭遇しました。原因は旧 Service Worker の cache-first 戦略で、kill-switch SW を同じ URL に上書き配信して退役させた手順をまとめます。

serviceworkerpwanuxtnextjs

外部組織管理のサブドメインを Cloudflare Workers に向ける — AWS CloudFront + WAF を前段に挟んだ記録

自分の管理外(外部組織)の DNS にあるサブドメインを Cloudflare Workers のカスタムドメインに割り当てたかったものの、Cloudflare Free プランは外部サブドメインを zone として受け入れない制約に行き当たり、最終的に AWS CloudFront + WAF を前段に挟む構成で解決した記録です。

cloudflareworkerscloudfrontaws

ボットスクレイピングをAWS WAFで止めた記録 — Geo block・JA3 fingerprint・UA blockまで段階的に

運営する文化アーカイブ系サイトに対するボットスクレイピングを、AWS WAFのGeo block・IPset・JA3 fingerprint・UA blockを段階的に組み合わせて遮断した記録です。

awswafcloudfrontsecurity

📚DH週間トピックス — 2026年4月19日週

DH週間トピックス — 2026年4月19日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

既存リバースプロキシのオリジンに CloudFront + WAF を後付けする実践パターン

Docker + Traefik で運用中の複数サービスを、無停止で CloudFront + WAF の保護下に移行した実装記録。オリジン分離用サブドメインの命名、共有 SG の落とし穴、WAF を COUNT モードから始める判断、SPARQL/API のキャッシュ設計など、よく出る論点を一通り整理しました。

awscloudfrontwafterraform

研究者番号からCiNii Articlesのリンクを生成する方法 — NII研究者IDの仕組み

科研費の研究者番号(8桁)の先頭に1000を付けるだけで、CiNii ArticlesのURLが生成できます。大学の教員情報システムへの入力にも応用できます。

ciniikakennii研究者情報

📚DH週間トピックス — 2026年4月12日週

DH週間トピックス — 2026年4月12日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

🤖mdx.jp上のvLLMをCloudflare Tunnel経由でOpenAI互換APIとして公開する

mdx.jp 上で動かした vLLM を Cloudflare Tunnel 経由で外部公開し、OpenAI 互換 API として利用できるようにした手順と注意点

cloudflaretunnelzerotrustvllm